Package schrodinger :: Package structutils :: Package interactions :: Module pi
[hide private]
[frames] | no frames]

Module pi

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)
Classes [hide private]
  Centroid
The object that stores data about a centroid
  CationPiInteraction
The object that stores the data for a Cation-Pi interaction
  PiPiInteraction
The object that stores the data for a Pi-Pi interaction
Functions [hide private]
float
squared_centroid_distance(cent1, cent2)
Compute the squared distance between two centroids.
 
unit_vector_points(a, b)
 
unit_vector(vec)
list
find_pi_cation_interactions(struct1, struct2=None, rings1=None, rings2=None, skip_unknown=True)
Determine if any positive centers are within a specified distance cutoff of any aromatic ring centroids.
 
_get_centroid_from_cpp_structure_ring(ring)
 
gather_rings(astruct, atom_subset=None)
list of PiPiInteraction objects
find_pi_pi_interactions(struct1, struct2=None, rings1=None, rings2=None, max_ftf_dist=30.0, max_etf_dist=60.0)
Find all pi-pi interactions between the rings in struct1 and struct2 (or within struct1 if only 1 structure is given).
Variables [hide private]
  __doc__ = ...
  __package__ = 'schrodinger.structutils.interactions'
Function Details [hide private]

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
Returns: float
the squared distance between the two centroids.

find_pi_cation_interactions(struct1, struct2=None, rings1=None, rings2=None, skip_unknown=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.. This function can be very slow if unknown residues are found in the structure. These are often counterions or surfactants. Removing these before doing this calculation can speed things up dramatically - or use skip_unknown='all' if the unknown residues are not of interest.

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 (bool, str or list) - if False, all unknown residues will be typed (very slow), if True, unknown residues will be skipped if they are in the default list UKNOWN_RESIDUE_SKIP_LIST. If 'all', then all unknown residues will be skipped. If a list is supplied, only residues with names matching those in the supplied list will be skipped.
Returns: list
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

find_pi_pi_interactions(struct1, struct2=None, rings1=None, rings2=None, max_ftf_dist=30.0, max_etf_dist=60.0)

 

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.
  • max_angle (float) - The maximum angle allowed for a face-to-face interaction. (The minimum angle allowed for edge-to-face interactions will be 90 - max_angle.)
  • max_ftf_dist (float) - The maximum distance allowed between the centroids of face-to-face rings
  • max_ftf_dist (float) - The maximum distance allowed between the centroids of edge-to-face rings
  • max_etf_dist (float)
Returns: list of PiPiInteraction objects
a PiPiInteraction object for each interaction found. Properties of a PiPiInteraction object are:
  • struct1: structure that contains the first ring
  • struct2: structure that contains the second ring
  • ring1: Centroid of the first ring
  • ring2: Centroid of the second ring
  • distance: distance between the centroids
  • angle: angle in degrees between the two ring planes
  • face_to_face: True if the interaction is face to face, False if it is edge to face

Variables Details [hide private]

__doc__

Value:
"""
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):
...