find_pi_cation_interactions#

biotite.structure.find_pi_cation_interactions(atoms, distance_cutoff=5.0, angle_tol=np.float64(0.5235987755982988))[source]#

Find pi-cation interactions between aromatic rings and cations.

Parameters:
atomsAtomArray

The atoms to be searched for pi-cation interactions. Requires an associated BondList and charge annotation.

distance_cutofffloat, optional

The cutoff distance between ring centroid and cation.

angle_tolfloat, optional

The tolerance for the angle between the ring plane normal and the centroid-cation vector. Perfect pi-cation interaction has 0° angle (perpendicular to ring plane). Given in radians.

Returns:
interactionslist of tuple(ndarray, int)

The pi-cation interactions between aromatic rings and cations. Each element in the list represents one pi-cation interaction. The first element of each tuple represents atom indices of the aromatic ring, the second element is the atom index of the cation.

See also

find_aromatic_rings

Used for finding the aromatic rings in this function.

find_stacking_interactions

Find pi-stacking interactions between rings.

Notes

The conditions for pi-cation interactions are:
  • The distance between ring centroid and cation must be within distance_cutoff. [1] uses 5.0 Å, whereas [2] uses 4.5 Å.

  • The angle between the ring plane normal and the centroid-cation vector must be within angle_tol of 0° (perpendicular to plane).

Examples

>>> from os.path import join
>>> structure = load_structure(join(path_to_structures, "3wip.cif"), include_bonds=True, extra_fields=["charge"])
>>> interactions = find_pi_cation_interactions(structure)
>>> for ring_indices, cation_index in interactions:
...     print(
...         structure.res_name[ring_indices[0]],
...         structure.res_name[cation_index]
...     )
TYR ACH
TRP ACH