org.jmol.adapter.smarter
Class AtomSetCollectionReader

java.lang.Object
  extended by org.jmol.adapter.smarter.AtomSetCollectionReader
Direct Known Subclasses:
AimsReader, AlchemyReader, AmpacReader, BasisFunctionReader, CastepReader, CifReader, CrystalReader, CubeReader, FoldingXyzReader, ForceFieldReader, GaussianWfnReader, GhemicalMMReader, GromacsReader, HyperChemReader, JmeReader, MdCrdReader, MolReader, MopacReader, NWChemReader, PdbReader, ShelxReader, SpartanInputReader, SpartanReader, Wien2kReader, XmlReader, XyzReader

public abstract class AtomSetCollectionReader
extends java.lang.Object


Field Summary
protected  boolean addVibrations
           
static float ANGSTROMS_PER_BOHR
           
 boolean applySymmetryToBonds
           
protected  AtomSetCollection atomSetCollection
           
protected  java.util.BitSet bsFilter
           
protected  java.util.BitSet bsModels
           
 java.lang.String calculationType
           
 boolean continuing
           
protected  int desiredModelNumber
           
private  int desiredSpaceGroupIndex
           
 int desiredVibrationNumber
           
protected  boolean doApplySymmetry
           
protected  boolean doCheckUnitCell
           
private  boolean doConvertToFractional
           
private  boolean doPackUnitCell
           
 boolean doProcessLines
           
private  boolean doSetOrientation
           
private  boolean fileCoordinatesAreFractional
           
(package private)  java.lang.String fileName
           
private  javax.vecmath.Point3f fileOffset
           
private  javax.vecmath.Point3f fileScaling
           
protected  java.lang.String filter
           
private  boolean filterAltLoc
           
private  boolean filterAtomType
           
private  boolean filterChain
           
private  boolean filterGroup3
           
private  int[] firstLastStep
           
protected  boolean getHeader
           
private  boolean haveAtomFilter
           
 boolean haveModel
           
protected  boolean havePartialChargeFilter
           
 java.util.Hashtable htParams
           
protected  boolean ignoreFileSpaceGroupName
           
protected  boolean ignoreFileSymmetryOperators
           
protected  boolean ignoreFileUnitCell
           
private  boolean iHaveFractionalCoordinates
           
 boolean iHaveSymmetryOperators
           
 boolean iHaveUnitCell
           
protected  boolean isSequential
           
protected  boolean isTrajectory
           
private  int lastModelNumber
           
 int[] latticeCells
           
 java.lang.String line
           
private  javax.vecmath.Matrix3f matrixRotate
           
protected  javax.vecmath.Matrix3f matUnitCellOrientation
           
private  boolean merging
           
 int modelNumber
           
protected  int[] next
           
private  int nMatrixElements
           
protected  float[] notionalUnitCell
           
protected  java.io.OutputStream os
           
private  java.lang.String previousScript
           
private  java.lang.String previousSpaceGroup
           
private  float[] previousUnitCell
           
 java.lang.String prevline
           
protected  long ptLine
           
protected  java.io.BufferedReader reader
           
protected  java.lang.String readerName
           
 boolean readMolecularOrbitals
           
private  java.lang.String siteScript
           
protected  java.lang.String spaceGroup
           
protected  SymmetryInterface symmetry
           
private  float symmetryRange
           
protected  int templateAtomCount
           
private  javax.vecmath.Point3f unitCellOffset
           
protected  int vibrationNumber
           
protected  JmolViewer viewer
           
 
Constructor Summary
AtomSetCollectionReader()
           
 
Method Summary
protected  void addJmolScript(java.lang.String script)
           
 void addPrimitiveLatticeVector(int i, float[] xyz)
           
protected  void addSites(java.util.Hashtable htSites)
           
protected  void addSiteScript(java.lang.String script)
           
 void applySymmetryAndSetTrajectory()
           
 boolean checkFilter(java.lang.String key)
           
 boolean checkLastModel()
          sets continuing and doProcessLines
protected  boolean checkLine()
           
 void checkLineForScript()
           
protected  void checkLineForScript(java.lang.String line)
           
private  boolean checkUnitCell(int n)
           
 void clearLatticeParameters()
           
protected  int cloneLastAtomSet(int atomCount)
           
protected  boolean createSpaceGroup()
           
protected  void discardLines(int nLines)
           
protected  void discardLinesUntilBlank()
           
protected  java.lang.String discardLinesUntilContains(java.lang.String containsMatch)
           
protected  java.lang.String discardLinesUntilContains(java.lang.String s1, java.lang.String s2)
           
protected  java.lang.String discardLinesUntilNonBlank()
           
protected  java.lang.String discardLinesUntilStartsWith(java.lang.String startsWith)
           
 boolean doGetModel(int modelNumber)
           
 boolean doGetVibration(int vibrationNumber)
           
protected  void fillDataBlock(java.lang.String[][] data)
          fills an array with a pre-defined number of lines of token data, skipping blank lines in the process
protected  void fillDataBlock(java.lang.String[][] data, int col0, int colWidth)
          fills an array with a predefined number of lines of data that is arranged in fixed FORTRAN-like column format
protected  void fillFloatArray(float[] temp, java.lang.String line0, int width)
          fills a float array with string data from a file
protected  void fillFrequencyData(int iAtom0, int atomCount, int modelAtomCount, boolean[] ignore, boolean isWide, int col0, int colWidth, int[] atomIndexes)
          Extracts a block of frequency data from a file.
protected  boolean filterAtom(Atom atom, int iAtom)
           
private  boolean filterReject(java.lang.String notCode, java.lang.String code)
           
protected  void finalizeReader()
           
private  java.lang.Object finish()
           
static java.lang.String getElementSymbol(int elementNumber)
           
protected static java.util.ArrayList getFortranFormatLengths(java.lang.String s)
          get all integers after letters negative entries are spaces (1Xn)
protected static java.lang.String[] getStrings(java.lang.String sinfo, int nFields, int width)
           
protected  SymmetryInterface getSymmetry()
           
protected  java.lang.String[] getTokens()
           
static java.lang.String[] getTokens(java.lang.String s)
           
protected static java.lang.String[] getTokens(java.lang.String s, int iStart)
           
protected static void getTokensFloat(java.lang.String s, float[] f, int n)
           
private  void initialize()
           
private  void initializeCartesianToFractional()
           
protected  void initializeReader()
           
protected  void initializeSymmetry()
           
 boolean isLastModel(int modelNumber)
          after reading a model, Q: Is this the last model?
protected  void newAtomSet(java.lang.String name)
           
protected  float parseFloat()
           
 float parseFloat(java.lang.String s)
           
protected  float parseFloat(java.lang.String s, int iStart, int iEnd)
           
protected  int parseInt()
           
 int parseInt(java.lang.String s)
           
protected  int parseInt(java.lang.String s, int iStart)
           
protected  int parseInt(java.lang.String s, int iStart, int iEnd)
           
protected  void parseStringInfestedFloatArray(java.lang.String s, float[] data)
           
protected  java.lang.String parseToken()
           
protected  java.lang.String parseToken(java.lang.String s)
           
protected  java.lang.String parseToken(java.lang.String s, int iStart, int iEnd)
           
protected  java.lang.String parseTokenNext(java.lang.String s)
           
protected static java.lang.String parseTrimmed(java.lang.String s, int iStart)
           
protected static java.lang.String parseTrimmed(java.lang.String s, int iStart, int iEnd)
           
 void readAtomSetCollectionFromDOM(java.lang.Object DOMNode)
           
(package private)  java.lang.Object readData()
           
protected  java.lang.Object readData(java.lang.Object DOMNode)
           
 java.lang.String readLine()
           
protected  void set2D()
           
 void setAtomCoord(Atom atom)
           
 void setAtomCoord(Atom atom, float x, float y, float z)
           
private  void setError(java.lang.Throwable e)
           
protected  void setFilter(java.lang.String filter0)
           
 void setFractionalCoordinates(boolean TF)
           
 void setMOData(java.util.Hashtable moData)
           
 void setSpaceGroupName(java.lang.String name)
           
 void setSymmetryOperator(java.lang.String xyz)
           
 void setTransform(float x1, float y1, float z1, float x2, float y2, float z2, float x3, float y3, float z3)
           
 void setUnitCell(float a, float b, float c, float alpha, float beta, float gamma)
           
 void setUnitCellItem(int i, float x)
           
(package private)  void setup(java.lang.String fileName, java.util.Hashtable htParams, java.io.BufferedReader reader)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ANGSTROMS_PER_BOHR

public static final float ANGSTROMS_PER_BOHR
See Also:
Constant Field Values

atomSetCollection

protected AtomSetCollection atomSetCollection

reader

protected java.io.BufferedReader reader

readerName

protected java.lang.String readerName

htParams

public java.util.Hashtable htParams

line

public java.lang.String line

prevline

public java.lang.String prevline

next

protected int[] next

ptLine

protected long ptLine

latticeCells

public int[] latticeCells

doProcessLines

public boolean doProcessLines

iHaveUnitCell

public boolean iHaveUnitCell

iHaveSymmetryOperators

public boolean iHaveSymmetryOperators

doApplySymmetry

protected boolean doApplySymmetry

ignoreFileSymmetryOperators

protected boolean ignoreFileSymmetryOperators

isTrajectory

protected boolean isTrajectory

applySymmetryToBonds

public boolean applySymmetryToBonds

doCheckUnitCell

protected boolean doCheckUnitCell

getHeader

protected boolean getHeader

isSequential

protected boolean isSequential

templateAtomCount

protected int templateAtomCount

modelNumber

public int modelNumber

vibrationNumber

protected int vibrationNumber

desiredVibrationNumber

public int desiredVibrationNumber

bsModels

protected java.util.BitSet bsModels

spaceGroup

protected java.lang.String spaceGroup

havePartialChargeFilter

protected boolean havePartialChargeFilter

calculationType

public java.lang.String calculationType

iHaveFractionalCoordinates

private boolean iHaveFractionalCoordinates

doPackUnitCell

private boolean doPackUnitCell

doConvertToFractional

private boolean doConvertToFractional

merging

private boolean merging

fileCoordinatesAreFractional

private boolean fileCoordinatesAreFractional

ignoreFileUnitCell

protected boolean ignoreFileUnitCell

ignoreFileSpaceGroupName

protected boolean ignoreFileSpaceGroupName

symmetryRange

private float symmetryRange

notionalUnitCell

protected float[] notionalUnitCell

firstLastStep

private int[] firstLastStep

desiredModelNumber

protected int desiredModelNumber

lastModelNumber

private int lastModelNumber

desiredSpaceGroupIndex

private int desiredSpaceGroupIndex

symmetry

protected SymmetryInterface symmetry

os

protected java.io.OutputStream os

fileScaling

private javax.vecmath.Point3f fileScaling

fileOffset

private javax.vecmath.Point3f fileOffset

fileName

java.lang.String fileName

continuing

public boolean continuing

viewer

protected JmolViewer viewer

haveModel

public boolean haveModel

previousSpaceGroup

private java.lang.String previousSpaceGroup

previousUnitCell

private float[] previousUnitCell

nMatrixElements

private int nMatrixElements

matUnitCellOrientation

protected javax.vecmath.Matrix3f matUnitCellOrientation

bsFilter

protected java.util.BitSet bsFilter

filter

protected java.lang.String filter

haveAtomFilter

private boolean haveAtomFilter

filterAltLoc

private boolean filterAltLoc

filterGroup3

private boolean filterGroup3

filterChain

private boolean filterChain

filterAtomType

private boolean filterAtomType

doSetOrientation

private boolean doSetOrientation

addVibrations

protected boolean addVibrations

readMolecularOrbitals

public boolean readMolecularOrbitals

matrixRotate

private javax.vecmath.Matrix3f matrixRotate

unitCellOffset

private javax.vecmath.Point3f unitCellOffset

previousScript

private java.lang.String previousScript

siteScript

private java.lang.String siteScript
Constructor Detail

AtomSetCollectionReader

public AtomSetCollectionReader()
Method Detail

setup

void setup(java.lang.String fileName,
           java.util.Hashtable htParams,
           java.io.BufferedReader reader)

readData

java.lang.Object readData()
                    throws java.lang.Exception
Throws:
java.lang.Exception

readData

protected java.lang.Object readData(java.lang.Object DOMNode)

readAtomSetCollectionFromDOM

public void readAtomSetCollectionFromDOM(java.lang.Object DOMNode)

initializeReader

protected void initializeReader()
                         throws java.lang.Exception
Throws:
java.lang.Exception

checkLine

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

checkLastModel

public boolean checkLastModel()
sets continuing and doProcessLines

Returns:
TRUE if continuing, FALSE if not

isLastModel

public boolean isLastModel(int modelNumber)
after reading a model, Q: Is this the last model?

Parameters:
modelNumber -
Returns:
Yes/No

finalizeReader

protected void finalizeReader()
                       throws java.lang.Exception
Throws:
java.lang.Exception

finish

private java.lang.Object finish()

setError

private void setError(java.lang.Throwable e)

initialize

private void initialize()

doGetModel

public boolean doGetModel(int modelNumber)

initializeSymmetry

protected void initializeSymmetry()

newAtomSet

protected void newAtomSet(java.lang.String name)

cloneLastAtomSet

protected int cloneLastAtomSet(int atomCount)
                        throws java.lang.Exception
Throws:
java.lang.Exception

setSpaceGroupName

public void setSpaceGroupName(java.lang.String name)

setSymmetryOperator

public void setSymmetryOperator(java.lang.String xyz)

initializeCartesianToFractional

private void initializeCartesianToFractional()

clearLatticeParameters

public void clearLatticeParameters()

setUnitCellItem

public void setUnitCellItem(int i,
                            float x)

setUnitCell

public void setUnitCell(float a,
                        float b,
                        float c,
                        float alpha,
                        float beta,
                        float gamma)

addPrimitiveLatticeVector

public void addPrimitiveLatticeVector(int i,
                                      float[] xyz)

checkUnitCell

private boolean checkUnitCell(int n)

getSymmetry

protected SymmetryInterface getSymmetry()

setFractionalCoordinates

public void setFractionalCoordinates(boolean TF)

setFilter

protected void setFilter(java.lang.String filter0)

checkFilter

public boolean checkFilter(java.lang.String key)

filterAtom

protected boolean filterAtom(Atom atom,
                             int iAtom)
Parameters:
atom -
iAtom -
Returns:
true if we want this atom

filterReject

private boolean filterReject(java.lang.String notCode,
                             java.lang.String code)

set2D

protected void set2D()

doGetVibration

public boolean doGetVibration(int vibrationNumber)

setTransform

public void setTransform(float x1,
                         float y1,
                         float z1,
                         float x2,
                         float y2,
                         float z2,
                         float x3,
                         float y3,
                         float z3)

setAtomCoord

public void setAtomCoord(Atom atom,
                         float x,
                         float y,
                         float z)

setAtomCoord

public void setAtomCoord(Atom atom)

addSites

protected void addSites(java.util.Hashtable htSites)

applySymmetryAndSetTrajectory

public void applySymmetryAndSetTrajectory()
                                   throws java.lang.Exception
Throws:
java.lang.Exception

createSpaceGroup

protected boolean createSpaceGroup()

setMOData

public void setMOData(java.util.Hashtable moData)

getElementSymbol

public static java.lang.String getElementSymbol(int elementNumber)

fillDataBlock

protected void fillDataBlock(java.lang.String[][] data,
                             int col0,
                             int colWidth)
                      throws java.lang.Exception
fills an array with a predefined number of lines of data that is arranged in fixed FORTRAN-like column format

Parameters:
data -
col0 -
colWidth -
Throws:
java.lang.Exception

fillDataBlock

protected void fillDataBlock(java.lang.String[][] data)
                      throws java.lang.Exception
fills an array with a pre-defined number of lines of token data, skipping blank lines in the process

Parameters:
data -
Throws:
java.lang.Exception

fillFloatArray

protected void fillFloatArray(float[] temp,
                              java.lang.String line0,
                              int width)
                       throws java.lang.Exception
fills a float array with string data from a file

Parameters:
temp -
line0 - TODO
width - TODO
Throws:
java.lang.Exception

fillFrequencyData

protected void fillFrequencyData(int iAtom0,
                                 int atomCount,
                                 int modelAtomCount,
                                 boolean[] ignore,
                                 boolean isWide,
                                 int col0,
                                 int colWidth,
                                 int[] atomIndexes)
                          throws java.lang.Exception
Extracts a block of frequency data from a file. This block may be of two types -- either X Y Z across a row or each of X Y Z on a separate line. Data is presumed to be in fixed FORTRAN-like column format, not space-separated columns.

Parameters:
iAtom0 - the first atom to be assigned a frequency
atomCount - the number of atoms to be assigned
modelAtomCount - the number of atoms in each model
ignore - the frequencies to ignore because the user has selected only certain vibrations to be read or for whatever reason; length serves to set the number of frequencies to be read
isWide - when TRUE, this is a table that has X Y Z for each mode within the same row; when FALSE, this is a table that has X Y Z for each mode on a separate line.
col0 - the column in which data starts
colWidth - the width of the data columns
atomIndexes - an array either null or indicating exactly which atoms get the frequencies (used by CrystalReader)
Throws:
java.lang.Exception

discardLines

protected void discardLines(int nLines)
                     throws java.lang.Exception
Throws:
java.lang.Exception

discardLinesUntilStartsWith

protected java.lang.String discardLinesUntilStartsWith(java.lang.String startsWith)
                                                throws java.lang.Exception
Throws:
java.lang.Exception

discardLinesUntilContains

protected java.lang.String discardLinesUntilContains(java.lang.String containsMatch)
                                              throws java.lang.Exception
Throws:
java.lang.Exception

discardLinesUntilContains

protected java.lang.String discardLinesUntilContains(java.lang.String s1,
                                                     java.lang.String s2)
                                              throws java.lang.Exception
Throws:
java.lang.Exception

discardLinesUntilBlank

protected void discardLinesUntilBlank()
                               throws java.lang.Exception
Throws:
java.lang.Exception

discardLinesUntilNonBlank

protected java.lang.String discardLinesUntilNonBlank()
                                              throws java.lang.Exception
Throws:
java.lang.Exception

checkLineForScript

protected void checkLineForScript(java.lang.String line)

checkLineForScript

public void checkLineForScript()

addJmolScript

protected void addJmolScript(java.lang.String script)

addSiteScript

protected void addSiteScript(java.lang.String script)

readLine

public java.lang.String readLine()
                          throws java.lang.Exception
Throws:
java.lang.Exception

getStrings

protected static final java.lang.String[] getStrings(java.lang.String sinfo,
                                                     int nFields,
                                                     int width)

parseStringInfestedFloatArray

protected void parseStringInfestedFloatArray(java.lang.String s,
                                             float[] data)

getTokens

protected java.lang.String[] getTokens()

getTokensFloat

protected static void getTokensFloat(java.lang.String s,
                                     float[] f,
                                     int n)

getTokens

public static java.lang.String[] getTokens(java.lang.String s)

getTokens

protected static java.lang.String[] getTokens(java.lang.String s,
                                              int iStart)

parseFloat

protected float parseFloat()

parseFloat

public float parseFloat(java.lang.String s)

parseFloat

protected float parseFloat(java.lang.String s,
                           int iStart,
                           int iEnd)

parseInt

protected int parseInt()

parseInt

public int parseInt(java.lang.String s)

parseInt

protected int parseInt(java.lang.String s,
                       int iStart)

parseInt

protected int parseInt(java.lang.String s,
                       int iStart,
                       int iEnd)

parseToken

protected java.lang.String parseToken()

parseToken

protected java.lang.String parseToken(java.lang.String s)

parseTokenNext

protected java.lang.String parseTokenNext(java.lang.String s)

parseToken

protected java.lang.String parseToken(java.lang.String s,
                                      int iStart,
                                      int iEnd)

parseTrimmed

protected static java.lang.String parseTrimmed(java.lang.String s,
                                               int iStart)

parseTrimmed

protected static java.lang.String parseTrimmed(java.lang.String s,
                                               int iStart,
                                               int iEnd)

getFortranFormatLengths

protected static java.util.ArrayList getFortranFormatLengths(java.lang.String s)
get all integers after letters negative entries are spaces (1Xn)

Parameters:
s -
Returns:
Vector of integers