Package schrodinger :: Package structutils :: Package interactions :: Module salt_bridge :: Class SaltBridgeFinder
[hide private]
[frames] | no frames]

Class SaltBridgeFinder

object --+
         |
        SaltBridgeFinder

Find salt-bridge interactions.

This module uses the following criteria to identify ions:

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.)

Instance Methods [hide private]
 
__init__(self, cutoff=4.0)
Initialize a SaltBridgeFinder using the specified distance cutoff
iter
calculateInter(self, struc1, group1, struc2, group2)
Return an iterator that provides salt bridges between two groups of atoms
iter
calculateIntra(self, struc, atoms, ignore_same_res=True)
Return an iterator that provides salt bridges within a group of atoms
tuple
_findChargedAtoms(self, struc, atom_num_list)
Find all charged atoms in the specified list of atoms
 
_checkAtomCharge(self, cur_res, anions, cations, ignore_o=False)
Add all ions in the current residue to the appropriate list
float
_sumPartialCharges(self, atom)
Sum the partial charges for a heavy atom and all bound hydrogens
 
_safeExtend(self, append_to, atoms, atom_names)
Extend an ion list with the specified atom indices, assuming the atoms exist.
 
_sbIterator(self, struc1, ions1, ions2, cell_handle=None, delete_dist_cell=True, dist=None, check_same_res=False)
Create an iterator that will iterate through salt bridges
 
_sameRes(self, struc, atom1_num, atom2_num)
Determine if two atoms are in the same residue

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Class Methods [hide private]
iter
find(cls, 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.
Class Variables [hide private]
  PROT_CATIONS = {'ARG': set(['NH1', 'NH2']), 'HID': set(['NE2']...
A dictionary of {residue name: set of atom names} for all potential salt bridge cations in standard amino acids
  PROT_ANIONS = {'ASP': set(['OD1', 'OD2']), 'GLU': set(['OE1', ...
A dictionary of {residue name: set of atom names} for all potential salt bridge anions in standard amino acids.
set STANDARD_AAS = set(['ACE', 'ALA', 'ARG', 'ASN', 'ASP', 'CYS', ...
A list of residues to be considered standard amino acids.
set RES_TO_IGNORE = set(['HOH'])
Any residues on this list are assumed to contain no ions.
  _warned = False
hash(x)
Instance Variables [hide private]
float cutoff
The maximum distance allowed for salt bridges
Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, cutoff=4.0)
(Constructor)

 

Initialize a SaltBridgeFinder using the specified distance cutoff

Parameters:
  • cutoff (float) - The maximum distance allowed for salt bridges
Overrides: object.__init__

find(cls, struc1, group1=None, struc2=None, group2=None, cutoff=4.0, ignore_same_res=True)
Class Method

 

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: iter
An iterator that provides pairs of atoms involved in salt bridges

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.

calculateInter(self, struc1, group1, struc2, group2)

 

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

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

calculateIntra(self, 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: iter
An iterator that provides salt bridge atoms as a tuple of two atom indices

_findChargedAtoms(self, struc, atom_num_list)

 

Find all charged atoms in the specified list of atoms

Parameters:
Returns: tuple
A tuple of (atom numbers for anions, atom numbers for cations)

_checkAtomCharge(self, cur_res, anions, cations, ignore_o=False)

 

Add all ions in the current residue to the appropriate list

Parameters:
  • cur_res ()
  • anions (list) - The list of anions. Note that this list will be modified in place.
  • cations (list) - The list of cations. Note that this list will be modified in place.
  • ignore_o (bool) - If True, then any atom with a pdbname of O will be ignored. Otherwise O will be treated normally. This is so that a a charged carboxyl backbone of a modified amino acid doesn't get added twice.

_sumPartialCharges(self, atom)

 

Sum the partial charges for a heavy atom and all bound hydrogens

Parameters:
Returns: float
The sum of partial charges

_safeExtend(self, append_to, atoms, atom_names)

 

Extend an ion list with the specified atom indices, assuming the atoms exist.

Parameters:
  • append_to (list) - The list to extend
  • atoms (dict) - A dictionary of {atom_name: atom_number}
  • atom_names (Iterable) - A list of atom names to append to append_to

_sbIterator(self, struc1, ions1, ions2, cell_handle=None, delete_dist_cell=True, dist=None, check_same_res=False)

 

Create an iterator that will iterate through salt bridges

Parameters:
  • struc1 (schrodinger.structure.Structure) - The structure containing the atoms in ions1 and potentially the atoms in ions2
  • ions1 (list) - A list of atom numbers for potential salt bridge ions in struc1
  • ions2 (list) - A list of atom number for potential salt bridge ions. These ions must be opposite charge from ions1. If cell_handle is provided, these atoms numbers should refer to the structure used to initialize the distance cell. Otherwise, these atom numbers should refer to struc1.
  • cell_handle (int) - A handle to the distance cell to use. If not given, a new distance cell will be created with distance dist. Exactly one of cell_handle and dist must be given.
  • delete_dist_cell (bool) - If True, the distance cell will be deleted after the iterator is finished. Defaults to True.
  • dist (float) - The maximum distance allowed for salt bridges. If not given, the distance cell distance from cell_handle will be used. Exactly one of cell_handle and dist must be given.
  • check_same_res (bool) - If True, salt bridges will not be allowed between atoms in the same residue. This avoids neighboring ions in a ligand from being counted as a salt bridge. This option assumes that ions1 and ions2 refer to the same molecule. (If they refer to different molecules, this option shouldn't be used, since the residues are guaranteed to be different.)

_sameRes(self, struc, atom1_num, atom2_num)

 

Determine if two atoms are in the same residue

Parameters:
  • struc (schrodinger.structure.Structure) - The structure containing the two atoms
  • atom1_num (int) - The atom index of the first atom
  • atom2_num (int) - The atom index of the second atom

Class Variable Details [hide private]

PROT_CATIONS

A dictionary of {residue name: set of atom names} for all potential salt bridge cations in standard amino acids
Value:
{'ARG': set(['NH1', 'NH2']),
 'HID': set(['NE2']),
 'HIE': set(['ND1']),
 'HIS': set(['NE2']),
 'LYS': set(['NZ'])}

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.
Value:
{'ASP': set(['OD1', 'OD2']), 'GLU': set(['OE1', 'OE2'])}

STANDARD_AAS

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.
Type:
set
Value:
set(['ACE',
     'ALA',
     'ARG',
     'ASN',
     'ASP',
     'CYS',
     'GLN',
     'GLU',
...