schrodinger.structutils.interactions package

A module for detecting interactions between structures. Currently has methods to detect pi-pi interactions, pi-cation interactions, salt bridges, and steric clashes.

Examples

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)

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)

Find all salt bridge interactions within a protein:

from schrodinger.structutils import interactions
from schrodinger.structure import StructureReader
st = StructureReader("protein.maegz").next()
for (atom1, atom2) in interactions.get_salt_bridges(st):
    print "Salt bridge between atoms %i and %i" % (atom1.index, atom2.index)

Find all salt bridges within a single protein chain:

st = StructureReader("protein.maegz").next()
atoms = st.chain["C"].getAtomIndices()
for (atom1, atom2) in interactions.get_salt_bridges(st, atoms):
    print "Salt bridge between atoms %i and %i" % (atom1.index, atom2.index)

Find all salt bridges between a protein and a ligand:

reader = StructureReader("protein_and_ligand.maegz")
prot = reader.next()
lig = reader.next()
for (atom1, atom2) in interactions.get_salt_bridges(prot, struc2=lig):
    print "Salt bridge between atoms %i and %i" % (atom1.index, atom2.index)