src.pdb (4 August 2008) | index /Users/d3y382/workspaces/apbs/pdb2pqr/branches/pdb2pqr-1.8/src/pdb.py

`PDB parsing class
This module parses PDBs in accordance to PDB Format Description Version 2.2
(1996); it is not very forgiving. Each class in this module corresponds
to a record in the PDB Format Description. Much of the documentation for
the classes is taken directly from the above PDB Format Description.
----------------------------
PDB2PQR -- An automated pipeline for the setup, execution, and analysis of
Poisson-Boltzmann electrostatics calculations
Copyright (c) 2002-2011, Jens Erik Nielsen, University College Dublin;
Nathan A. Baker, Battelle Memorial Institute, Developed at the Pacific
Northwest National Laboratory, operated by Battelle Memorial Institute,
Pacific Northwest Division for the U.S. Department Energy.;
Paul Czodrowski & Gerhard Klebe, University of Marburg.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the names of University College Dublin, Battelle Memorial Institute,
Pacific Northwest National Laboratory, US Department of Energy, or University
of Marburg nor the names of its contributors may be used to endorse or promote
products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
OF THE POSSIBILITY OF SUCH DAMAGE.
----------------------------`

Modules

``

copy | string | sys |

Classes

``

ANISOU
ATOM
AUTHOR
CAVEAT
CISPEP
COMPND
CONECT
CRYST1
DBREF
END
ENDMDL
EXPDTA
FORMUL
HEADER
HELIX
HET
HETATM
HETNAM
HETSYN
HYDBND
JRNL
KEYWDS
LINK
MASTER
MODEL
MODRES
MOL2BOND
MOL2MOLECULE
MTRIX1
MTRIX2
MTRIX3
OBSLTE
ORIGX1
ORIGX2
ORIGX3
REMARK
REVDAT
SCALE1
SCALE2
SCALE3
SEQADV
SEQRES
SHEET
SIGATM
SIGUIJ
SITE
SLTBRG
SOURCE
SPRSDE
SSBOND
TER
TITLE
TURN
TVECT

class ANISOU
`` | `ANISOU class The ANISOU records present the anisotropic temperature factors.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line:
  COLUMNS TYPE FIELD DEFINITION
  ------------------------------------------------------
  7-11 int serial Atom serial number.
  13-16 string name Atom name.
  17 string altLoc Alternate location indicator.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Insertion code.
  29-35 int u00 U(1,1)
  36-42 int u11 U(2,2)
  43-49 int u22 U(3,3)
  50-56 int u01 U(1,2)
  57-63 int u02 U(1,3)
  64-70 int u12 U(2,3)
  73-76 string segID Segment identifier, left-justified.
  77-78 string element Element symbol, right-justified.
  79-80 string charge Charge on the atom.`

class ATOM
`` | `ATOM class The ATOM records present the atomic coordinates for standard residues. They also present the occupancy and temperature factor for each atom. Heterogen coordinates use the HETATM record type. The element symbol is always present on each ATOM record; segment identifier and charge are optional.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------
  7-11 int serial Atom serial number.
  13-16 string name Atom name.
  17 string altLoc Alternate location indicator.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Code for insertion of residues.
  31-38 float x Orthogonal coordinates for X in
  Angstroms.
  39-46 float y Orthogonal coordinates for Y in
  Angstroms.
  47-54 float z Orthogonal coordinates for Z in
  Angstroms.
  55-60 float occupancy Occupancy.
  61-66 float tempFactor Temperature factor.
  73-76 string segID Segment identifier, left-justified.
  77-78 string element Element symbol, right-justified.
  79-80 string charge Charge on the atom.`

__str__(self)
  `Print object as string
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------
  7-11 int serial Atom serial number.
  13-16 string name Atom name.
  17 string altLoc Alternate location indicator.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Code for insertion of residues.
  31-38 float x Orthogonal coordinates for X in
  Angstroms.
  39-46 float y Orthogonal coordinates for Y in
  Angstroms.
  47-54 float z Orthogonal coordinates for Z in
  Angstroms.
  55-60 float occupancy Occupancy.
  61-66 float tempFactor Temperature factor.
  73-76 string segID Segment identifier, left-justified.
  77-78 string element Element symbol, right-justified.
  79-80 string charge Charge on the atom.`

class AUTHOR
`` | `AUTHOR field The AUTHOR record contains the names of the people responsible for the contents of the entry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------------
  11-70 string authorList List of the author names, separated by
  commas`

class CAVEAT
`` | `CAVEAT field CAVEAT warns of severe errors in an entry. Use caution when using an entry containing this record.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line.
  COLUMNS TYPE FIELD DEFINITION
  ----------------------------------------------------
  12-15 string idCode PDB ID code of this entry.
  20-70 string comment Free text giving the reason for the
  CAVEAT.`

class CISPEP
`` | `CISPEP field CISPEP records specify the prolines and other peptides found to be in the cis conformation. This record replaces the use of footnote records to list cis peptides.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------------
  8-10 int serNum Record serial number.
  12-14 string pep1 Residue name.
  16 string chainID1 Chain identifier.
  18-21 int seqNum1 Residue sequence number.
  22 string icode1 Insertion code.
  26-28 string pep2 Residue name.
  30 string chainID2 Chain identifier.
  32-35 int seqNum2 Residue sequence number.
  36 string icode2 Insertion code.
  44-46 int modNum Identifies the specific model.
  54-59 float measure Measure of the angle in degrees.`

class COMPND

``

`COMPND field
The COMPND record describes the macromolecular contents of an entry.
Each macromolecule found in the entry is described by a set of token:
value pairs, and is referred to as a COMPND record component. Since the
concept of a molecule is difficult to specify exactly, PDB staff may
exercise editorial judgment in consultation with depositors in
assigning these names.
For each macromolecular component, the molecule name, synonyms, number
assigned by the Enzyme Commission (EC), and other relevant details are
specified.
`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------------
  11-70 string compound Description of the molecular list
  components.`

class CONECT

``

`CONECT class
The CONECT records specify connectivity between atoms for which
coordinates are supplied. The connectivity is described using the atom
serial number as found in the entry. CONECT records are mandatory for
HET groups (excluding water) and for other bonds not specified in the
standard residue connectivity table which involve atoms in standard
residues (see Appendix 4 for the list of standard residues). These
records are generated by the PDB.
`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------
  7-11 int serial Atom serial number
  12-16 int serial1 Serial number of bonded atom
  17-21 int serial2 Serial number of bonded atom
  22-26 int serial3 Serial number of bonded atom
  27-31 int serial4 Serial number of bonded atom
  32-36 int serial5 Serial number of hydrogen bonded atom
  37-41 int serial6 Serial number of hydrogen bonded atom
  42-46 int serial7 Serial number of salt bridged atom
  47-51 int serial8 Serial number of hydrogen bonded atom
  52-56 int serial9 Serial number of hydrogen bonded atom
  57-61 int serial10 Serial number of salt bridged atom`

class CRYST1
`` | `CRYST1 class The CRYST1 record presents the unit cell parameters, space group, and Z value. If the structure was not determined by crystallographic means, CRYST1 simply defines a unit cube.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------
  7-15 float a a (Angstroms).
  16-24 float b b (Angstroms).
  25-33 float c c (Angstroms).
  34-40 float alpha alpha (degrees).
  41-47 float beta beta (degrees).
  48-54 float gamma gamma (degrees).
  56-66 string sGroup Space group.
  67-70 int z Z value.`

class DBREF

``

`DBREF field
The DBREF record provides cross-reference links between PDB sequences
and the corresponding database entry or entries. A cross reference to
the sequence database is mandatory for each peptide chain with a length
greater than ten (10) residues. For nucleic acid entries a DBREF record
pointing to the Nucleic Acid Database (NDB) is mandatory when the
corresponding entry exists in NDB.
`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line.
  COLUMNS TYPE FIELD DEFINITION
  ------------------------------------------------------
  8-11 string idCode ID code of this entry.
  13 string chainID Chain identifier.
  15-18 int seqBegin Initial sequence number of the PDB
  sequence segment.
  19 string insertBegin Initial insertion code of the PDB
  sequence segment.
  21-24 int seqEnd Ending sequence number of the PDB
  sequence segment.
  25 string insertEnd Ending insertion code of the PDB
  sequence segment.
  27-32 string database Sequence database name. "PDB" when
  a corresponding sequence database
  entry has not been identified.
  34-41 string dbAccession Sequence database accession code.
  For GenBank entries, this is the
  NCBI gi number.
  43-54 string dbIdCode Sequence database identification
  code. For GenBank entries, this is
  the accession code.
  56-60 int dbseqBegin Initial sequence number of the
  database seqment.
  61 string dbinsBeg Insertion code of initial residue
  of the segment, if PDB is the
  reference.
  63-67 int dbseqEnd Ending sequence number of the
  database segment.
  68 string dbinsEnd Insertion code of the ending
  residue of the segment, if PDB is
  the reference.`

class END
`` | `END class The END records are paired with MODEL records to group individual structures found in a coordinate entry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line (nothing to do)`

class ENDMDL
`` | `ENDMDL class The ENDMDL records are paired with MODEL records to group individual structures found in a coordinate entry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line (nothing to do)`

class EXPDTA
`` | `EXPDTA field The EXPDTA record identifies the experimental technique used. This may refer to the type of radiation and sample, or include the spectroscopic or modeling technique. Permitted values include: ELECTRON DIFFRACTION FIBER DIFFRACTION FLUORESCENCE TRANSFER NEUTRON DIFFRACTION NMR THEORETICAL MODEL X-RAY DIFFRACTION`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------------
  11-70 string technique The experimental technique(s) with
  optional comment describing the sample
  or experiment`

class FORMUL
`` | `FORMUL field The FORMUL record presents the chemical formula and charge of a non-standard group.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  9-10 int compNum Component number
  13-15 string hetID Het identifier
  19 string asterisk * for water
  20-70 string text Chemical formula`

class HEADER
`` | `HEADER field The HEADER record uniquely identifies a PDB entry through the idCode field. This record also provides a classification for the entry. Finally, it contains the date the coordinates were deposited at the PDB.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line.
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------------------
  11-50 string classification Classifies the molecule(s)
  51-59 string depDate Deposition date. This is the date
  the coordinates were received by
  the PDB
  63-66 string idCode This identifier is unique within PDB`

class HELIX
`` | `HELIX field HELIX records are used to identify the position of helices in the molecule. Helices are both named and numbered. The residues where the helix begins and ends are noted, as well as the total length.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ------------------------------------------------------
  8-10 int serNum Serial number of the helix. This
  starts at 1 and increases
  incrementally.
  12-14 string helixID Helix identifier. In addition to a
  serial number, each helix is given an
  alphanumeric character helix identifier.
  16-18 string initResName Name of the initial residue.
  20 string initChainID Chain identifier for the chain
  containing this helix.
  22-25 int initSeqNum Sequence number of the initial residue.
  26 string initICode Insertion code of the initial residue.
  28-30 string endResName Name of the terminal residue of
  the helix.
  32 string endChainID Chain identifier for the chain
  containing this helix.
  34-37 int endSeqNum Sequence number of the terminal residue.
  38 string endICode Insertion code of the terminal residue.
  39-40 int helixClass Helix class (see below).
  41-70 string comment Comment about this helix.
  72-76 int length Length of this helix.`

class HET

``

`HET field
HET records are used to describe non-standard residues, such as
prosthetic groups, inhibitors, solvent molecules, and ions for which
coordinates are supplied. Groups are considered HET if they are:
- not one of the standard amino acids, and
- not one of the nucleic acids (C, G, A, T, U, and I), and
- not one of the modified versions of nucleic acids (+C, +G, +A, +T,
+U, and +I), and
- not an unknown amino acid or nucleic acid where UNK is used to
indicate the unknown residue name.
Het records also describe heterogens for which the chemical identity is
unknown, in which case the group is assigned the hetID UNK.
`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------------------
  8-10 string hetID Het identifier, right-justified.
  13 string ChainID Chain identifier.
  14-17 int seqNum Sequence number.
  18 string iCode Insertion code.
  21-25 int numHetAtoms Number of HETATM records for the
  31-70 string text Text describing Het group.`

class HETATM
`` | `HETATM class The HETATM records present the atomic coordinate records for atoms within "non-standard" groups. These records are used for water molecules and atoms presented in HET groups.`

Methods defined here:

__init__(self, line, sybylType='A.aaa', lBonds=[], lBondedAtoms=[])
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------
  7-11 int serial Atom serial number.
  13-16 string name Atom name.
  17 string altLoc Alternate location indicator.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Code for insertion of residues.
  31-38 float x Orthogonal coordinates for X in
  Angstroms.
  39-46 float y Orthogonal coordinates for Y in
  Angstroms.
  47-54 float z Orthogonal coordinates for Z in
  Angstroms.
  55-60 float occupancy Occupancy.
  61-66 float tempFactor Temperature factor.
  73-76 string segID Segment identifier, left-justified.
  77-78 string element Element symbol, right-justified.
  79-80 string charge Charge on the atom.`

__str__(self)
  `Print object as string
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------
  7-11 int serial Atom serial number.
  13-16 string name Atom name.
  17 string altLoc Alternate location indicator.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Code for insertion of residues.
  31-38 float x Orthogonal coordinates for X in
  Angstroms.
  39-46 float y Orthogonal coordinates for Y in
  Angstroms.
  47-54 float z Orthogonal coordinates for Z in
  Angstroms.
  55-60 float occupancy Occupancy.
  61-66 float tempFactor Temperature factor.
  73-76 string segID Segment identifier, left-justified.
  77-78 string element Element symbol, right-justified.
  79-80 string charge Charge on the atom.`

class HETNAM
`` | `HETNAM field This record gives the chemical name of the compound with the given hetID.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  12-14 string hetID Het identifier, right-justified.
  16-70 string text Chemical name.`

class HETSYN
`` | `HETSYN field This record provides synonyms, if any, for the compound in the corresponding (i.e., same hetID) HETNAM record. This is to allow greater flexibility in searching for HET groups.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  12-14 string hetID Het identifier, right-justified.
  16-70 string hetSynonyms List of synonyms`

class HYDBND
`` | `HYDBND field The HYDBND records specify hydrogen bonds in the entry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------------
  13-16 string name1 Atom name.
  17 string altLoc1 Alternate location indicator.
  18-20 string resName1 Residue name.
  22 string Chain1 Chain identifier.
  23-27 int resSeq1 Residue sequence number.
  28 string ICode1 Insertion code.
  30-33 string nameH Hydrogen atom name.
  34 string altLocH Alternate location indicator.
  36 string ChainH Chain identifier.
  37-41 int resSeqH Residue sequence number.
  42 string iCodeH Insertion code.
  44-47 string name2 Atom name.
  48 string altLoc2 Alternate location indicator.
  49-51 string resName2 Residue name.
  53 string chainID2 Chain identifier.
  54-58 int resSeq2 Residue sequence number.
  59 string iCode2 Insertion code.
  60-65 string sym1 Symmetry operator for 1st
  non-hydrogen atom.
  67-72 string sym2 Symmetry operator for 2nd
  non-hydrogen atom.`

class JRNL
`` | `JRNL field The JRNL record contains the primary literature citation that describes the experiment which resulted in the deposited coordinate set. There is at most one JRNL reference per entry. If there is no primary reference, then there is no JRNL reference. Other references are given in REMARK 1.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------
  13-70 string text See Details on web.`

class KEYWDS

``

`KEYWDS field
The KEYWDS record contains a set of terms relevant to the entry. Terms
in the KEYWDS record provide a simple means of categorizing entries and
may be used to generate index files. This record addresses some of the
limitations found in the classification field of the HEADER record. It
provides the opportunity to add further annotation to the entry in a
concise and computer-searchable fashion.
`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------------
  11-70 string keywds Comma-separated list of keywords relevant
  to the entry`

class LINK
`` | `LINK field The LINK records specify connectivity between residues that is not implied by the primary structure. Connectivity is expressed in terms of the atom names. This record supplements information given in CONECT records and is provided here for convenience in searching.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  13-16 string name1 Atom name.
  17 string altLoc1 Alternate location indicator.
  18-20 string resName1 Residue name.
  22 string chainID1 Chain identifier.
  23-26 int resSeq1 Residue sequence number.
  27 string iCode1 Insertion code.
  43-46 string name2 Atom name.
  47 string altLoc2 Alternate location indicator.
  48-50 string resName2 Residue name.
  52 string chainID2 Chain identifier.
  53-56 int resSeq2 Residue sequence number.
  57 string iCode2 Insertion code.
  60-65 string sym1 Symmetry operator for 1st atom.
  67-72 string sym2 Symmetry operator for 2nd atom.`

class MASTER
`` | `MASTER class The MASTER record is a control record for bookkeeping. It lists the number of lines in the coordinate entry or file for selected record types.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -------------------------------------------------
  11-15 int numRemark Number of REMARK records
  21-25 int numHet Number of HET records
  26-30 int numHelix Number of HELIX records
  31-35 int numSheet Number of SHEET records
  36-40 int numTurn Number of TURN records
  41-45 int numSite Number of SITE records
  46-50 int numXform Number of coordinate transformation
  records (ORIGX+SCALE+MTRIX)
  51-55 int numCoord Number of atomic coordinate records
  (ATOM+HETATM)
  56-60 int numTer Number of TER records
  61-65 int numConect Number of CONECT records
  66-70 int numSeq Number of SEQRES records`

class MODEL
`` | `MODEL class The MODEL record specifies the model serial number when multiple structures are presented in a single coordinate entry, as is often the case with structures determined by NMR.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  11-14 int serial Model serial number.`

class MODRES
`` | `MODRES field The MODRES record provides descriptions of modifications (e.g., chemical or post-translational) to protein and nucleic acid residues. Included are a mapping between residue names given in a PDB entry and standard residues.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------
  8-11 string idCode ID code of this entry.
  13-15 string resName Residue name used in this entry.
  17 string chainID Chain identifier.
  19-22 int seqNum Sequence number.
  23 string iCode Insertion code.
  25-27 string stdRes Standard residue name.
  30-70 string comment Description of the residue modification.`

class MOL2BOND
`` | `Bonding of MOL2 files`

Methods defined here:

__init__(self, frm, to, type, id=0)

class MOL2MOLECULE
`` | `Tripos MOL2 molecule For further information look at (web page exists: 25 August 2005): http://www.tripos.com/index.php?family=modules,SimplePage,,,&page=sup_mol2&s=0`

Methods defined here:

__init__(self)

createPDBlineFromMOL2(self)

createlBondedAtoms(self)
  `Creates for each atom a list of the bonded Atoms
  This becomes one attribute of MOL2ATOM!`

parseAtoms(self, AtomList)
  `for parsing @<TRIPOS>ATOM`

parseBonds(self, BondList)
  `for parsing @<TRIPOS>BOND`

read(self, file)
  `Routines for reading MOL2 file`

class MTRIX1
`` | `MTRIX1 class The MTRIXn (n = 1, 2, or 3) records present transformations expressing non-crystallographic symmetry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  8-10 int serial Serial number
  11-20 float mn1 M11
  21-30 float mn2 M12
  31-40 float mn3 M13
  46-55 float vn V1
  60 int iGiven 1 if coordinates for the representations
  which are approximately related by the
  transformations of the molecule are contained in
  the entry. Otherwise, blank.`

class MTRIX2
`` | `MTRIX2 class The MTRIXn (n = 1, 2, or 3) records present transformations expressing non-crystallographic symmetry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  8-10 int serial Serial number
  11-20 float mn1 M21
  21-30 float mn2 M22
  31-40 float mn3 M23
  46-55 float vn V2
  60 int iGiven 1 if coordinates for the representations
  which are approximately related by the
  transformations of the molecule are contained in
  the entry. Otherwise, blank.`

class MTRIX3
`` | `MTRIX3 class The MTRIX3 (n = 1, 2, or 3) records present transformations expressing non-crystallographic symmetry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  8-10 int serial Serial number
  11-20 float mn1 M31
  21-30 float mn2 M32
  31-40 float mn3 M33
  46-55 float vn V3
  60 int iGiven 1 if coordinates for the representations
  which are approximately related by the
  transformations of the molecule are contained in
  the entry. Otherwise, blank.`

class OBSLTE
`` | `OBSLTE field This record acts as a flag in an entry which has been withdrawn from the PDB's full release. It indicates which, if any, new entries have replaced the withdrawn entry. The format allows for the case of multiple new entries replacing one existing entry.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line.
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------
  12-20 string repDate Date that this entry was replaced.
  22-25 string idCode ID code of this entry.
  32-35 string rIdCode ID code of entry that replaced
  this one.
  37-40 string rIdCode ID code of entry that replaced
  this one.
  42-45 string rIdCode ID code of entry that replaced
  this one.
  47-50 string rIdCode ID code of entry that replaced
  this one.
  52-55 string rIdCode ID code of entry that replaced
  this one.
  57-60 string rIdCode ID code of entry that replaced
  this one.
  62-65 string rIdCode ID code of entry that replaced
  this one.
  67-70 string rIdCode ID code of entry that replaced
  this one.`

class ORIGX1
`` | `ORIGX1 class The ORIGXn (n = 1, 2, or 3) records present the transformation from the orthogonal coordinates contained in the entry to the submitted coordinates.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  11-20 float on1 O11
  21-30 float on2 O12
  31-40 float on3 O13
  46-55 float tn T1`

class ORIGX2
`` | `ORIGX2 class The ORIGXn (n = 1, 2, or 3) records present the transformation from the orthogonal coordinates contained in the entry to the submitted coordinates.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  11-20 float on1 O21
  21-30 float on2 O22
  31-40 float on3 O23
  46-55 float tn T2`

class ORIGX3
`` | `ORIGX3 class The ORIGXn (n = 1, 2, or 3) records present the transformation from the orthogonal coordinates contained in the entry to the submitted coordinates.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  11-20 float on1 O31
  21-30 float on2 O32
  31-40 float on3 O33
  46-55 float tn T3`

class REMARK
`` | `REMARK field REMARK records present experimental details, annotations, comments, and information not included in other records. In a number of cases, REMARKs are used to expand the contents of other record types. A new level of structure is being used for some REMARK records. This is expected to facilitate searching and will assist in the conversion to a relational database.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line`

class REVDAT
`` | `REVDAT field REVDAT records contain a history of the modifications made to an entry since its release.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line.
  COLUMNS TYPE FIELD DEFINITION
  -------------------------------------------------------
  8-10 int modNum Modification number.
  14-22 string modDate Date of modification (or release for
  new entries).
  24-28 string modId Identifies this particular modification.
  It links to the archive used internally by
  PDB.
  32 int modType An integer identifying the type of
  modification. In case of revisions
  with more than one possible modType,
  the highest value applicable will be
  assigned.
  40-45 string record Name of the modified record.
  47-52 string record Name of the modified record.
  54-59 string record Name of the modified record.
  61-66 string record Name of the modified record.`

class SCALE1
`` | `SCALE1 class The SCALEn (n = 1, 2, or 3) records present the transformation from the orthogonal coordinates as contained in the entry to fractional crystallographic coordinates. Non-standard coordinate systems should be explained in the remarks.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  11-20 float sn1 S11
  21-30 float sn2 S12
  31-40 float sn3 S13
  46-55 float un U1`

class SCALE2
`` | `SCALE2 class The SCALEn (n = 1, 2, or 3) records present the transformation from the orthogonal coordinates as contained in the entry to fractional crystallographic coordinates. Non-standard coordinate systems should be explained in the remarks.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  11-20 float sn1 S21
  21-30 float sn2 S22
  31-40 float sn3 S23
  46-55 float un U2`

class SCALE3
`` | `SCALE3 class The SCALEn (n = 1, 2, or 3) records present the transformation from the orthogonal coordinates as contained in the entry to fractional crystallographic coordinates. Non-standard coordinate systems should be explained in the remarks.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  11-20 float sn1 S31
  21-30 float sn2 S32
  31-40 float sn3 S33
  46-55 float un U3`

class SEQADV

``

`SEQADV field
The SEQADV record identifies conflicts between sequence information in
the ATOM records of the PDB entry and the sequence database entry given
on DBREF. Please note that these records were designed to identify
differences and not errors. No assumption is made as to which database
contains the correct data. PDB may include REMARK records in the entry
that reflect the depositor's view of which database has the correct
sequence.
`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  8-11 string idCode ID code of this entry.
  13-15 string resName Name of the PDB residue in conflict.
  17 string chainID PDB chain identifier.
  19-22 int seqNum PDB sequence number.
  23 string iCode PDB insertion code.
  25-28 string database Sequence database name.
  30-38 string dbIdCode Sequence database accession
  number.
  40-42 string dbRes Sequence database residue name.
  44-48 int dbSeq Sequence database sequence number.
  50-70 string conflict Conflict comment.`

class SEQRES
`` | `SEQRES field SEQRES records contain the amino acid or nucleic acid sequence of residues in each chain of the macromolecule that was studied.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  9-10 int serNum Serial number of the SEQRES record for the
  current chain. Starts at 1 and increments
  by one each line. Reset to 1 for each
  chain.
  12 string chainID Chain identifier. This may be any single
  legal character, including a blank which is
  used if there is only one chain.
  14-17 int numRes Number of residues in the chain. This
  value is repeated on every record.
  20-22 string resName Residue name.
  24-26 string resName Residue name.
  28-30 string resName Residue name.
  32-34 string resName Residue name.
  36-38 string resName Residue name.
  40-42 string resName Residue name.
  44-46 string resName Residue name.
  48-50 string resName Residue name.
  52-54 string resName Residue name.
  56-58 string resName Residue name.
  60-62 string resName Residue name.
  64-66 string resName Residue name.
  68-70 string resName Residue name.`

class SHEET
`` | `SHEET field SHEET records are used to identify the position of sheets in the molecule. Sheets are both named and numbered. The residues where the sheet begins and ends are noted.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -------------------------------------------------
  8 - 10 int strand Strand number which starts at 1 for
  each strand within a sheet and
  increases by one.
  12 - 14 string sheetID Sheet identifier.
  15 - 16 int numStrands Number of strands in sheet.
  18 - 20 string initResName Residue name of initial residue.
  22 string initChainID Chain identifier of initial residue in
  strand.
  23 - 26 int initSeqNum Sequence number of initial residue in
  strand.
  27 string initICode Insertion code of initial residue in
  strand.
  29 - 31 string endResName Residue name of terminal residue.
  33 string endChainID Chain identifier of terminal residue.
  34 - 37 int endSeqNum Sequence number of terminal residue.
  38 string endICode Insertion code of terminal residue.
  39 - 40 int sense Sense of strand with respect to
  previous strand in the sheet. 0 if
  first strand, 1 if parallel, -1 if
  anti-parallel.
  42 - 45 string curAtom Registration. Atom name in current
  strand.
  46 - 48 string curResName Registration. Residue name in current
  strand.
  50 string curChainId Registration. Chain identifier in
  current strand.
  51 - 54 int curResSeq Registration. Residue sequence number
  in current strand.
  55 string curICode Registration. Insertion code in current
  strand.
  57 - 60 string prevAtom Registration. Atom name in previous
  strand.
  61 - 63 string prevResName Registration. Residue name in previous
  strand.
  65 string prevChainId Registration. Chain identifier in
  previous strand.
  66 - 69 int prevResSeq Registration. Residue sequence number
  in previous strand.
  70 string prevICode Registration. Insertion code in
  previous strand.`

class SIGATM
`` | `SIGATM class The SIGATM records present the standard deviation of atomic parameters as they appear in ATOM and HETATM records.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------
  7-11 int serial Atom serial number.
  13-16 string name Atom name.
  17 string altLoc Alternate location indicator.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Code for insertion of residues.
  31-38 float sigX Standard devition of orthogonal
  coordinates for X in Angstroms.
  39-46 float sigY Standard devition of orthogonal
  coordinates for Y in Angstroms.
  47-54 float sigZ Standard devition of orthogonal
  coordinates for Z in Angstroms.
  55-60 float sigOcc Standard devition of occupancy.
  61-66 float sigTemp Standard devition of temperature factor.
  73-76 string segID Segment identifier, left-justified.
  77-78 string element Element symbol, right-justified.
  79-80 string charge Charge on the atom.`

class SIGUIJ
`` | `SIGUIJ class The SIGUIJ records present the anisotropic temperature factors.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line:
  COLUMNS TYPE FIELD DEFINITION
  ------------------------------------------------------
  7-11 int serial Atom serial number.
  13-16 string name Atom name.
  17 string altLoc Alternate location indicator.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Insertion code.
  29-35 int sig11 Sigma U(1,1)
  36-42 int sig22 Sigma U(2,2)
  43-49 int sig33 Sigma U(3,3)
  50-56 int sig12 Sigma U(1,2)
  57-63 int sig13 Sigma U(1,3)
  64-70 int sig23 Sigma U(2,3)
  73-76 string segID Segment identifier, left-justified.
  77-78 string element Element symbol, right-justified.
  79-80 string charge Charge on the atom.`

class SITE
`` | `SITE class The SITE records supply the identification of groups comprising important sites in the macromolecule.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing the line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------------------------
  8-10 int seqNum Sequence number.
  12-14 string siteID Site name.
  16-17 int numRes Number of residues comprising site.
  19-21 string resName1 Residue name for first residue
  comprising site.
  23 string chainID1 Chain identifier for first residue
  comprising site.
  24-27 int seq1 Residue sequence number for first
  residue comprising site.
  28 string iCode1 Insertion code for first residue
  comprising site.
  30-32 string resName2 Residue name for second residue
  comprising site.
  34 string chainID2 Chain identifier for second residue
  comprising site.
  35-38 int seq2 Residue sequence number for second
  residue comprising site.
  39 string iCode2 Insertion code for second residue
  comprising site.
  41-43 string resName3 Residue name for third residue
  comprising site.
  45 string chainID3 Chain identifier for third residue
  comprising site.
  46-49 int seq3 Residue sequence number for third
  residue comprising site.
  50 string iCode3 Insertion code for third residue
  comprising site.
  52-54 string resName4 Residue name for fourth residue
  comprising site.
  56 string chainID4 Chain identifier for fourth residue
  comprising site.
  57-60 int seq4 Residue sequence number for fourth
  residue comprising site.
  61 string iCode4 Insertion code for fourth residue
  comprising site.`

class SLTBRG
`` | `SLTBRG field The SLTBRG records specify salt bridges in the entry. records and is provided here for convenience in searching.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  13-16 string name1 Atom name.
  17 string altLoc1 Alternate location indicator.
  18-20 string resName1 Residue name.
  22 string chainID1 Chain identifier.
  23-26 int resSeq1 Residue sequence number.
  27 string iCode1 Insertion code.
  43-46 string name2 Atom name.
  47 string altLoc2 Alternate location indicator.
  48-50 string resName2 Residue name.
  52 string chainID2 Chain identifier.
  53-56 int resSeq2 Residue sequence number.
  57 string iCode2 Insertion code.
  60-65 string sym1 Symmetry operator for 1st atom.
  67-72 string sym2 Symmetry operator for 2nd atom.`

class SOURCE
`` | `SOURCE field The SOURCE record specifies the biological and/or chemical source of each biological molecule in the entry. Sources are described by both the common name and the scientific name, e.g., genus and species. Strain and/or cell-line for immortalized cells are given when they help to uniquely identify the biological entity studied.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line
  COLUMNS TYPE FIELD DEFINITION
  --------------------------------------------------
  11-70 string source Identifies the source of the macromolecule
  in a token: value format`

class SPRSDE
`` | `SPRSDE field The SPRSDE records contain a list of the ID codes of entries that were made obsolete by the given coordinate entry and withdrawn from the PDB release set. One entry may replace many. It is PDB policy that only the principal investigator of a structure has the authority to withdraw it.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------
  12-20 string sprsdeDate Date this entry superseded the
  listed entries.
  22-25 string idCode ID code of this entry.
  32-35 string sIdCode ID code of a superseded entry.
  37-40 string sIdCode ID code of a superseded entry.
  42-45 string sIdCode ID code of a superseded entry.
  47-50 string sIdCode ID code of a superseded entry.
  52-55 string sIdCode ID code of a superseded entry.
  57-60 string sIdCode ID code of a superseded entry.
  62-65 string sIdCode ID code of a superseded entry.
  67-70 string sIdCode ID code of a superseded entry.`

class SSBOND
`` | `SSBOND field The SSBOND record identifies each disulfide bond in protein and polypeptide structures by identifying the two residues involved in the bond.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  -----------------------------------------------------
  8 - 10 int serNum Serial number.
  16 string chainID1 Chain identifier.
  18 - 21 int seqNum1 Residue sequence number.
  22 string icode1 Insertion code.
  30 string chainID2 Chain identifier.
  32 - 35 int seqNum2 Residue sequence number.
  36 string icode2 Insertion code.
  60 - 65 string sym1 Symmetry operator for 1st residue.
  67 - 72 string sym2 Symmetry operator for 2nd residue.`

class TER
`` | `TER class The TER record indicates the end of a list of ATOM/HETATM records for a chain.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line:
  COLUMNS TYPE FIELD DEFINITION
  -------------------------------------------
  7-11 int serial Serial number.
  18-20 string resName Residue name.
  22 string chainID Chain identifier.
  23-26 int resSeq Residue sequence number.
  27 string iCode Insertion code.`

class TITLE
`` | `TITLE field The TITLE record contains a title for the experiment or analysis that is represented in the entry. It should identify an entry in the PDB in the same way that a title identifies a paper.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing a line.
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------
  11-70 string title Title of the experiment`

class TURN
`` | `TURN field The TURN records identify turns and other short loop turns which normally connect other secondary structure segments.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------------------------------
  8-10 int seq Turn number; starts with 1 and
  increments by one.
  12-14 string turnId Turn identifier
  16-18 string initResName Residue name of initial residue in
  turn.
  20 string initChainId Chain identifier for the chain
  containing this turn.
  21-24 int initSeqNum Sequence number of initial residue in
  turn.
  25 string initICode Insertion code of initial residue in
  turn.
  27-29 string endResName Residue name of terminal residue of
  turn.
  31 string endChainId Chain identifier for the chain
  containing this turn.
  32-35 int endSeqNum Sequence number of terminal residue of
  turn.
  36 string endICode Insertion code of terminal residue of
  turn.
  41-70 string comment Associated comment.`

class TVECT
`` | `TVECT class The TVECT records present the translation vector for infinite covalently connected structures.`

Methods defined here:

__init__(self, line)
  `Initialize by parsing line
  COLUMNS TYPE FIELD DEFINITION
  ---------------------------------
  8-10 int serial Serial number
  11-20 float t1 Components of translation vector
  21-30 float t2 Components of translation vector
  31-40 float t2 Components of translation vector
  41-70 string text Comments`

Functions

``

getRandom()
  `Download a random PDB and return the path name.
  Returns
  path name of downloaded file`

main()
  `Main driver for testing. Parses set number of random PDBs`

readAtom(line)
  `If the ATOM/HETATM is not column-formatted, try to get some
  information by parsing whitespace from the right. Look for
  five floating point numbers followed by the residue number.
  Parameters
  line: The line to parse(string)
  if record == ATOM:
  self.serial = int(string.strip(line[6:11]))
  self.name = string.strip(line[12:16])
  self.altLoc = string.strip(line[16])
  self.resName = string.strip(line[17:20])
  self.chainID = string.strip(line[21])
  self.resSeq = int(string.strip(line[22:26]))
  self.iCode = string.strip(line[26])
  self.x = float(string.strip(line[30:38]))
  self.y = float(string.strip(line[38:46]))
  self.z = float(string.strip(line[46:54]))
  try:
  self.occupancy = float(string.strip(line[54:60]))
  self.tempFactor = float(string.strip(line[60:66]))
  self.segID = string.strip(line[72:76])
  self.element = string.strip(line[76:78])
  self.charge = string.strip(line[78:80])
  except ValueError, IndexError:
  self.occupancy = 0.00
  self.tempFactor = 0.00
  self.segID = 0
  self.element = 0
  self.charge = 0
  else: raise ValueError, record`

readPDB(file)
  `Parse PDB-format data into array of Atom objects.
  Parameters
  file: open file object
  Returns (dict, errlist)
  dict: a dictionary indexed by PDB record names
  errlist: a list of record names that couldn't be parsed`

Data
`` |  | __author__ = 'Todd Dolinsky, Yong Huang' __date__ = '4 August 2008'

Author
`` |  | Todd Dolinsky, Yong Huang