Class 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 Detail

      • selectedModel

        private int selectedModel
      • acdMolFile

        private String acdMolFile
      • nPeaks

        private int nPeaks
      • acdAssignments

        private javajs.util.Lst<String[]> acdAssignments
      • nucleus

        private String nucleus
      • peakData

        private javajs.util.Lst<String> peakData
      • allTypes

        private String allTypes
    • Constructor Detail

      • JcampdxReader

        public JcampdxReader()
    • Method Detail

      • 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 -
      • 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 -
      • processPeakSelectAtom

        private void processPeakSelectAtom​(int i,
                                           String key,
                                           String data)
      • processPeakSelectModel

        private boolean processPeakSelectModel​(int i,
                                               String title)