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