org.jmol.modelset
Class ModelLoader

java.lang.Object
  extended by org.jmol.modelset.AtomCollection
      extended by org.jmol.modelset.BondCollection
          extended by org.jmol.modelset.ModelCollection
              extended by org.jmol.modelset.ModelSet
                  extended by org.jmol.modelset.ModelLoader

public final class ModelLoader
extends ModelSet


Nested Class Summary
 
Nested classes/interfaces inherited from class org.jmol.modelset.ModelCollection
ModelCollection.StateScript
 
Nested classes/interfaces inherited from class org.jmol.modelset.AtomCollection
AtomCollection.AtomSorter
 
Field Summary
private  int adapterModelCount
           
private  int adapterTrajectoryCount
           
private  boolean appendNew
           
private  int baseAtomIndex
           
private  int baseGroupIndex
           
private  int baseModelCount
           
private  int baseModelIndex
           
private  int baseTrajectoryCount
           
private  Chain[] chainOf
           
private  Chain currentChain
           
private  char currentChainID
           
private  java.lang.String currentGroup3
           
private  char currentGroupInsertionCode
           
private  int currentGroupSequenceNumber
           
private  Model currentModel
           
private  int currentModelIndex
           
private static int defaultGroupCount
           
private  boolean doMinimize
           
private  java.lang.String fileHeader
           
private  int[] firstAtomIndexes
           
private  int[][] group3Counts
           
private  java.lang.String[] group3Lists
           
private  java.lang.String[] group3Of
           
private  java.util.Map htAtomMap
           
private  boolean is2D
           
private  boolean isTrajectory
           
private  java.lang.String jmolData
           
private  ModelLoader mergeModelSet
           
private  boolean merging
           
private  boolean noAutoBond
           
private  Group nullGroup
           
private  int[] seqcodes
           
private  boolean someModelsHaveUnitcells
           
private  int[] specialAtomIndexes
           
private  java.util.BitSet structuresDefinedInFile
           
private  java.util.List vStereo
           
 
Fields inherited from class org.jmol.modelset.ModelSet
closest, modelSetTypeName
 
Fields inherited from class org.jmol.modelset.ModelCollection
bsAll, bsSymmetry, elementsPresent, frameTitles, groupCount, groups, haveBioClasses, isPDB, isXYZ, jbr, modelCount, modelFileNumbers, modelNames, modelNumbers, modelNumbersForAtomLabel, models, modelSetAuxiliaryInfo, modelSetName, modelSetProperties, proteinStructureTainted, shapeManager, someModelsHaveAromaticBonds, someModelsHaveFractionalCoordinates, someModelsHaveSymmetry, stateScripts, trajectorySteps, unitCells
 
Fields inherited from class org.jmol.modelset.BondCollection
BOND_GROWTH_INCREMENT, bondCount, bonds, bsAromatic, bsHBondsRasmol, defaultCovalentMad, freeBonds, MAX_BONDS_LENGTH_TO_CACHE, MAX_NUM_TO_CACHE, moleculeCount, molecules, numCached
 
Fields inherited from class org.jmol.modelset.AtomCollection
atomCount, atomNames, atoms, atomSerials, atomTypes, bfactor100s, bspf, ellipsoids, g3d, haveStraightness, ionicRadii, maxBondingRadius, occupancies, partialCharges, preserveState, surfaceDistance100s, TAINT_ATOMNAME, TAINT_ATOMNO, TAINT_ATOMTYPE, TAINT_COORD, TAINT_ELEMENT, TAINT_FORMALCHARGE, TAINT_MAX, tainted, vibrationVectors, viewer
 
Constructor Summary
ModelLoader(Viewer viewer, java.lang.String name)
           
ModelLoader(Viewer viewer, java.lang.StringBuffer loadScript, java.lang.Object atomSetCollection, ModelLoader mergeModelSet, java.lang.String modelSetName, java.util.BitSet bsNew)
           
 
Method Summary
private  void addAtom(boolean isPDB, java.util.BitSet atomSymmetry, int atomSite, java.lang.Object atomUid, short atomicAndIsotopeNumber, java.lang.String atomName, int formalCharge, float partialCharge, java.lang.Object[] ellipsoid, int occupancy, float bfactor, float x, float y, float z, boolean isHetero, int atomSerial, char chainID, java.lang.String group3, int groupSequenceNumber, char groupInsertionCode, float vectorX, float vectorY, float vectorZ, char alternateLocationID, float radius)
           
private  void addGroup(Chain chain, Group group)
           
private  void applyStereochemistry()
           
private  void bondAtoms(java.lang.Object atomUid1, java.lang.Object atomUid2, short order)
           
private  void checkNewGroup(char chainID, java.lang.String group3, int groupSequenceNumber, char groupInsertionCode)
           
private  void countGroup(int modelIndex, java.lang.String code, java.lang.String group3)
           
 void createAtomDataSet(int tokType, java.lang.Object atomSetCollection, java.util.BitSet bsSelected)
           
private  void createModelSet(JmolAdapter adapter, java.lang.Object atomSetCollection, java.util.BitSet bsNew)
           
private  void defineStructure(int modelIndex, int subType, java.lang.String structureID, int serialID, int strandCount, char startChainID, int startSequenceNumber, char startInsertionCode, char endChainID, int endSequenceNumber, char endInsertionCode)
           
private  void distinguishAndPropagateGroup(int groupIndex, Chain chain, java.lang.String group3, int seqcode, int firstAtomIndex, int maxAtomIndex)
           
private  void finalizeGroupBuild()
           
private  void finalizeModels(int baseModelCount)
          Model numbers are considerably more complicated in Jmol 11.
private  void finalizeShapes()
           
private  void findElementsPresent()
           
private  void freeze()
           
private  java.util.BitSet getBranch2dZ(int atomIndex, int atomIndexNot, java.util.BitSet bs0, java.util.BitSet bsBranch, javax.vecmath.Vector3f v, javax.vecmath.Vector3f v0, javax.vecmath.Vector3f v1)
           
private  Chain getOrAllocateChain(Model model, char chainID)
           
private  void initializeAtomBondModelCounts(int nAtoms)
           
private  void initializeBonding()
           
private  void initializeInfo(java.lang.String name, java.util.Map info)
           
private  void initializeUnitCellAndSymmetry()
           
private  void iterateOverAllNewAtoms(JmolAdapter adapter, java.lang.Object atomSetCollection)
           
private  void iterateOverAllNewBonds(JmolAdapter adapter, java.lang.Object atomSetCollection)
           
private  void iterateOverAllNewModels(JmolAdapter adapter, java.lang.Object atomSetCollection)
           
private  void iterateOverAllNewStructures(JmolAdapter adapter, java.lang.Object atomSetCollection)
          Pull in all spans of helix, etc.
private  void mergeGroups()
           
protected  void releaseModelSet()
           
private  void set2dZ(int iatom1, int iatom2)
           
private static void setAtom2dZ(Atom atomRef, Atom atom2, javax.vecmath.Vector3f v, javax.vecmath.Vector3f v0, javax.vecmath.Vector3f v1)
           
private  void setAtomProperties()
           
private static void setBranch2dZ(Atom atom, java.util.BitSet bs, java.util.BitSet bsToTest, javax.vecmath.Vector3f v, javax.vecmath.Vector3f v0, javax.vecmath.Vector3f v1)
           
private  void setDefaultRendering(int maxAtoms)
           
private  boolean setModelNameNumberProperties(int modelIndex, int trajectoryBaseIndex, java.lang.String modelName, int modelNumber, java.util.Properties modelProperties, java.util.Hashtable modelAuxiliaryInfo, java.lang.String jmolData)
           
 
Methods inherited from class org.jmol.modelset.ModelSet
addHydrogens, assignAromaticBonds, calculatePointGroup, calculateStructures, calculateStruts, connect, deleteAllBonds, deleteModels, fillAtomData, findNearestAtomIndex, getAtomBits, getAtomLabel, getBitSetTrajectories, getDefinedState, getEchoStateActive, getFileData, getFrameOffsets, getModelNumberIndex, getModelSetTypeName, getPointGroupAsString, getPointGroupInfo, getSelectionHaloEnabled, getState, getTrajectoryInfo, makeConnections, recalculatePositionDependentQuantities, setAtomCoord, setAtomCoordRelative, setAtomProperty, setEchoStateActive, setPdbConectBonding, setSelectionHaloEnabled, setTrajectory, setTrajectory
 
Methods inherited from class org.jmol.modelset.ModelCollection
addAtom, addAtom, addBioPolymerToModel, addStateScript, appendLoadStates, assignAtom, autoBond, autoHbond, calcAtomsMinMax, calcBoundBoxDimensions, calcRasmolHydrogenBonds, calcRotationRadius, calcRotationRadius, calcSelectedGroupsCount, calcSelectedMoleculesCount, calcSelectedMonomersCount, calculateMolecularDipole, calculatePolymers, calculateStraightness, calculateStructuresAllExcept, clearDataFrameReference, clearRasmolHydrogenBonds, deleteAtoms, deleteBonds, deleteModel, getAllAtomInfo, getAllBondInfo, getAllChainInfo, getAllPolymerInfo, getAltLocCountInModel, getAltLocIndexInModel, getAltLocListInModel, getAtomCountInModel, getAtomGroupQuaternions, getAtomIdentityInfo, getAtomsConnected, getAtomSetCenter, getAtomsWithin, getAtomsWithin, getAuxiliaryInfo, getAverageAtomPoint, getBboxVertices, getBioPolymerCount, getBioPolymerCountInModel, getBondCountInModel, getBoundBoxCenter, getBoundBoxCommand, getBoundBoxCornerVector, getBoundBoxInfo, getBoundBoxModels, getBoxInfo, getCellInfos, getCenterAndPoints, getChainCount, getChainCountInModel, getChimeInfo, getConformation, getDefaultVdwType, getElementsPresentBitSet, getFileHeader, getFrameTitle, getGroupAtom, getGroupCount, getGroupCountInModel, getGroupsWithin, getHeteroList, getInlineData, getInsertionCodeIndexInModel, getInsertionCountInModel, getIterativeModels, getJmolDataFrameIndex, getJmolDataSourceFrame, getJmolFrameType, getModelAtomBitSetIncludingDeleted, getModelAtomBitSetIncludingDeleted, getModelAuxiliaryInfo, getModelAuxiliaryInfo, getModelAuxiliaryInfoBoolean, getModelAuxiliaryInfoInt, getModelBitSet, getModelCellRange, getModelCml, getModelCount, getModelDipole, getModelExtract, getModelFileInfo, getModelFileName, getModelFileNumber, getModelFileType, getModelInfo, getModelInfoAsString, getModelKitStateBitset, getModelName, getModelNumber, getModelNumberDotted, getModelNumberForAtomLabel, getModelOrientation, getModelProperties, getModelProperty, getModels, getModelSetAuxiliaryInfo, getModelSetAuxiliaryInfo, getModelSetAuxiliaryInfoBoolean, getModelSetName, getModelSetProperties, getModelSetProperty, getModelSymmetryCount, getModelTitle, getMoInfo, getMoleculeBitSet, getMoleculeBitSet, getMoleculeCountInModel, getMoleculeIndex, getMoleculeInfo, getMolecules, getNotionalUnitcell, getPdbAtomData, getPdbData, getPDBHeader, getPlaneIntersection, getPolymerLeadMidPoints, getPolymerPointsAndVectors, getProteinStructureState, getSelectedAtomIterator, getSequenceBits, getSpaceGroupInfo, getSymmetryInfo, getSymmetryInfoAsString, getSymmetryOperation, getTrajectoryCount, getTrajectoryIndex, getUnitCell, getUnitCellInfoText, growAtomArrays, hasCalculatedHBonds, haveModelKit, initializeBspf, initializeBspt, invertSelected, isAtomAssignable, isAtomPDB, isJmolDataFrame, isTrajectory, isTrajectory, isTrajectorySubFrame, mergeModelArrays, mergeModels, modelFileNumberFromFloat, modelHasVibrationVectors, recalculateLeadMidpointsAndWingVectors, rotateAtoms, saveModelOrientation, selectDisplayedTrajectories, setAtomNamesAndNumbers, setBoundBox, setConformation, setCrystallographicDefaults, setFrameTitle, setIteratorForAtom, setIteratorForPoint, setJmolDataFrame, setModelAuxiliaryInfo, setProteinType, setRotationRadius, setStructureIds
 
Methods inherited from class org.jmol.modelset.BondCollection
addHBond, assignAromaticBonds, assignAromaticBonds, bondAtoms, bondMutually, checkValencesAndBond, deleteConnections, getBondAt, getBondAtom1, getBondAtom2, getBondColix1, getBondColix2, getBondCount, getBondIterator, getBondIterator, getBondModelIndex, getBondOrder, getBondOrder, getBondRadius, getBonds, getBondsForSelectedAtoms, getDefaultMadFromOrder, getRasmolHydrogenBonds, removeUnnecessaryBonds, resetAromatic, setBond, setBondOrder
 
Methods inherited from class org.jmol.modelset.AtomCollection
calculateHydrogens, calculateSurface, calculateVolume, clearBfactorRange, deleteModelAtoms, findAtomsInRectangle, findMaxRadii, findNearestAtomIndex, getAtomChain, getAtomColix, getAtomCount, getAtomicCharges, getAtomicPropertyState, getAtomicPropertyState, getAtomIndexFromAtomNumber, getAtomIndices, getAtomInfo, getAtomInfoXYZ, getAtomModelIndex, getAtomName, getAtomNumber, getAtomPoint3f, getAtomPointVector, getAtomRadius, getAtomSequenceCode, getAtomsWithin, getAtomTypes, getAtomVdwRadius, getBfactor100Hi, getBfactor100Lo, getBFactors, getChainBits, getClickableSet, getElementName, getElementNumber, getElementSymbol, getEllipsoid, getHaveStraightness, getHelixData, getHybridizationAndAxes, getIonicRadii, getMaxVanderwaalsRadius, getPartialCharges, getQuaternion, getRadiusVdwJmol, getSeqcodeBits, getSurfaceDistance100, getSurfaceDistanceMax, getTaintedAtoms, getUserSettableType, getVibrationCoord, getVibrationVector, getVisibleSet, isAtomHidden, isCursorOnTopOf, mergeAtomArrays, modelSetHasVibrationVectors, setAtomCoord, setAtomCoordRelative, setAtomCoordRelative, setAtomData, setAtomName, setAtomNumber, setAtomType, setBFactor, setBsHidden, setElement, setEllipsoid, setFormalCharges, setHaveStraightness, setIonicRadius, setOccupancy, setPartialCharge, setPreserveState, setTaintedAtoms, setVibrationVector, taint, taint, unTaintAtoms
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

mergeModelSet

private ModelLoader mergeModelSet

merging

private boolean merging

jmolData

private java.lang.String jmolData

specialAtomIndexes

private final int[] specialAtomIndexes

group3Lists

private java.lang.String[] group3Lists

group3Counts

private int[][] group3Counts

someModelsHaveUnitcells

private boolean someModelsHaveUnitcells

isTrajectory

private boolean isTrajectory

doMinimize

private boolean doMinimize

fileHeader

private java.lang.String fileHeader

htAtomMap

private final java.util.Map htAtomMap

defaultGroupCount

private static final int defaultGroupCount
See Also:
Constant Field Values

chainOf

private Chain[] chainOf

group3Of

private java.lang.String[] group3Of

seqcodes

private int[] seqcodes

firstAtomIndexes

private int[] firstAtomIndexes

currentModelIndex

private int currentModelIndex

currentModel

private Model currentModel

currentChainID

private char currentChainID

currentChain

private Chain currentChain

currentGroupSequenceNumber

private int currentGroupSequenceNumber

currentGroupInsertionCode

private char currentGroupInsertionCode

currentGroup3

private java.lang.String currentGroup3

nullGroup

private Group nullGroup

baseModelIndex

private int baseModelIndex

baseModelCount

private int baseModelCount

baseAtomIndex

private int baseAtomIndex

baseGroupIndex

private int baseGroupIndex

baseTrajectoryCount

private int baseTrajectoryCount

appendNew

private boolean appendNew

adapterModelCount

private int adapterModelCount

adapterTrajectoryCount

private int adapterTrajectoryCount

noAutoBond

private boolean noAutoBond

is2D

private boolean is2D

vStereo

private java.util.List vStereo

structuresDefinedInFile

private java.util.BitSet structuresDefinedInFile
Constructor Detail

ModelLoader

public ModelLoader(Viewer viewer,
                   java.lang.String name)

ModelLoader

public ModelLoader(Viewer viewer,
                   java.lang.StringBuffer loadScript,
                   java.lang.Object atomSetCollection,
                   ModelLoader mergeModelSet,
                   java.lang.String modelSetName,
                   java.util.BitSet bsNew)
Method Detail

initializeInfo

private void initializeInfo(java.lang.String name,
                            java.util.Map info)

createModelSet

private void createModelSet(JmolAdapter adapter,
                            java.lang.Object atomSetCollection,
                            java.util.BitSet bsNew)

setDefaultRendering

private void setDefaultRendering(int maxAtoms)

setAtomProperties

private void setAtomProperties()

releaseModelSet

protected void releaseModelSet()
Overrides:
releaseModelSet in class ModelSet

initializeAtomBondModelCounts

private void initializeAtomBondModelCounts(int nAtoms)

mergeGroups

private void mergeGroups()

iterateOverAllNewModels

private void iterateOverAllNewModels(JmolAdapter adapter,
                                     java.lang.Object atomSetCollection)

setModelNameNumberProperties

private boolean setModelNameNumberProperties(int modelIndex,
                                             int trajectoryBaseIndex,
                                             java.lang.String modelName,
                                             int modelNumber,
                                             java.util.Properties modelProperties,
                                             java.util.Hashtable modelAuxiliaryInfo,
                                             java.lang.String jmolData)

finalizeModels

private void finalizeModels(int baseModelCount)
Model numbers are considerably more complicated in Jmol 11. int modelNumber The adapter gives us a modelNumber, but that is not necessarily what the user accesses. If a single files is loaded this is: a) single file context: 1) the sequential number of the model in the file , or 2) if a PDB file and "MODEL" record is present, that model number b) multifile context: always 1000000 * (fileIndex + 1) + (modelIndexInFile + 1) int fileIndex The 0-based reference to the file containing this model. Used when doing "select model=3.2" in a multifile context int modelFileNumber An integer coding both the file and the model: file * 1000000 + modelInFile (1-based) Used all over the place. Note that if there is only one file, then modelFileNumber < 1000000. String modelNumberDotted A number the user can use "1.3" String modelNumberForAtomLabel Either the dotted number or the PDB MODEL number, if there is only one file

Parameters:
baseModelCount -

iterateOverAllNewAtoms

private void iterateOverAllNewAtoms(JmolAdapter adapter,
                                    java.lang.Object atomSetCollection)

addAtom

private void addAtom(boolean isPDB,
                     java.util.BitSet atomSymmetry,
                     int atomSite,
                     java.lang.Object atomUid,
                     short atomicAndIsotopeNumber,
                     java.lang.String atomName,
                     int formalCharge,
                     float partialCharge,
                     java.lang.Object[] ellipsoid,
                     int occupancy,
                     float bfactor,
                     float x,
                     float y,
                     float z,
                     boolean isHetero,
                     int atomSerial,
                     char chainID,
                     java.lang.String group3,
                     int groupSequenceNumber,
                     char groupInsertionCode,
                     float vectorX,
                     float vectorY,
                     float vectorZ,
                     char alternateLocationID,
                     float radius)

checkNewGroup

private void checkNewGroup(char chainID,
                           java.lang.String group3,
                           int groupSequenceNumber,
                           char groupInsertionCode)

getOrAllocateChain

private Chain getOrAllocateChain(Model model,
                                 char chainID)

iterateOverAllNewBonds

private void iterateOverAllNewBonds(JmolAdapter adapter,
                                    java.lang.Object atomSetCollection)

bondAtoms

private void bondAtoms(java.lang.Object atomUid1,
                       java.lang.Object atomUid2,
                       short order)

iterateOverAllNewStructures

private void iterateOverAllNewStructures(JmolAdapter adapter,
                                         java.lang.Object atomSetCollection)
Pull in all spans of helix, etc. in the file(s) We do turn first, because sometimes a group is defined twice, and this way it gets marked as helix or sheet if it is both one of those and turn.

Parameters:
adapter -
atomSetCollection -

defineStructure

private void defineStructure(int modelIndex,
                             int subType,
                             java.lang.String structureID,
                             int serialID,
                             int strandCount,
                             char startChainID,
                             int startSequenceNumber,
                             char startInsertionCode,
                             char endChainID,
                             int endSequenceNumber,
                             char endInsertionCode)

initializeUnitCellAndSymmetry

private void initializeUnitCellAndSymmetry()

initializeBonding

private void initializeBonding()

finalizeGroupBuild

private void finalizeGroupBuild()

distinguishAndPropagateGroup

private void distinguishAndPropagateGroup(int groupIndex,
                                          Chain chain,
                                          java.lang.String group3,
                                          int seqcode,
                                          int firstAtomIndex,
                                          int maxAtomIndex)

addGroup

private void addGroup(Chain chain,
                      Group group)

countGroup

private void countGroup(int modelIndex,
                        java.lang.String code,
                        java.lang.String group3)

freeze

private void freeze()

findElementsPresent

private void findElementsPresent()

applyStereochemistry

private void applyStereochemistry()

set2dZ

private void set2dZ(int iatom1,
                    int iatom2)

getBranch2dZ

private java.util.BitSet getBranch2dZ(int atomIndex,
                                      int atomIndexNot,
                                      java.util.BitSet bs0,
                                      java.util.BitSet bsBranch,
                                      javax.vecmath.Vector3f v,
                                      javax.vecmath.Vector3f v0,
                                      javax.vecmath.Vector3f v1)
Parameters:
atomIndex -
atomIndexNot -
bs0 -
bsBranch -
v -
v0 -
v1 -
Returns:
atom bitset

setBranch2dZ

private static void setBranch2dZ(Atom atom,
                                 java.util.BitSet bs,
                                 java.util.BitSet bsToTest,
                                 javax.vecmath.Vector3f v,
                                 javax.vecmath.Vector3f v0,
                                 javax.vecmath.Vector3f v1)

setAtom2dZ

private static void setAtom2dZ(Atom atomRef,
                               Atom atom2,
                               javax.vecmath.Vector3f v,
                               javax.vecmath.Vector3f v0,
                               javax.vecmath.Vector3f v1)

finalizeShapes

private void finalizeShapes()

createAtomDataSet

public void createAtomDataSet(int tokType,
                              java.lang.Object atomSetCollection,
                              java.util.BitSet bsSelected)