schrodinger.structutils.interactions.pi module

A module for detecting pi-pi and pi-cation interactions.

Code example for pi-cation interactions:

from schrodinger.structutils import interactions
from schrodinger import structure
recep = None
for struct in structure.StructureReader(input_file):
    if not recep:
        recep = struct
        # Precalculate receptor rings and cations to save time
        rings = interactions.gather_rings(recep)
        cations = interactions.get_receptor_positive_centroids(recep)
    else:
        picats = interactions.find_pi_cation_interactions(recep,
                                    rings1=rings, cations1=cations,
                                    struct2=struct)

Code example for pi-pi interactions:

from schrodinger.structutils import interactions
from schrodinger import structure
recep = None
for struct in structure.StructureReader(input_file):
    if not recep:
        recep = struct
        # Precalculate receptor rings to save time
        rings = interactions.gather_rings(recep)
    else:
        pipi = interactions.find_pi_pi_interactions(recep,
                                    rings1=rings, struct2=struct)
schrodinger.structutils.interactions.pi.squared_centroid_distance(cent1, cent2)

Compute the squared distance between two centroids. Using the squared distance saves the sqrt compute cycles.

Parameters:
  • cent1 (Centroid object) – first centroid
  • cent2 (Centroid object) – second centroid
Return type:

float

Returns:

the squared distance between the two centroids.

schrodinger.structutils.interactions.pi.unit_vector_points(a, b)
schrodinger.structutils.interactions.pi.unit_vector(vec)
class schrodinger.structutils.interactions.pi.Centroid(atoms, xyz)

Bases: object

The object that stores data about a centroid

class schrodinger.structutils.interactions.pi.CationPiInteraction(cation_structure, pi_structure, cation_centroid, pi_centroid)

Bases: object

The object that stores the data for a Cation-Pi interaction

cation_structure = None
Ivar:structure that contains the cation
Type:schrodinger.structure.Structure object
pi_structure = None
Ivar:structure that contains the pi group
Type:schrodinger.structure.Structure object
cation_centroid = None
Ivar:Centroid of the positive charge
Type:Centroid object
pi_centroid = None
Ivar:Centroid of the pi group
Type:Centroid object
distance
Ivar:distance between the centroids
Type:float
angle
Ivar:angle in degrees between the centroids
Type:float
class schrodinger.structutils.interactions.pi.PiPiInteraction(struct1, struct2, ring1, ring2, face_to_face)

Bases: object

The object that stores the data for a Pi-Pi interaction

distance
Returns:distance between the centroids
Return type:float
angle
Returns:angle in degrees between the centroids
Return type:float
schrodinger.structutils.interactions.pi.find_pi_cation_interactions(struct1, struct2=None, rings1=None, rings2=None, skip_unknown=None, params=None, honor_pbc=True)

Determine if any positive centers are within a specified distance cutoff of any aromatic ring centroids. For those positive center/ring contacts, determine if the positive center is located on the face of the ring rather than the edge.

Code example:

import interactions
from schrodinger import structure
recep = None
for struct in structure.StructureReader(input_file):
    if not recep:
        recep = struct
        # Precalculate receptor rings and cations to save time
        rings = interactions.gather_rings(recep)
        cations = interactions.get_receptor_positive_centroids(recep)
    else:
        picats = interactions.find_pi_cation_interactions(recep,
                                    rings1=rings, cations1=cations,
                                    struct2=struct)
Parameters:
  • struct1 (schrodinger.structure.Structure object) – Receptor structure if for a ligand-receptor complex, or the first of two structures to compute pi-cations for
  • struct2 (schrodinger.structure.Structure object) – Ligand structure if for a ligand-receptor complex, or the second of two structures, or None if the first structure should be search for intramolecular interactions.
  • rings1 (list of SSSR (from gather_rings)) – SSSR of struct1. If not passed, will be computed.
  • rings2 (list of SSSR (from gather_rings)) – SSSR of struct2. If not passed, will be computed.
  • skip_unknown – UNUSED and deprecated.
  • params (schrodinger.infra.structure.PiCationParams or NoneType) – Detailed parameters controlling the interaction criteria. If None, then the default values will be used.
Return type:

list

Returns:

list of CationPiInteraction interaction objects:: # CationPiInteraction properties: cation_structure: structure that contains the cation pi_structure: structure that contains the pi group cation_centroid: Centroid of the positive charge pi_centroid: Centroid of the pi group distance: distance between the centroids angle: angle in degrees between the centroids

schrodinger.structutils.interactions.pi.gather_rings(astruct, atom_subset=None)
schrodinger.structutils.interactions.pi.find_pi_pi_interactions(struct1, struct2=None, rings1=None, rings2=None, params=None, honor_pbc=True)

Find all pi-pi interactions between the rings in struct1 and struct2 (or within struct1 if only 1 structure is given). Interactions are classified as to whether they are face-to-face or edge-to-face.

Code example:

import interactions
from schrodinger import structure
recep = None
for struct in structure.StructureReader(input_file):
    if not recep:
        recep = struct
        # Precalculate receptor rings to save time
        rings = interactions.gather_rings(recep)
    else:
        pipi = interactions.find_pi_pi_interactions(recep,
                                    rings1=rings, struct2=struct)
Parameters:
  • struct1 (schrodinger.structure.Structure object) – first of two structures to compute pi-pi interactions for
  • struct2 (schrodinger.structure.Structure object) – second of two structures to compute pi-pi interactions for. If not given, struct1 will be searched for intramolecular interactions.
  • rings1 (list of SSSR (from gather_rings)) – SSSR of struct1 If not passed, will be computed.
  • rings2 (list of SSSR (from gather_rings)) – SSSR of struct2. If not passed, will be computed.
  • params (schrodinger.infra.structure.PiPiParams or NoneType) – Detailed parameters controlling the interaction criteria. If None, then the default values will be used.
Return type:

list of PiPiInteraction objects

Returns:

a PiPiInteraction object for each interaction found.