find_stacking_interactions
#
- biotite.structure.find_stacking_interactions(atoms, centroid_cutoff=6.5, plane_angle_tol=np.float64(0.5235987755982988), shift_angle_tol=np.float64(0.5235987755982988))[source]#
Find pi-stacking interactions between aromatic rings.
- Parameters:
- atomsAtomArray
The atoms to be searched for aromatic rings. Requires an associated
BondList
.- centroid_cutofffloat
The cutoff distance for ring centroids.
- plane_angle_tolfloat
The tolerance for the angle between ring planes that must be either parallel or perpendicular. Given in radians.
- shift_angle_tolfloat
The tolerance for the angle between the ring plane normals and the centroid difference vector. Given in radians.
- Returns:
- interactionslist of tuple(ndarray, ndarray, PiStacking)
The stacking interactions between aromatic rings. Each element in the list represents one stacking interaction. The first two elements of each tuple represent atom indices of the stacked rings. The third element of each tuple is the type of stacking interaction.
See also
find_aromatic_rings
Used for finding the aromatic rings in this function.
Notes
This function does not distinguish between aromatic and antiaromatic rings. Furthermore, it does not distinguish between repulsive and attractive stacking: Usually, stacking two rings directly above each other is repulsive, as the pi orbitals above the rings repel each other, so a slight horizontal shift is usually required to make the interaction attractive. However, in details this is strongly dependent on heteroatoms and the exact orientation of the rings. Hence, this function aggregates all stacking interactions to simplify the conditions for pi-stacking.
The conditions for pi-stacking are [1] :
The ring centroids must be within cutoff distance (default: 6.5 Å). While [1] uses a cutoff of 5.0 Å, 6.5 Å was adopted from [2] to better identify perpendicular stacking interactions.
The planes must be parallel or perpendicular to each other within a default tolerance of 30°.
The angle between the plane normals and the centroid difference vector must be be either 0° or 90° within a default tolerance of 30°, to check for lateral shifts.
References
Examples
Detect base stacking interactions in a DNA helix
>>> from os.path import join >>> dna_helix = load_structure( ... join(path_to_structures, "base_pairs", "1qxb.cif"), include_bonds=True ... ) >>> interactions = find_stacking_interactions(dna_helix) >>> for ring_atom_indices_1, ring_atom_indices_2, stacking_type in interactions: ... print( ... dna_helix.res_id[ring_atom_indices_1[0]], ... dna_helix.res_id[ring_atom_indices_2[0]], ... PiStacking(stacking_type).name ... ) 17 18 PARALLEL 17 18 PARALLEL 5 6 PARALLEL 5 6 PARALLEL 5 6 PARALLEL