Class QCJSONWriter


  • public class QCJSONWriter
    extends JSONWriter
    A very experimental class for writing QCJSON files. This standard is in the process of being developed, so any of this could change at any time. All we have here is Bob Hanson's experiment with getting Jmol to save and restore structures, vibrations, and molecular orbitals. Data set Bob is using is at https://sourceforge.net/p/jmol/code/HEAD/tree/trunk/Jmol-datafiles/qcjson
    • Field Detail

      • filterMOs

        private boolean filterMOs
      • basisID

        private int basisID
      • shells

        private javajs.util.Lst<int[]> shells
      • dfCoefMaps

        private int[][] dfCoefMaps
      • integrationKeyMap

        private static Map<String,​String> integrationKeyMap
    • Constructor Detail

      • QCJSONWriter

        public QCJSONWriter()
    • Method Detail

      • writeJSON

        public void writeJSON()
      • writeSchemaMetadata

        public void writeSchemaMetadata()
      • openSchema

        public void openSchema()
      • writeMagic

        public void writeMagic()
      • closeSchema

        public void closeSchema()
      • writeJobs

        public void writeJobs()
      • writeJob

        public void writeJob​(int iJob)
      • writeJobMetadata

        public void writeJobMetadata()
      • writeModels

        public void writeModels()
      • writeModel

        public int writeModel​(int modelIndex)
      • writeTopology

        public void writeTopology​(int modelIndex)
      • getProperty

        public Object getProperty​(int modelIndex,
                                  String key)
      • isVibration

        private boolean isVibration​(int modelIndex)
      • writeModelMetadata

        public void writeModelMetadata​(int modelIndex)
      • writeAtoms

        public void writeAtoms​(int modelIndex)
      • formatNumber

        private String formatNumber​(float x)
      • writePrefix_Units

        private void writePrefix_Units​(String prefix,
                                       String units)
      • writeBonds

        public void writeBonds​(int modelIndex)
      • writeVibrations

        public int writeVibrations​(int modelIndex)
      • writeMapKeyValueUnits

        private void writeMapKeyValueUnits​(String key,
                                           Object value,
                                           String units)
      • haveMOData

        private boolean haveMOData​(int modelIndex)
      • getAuxiliaryData

        private Object getAuxiliaryData​(int modelIndex,
                                        String key)
      • writeMOData

        private void writeMOData​(int modelIndex)
      • fixIntegration

        private static Map<String,​String> fixIntegration()
        When an MO is calculated in Jmol, Jmol will check the integration so that it can be checked to be close to 1.0000. This integration value is saved back in the MO data, but it is not a standard key. (As though anything is here!) So we set a key mapping to replace it.
        Returns:
        the "integration" key map
      • fixCoefficients

        private Object fixCoefficients​(double[] coeffs)
        Jmol allows for a set of arrays that map coefficient indicies with nonstandard order to Gaussian/Molden order. Here we do the conversion upon writing so that the order is always Gaussian/Molden order.
        Parameters:
        coeffs -
        Returns:
      • addBasis

        private String addBasis​(Map<String,​Object> moData)
        Add a basis to the associative array moBases keyed on its hashcode
        Parameters:
        moData -
        Returns:
        ID for this basis.
      • writeMOBases

        public void writeMOBases()