docs: def knob_end(self):
          """ Coordinates of the end of the knob residue (atom in side-chain furthest from CB atom.
          Returns CA coordinates for GLY.
          """
          side_chain_atoms = self.knob_residue.side_chain
          if not side_chain_atoms:
              return self.knob_residue['CA']
          distances = [distance(self.knob_residue['CB'], x) for x in side_chain_atoms]
          max_d = max(distances)
          knob_end_atoms = [atom for atom, d in zip(side_chain_atoms, distances) if d == max_d]
          if len(knob_end_atoms) == 1:
              return knob_end_atoms[0]._vector
          else:
              return numpy.mean([x._vector for x in knob_end_atoms], axis=0)