Class PdbReader

All Implemented Interfaces:
GenericLineReader
Direct Known Subclasses:
JmolDataReader, P2nReader, PqrReader, PyMOLReader

public class PdbReader extends AtomSetCollectionReader
PDB file reader.

http://www.rcsb.org

Author:
Miguel, Egon, and Bob (hansonr@stolaf.edu) pqr and gromacs pdb_wide_format added by Bob see http://repo.or.cz/w/gromacs.git/blob/HEAD:/src/gmxlib/pdbio.c line 244 see http://repo.or.cz/w/gromacs.git/blob/HEAD:/src/gmxlib/pdbio.c line 323 TLS Motion Determination: J Painter & E A Merritt (2006) Acta Cryst. D62, 439-450 http://skuld.bmsc.washington.edu/~tlsmd symmetry added by Bob Hanson: setFractionalCoordinates() setSpaceGroupName() setUnitCell() initializeCartesianToFractional(); setUnitCellItem() setAtomCoord() applySymmetryAndSetTrajectory()
  • Field Details

    • gromacsWideFormat

      protected boolean gromacsWideFormat
    • biomtChainAtomCounts

      protected int[] biomtChainAtomCounts
    • fileAtomIndex

      protected int fileAtomIndex
  • Constructor Details

    • PdbReader

      public PdbReader()
  • Method Details

    • initializeReader

      protected void initializeReader() throws Exception
      Overrides:
      initializeReader in class AtomSetCollectionReader
      Throws:
      Exception
    • checkLine

      protected boolean checkLine() throws Exception
      Overrides:
      checkLine in class AtomSetCollectionReader
      Returns:
      true if need to read new line
      Throws:
      Exception
    • checkRemark

      protected void checkRemark()
    • finalizeSubclassReader

      protected void finalizeSubclassReader() throws Exception
      Description copied from class: AtomSetCollectionReader
      optional reader-specific method run first.
      Overrides:
      finalizeSubclassReader in class AtomSetCollectionReader
      Throws:
      Exception
    • finalizeReaderPDB

      protected void finalizeReaderPDB() throws Exception
      Throws:
      Exception
    • processAtom

      protected Atom processAtom(Atom atom, String name, char altID, String group3, int chainID, int seqNo, char insCode, boolean isHetero, String sym)
    • processAtom2

      protected void processAtom2(Atom atom, int serial, float x, float y, float z, int charge)
    • filterPDBAtom

      protected boolean filterPDBAtom(Atom atom, int iAtom)
    • setAdditionalAtomParameters

      protected void setAdditionalAtomParameters(Atom atom)
      adaptable via subclassing
      Parameters:
      atom -
    • deduceElementSymbol

      protected String deduceElementSymbol(boolean isHetero)
      The problem here stems from the fact that developers have not fully understood the PDB specifications -- and that those have changed. The actual rules are as follows (using 1-based numbering: 1) Chemical symbols may be in columns 77 and 78 for total disambiguity. 2) Only valid chemical symbols should be in columns 13 and 14 These are the first two characters of a four-character field. 3) Four-character atom names for hydrogen necessarily start in column 13, so when that is the case, if the four-letter name starts with "H" then it is hydrogen regardless of what letter comes next. For example, "HG3 " is mercury (and should be in a HETATM record, not an ATOM record, anyway), but "HG33" is hydrogen, presumably. This leave open the ambiguity of a four-letter H name in a heteroatom set where the symbol is really H, not Hg or Ha, or Ho or Hf, etc.
      Parameters:
      isHetero -
      Returns:
      an atom symbol
    • model

      protected void model(int modelNumber, String name)
    • fixRadius

      protected static float fixRadius(float r)