org.jmol.adapter.readers.cifpdb
Class PdbReader

java.lang.Object
  extended by org.jmol.adapter.smarter.AtomSetCollectionReader
      extended by org.jmol.adapter.readers.cifpdb.PdbReader
Direct Known Subclasses:
P2nReader, PqrReader

public class PdbReader
extends AtomSetCollectionReader

PDB file reader.

http://www.rcsb.org

Author:
Miguel, Egon, and Bob (hansonr@stolaf.edu) symmetry added by Bob Hanson: setFractionalCoordinates() setSpaceGroupName() setUnitCell() initializeCartesianToFractional(); setUnitCellItem() setAtomCoord() applySymmetryAndSetTrajectory()

Field Summary
private  boolean applySymmetry
           
private  int atomCount
           
private  java.util.List<java.util.Map<java.lang.String,java.lang.Object>> biomolecules
           
private  java.util.List<javax.vecmath.Matrix4f> biomts
           
private  int[] chainAtomCounts
           
private  java.lang.String compnd
           
private  int configurationPtr
           
private  int conformationIndex
           
private  java.util.Map<java.lang.String,java.lang.String> currentCompnd
           
private  java.lang.String currentGroup3
           
private  java.lang.String currentKey
           
private  int currentResno
           
private  boolean haveMappedSerials
           
private  java.util.Map<java.lang.String,java.lang.Boolean> htElementsInCurrentGroup
           
private  java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Boolean>> htFormul
           
private  java.util.Map<java.lang.String,java.lang.String> htHetero
           
private  java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> htMolIds
           
private  java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> htSites
           
private  int iAtom
           
private  boolean isMultiModel
           
private  char lastAltLoc
           
private  java.lang.String lastAtomData
           
private  int lastAtomIndex
           
private  int lastGroup
           
private  char lastInsertion
           
private  int lineLength
           
private static java.lang.String lineOptions
           
private  int maxSerial
           
private  int nRes
           
private  int nUNK
           
private  java.lang.StringBuffer pdbHeader
           
private  boolean resetKey
           
private  java.lang.StringBuffer sbConect
           
private  java.lang.StringBuffer sbIgnored
           
private  java.lang.StringBuffer sbSelected
           
private  int serial
           
private  int sourceSerialLast
           
private  int targetSerialLast
           
private  java.util.List<java.util.Map<java.lang.String,java.lang.String>> vCompnds
           
 
Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addVibrations, ANGSTROMS_PER_BOHR, applySymmetryToBonds, atomSetCollection, bsFilter, bsModels, calculationType, continuing, desiredModelNumber, desiredVibrationNumber, doApplySymmetry, doc, doCheckUnitCell, doPackUnitCell, doProcessLines, filter, filterHetero, getHeader, haveModel, havePartialChargeFilter, htParams, ignoreFileSpaceGroupName, ignoreFileSymmetryOperators, ignoreFileUnitCell, iHaveFractionalCoordinates, iHaveSymmetryOperators, iHaveUnitCell, isBinary, isSequential, isTrajectory, latticeCells, line, matUnitCellOrientation, modelNumber, next, notionalUnitCell, os, prevline, ptLine, reader, readerName, readMolecularOrbitals, spaceGroup, stateScriptVersionInt, supercell, symmetry, templateAtomCount, useAltNames, vibrationNumber, viewer
 
Constructor Summary
PdbReader()
           
 
Method Summary
private  void anisou()
           
 void applySymmetryAndSetTrajectory()
           
private  void atom(int serial)
           
protected  boolean checkLine()
           
private  void checkNotPDB()
           
private  void compndOld()
           
private  void compndSource(boolean isSource)
           
private  void conect()
           
private  void cryst1()
           
private  java.lang.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.
private  void expdta()
           
protected  boolean filterAtom(Atom atom, int iAtom)
           
protected  void finalizeReader()
           
private  void formul()
           
private  float getFloat(int ich, int cch)
           
private  int getModelNumber()
           
private  void header()
           
private  void het()
           
private  void hetnam()
           
protected  void initializeReader()
           
private  void model(int modelNumber)
           
private  void remark290()
           
private  void remark350()
           
private  void scale(int n)
           
protected  void setAdditionalAtomParameters(Atom atom)
          adaptable via subclassing
private  void setBiomoleculeAtomCounts()
           
private  void site()
           
private  void structure()
           
private  void title()
           
 
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addJmolScript, addPrimitiveLatticeVector, addSites, addSiteScript, appendLoadNote, checkFilter, checkLastModel, checkLineForScript, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains, discardLinesUntilNonBlank, discardLinesUntilStartsWith, doGetModel, doGetVibration, fillDataBlock, fillDataBlock, fillFloatArray, fillFrequencyData, getElementSymbol, getFortranFormatLengths, getStrings, getSymmetry, getTokens, getTokens, getTokens, getTokensFloat, initializeSymmetry, isLastModel, newAtomSet, parseFloat, parseFloat, parseFloat, parseInt, parseInt, parseInt, parseInt, parseStringInfestedFloatArray, parseToken, parseToken, parseToken, parseTokenNext, parseTrimmed, parseTrimmed, processBinaryDocument, processXml, read3Vectors, readData, readLine, readLines, set2D, setAtomCoord, setAtomCoord, setFilter, setFractionalCoordinates, setIsPDB, setMOData, setPdb, setSpaceGroupName, setSymmetryOperator, setTransform, setUnitCell, setUnitCellItem
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

lineLength

private int lineLength

htFormul

private final java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Boolean>> htFormul

htHetero

private java.util.Map<java.lang.String,java.lang.String> htHetero

htSites

private java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.Object>> htSites

currentGroup3

private java.lang.String currentGroup3

currentResno

private int currentResno

htElementsInCurrentGroup

private java.util.Map<java.lang.String,java.lang.Boolean> htElementsInCurrentGroup

maxSerial

private int maxSerial

chainAtomCounts

private int[] chainAtomCounts

nUNK

private int nUNK

nRes

private int nRes

isMultiModel

private boolean isMultiModel

lineOptions

private static final java.lang.String lineOptions
See Also:
Constant Field Values

serial

private int serial

pdbHeader

private java.lang.StringBuffer pdbHeader

configurationPtr

private int configurationPtr

applySymmetry

private boolean applySymmetry

vCompnds

private java.util.List<java.util.Map<java.lang.String,java.lang.String>> vCompnds

currentCompnd

private java.util.Map<java.lang.String,java.lang.String> currentCompnd

currentKey

private java.lang.String currentKey

htMolIds

private java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>> htMolIds

resetKey

private boolean resetKey

compnd

private java.lang.String compnd

biomolecules

private java.util.List<java.util.Map<java.lang.String,java.lang.Object>> biomolecules

biomts

private java.util.List<javax.vecmath.Matrix4f> biomts

atomCount

private int atomCount

lastAtomData

private java.lang.String lastAtomData

lastAtomIndex

private int lastAtomIndex

iAtom

private int iAtom

lastGroup

private int lastGroup

lastInsertion

private char lastInsertion

lastAltLoc

private char lastAltLoc

conformationIndex

private int conformationIndex

sbIgnored

private java.lang.StringBuffer sbIgnored

sbSelected

private java.lang.StringBuffer sbSelected

sbConect

private java.lang.StringBuffer sbConect

sourceSerialLast

private int sourceSerialLast

targetSerialLast

private int targetSerialLast

haveMappedSerials

private boolean haveMappedSerials
Constructor Detail

PdbReader

public PdbReader()
Method Detail

initializeReader

protected void initializeReader()
                         throws java.lang.Exception
Overrides:
initializeReader in class AtomSetCollectionReader
Throws:
java.lang.Exception

checkLine

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

finalizeReader

protected void finalizeReader()
                       throws java.lang.Exception
Overrides:
finalizeReader in class AtomSetCollectionReader
Throws:
java.lang.Exception

applySymmetryAndSetTrajectory

public void applySymmetryAndSetTrajectory()
                                   throws java.lang.Exception
Overrides:
applySymmetryAndSetTrajectory in class AtomSetCollectionReader
Throws:
java.lang.Exception

header

private void header()

title

private void title()

compndSource

private void compndSource(boolean isSource)

compndOld

private void compndOld()

setBiomoleculeAtomCounts

private void setBiomoleculeAtomCounts()

remark350

private void remark350()
                throws java.lang.Exception
Throws:
java.lang.Exception

remark290

private void remark290()
                throws java.lang.Exception
Throws:
java.lang.Exception

atom

private void atom(int serial)

filterAtom

protected boolean filterAtom(Atom atom,
                             int iAtom)
Overrides:
filterAtom in class AtomSetCollectionReader
Returns:
true if we want this atom

setAdditionalAtomParameters

protected void setAdditionalAtomParameters(Atom atom)
adaptable via subclassing

Parameters:
atom -

deduceElementSymbol

private java.lang.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()

model

private void model(int modelNumber)

checkNotPDB

private void checkNotPDB()

cryst1

private void cryst1()
             throws java.lang.Exception
Throws:
java.lang.Exception

getFloat

private float getFloat(int ich,
                       int cch)
                throws java.lang.Exception
Throws:
java.lang.Exception

scale

private void scale(int n)
            throws java.lang.Exception
Throws:
java.lang.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()