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
andSaltBridgeFinder.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: - struc1 (
schrodinger.structure.Structure
) – The first structure to analyze - group1 (list) – The list of atoms in
struc1
to analyze - struc2 (
schrodinger.structure.Structure
) – The second structure to analyze - group2 (list) – The list of atoms in
struc2
to analyze
Returns: An iterator that provides salt bridge atoms as a tuple of (atom index from group1, atom index from group2)
Return type: - struc1 (
-
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: - struc (
-
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. Ifgroup2
is given butstruc2
is not, thenstruc1
will be used. - group2 (list) – The list of atoms in
struc2
to analyze. Ifstruc2
is given butgroup2
is not, then all atoms instruc2
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: 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.
- struc1 (
-
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. Ifgroup2
is given butstruc2
is not, thenstruc1
will be used. - group2 (list) – The list of atom indices in
struc2
to analyze. Ifstruc2
is given butgroup2
is not, then all atoms instruc2
will be analyzed. - cutoff (float) – The maximum distance allowed for salt bridges
- order_by (
OrderBy
) – How the returned salt bridge atom should be ordered. IfOrderBy.AnionCation
, then each salt bridge will be returned as a tuple of (anion atom, cation atom). IfOrderBy.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
- struc1 (