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

Package interactions

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.interactions import SaltBridgeFinder
   from schrodinger.structure import StructureReader
   st = StructureReader("protein.maegz").next()
   for (atom1, atom2) in SaltBridgeFinder.find(st):
       print "Salt bridge between atoms %i and %i" % (atom1, atom2)

Find all salt bridges within a single protein chain:

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

Find all salt bridges between a protein and a ligand:

   from schrodinger.structutils.interactions import SaltBridgeFinder
   from schrodinger.structure import StructureReader
   reader = StructureReader("protein_and_ligand.maegz")
   prot = reader.next()
   lig = reader.next()
   for (atom1, atom2) in SaltBridgeFinder.find(prot, struc2=lig):
       print "Salt bridge between atoms %i and %i" % (atom1, atom2)
Submodules [hide private]

Variables [hide private]
  ACCEPTORS = '((SMARTS. "[n;+0;!X3;!$([n;H1](cc)cc)]") ...
  ALIPHATIC_FLUORINES = '((SMARTS. "CF") AND NOT ...
  AMIDINE = '(SMARTS. "[NH2][CX3](=[NH2+])")'
  AROMATICS = '((SMARTS. "[a;R]"))'
  AROMATIC_FLUORINES = '((SMARTS. "cF") AND NOT ...
  DONORS = '((SMARTS. "[N&!H0&v3,n&H1&+0]") OR (SMARTS...
  GEMINAL_FLUORINES = '((SMARTS. "C(F)F") AND NOT ...
  HYDROGENS = '(atom.ele H)'
  HYDROPHOBES = '((SMARTS. "[#6;+0;!$([#6]~[#7,#8,#9])]") ...
  IMIDAZOLE = '(SMARTS. "[#6X3]1:[#7X3H+]:[#6X3]:[#6X3]:[#7X3H]1")'
  METALS = '(SMARTS. "[#26,#27]")'
  MISC = '((SMARTS. "[Sv6X4&H0&+0]") OR (SMARTS. "[Sv4X3...
  NEGATIVES = '((SMARTS. "[C,S](=[O,S,P])-[O;H0&-1]") ...
  POLAR_CARBONS = '((SMARTS. "[$([#6]~[#7,#8,#9])]") ...
  POSITIVES = '((SMARTS. "[$([N;H3&+1][N,C,S,c;!$(C=*)])]") ...
  SPECIAL = '(SMARTS. "[$([NH-]-[Sv6X4](=O)=O)]")'
  UNKNOWN_RESIDUE_SKIP_LIST = [' CL ', 'GOL ', 'SO4 ']
  __package__ = 'schrodinger.structutils.interactions'
  features_list = ['((SMARTS. "[$([N;H3&+1][N,C,S,c;!$(C=*)])]")...
  receptor_atom_flags = None
hash(x)
  templates = None
hash(x)
Variables Details [hide private]

ACCEPTORS

Value:
'((SMARTS. "[n;+0;!X3;!$([n;H1](cc)cc)]")              OR (SMARTS. "[$\
([N;H0]#[C&v4])]")              OR (SMARTS. "[O,S;H1;v2]")            \
  OR (SMARTS. "[O;H0;v2;!$(O=N-*)]")              OR (SMARTS. "[o;+0]"\
)              OR (SMARTS. "[$([S;X1]=[#6])]")              OR (SMARTS\
. "=[Nv3X2]")              OR (SMARTS. "[$([OX1]=[NX2])]")            \
  OR (SMARTS. "[S,s;v2X2;H0;+0]")              OR (SMARTS. "[$([Nv3X3;\
H0,H1;+0]);!$([NX3][CX3](=[OX1]));!$([NX3][SX4](=[OX1])=[OX1])]")     \
         OR (SMARTS. "[Sv2X1;H0;+0]")              OR (SMARTS. "[N;v3;\
...

ALIPHATIC_FLUORINES

Value:
'((SMARTS. "CF") AND NOT                        (SMARTS. "C(F)F") AND \
NOT                        (SMARTS. "C"))'

AROMATIC_FLUORINES

Value:
'((SMARTS. "cF") AND NOT                       (SMARTS. "c"))'

DONORS

Value:
'((SMARTS. "[N&!H0&v3,n&H1&+0]")           OR (SMARTS. "[O,S;H1;+0]") \
          OR (SMARTS. "[$([NH-]-[Sv6X4](=O)=O)]"))'

GEMINAL_FLUORINES

Value:
'((SMARTS. "C(F)F") AND NOT                      (SMARTS. "C"))'

HYDROPHOBES

Value:
'((SMARTS. "[#6;+0;!$([#6]~[#7,#8,#9])]")                OR (SMARTS. "\
[s,S;v2X2;H0;+0]")                OR (SMARTS. "[$([SX3v3;H0;+0;!$([SX3\
v3;H0;+0]~[#7,#8,#9])])]")                OR (SMARTS. "[$([SX4v4;H0;+0\
;!$([SX4v4;H0;+0]~[#7,#8,#9])])]")                OR (SMARTS. "[$([Cl,\
Br,I;v1X1;H0;+0]([!Cl&!Br&!I]))]")                OR (SMARTS. "[B]"))'

MISC

Value:
'((SMARTS. "[Sv6X4&H0&+0]")         OR (SMARTS. "[Sv4X3&H0&+0]")      \
   OR (SMARTS. "[Nv3X3&H0&+0]")         OR (SMARTS. "[Pv5X4;H0;+0]")  \
       OR (SMARTS. "[Pv4X4;H0;+0]")         OR (SMARTS. "[$([#9]-[!#6]\
)]")         OR (SMARTS. "[$([Cl,Br,I])&!$([Cl,Br,I;v1X1;H0;+0]([!Cl&!\
Br&!I]))]"))'

NEGATIVES

Value:
'((SMARTS. "[C,S](=[O,S,P])-[O;H0&-1]")              OR (SMARTS. "[PX4\
]-[O;H0&-1]")              OR (SMARTS. "[n;X2;H0&-1]")              OR\
 (SMARTS. "[Nv2X2&H0&-1]")              OR (SMARTS. "([NX3+](=O)[O-])"\
)              OR (SMARTS. "[$([NH-]-[Sv6X4](=O)=O)]")              OR\
 (SMARTS. "[O-]")              OR (SMARTS. "[N-]")              OR (SM\
ARTS. "[$([S;H0-1]-P)]")              OR (SMARTS. "[$([SX1;H0;-1])]"))\
'

POLAR_CARBONS

Value:
'((SMARTS. "[$([#6]~[#7,#8,#9])]")                  OR (SMARTS. "[$([S\
X3v3;H0;+0]~[#7,#8,#9])]")                  OR (SMARTS. "[$([SX4v4;H0;\
+0]~[#7,#8,#9])]"))'

POSITIVES

Value:
'((SMARTS. "[$([N;H3&+1][N,C,S,c;!$(C=*)])]")              OR (SMARTS.\
 "[$([N;H2&+1]([C,c;!$(C=*)])([C,c;!$(C=*)]))]")              OR (SMAR\
TS. "[$([N;H1&+1]([C,c;!$(C=*)])([C,c;!$(C=*)])([C,c;!$(C=*)]))]")    \
          OR (SMARTS. "[$([N;H0&+1]([C,c;!$(C=*)])([C,c;!$(C=*)])([C,c\
;!$(C=*)])([C,c;!$(C=*)]))]")              OR (SMARTS. "[Nv4X4&H0&+1;!\
$(N(=O)O)]")              OR (SMARTS. "[Nv4X3&H0&+1;!$(N(=O)O)]")     \
         OR (SMARTS. "[nv4X3;H1;+1;r6,r5]")              OR (SMARTS. "\
*=[Nv4X3H2+]")              OR (SMARTS. "*=[Nv4X3H+]")              OR\
...

features_list

Value:
['((SMARTS. "[$([N;H3&+1][N,C,S,c;!$(C=*)])]")              OR (SMARTS\
. "[$([N;H2&+1]([C,c;!$(C=*)])([C,c;!$(C=*)]))]")              OR (SMA\
RTS. "[$([N;H1&+1]([C,c;!$(C=*)])([C,c;!$(C=*)])([C,c;!$(C=*)]))]")   \
           OR (SMARTS. "[$([N;H0&+1]([C,c;!$(C=*)])([C,c;!$(C=*)])([C,\
c;!$(C=*)])([C,c;!$(C=*)]))]")              OR (SMARTS. "[Nv4X4&H0&+1;\
!$(N(=O)O)]")              OR (SMARTS. "[Nv4X3&H0&+1;!$(N(=O)O)]")    \
          OR (SMARTS. "[nv4X3;H1;+1;r6,r5]")              OR (SMARTS. \
"*=[Nv4X3H2+]")              OR (SMARTS. "*=[Nv4X3H+]")              O\
...