routines (22 October 2003)
index
/home/todd/release/pdb2pqr/routines.py

Routines for PDB2PQR
 
This module contains the protein object used in PDB2PQR and methods
used to correct, analyze, and optimize that protein.
 
Based on C code from Jens Erik Nielsen
UCSD/HHMI
 
Ported to Python by Todd Dolinsky (todd@ccb.wustl.edu)
Washington University in St. Louis

 
Modules
            
getopt
math
os
random
string
sys
 
Classes
            
Routines
 
class Routines
       
   Methods defined here:
__init__(self, protein, verbose, definition=None)
addCell(self, atom)
Add an atom to the cell
 
Parameters
    atom:  The atom to add (atom)
addHydrogens(self)
Add hydrogens to the residue by using the definition.
applyForcefield(self, forcefield)
Apply the forcefield to the atoms within the protein
 
Parameters
    forcefield: The forcefield object (forcefield)
Returns
    hitlist:    A list of atoms that were found in
                the forcefield (list)
    misslist:   A list of atoms that were not found in
                the forcefield (list)
calculateChiangles(self)
Calculate the dihedral angle for every residue within the protein,
using the Amino Acid definition.
correctNames(self)
Correct atom names so that they match those listed in
the amino acid definition.  Handles C-Terminal Oxygens
and various Hydrogen naming schemes.
createCells(self)
Place each atom in a virtual cell for easy neighbor comparison
debumpProtein(self)
Ensure that an added atom is not on top of another atom.  If it
is, debump the residue.  A threshold is used to determine
all nearby atoms so the entire protein need not be searched for
every new dihedral angle.
debumpResidue(self, residue, causenames, defresidue)
Ensure that an added atom was not added on top of another
atom by rotating certain atoms about a dihedral angle.  Finds
a working angle with no conflicts from other residues and sets
the new atom coordinates.
 
Parameters
    residue:    The residue to be debumped (Residue)
    causenames: A list of atom names that must be moved (list)
    defresidue: The definition for this residue (DefinitionResidue)
findMissingHeavy(self)
Repair residues that contain missing heavy (non-Hydrogen) atoms
getMovenames(self, residue, defresidue, rootname)
Determine the names of the atoms that are to be moved based
on the chiangle's root atom.
 
Parameters
    residue:    The residue that is being debumped (Residue)
    defresidue: The definition of the residue (DefinitionResidue)
    rootname:   The name of the root atom used to calculate
                distance.
Returns
    movenames:  A list of atom names to move (list)
getNearCells(self, atom)
Find all atoms in bordering cells to an atom
 
Parameters
    atom:  The atom to use (atom)
Returns
    closeatoms:  A list of nearby atoms (list)
getWarnings(self)
Get all warnings generated from routines
optimizeHydrogens(self)
Wrapper function for hydrogen optimizing routines.  The routines
were too extensive to properly fit within this file.
optimizeWaters(self)
Wrapper function for water optimizing routines.
pickChiangle(self, residue, defresidue, causenames, oldnum)
Choose a chiangle number to use in debumping
 
Algorithm
    Instead of simply picking a random chiangle, this function
    uses a more intelligent method to improve efficiency.
    The algorithm uses the names of the conflicting atoms
    within the residue to determine which chiangle number
    has the best chance of fixing the problem(s).  If more than
    one chiangle number resolves the same number of atoms,
    the new number is picked randomly.  The method also
    insures that the same chiangle will not be run twice
    in a row.
Parameters
    residue:    The residue that is being debumped (Residue)
    defresidue: The definition of the residue (DefinitionResidue)
    causenames: A list of atom names that are currently
                conflicts (list)
    oldnum    : The old chiangle number (int)
Returns
    chinum    : The new chiangle number (int)
printHbond(self)
Print a list of all hydrogen bonds to stdout.  A hydrogen bond
is defined when a donor has a hydrogen within 3.3 Angstroms, and
the Hyd-Donor-Accepor angle is less than 20 degrees.
randomizeWaters(self)
Instead of optimizing, find each WAT O and place H1 and H2
while giving it a random orientation
rebuildMethyl(self, atomname, residue, defresidue)
Rebuild the final methyl hydrogen atom using equations from its
tetrahedral geometry.  The normal quaternion/reference frame
method does NOT work, since
    A.  It only works with 3 reference atoms, and
    B.  For methyl hydrogens, 3 reference atoms provide TWO
        possible locations, where only one is potentially correct.
 
Parameters
    atomname:   The name of the atom to rebuild (string)
    residue:    The residue (residue)
    defresidue: The definition residue (definitionResidue)
Returns
    coords :  The new coords of the atom (list)
removeCell(self, atom)
Remove the atom from a cell
 
Parameters
    atom:   The atom to add (atom)
repairAA(self, residues, resnum)
Repair heavy atoms in Amino Acid (type 1) residues
 
Parameters
    residues: The list of residues in the chain (list)
    resnum:   The index of the residue to fix (int)
Returns
    sgadded:  1 if an CYS SG is added, 0 otherwise
              Used to detect if updateSSbridges must be
              called
repairHeavy(self)
Repair all heavy atoms in residues with missing atoms
 
Returns
    sgadded:  1 if an CYS SG is added, 0 otherwise
              Used to detect if updateSSbridges must be
              called.
repairNA(self, residue)
Repair heavy atoms in Nucleic Acid (type 4) residues
 
Parameters
    residue:  The residue to repair (residue)
setChiangle(self, residue, chinum, chiangle, defresidue, causenames=[])
Set the chiangle and move the appropriate atoms
 
Parameters
    residue :   The residue that is being debumped (Residue)
    chinum  :   The chi number (int)
    chiangle:   The new angle to set (float)
    defresidue: The definition of the residue (DefinitionResidue)
    causenames: The atom names that must be moved (list)
Returns
    value     : A value indicating whether any atoms are too
                close or not - any non-zero value means that
                there is still a conflict.
setDonorsAndAcceptors(self)
Set the donors and acceptors within the protein
updateExtraBonds(self)
Update peptide bonds between amino acids.
updateIntraBonds(self)
Update the bonds within a residue of the protein
updateResidueTypes(self)
Find the type of residue as notated in the Amino Acid definition
updateSSbridges(self)
Check for SS-bridge partners, and if present, set appropriate
partners
write(self, message, indent=0)
Write a message to stderr for debugging if verbose
 
Parameters
    message: The message to write (string)
    indent : The indent level (int, default=0)

Data and non-method functions defined here:
__doc__ = None
__module__ = 'routines'
 
Functions
            
acos(...)
acos(x)
 
Return the arc cosine (measured in radians) of x.
asin(...)
asin(x)
 
Return the arc sine (measured in radians) of x.
atan(...)
atan(x)
 
Return the arc tangent (measured in radians) of x.
atan2(...)
atan2(y, x)
 
Return the arc tangent (measured in radians) of y/x.
Unlike atan(y/x), the signs of both x and y are considered.
ceil(...)
ceil(x)
 
Return the ceiling of x as a float.
This is the smallest integral value >= x.
cos(...)
cos(x)
 
Return the cosine of x (measured in radians).
cosh(...)
cosh(x)
 
Return the hyperbolic cosine of x.
exp(...)
exp(x)
 
Return e raised to the power of x.
fabs(...)
fabs(x)
 
Return the absolute value of the float x.
floor(...)
floor(x)
 
Return the floor of x as a float.
This is the largest integral value <= x.
fmod(...)
fmod(x,y)
 
Return fmod(x, y), according to platform C.  x % y may differ.
frexp(...)
frexp(x)
 
Return the mantissa and exponent of x, as pair (m, e).
m is a float and e is an int, such that x = m * 2.**e.
If x is 0, m and e are both 0.  Else 0.5 <= abs(m) < 1.0.
hypot(...)
hypot(x,y)
 
Return the Euclidean distance, sqrt(x*x + y*y).
ldexp(...)
ldexp(x, i) -> x * (2**i)
log(...)
log(x) -> the natural logarithm (base e) of x.
log10(...)
log10(x) -> the base 10 logarithm of x.
modf(...)
modf(x)
 
Return the fractional and integer parts of x.  Both results carry the sign
of x.  The integer part is returned as a real.
pow(...)
pow(x,y)
 
Return x**y (x to the power of y).
sin(...)
sin(x)
 
Return the sine of x (measured in radians).
sinh(...)
sinh(x)
 
Return the hyperbolic sine of x.
sqrt(...)
sqrt(x)
 
Return the square root of x.
tan(...)
tan(x)
 
Return the tangent of x (measured in radians).
tanh(...)
tanh(x)
 
Return the hyperbolic tangent of x.
 
Data
             AAFILE = 'AA.DAT'
AAS = ['ALA', 'ARG', 'ASN', 'ASP', 'CYS', 'GLN', 'GLU', 'GLH', 'GLY', 'HIS', 'HID', 'HIE', 'HIP', 'HSD', 'HSE', 'HSP', 'ILE', 'LEU', 'LYS', 'MET', ...]
AMBER_FILE = 'AMBER.DAT'
BACKBONE = ['N', 'CA', 'C', 'O', 'O2', 'HA', 'HN', 'H', 'tN']
BONDED_SS_LIMIT = 2.5
BUMP_DIST = 2.0
BUMP_HDIST = 1.5
CELL_SIZE = 2
CHARMM_FILE = 'CHARMM.DAT'
DIHEDRAL = 57.2958
HYDRO_BONDCOORDS = [[7.5810000000000004, 2.0899999999999999, 12.506], [6.4580000000000002, 2.1619999999999999, 13.159000000000001], [5.1449999999999996, 2.2090000000000001, 12.452999999999999]]
HYDRO_COORDS = [6.476, 2.1859999999999999, 14.159000000000001]
LARGE_TORSION_ANGLE = 1000.0
NAFILE = 'NA.DAT'
NAS = ['A', 'A5', 'A3', 'C', 'C5', 'C3', 'G', 'G5', 'G3', 'T', 'T5', 'T3', 'U', 'U5', 'U3']
NTERM2_COORDS = [-24.001000000000001, 50.223999999999997, -22.225999999999999]
NTERM3_COORDS = [-24.869, 48.845999999999997, -22.77]
NTERM_COORDS = [[-24.196000000000002, 48.789999999999999, -20.800000000000001], [-25.552, 49.881, -21.847999999999999], [-24.645, 49.491, -22.007000000000001]]
OXT_COORDS = [-1.5289999999999999, 1.8580000000000001, 0.69499999999999995]
PARSE_FILE = 'PARSE.DAT'
PEPTIDE_DIST = 1.7
PEP_TRANS_CA = [-2.3130000000000002, 2.7839999999999998, 1.0229999999999999]
PEP_TRANS_N = [-1.252, 1.877, 0.88300000000000001]
REFATOM_SIZE = 3
REPAIR_LIMIT = 10
ROTAMERFILE = 'ROTAMER.DAT'
SMALL = 9.9999999999999995e-08
__author__ = 'Jens Erik Nielsen, Todd Dolinsky'
__date__ = '22 October 2003'
__file__ = './routines.pyc'
__name__ = 'routines'
e = 2.7182818284590451
pi = 3.1415926535897931
 
Author
             Jens Erik Nielsen, Todd Dolinsky