Package org.jmol.adapter.readers.more
Class JcampdxReader
- java.lang.Object
-
- org.jmol.adapter.smarter.AtomSetCollectionReader
-
- org.jmol.adapter.readers.molxyz.MolReader
-
- org.jmol.adapter.readers.more.JcampdxReader
-
- All Implemented Interfaces:
javajs.api.GenericLineReader
,JmolJDXMOLReader
public class JcampdxReader extends MolReader implements JmolJDXMOLReader
A preliminary reader for JCAMP-DX files having ##$MODELS= and ##$PEAKS= records Designed by Robert Lancashire and Bob Hanson specifications (by example here): ##$MODELS= <Models> <ModelData id="acetophenone" type="MOL"> acetophenone DSViewer 3D 0 17 17 0 0 0 0 0 0 0 0999 V2000 ... 17 14 1 0 0 0 M END </ModelData> <ModelData id="irvibs" type="XYZVIB" baseModel="acetophenone" vibrationScale="0.1"> 17 1 Energy: -1454.38826 Freq: 3199.35852 C -1.693100 0.007800 0.000000 -0.000980 0.000120 0.000000 ... </ModelData> </Models> -- All XML data should be line-oriented in the above fashion. Leading spaces will be ignored. -- Any number of <ModelData> segments can be present -- The first model is referred to as the "base" model -- The base model: -- will generally be of type MOL, but any known type is acceptable -- will be used to generate bonding for later models that have no bonding information -- will be the only model for NMR -- Additional models can represent vibrations (XYZ format) or MS fragmentation (MOL format, probably) ##$PEAKS= <Peaks type="IR" xUnits="1/cm" yUnits="TRANSMITTANCE" > <PeakData id="1" title="asymm stretch of aromatic CH group (~3100 cm-1)" peakShape="broad" model="irvibs.1" xMax="3121" xMin="3081" yMax="1" yMin="0" /> <PeakData id="2" title="symm stretch of aromatic CH group (~3085 cm-1)" peakShape="broad" model="irvibs.2" xMax="3101" xMin="3071" yMax="1" yMin="0" /> ... </Peaks> -- peak record must be a single line of information because Jmol will use line.trim() as a key to pass information to JSpecView.
-
-
Field Summary
Fields Modifier and Type Field Description private javajs.util.Lst<String[]>
acdAssignments
private String
acdMolFile
private String
allTypes
private JmolJDXMOLParser
mpr
private int
nPeaks
private String
nucleus
private javajs.util.Lst<String>
peakData
private int
selectedModel
private String
title
private String
type
-
Fields inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addedData, addedDataKey, addVibrations, allowPDBFilter, ANGSTROMS_PER_BOHR, applySymmetryToBonds, asc, baseAtomIndex, binaryDoc, bsFilter, bsModels, calculationType, continuing, debugging, desiredModelNumber, desiredSpaceGroupIndex, desiredVibrationNumber, doApplySymmetry, doCentralize, doCheckUnitCell, doConvertToFractional, doPackUnitCell, doProcessLines, doReadMolecularOrbitals, dssr, fileName, fileOffset, filePath, fileScaling, fillRange, filter, filterHetero, fixJavaFloat, forcePacked, getHeader, haveAtomFilter, haveModel, havePartialChargeFilter, htParams, ignoreFileSpaceGroupName, ignoreFileSymmetryOperators, ignoreFileUnitCell, ignoreStructure, iHaveFractionalCoordinates, iHaveSymmetryOperators, iHaveUnitCell, isBinary, isConcatenated, isDSSP1, isFinalized, isMolecular, isPrimitive, isSequential, isTrajectory, latticeCells, latticeScaling, latticeType, line, lstNCS, matUnitCellOrientation, modDim, modelNumber, ms, mustFinalizeModelSet, next, out, packingError, prevline, primitiveToCrystal, ptLine, ptSupercell, reader, readerName, requiresBSFilter, reverseModels, rotateHexCell, sgName, stateScriptVersionInt, strSupercell, symmetry, templateAtomCount, thisBiomolecule, trajectorySteps, unitCellOffset, unitCellParams, useAltNames, useFileModelNumbers, validation, vibrationNumber, vibsFractional, vwr
-
-
Constructor Summary
Constructors Constructor Description JcampdxReader()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addPeakData(String info)
private void
addType(int imodel, String type)
sets an auxiliaryInfo string to "HNMR 13CNMR" or "IR" or "MS"private String
addTypeStr(String types, String type)
boolean
checkLine()
void
finalizeSubclassReader()
optional reader-specific method run first.private int
findModelById(String modelID)
void
initializeReader()
void
processModelData(String data, String id, String type, String base, String last, float modelScale, float vibScale, boolean isFirst)
private void
processPeakData()
integrate the <PeakAssignment> records into the associated models, and delete unreferenced n.m modelsprivate void
processPeakSelectAtom(int i, String key, String data)
private boolean
processPeakSelectModel(int i, String title)
private void
setBonding(AtomSetCollection a, int ibase)
add bonding to a set of ModelData based on a MOL file only if the this set has no bonding alreadyvoid
setSpectrumPeaks(int nH, String piUnitsX, String piUnitsY)
private void
updateModelIDs(String id, int model0, boolean isFirst)
The first model set is allowed to be a single model and given no extension.-
Methods inherited from class org.jmol.adapter.readers.molxyz.MolReader
addMolAtom, addMolBond, finalizeReaderMR
-
Methods inherited from class org.jmol.adapter.smarter.AtomSetCollectionReader
addAtomXYZSymName, addExplicitLatticeVector, addJmolScript, addSites, addSiteScript, appendLoadNote, appendUunitCellInfo, applySymmetryAndSetTrajectory, applySymTrajASCR, checkCurrentLineForScript, checkFilterKey, checkLastModel, checkLineForScript, clearUnitCell, cloneLastAtomSet, discardLinesUntilBlank, discardLinesUntilContains, discardLinesUntilContains2, discardLinesUntilNonBlank, discardLinesUntilStartsWith, discardPreviousAtoms, doGetModel, doGetVibration, doPreSymmetry, fill3x3, fillDataBlock, fillDataBlockFixed, fillFloatArray, fillFrequencyData, filterAtom, filterReject, finalizeMOData, finalizeModelSet, finalizeReaderASCR, finalizeSubclassSymmetry, forceSymmetry, fractionalizeCoordinates, getElementSymbol, getFilter, getFortranFormatLengths, getInterface, getNewSymmetry, getStrings, getSymmetry, getTokens, getTokensFloat, initializeSymmetry, initializeSymmetryOptions, initializeTrajectoryFile, isLastModel, newAtomSet, parseFloat, parseFloatRange, parseFloatStr, parseInt, parseIntAt, parseIntRange, parseIntStr, parseToken, parseTokenNext, parseTokenRange, parseTokenStr, processBinaryDocument, processDOM, rd, read3Vectors, readDataObject, readLines, readNextLine, rejectAtomName, RL, set2D, setAtomCoord, setAtomCoordScaled, setAtomCoordTokens, setAtomCoordXYZ, setChainID, setElementAndIsotope, setFilter, setFilterAtomTypeStr, setFractionalCoordinates, setIsPDB, setLoadNote, setModelPDB, setSpaceGroupName, setSymmetryOperator, setTransform, setUnitCell, setUnitCellItem, setup, setupASCR
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.jmol.api.JmolJDXMOLReader
discardLinesUntilContains, discardLinesUntilContains2, discardLinesUntilNonBlank, rd
-
-
-
-
Field Detail
-
selectedModel
private int selectedModel
-
mpr
private JmolJDXMOLParser mpr
-
acdMolFile
private String acdMolFile
-
nPeaks
private int nPeaks
-
acdAssignments
private javajs.util.Lst<String[]> acdAssignments
-
title
private String title
-
nucleus
private String nucleus
-
type
private String type
-
peakData
private javajs.util.Lst<String> peakData
-
allTypes
private String allTypes
-
-
Method Detail
-
initializeReader
public void initializeReader() throws Exception
- Overrides:
initializeReader
in classMolReader
- Throws:
Exception
-
checkLine
public boolean checkLine() throws Exception
-
finalizeSubclassReader
public void finalizeSubclassReader() throws Exception
Description copied from class:AtomSetCollectionReader
optional reader-specific method run first.- Overrides:
finalizeSubclassReader
in classMolReader
- Throws:
Exception
-
processModelData
public void processModelData(String data, String id, String type, String base, String last, float modelScale, float vibScale, boolean isFirst) throws Exception
- Specified by:
processModelData
in interfaceJmolJDXMOLReader
- Throws:
Exception
-
setBonding
private void setBonding(AtomSetCollection a, int ibase)
add bonding to a set of ModelData based on a MOL file only if the this set has no bonding already- Parameters:
a
-ibase
-
-
updateModelIDs
private void updateModelIDs(String id, int model0, boolean isFirst)
The first model set is allowed to be a single model and given no extension. All other model sets are given .1 .2 .3 ... extensions to their IDs.- Parameters:
id
-model0
-isFirst
-
-
addPeakData
public void addPeakData(String info)
- Specified by:
addPeakData
in interfaceJmolJDXMOLReader
-
processPeakData
private void processPeakData()
integrate the <PeakAssignment> records into the associated models, and delete unreferenced n.m models
-
findModelById
private int findModelById(String modelID)
-
addType
private void addType(int imodel, String type)
sets an auxiliaryInfo string to "HNMR 13CNMR" or "IR" or "MS"- Parameters:
imodel
-type
-
-
processPeakSelectModel
private boolean processPeakSelectModel(int i, String title)
-
setSpectrumPeaks
public void setSpectrumPeaks(int nH, String piUnitsX, String piUnitsY)
- Specified by:
setSpectrumPeaks
in interfaceJmolJDXMOLReader
-
-