Class PdbReader

All Implemented Interfaces:
javajs.api.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

    • MODE_PDB

      private static final int MODE_PDB
      See Also:
    • MODE_HEX

      private static final int MODE_HEX
      See Also:
    • MODE_HYBRID36

      private static final int MODE_HYBRID36
      See Also:
    • serMode

      private int serMode
    • seqMode

      private int seqMode
    • serial

      private int serial
    • lineLength

      private int lineLength
    • pdbHeader

      private javajs.util.SB pdbHeader
    • applySymmetry

      private boolean applySymmetry
    • getTlsGroups

      private boolean getTlsGroups
    • isMultiModel

      private boolean isMultiModel
    • haveMappedSerials

      private boolean haveMappedSerials
    • isConnectStateBug

      private boolean isConnectStateBug
    • isLegacyModelType

      private boolean isLegacyModelType
    • gromacsWideFormat

      protected boolean gromacsWideFormat
    • htFormul

      private final Map<String,Map<String,Boolean>> htFormul
    • htHetero

      private Map<String,String> htHetero
    • htSites

      private Map<String,Map<String,Object>> htSites
    • htElementsInCurrentGroup

      private Map<String,Boolean> htElementsInCurrentGroup
    • htMolIds

      private Map<String,Map<String,String>> htMolIds
    • vCompnds

      private javajs.util.Lst<Map<String,String>> vCompnds
    • vBiomolecules

      private javajs.util.Lst<Map<String,Object>> vBiomolecules
    • vTlsModels

      private javajs.util.Lst<Map<String,Object>> vTlsModels
    • sbTlsErrors

      private javajs.util.SB sbTlsErrors
    • biomtChainAtomCounts

      protected int[] biomtChainAtomCounts
    • sbIgnored

      private javajs.util.SB sbIgnored
    • sbSelected

      private javajs.util.SB sbSelected
    • sbConect

      private javajs.util.SB sbConect
    • sb

      private javajs.util.SB sb
    • ac

      private int ac
    • maxSerial

      private int maxSerial
    • nUNK

      private int nUNK
    • nRes

      private int nRes
    • currentCompnd

      private Map<String,String> currentCompnd
    • currentGroup3

      private String currentGroup3
    • currentKey

      private String currentKey
    • currentResno

      private int currentResno
    • configurationPtr

      private int configurationPtr
    • resetKey

      private boolean resetKey
    • compnd

      private String compnd
    • conformationIndex

      private int conformationIndex
    • fileAtomIndex

      protected int fileAtomIndex
    • lastAltLoc

      private char lastAltLoc
    • lastGroup

      private int lastGroup
    • lastInsertion

      private char lastInsertion
    • lastSourceSerial

      private int lastSourceSerial
    • lastTargetSerial

      private int lastTargetSerial
    • tlsGroupID

      private int tlsGroupID
    • atomTypePt0

      private int atomTypePt0
    • atomTypeLen

      private int atomTypeLen
    • isCourseGrained

      private boolean isCourseGrained
    • isbiomol

      private boolean isbiomol
    • lineOptions

      private static final String lineOptions
      See Also:
    • htGroup1

      Map<String,String> htGroup1
    • maxLength

      private int maxLength
    • pdbID

      private String pdbID
    • haveDoubleBonds

      private boolean haveDoubleBonds
    • cryst1

      private float cryst1
    • fileSgName

      private String fileSgName
    • dataT

      private final float[] dataT
    • RAD_PER_DEG

      private static final float RAD_PER_DEG
      See Also:
    • _8PI2_

      private static final float _8PI2_
      See Also:
    • tlsU

      private Map<Atom,float[]> tlsU
    • vConnect

      private javajs.util.Lst<int[]> vConnect
    • connectNextAtomIndex

      private int connectNextAtomIndex
    • connectNextAtomSet

      private int connectNextAtomSet
    • connectLast

      private int[] connectLast
  • 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()
    • seqAdv

      private void seqAdv()
    • readHeader

      private String readHeader(boolean getLine) throws Exception
      Throws:
      Exception
    • 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
    • checkUnitCellParams

      private void checkUnitCellParams()
    • checkForResidualBFactors

      private void checkForResidualBFactors(SymmetryInterface symmetry)
    • header

      private void header()
    • title

      private void title()
    • compnd

      private void compnd(boolean isSource)
    • setBiomoleculeAtomCounts

      private void setBiomoleculeAtomCounts()
    • remark350

      private boolean remark350() throws Exception
      Throws:
      Exception
    • remark285

      private boolean remark285()
    • remark290

      private boolean remark290() throws Exception
      Throws:
      Exception
    • getSerial

      private int getSerial(int i, int j)
    • getSeqNo

      private int getSeqNo(int i, int j)
    • 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)
    • atom

      private void atom()
    • 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
    • conect

      private void conect()
    • structure

      private void structure()
    • getModelNumber

      private int getModelNumber()
    • getModelName

      private String getModelName()
      A Jmol add-on -- allows for model name on MODEL line starting in column 15 (0-based)
      Returns:
      name or null
    • model

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

      private void checkNotPDB()
    • cryst1

      private void cryst1() throws Exception
      Throws:
      Exception
    • getFloat

      private float getFloat(int ich, int cch) throws Exception
      Throws:
      Exception
    • scale

      private void scale(int n) throws Exception
      Throws:
      Exception
    • expdta

      private void expdta()
    • formul

      private void formul()
    • het

      private void het()
    • hetnam

      private void hetnam()
    • anisou

      private void anisou()
    • site

      private void site()
    • remarkTls

      private boolean remarkTls() throws Exception
      Throws:
      Exception
    • handleTlsMissingModels

      private void handleTlsMissingModels()
      for now, we just ignore TLS details if user has selected a specific model
    • setTlsGroups

      private void setTlsGroups(int iGroup, int iModel, SymmetryInterface symmetry)
      Sets the atom property property_tlsGroup based on TLS group ranges and adds "TLS" key to model's auxiliaryInfo.
      Parameters:
      iGroup -
      iModel -
      symmetry -
    • findAtomForRange

      private int findAtomForRange(int atom1, int atom2, int chain, int resno, boolean isLast)
    • findAtom

      private int findAtom(int atom1, int atom2, int chain, int resno, boolean isTrue)
    • setTlsTensor

      private void setTlsTensor(Atom atom, Map<String,Object> group, SymmetryInterface symmetry)
    • tlsAddError

      private void tlsAddError(String error)
    • fixRadius

      protected static float fixRadius(float r)
    • addConnection

      private void addConnection(int[] is)
    • connectAllBad

      private void connectAllBad(int maxSerial)
    • connectAll

      private void connectAll(int maxSerial, boolean isConnectStateBug)