schrodinger.structutils.interactions.salt_bridge module

Find salt-bridge interactions.

Examples

Find all salt bridge interactions within a protein:

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"].getAtomIndices()
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:

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)
class schrodinger.structutils.interactions.salt_bridge.OrderBy

Bases: enum.Enum

AnionCation = 1
InputOrder = 2
class schrodinger.structutils.interactions.salt_bridge.SaltBridgeFinder(cutoff=4.0)

Bases: object

Find salt-bridge interactions.

This module uses the following criteria to identify ions:

  • In any amino acid residue, the backbone carboxyl group is considered an anion.
  • In a standard amino acid, ions are identified by atom name. See SaltBridgeFinder.PROT_ANIONS and SaltBridgeFinder.PROT_CATIONS.
  • In a nonstandard amino acid or a non-amino acid residue, heavy atoms with a formal charge magnitude >= 1 are considered ions. Additionally, heavy atoms with a partial charge magnitude >= 0.3 are considered ions. The partial charge of a heavy atom is calculated as the partial charge of the heavy atom itself plus the partial charges of any bound hydrogens.

A pair of ions of opposite charge within distance cutoff are counted as a salt bridge.

Note that when searching for salt bridges within a single structure/group of atoms, this class assumes that atoms within the same residue cannot be involved in a salt bridge with each other. This avoids incorrectly identifying a salt bridge between neighboring ions in a ligand (ex. ions that are within the distance cutoff because they are within 3 bonds of each other.)

Variables:
  • PROT_CATIONS – A dictionary of {residue name: set of atom names} for all potential salt bridge cations in standard amino acids
  • PROT_ANIONS – A dictionary of {residue name: set of atom names} for all potential salt bridge anions in standard amino acids. Note that backbone carboxyl groups from all amino acids are also considered potential salt bridge anions and should not be listed here.
  • STANDARD_AAS (set) – A list of residues to be considered standard amino acids. Any amino acid residues not on this list will be examined for atoms with formal or partial charges.
  • RES_TO_IGNORE (set) – Any residues on this list are assumed to contain no ions.
  • cutoff (float) – The maximum distance allowed for salt bridges
PROT_ANIONS = {'ASP': set(['OD1', 'OD2']), 'GLU': set(['OE2', 'OE1'])}
PROT_CATIONS = {'HIS': set(['NE2']), 'ARG': set(['NH1', 'NH2']), 'HID': set(['NE2']), 'HIE': set(['ND1']), 'LYS': set(['NZ'])}
RES_TO_IGNORE = set(['HOH'])
STANDARD_AAS = set(['ILE', 'GLN', 'GLY', 'GLU', 'CYS', 'ASP', 'SER', 'LYS', 'PRO', 'HID', 'HIE', 'ASN', 'HIP', 'VAL', 'NMA', 'THR', 'HIS', 'TRP', 'PHE', 'ALA', 'MET', 'ACE', 'LEU', 'ARG', 'TYR'])
calculateInter(struc1, group1, struc2, group2)

Return an iterator that provides salt bridges between two groups of atoms

Parameters:
Returns:

An iterator that provides salt bridge atoms as a tuple of (atom index from group1, atom index from group2)

Return type:

iter

calculateIntra(struc, atoms, ignore_same_res=True)

Return an iterator that provides salt bridges within a group of atoms

Parameters:
  • struc (schrodinger.structure.Structure) – The structure to analyze
  • atoms (list) – The list of atoms
  • ignore_same_res (bool) – If True, salt bridges between atoms within the same residue will be ignored. If False, these salt bridges will be returned as normal. Note that, if this option if False, there is no within-bonds restriction on salt bridges (ex. If there is an anion covalently bound to a cation, the pair will be returned as a salt bridge.)
Returns:

An iterator that provides salt bridge atoms as a tuple of two atom indices

Return type:

iter

classmethod find(struc1, group1=None, struc2=None, group2=None, cutoff=4.0, ignore_same_res=True)

A convenience function to instantiate the class and return a salt bridge iterator. If struc2 or group2 are given, then the iterator will find salt bridges between the two structures/groups of atoms. If neither struc2 nor group2 are given, then the iterator will find salt bridges within a single structure/group of atoms.

Parameters:
  • struc1 (schrodinger.structure.Structure) – The structure to analyze
  • group1 (list) – The list of atoms in struc1 to analyze. If not given, all atoms in struc1 will be analyzed.
  • struc2 (schrodinger.structure.Structure) – The second structure to analyze. If group2 is given but struc2 is not, then struc1 will be used.
  • group2 (list) – The list of atoms in struc2 to analyze. If struc2 is given but group2 is not, then all atoms in struc2 will be analyzed.
  • cutoff (float) – The maximum distance allowed for salt bridges
  • ignore_same_res (bool) – If True, salt bridges between atoms within the same residue will be ignored. If False, these salt bridges will be returned as normal. This option has no effect if struc2 or group2 are given. In those cases, the two structures/groups of atoms are assumed to be non-overlapping, so this option is irrelevant and no salt bridges are ignored. Also note that, if this option if False, there is no within-bonds restriction on salt bridges (ex. If there is an anion covalently bound to a cation, the pair will be returned as a salt bridge.)
Returns:

An iterator that provides pairs of atoms involved in salt bridges

Return type:

iter

Note:

If group2 are given and struc2 is None, then group1 and group2 are assumed to be non-overlapping. If these two lists contain the same atoms, then salt bridges may be returned twice.

schrodinger.structutils.interactions.salt_bridge.get_salt_bridges(struc1, group1=None, struc2=None, group2=None, cutoff=5, order_by=<OrderBy.AnionCation: 1>)

Calculate all salt bridges within or between the specified atoms. If struc2 or group2 are given, then this function will return salt bridges between the two structures/groups of atoms. If neither struc2 nor group2 are given, then this function will return salt bridges within a single structure/group of atoms.

Parameters:
  • struc1 (schrodinger.structure.Structure) – The structure to analyze
  • group1 (list) – The list of atom indices in struc1 to analyze. If not given, all atoms in struc1 will be analyzed.
  • struc2 (schrodinger.structure.Structure) – The second structure to analyze. If group2 is given but struc2 is not, then struc1 will be used.
  • group2 (list) – The list of atom indices in struc2 to analyze. If struc2 is given but group2 is not, then all atoms in struc2 will be analyzed.
  • cutoff (float) – The maximum distance allowed for salt bridges
  • order_by (OrderBy) – How the returned salt bridge atom should be ordered. If OrderBy.AnionCation, then each salt bridge will be returned as a tuple of (anion atom, cation atom). If OrderBy.InputOrder, then each salt bridge will be returned as a tuple of (atom from struc1/group1, atom from struc2/group2).
Returns:

A list of salt bridges, where each salt bridge is represented by a tuple of two schrodinger.structure._StructureAtom objects.

Return type:

list