Torsion Drive

A Python implementation of the MolSSI QCSchema “Torsion Drive” models.

TorsionDriveInput

pydantic model qcelemental.models.v2.TorsionDriveInput[source]

Inputs for running a torsion drive.

Show JSON schema
{
   "title": "TorsionDriveInput",
   "description": "Inputs for running a torsion drive.",
   "type": "object",
   "properties": {
      "schema_name": {
         "const": "qcschema_torsion_drive_input",
         "default": "qcschema_torsion_drive_input",
         "title": "Schema Name",
         "type": "string"
      },
      "schema_version": {
         "const": 2,
         "default": 2,
         "description": "The version number of ``schema_name`` to which this model conforms.",
         "title": "Schema Version",
         "type": "integer"
      },
      "id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "title": "Id"
      },
      "initial_molecule": {
         "description": "The starting molecule(s) for the torsion drive.",
         "items": {
            "$ref": "#/$defs/Molecule"
         },
         "minItems": 1,
         "title": "Initial Molecule",
         "type": "array"
      },
      "specification": {
         "$ref": "#/$defs/TorsionDriveSpecification"
      },
      "provenance": {
         "$ref": "#/$defs/Provenance",
         "default": {
            "creator": "QCElemental",
            "version": "0.1.dev1+g997989000",
            "routine": "qcelemental.models.v2.torsion_drive"
         }
      }
   },
   "$defs": {
      "AtomicProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of computational result data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_protocols",
               "default": "qcschema_atomic_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "wavefunction": {
               "$ref": "#/$defs/WavefunctionProtocolEnum",
               "default": "none"
            },
            "stdout": {
               "default": true,
               "description": "Primary output file to keep from the computation",
               "title": "Stdout",
               "type": "boolean"
            },
            "error_correction": {
               "$ref": "#/$defs/ErrorCorrectionProtocol",
               "description": "Policies for error correction"
            },
            "native_files": {
               "$ref": "#/$defs/NativeFilesProtocolEnum",
               "default": "none",
               "description": "Policies for keeping processed files from the computation"
            }
         },
         "title": "AtomicProtocols",
         "type": "object"
      },
      "AtomicSpecification": {
         "additionalProperties": false,
         "description": "Specification for a single point QC calculation",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_specification",
               "default": "qcschema_atomic_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "keywords": {
               "additionalProperties": true,
               "default": {},
               "description": "The program specific keywords to be used.",
               "title": "Keywords",
               "type": "object"
            },
            "program": {
               "default": "",
               "description": "The program for which the Specification is intended.",
               "title": "Program",
               "type": "string"
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum"
            },
            "model": {
               "$ref": "#/$defs/Model"
            },
            "protocols": {
               "$ref": "#/$defs/AtomicProtocols",
               "default": {}
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "driver",
            "model"
         ],
         "title": "AtomicSpecification",
         "type": "object"
      },
      "BasisCenter": {
         "additionalProperties": false,
         "description": "Data for a single atom/center in a basis set.",
         "properties": {
            "electron_shells": {
               "description": "Electronic shells for this center.",
               "items": {
                  "$ref": "#/$defs/ElectronShell"
               },
               "minItems": 1,
               "title": "Electron Shells",
               "type": "array",
               "uniqueItems": true
            },
            "ecp_electrons": {
               "default": 0,
               "description": "Number of electrons replaced by ECP, MCP, or other field potentials.",
               "title": "Ecp Electrons",
               "type": "integer"
            },
            "ecp_potentials": {
               "anyOf": [
                  {
                     "items": {
                        "$ref": "#/$defs/ECPPotential"
                     },
                     "minItems": 1,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "ECPs, MCPs, or other field potentials for this center.",
               "title": "Ecp Potentials",
               "uniqueItems": true
            }
         },
         "required": [
            "electron_shells"
         ],
         "title": "BasisCenter",
         "type": "object"
      },
      "BasisSet": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "A quantum chemistry basis description.",
         "properties": {
            "schema_name": {
               "const": "qcschema_basis_set",
               "default": "qcschema_basis_set",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of :attr:`~qcelemental.models.BasisSet.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "name": {
               "description": "The standard basis name if available (e.g., 'cc-pVDZ').",
               "title": "Name",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Brief description of the basis set.",
               "title": "Description"
            },
            "center_data": {
               "additionalProperties": {
                  "$ref": "#/$defs/BasisCenter"
               },
               "description": "Shared basis data for all atoms/centers in the parent molecule",
               "title": "Center Data",
               "type": "object"
            },
            "atom_map": {
               "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.",
               "items": {
                  "type": "string"
               },
               "title": "Atom Map",
               "type": "array"
            },
            "nbf": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of basis functions. Use for convenience or as checksum",
               "title": "Nbf"
            }
         },
         "required": [
            "name",
            "center_data",
            "atom_map"
         ],
         "title": "BasisSet",
         "type": "object"
      },
      "DriverEnum": {
         "description": "Allowed computation driver values.",
         "enum": [
            "energy",
            "gradient",
            "hessian",
            "properties"
         ],
         "title": "DriverEnum",
         "type": "string"
      },
      "ECPPotential": {
         "additionalProperties": false,
         "description": "Information for a single ECP potential.",
         "properties": {
            "ecp_type": {
               "$ref": "#/$defs/ECPType"
            },
            "angular_momentum": {
               "description": "Angular momentum for the potential as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "r_exponents": {
               "description": "Exponents of the 'r' term.",
               "items": {
                  "type": "integer"
               },
               "minItems": 1,
               "title": "R Exponents",
               "type": "array"
            },
            "gaussian_exponents": {
               "description": "Exponents of the 'gaussian' term.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Gaussian Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "ecp_type",
            "angular_momentum",
            "r_exponents",
            "gaussian_exponents",
            "coefficients"
         ],
         "title": "ECPPotential",
         "type": "object"
      },
      "ECPType": {
         "description": "The type of the ECP potential.",
         "enum": [
            "scalar",
            "spinorbit"
         ],
         "title": "ECPType",
         "type": "string"
      },
      "ElectronShell": {
         "additionalProperties": false,
         "description": "Information for a single electronic shell.",
         "properties": {
            "angular_momentum": {
               "description": "Angular momentum for the shell as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "harmonic_type": {
               "$ref": "#/$defs/HarmonicType"
            },
            "exponents": {
               "description": "Exponents for the contracted shell.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "angular_momentum",
            "harmonic_type",
            "exponents",
            "coefficients"
         ],
         "title": "ElectronShell",
         "type": "object"
      },
      "ErrorCorrectionProtocol": {
         "additionalProperties": false,
         "description": "Configuration for how QCEngine handles error correction\n\nWARNING: These protocols are currently experimental and only supported by NWChem tasks",
         "properties": {
            "default_policy": {
               "default": true,
               "description": "Whether to allow error corrections to be used if not directly specified in `policies`",
               "title": "Default Policy",
               "type": "boolean"
            },
            "policies": {
               "anyOf": [
                  {
                     "additionalProperties": {
                        "type": "boolean"
                     },
                     "type": "object"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Settings that define whether specific error corrections are allowed. Keys are the name of a known error and values are whether it is allowed to be used.",
               "title": "Policies"
            }
         },
         "title": "ErrorCorrectionProtocol",
         "type": "object"
      },
      "HarmonicType": {
         "description": "The angular momentum representation of a shell.",
         "enum": [
            "spherical",
            "cartesian"
         ],
         "title": "HarmonicType",
         "type": "string"
      },
      "Identifiers": {
         "additionalProperties": false,
         "description": "Canonical chemical identifiers",
         "properties": {
            "molecule_hash": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Molecule Hash"
            },
            "molecular_formula": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Molecular Formula"
            },
            "smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Smiles"
            },
            "inchi": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Inchi"
            },
            "inchikey": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Inchikey"
            },
            "canonical_explicit_hydrogen_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Explicit Hydrogen Smiles"
            },
            "canonical_isomeric_explicit_hydrogen_mapped_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Explicit Hydrogen Mapped Smiles"
            },
            "canonical_isomeric_explicit_hydrogen_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Explicit Hydrogen Smiles"
            },
            "canonical_isomeric_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Smiles"
            },
            "canonical_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Smiles"
            },
            "pubchem_cid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Compound ID",
               "title": "Pubchem Cid"
            },
            "pubchem_sid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Substance ID",
               "title": "Pubchem Sid"
            },
            "pubchem_conformerid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Conformer ID",
               "title": "Pubchem Conformerid"
            }
         },
         "title": "Identifiers",
         "type": "object"
      },
      "Model": {
         "additionalProperties": true,
         "description": "The computational molecular sciences model to run.",
         "properties": {
            "method": {
               "description": "The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.",
               "title": "Method",
               "type": "string"
            },
            "basis": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/BasisSet"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The quantum chemistry basis set to evaluate (e.g., 6-31g, cc-pVDZ, ...). Can be ``None`` for methods without basis sets. For molecular mechanics, name of the atom-typer.",
               "title": "Basis"
            }
         },
         "required": [
            "method"
         ],
         "title": "Model",
         "type": "object"
      },
      "Molecule": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "The physical Cartesian representation of the molecular system.\n\nA QCSchema representation of a Molecule. This model contains\ndata for symbols, geometry, connectivity, charges, fragmentation, etc while also supporting a wide array of I/O and manipulation capabilities.\n\nMolecule objects geometry, masses, and charges are truncated to 8, 6, and 4 decimal places respectively to assist with duplicate detection.\n\nNotes\n-----\nAll arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n\n  * nat: number of atomic = calcinfo_natom\n  * nfr: number of fragments\n  * <varies>: irregular dimension not systematically reshapable",
         "properties": {
            "schema_name": {
               "const": "qcschema_molecule",
               "default": "qcschema_molecule",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 3,
               "default": 3,
               "description": "The version number of :attr:`~qcelemental.models.Molecule.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "validated": {
               "default": false,
               "description": "A boolean indicator (for speed purposes) that the input Molecule data has been previously checked for schema (data layout and type) and physics (e.g., non-overlapping atoms, feasible multiplicity) compliance. This should be False in most cases. A ``True`` setting should only ever be set by the constructor for this class itself or other trusted sources such as a Fractal Server or previously serialized Molecules.",
               "title": "Validated",
               "type": "boolean"
            },
            "symbols": {
               "description": "The ordered array of atomic elemental symbols in title case. This field's index sets atomic order for all other per-atom fields like :attr:`~qcelemental.models.Molecule.real` and the first dimension of :attr:`~qcelemental.models.Molecule.geometry`. Ghost/virtual atoms must have an entry here in :attr:`~qcelemental.models.Molecule.symbols`; ghostedness is indicated through the :attr:`~qcelemental.models.Molecule.real` field.",
               "items": {
                  "type": "number"
               },
               "shape": [
                  "nat"
               ],
               "title": "Symbols",
               "type": "array"
            },
            "geometry": {
               "description": "The ordered array for Cartesian XYZ atomic coordinates [a0]. Atom ordering is fixed; that is, a consumer who shuffles atoms must not reattach the input (pre-shuffling) molecule schema instance to any output (post-shuffling) per-atom results (e.g., gradient). Index of the first dimension matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`.\nSerialized storage is always flat, (3*nat,), but QCSchema implementations will want to reshape it. QCElemental can also accept array-likes which can be mapped to (nat,3) such as a 1-D list of length 3*nat, or the serialized version of the array in (3*nat,) shape; all forms will be reshaped to (nat,3) for this attribute.",
               "items": {
                  "type": "number"
               },
               "shape": [
                  "nat",
                  3
               ],
               "title": "Geometry",
               "type": "array",
               "units": "a0"
            },
            "name": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Common or human-readable name to assign to this molecule. This field can be arbitrary; see :attr:`~qcelemental.models.Molecule.identifiers` for well-defined labels.",
               "title": "Name"
            },
            "identifiers": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Identifiers"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional dictionary of additional identifiers by which this molecule can be referenced, such as INCHI, canonical SMILES, etc. See the :class:`~qcelemental.models.results.Identifiers` model for more details."
            },
            "comment": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Additional comments for this molecule. Intended for pure human/user consumption and clarity.",
               "title": "Comment"
            },
            "molecular_charge": {
               "default": 0.0,
               "description": "The net electrostatic charge of the molecule.",
               "title": "Molecular Charge",
               "type": "number"
            },
            "molecular_multiplicity": {
               "default": 1,
               "description": "The total multiplicity of the molecule.",
               "title": "Molecular Multiplicity",
               "type": "number"
            },
            "masses": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The ordered array of atomic masses. Index order matches the 0-indexed indices of all other per-atom fields like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. If this is not provided, the mass of each atom is inferred from its most common isotope. If this is provided, it must be the same length as :attr:`~qcelemental.models.Molecule.symbols` but can accept ``None`` entries for standard masses to infer from the same index in the :attr:`~qcelemental.models.Molecule.symbols` field.",
               "shape": [
                  "nat"
               ],
               "title": "Masses",
               "units": "u"
            },
            "real": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The ordered array indicating if each atom is real (``True``) or ghost/virtual (``False``). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and the first dimension of :attr:`~qcelemental.models.Molecule.geometry`. If this is not provided, all atoms are assumed to be real (``True``). If this is provided, the reality or ghostedness of every atom must be specified.",
               "shape": [
                  "nat"
               ],
               "title": "Real"
            },
            "atom_labels": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Additional per-atom labels as an array of strings. Typical use is in model conversions, such as Elemental <-> Molpro and not typically something which should be user assigned. See the :attr:`~qcelemental.models.Molecule.comment` field for general human-consumable text to affix to the molecule.",
               "shape": [
                  "nat"
               ],
               "title": "Atom Labels"
            },
            "atomic_numbers": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional ordered 1-D array-like object of atomic numbers of shape (nat,). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Values are inferred from the :attr:`~qcelemental.models.Molecule.symbols` list if not explicitly set. Ghostedness should be indicated through :attr:`~qcelemental.models.Molecule.real` field, not zeros here.",
               "shape": [
                  "nat"
               ],
               "title": "Atomic Numbers"
            },
            "mass_numbers": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional ordered 1-D array-like object of atomic *mass* numbers of shape (nat). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Values are inferred from the most common isotopes of the :attr:`~qcelemental.models.Molecule.symbols` list if not explicitly set. If single isotope not (yet) known for an atom, -1 is placeholder.",
               "shape": [
                  "nat"
               ],
               "title": "Mass Numbers"
            },
            "connectivity": {
               "anyOf": [
                  {
                     "items": {
                        "maxItems": 3,
                        "minItems": 3,
                        "prefixItems": [
                           {
                              "minimum": 0,
                              "type": "integer"
                           },
                           {
                              "minimum": 0,
                              "type": "integer"
                           },
                           {
                              "maximum": 5,
                              "minimum": 0,
                              "type": "number"
                           }
                        ],
                        "type": "array"
                     },
                     "minItems": 1,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A list of bonds within the molecule. Each entry is a tuple of ``(atom_index_A, atom_index_B, bond_order)`` where the ``atom_index`` matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Bonds may be freely reordered and inverted.",
               "title": "Connectivity"
            },
            "fragments": {
               "anyOf": [
                  {
                     "items": {
                        "items": {
                           "type": "number"
                        },
                        "type": "array"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "List of indices grouping atoms (0-indexed) into molecular fragments within the molecule. Each entry in the outer list is a new fragment; index matches the ordering in :attr:`~qcelemental.models.Molecule.fragment_charges` and :attr:`~qcelemental.models.Molecule.fragment_multiplicities`. Inner lists are 0-indexed atoms which compose the fragment; every atom must be in exactly one inner list. Noncontiguous fragments are allowed, though no QM program is known to support them. Fragment ordering is fixed; that is, a consumer who shuffles fragments must not reattach the input (pre-shuffling) molecule schema instance to any output (post-shuffling) per-fragment results (e.g., n-body energy arrays).",
               "shape": [
                  "nfr",
                  "<varies>"
               ],
               "title": "Fragments"
            },
            "fragment_charges": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total charge of each fragment in the :attr:`~qcelemental.models.Molecule.fragments` list. The index of this list matches the 0-index indices of :attr:`~qcelemental.models.Molecule.fragments` list. Will be filled in based on a set of rules if not provided (and :attr:`~qcelemental.models.Molecule.fragments` are specified).",
               "shape": [
                  "nfr"
               ],
               "title": "Fragment Charges"
            },
            "fragment_multiplicities": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The multiplicity of each fragment in the :attr:`~qcelemental.models.Molecule.fragments` list. The index of this list matches the 0-index indices of :attr:`~qcelemental.models.Molecule.fragments` list. Will be filled in based on a set of rules if not provided (and :attr:`~qcelemental.models.Molecule.fragments` are specified).",
               "shape": [
                  "nfr"
               ],
               "title": "Fragment Multiplicities"
            },
            "fix_com": {
               "default": false,
               "description": "Whether translation of geometry is allowed (fix F) or disallowed (fix T).When False, QCElemental will pre-process the Molecule object to translate the center of mass to (0,0,0) in Euclidean coordinate space, resulting in a different :attr:`~qcelemental.models.Molecule.geometry` than the one provided. 'Fix' is used in the sense of 'specify': that is, `fix_com=True` signals that the origin in `geometry` is a deliberate part of the Molecule spec, whereas `fix_com=False` (default) allows that the origin is happenstance and may be adjusted. guidance: A consumer who translates the geometry must not reattach the input (pre-translation) molecule schema instance to any output (post-translation) origin-sensitive results (e.g., an ordinary energy when EFP present).",
               "title": "Fix Com",
               "type": "boolean"
            },
            "fix_orientation": {
               "default": false,
               "description": "Whether rotation of geometry is allowed (fix F) or disallowed (fix T). When False, QCElemental will pre-process the Molecule object to orient via the intertial tensor, resulting in a different :attr:`~qcelemental.models.Molecule.geometry` than the one provided. 'Fix' is used in the sense of 'specify': that is, `fix_orientation=True` signals that the frame orientation in `geometry` is a deliberate part of the Molecule spec, whereas `fix_orientation=False` (default) allows that the frame is happenstance and may be adjusted. guidance: A consumer who rotates the geometry must not reattach the input (pre-rotation) molecule schema instance to any output (post-rotation) frame-sensitive results (e.g., molecular vibrations).",
               "title": "Fix Orientation",
               "type": "boolean"
            },
            "fix_symmetry": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Maximal point group symmetry which :attr:`~qcelemental.models.Molecule.geometry` should be treated. Lowercase.",
               "title": "Fix Symmetry"
            },
            "provenance": {
               "$ref": "#/$defs/Provenance",
               "description": "The provenance information about how this Molecule (and its attributes) were generated, provided, and manipulated."
            },
            "id": {
               "anyOf": [
                  {},
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A unique identifier for this Molecule object. This field exists primarily for Databases (e.g. Fractal's Server) to track and lookup this specific object and should virtually never need to be manually set.",
               "title": "Id"
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the molecule. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "symbols",
            "geometry"
         ],
         "title": "Molecule",
         "type": "object"
      },
      "NativeFilesProtocolEnum": {
         "description": "CMS program files to keep from a computation.",
         "enum": [
            "all",
            "input",
            "none"
         ],
         "title": "NativeFilesProtocolEnum",
         "type": "string"
      },
      "OptimizationProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of a Optimization output data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_protocols",
               "default": "qcschema_optimization_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "trajectory_results": {
               "$ref": "#/$defs/TrajectoryProtocolEnum",
               "default": "none",
               "description": "\n    Which gradient evaluations to keep in an optimization trajectory.\n    "
            }
         },
         "title": "OptimizationProtocols",
         "type": "object"
      },
      "OptimizationSpecification": {
         "additionalProperties": false,
         "description": "Specification for how to run a geometry optimization.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_specification",
               "default": "qcschema_optimization_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "program": {
               "default": "",
               "description": "Optimizer CMS code / QCEngine procedure to run the geometry optimization with.",
               "title": "Program",
               "type": "string"
            },
            "keywords": {
               "additionalProperties": true,
               "default": {},
               "description": "The optimization specific keywords to be used.",
               "title": "Keywords",
               "type": "object"
            },
            "protocols": {
               "$ref": "#/$defs/OptimizationProtocols",
               "default": {},
               "description": "\n    Protocols regarding the manipulation of a Optimization output data.\n    "
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            },
            "specification": {
               "$ref": "#/$defs/AtomicSpecification",
               "description": "A directive for how to compute a gradient for the optimization. Either an ordinary atomic/single-point or a many-body spec."
            }
         },
         "required": [
            "specification"
         ],
         "title": "OptimizationSpecification",
         "type": "object"
      },
      "Provenance": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": true,
         "description": "Provenance information.",
         "properties": {
            "creator": {
               "description": "The name of the program, library, or person who created the object.",
               "title": "Creator",
               "type": "string"
            },
            "version": {
               "default": "",
               "description": "The version of the creator, blank otherwise. This should be sortable by the very broad `PEP 440 <https://www.python.org/dev/peps/pep-0440/>`_.",
               "title": "Version",
               "type": "string"
            },
            "routine": {
               "default": "",
               "description": "The name of the routine or function within the creator, blank otherwise.",
               "title": "Routine",
               "type": "string"
            }
         },
         "required": [
            "creator"
         ],
         "title": "Provenance",
         "type": "object"
      },
      "ScanResultsProtocolEnum": {
         "description": "Which gradient evaluations to keep in an optimization trajectory.",
         "enum": [
            "all",
            "lowest",
            "none"
         ],
         "title": "ScanResultsProtocolEnum",
         "type": "string"
      },
      "TorsionDriveKeywords": {
         "additionalProperties": false,
         "description": "TorsionDriveRecord options\n\nNotes\n-----\n* This class is still provisional and may be subject to removal and re-design.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_keywords",
               "default": "qcschema_torsion_drive_keywords",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "dihedrals": {
               "description": "The list of dihedrals to select for the TorsionDrive operation. Each entry is a tuple of integers of for particle indices.",
               "items": {
                  "maxItems": 4,
                  "minItems": 4,
                  "prefixItems": [
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     }
                  ],
                  "type": "array"
               },
               "title": "Dihedrals",
               "type": "array"
            },
            "grid_spacing": {
               "description": "List of grid spacing for dihedral scan in degrees. Multiple values will be mapped to each dihedral angle.",
               "items": {
                  "type": "integer"
               },
               "title": "Grid Spacing",
               "type": "array"
            },
            "dihedral_ranges": {
               "anyOf": [
                  {
                     "items": {
                        "maxItems": 2,
                        "minItems": 2,
                        "prefixItems": [
                           {
                              "type": "integer"
                           },
                           {
                              "type": "integer"
                           }
                        ],
                        "type": "array"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A list of dihedral range limits as a pair (lower, upper). Each range corresponds to the dihedrals in input.",
               "title": "Dihedral Ranges"
            },
            "energy_decrease_thresh": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The threshold of the smallest energy decrease amount to trigger activating optimizations from grid point.",
               "title": "Energy Decrease Thresh"
            },
            "energy_upper_limit": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The threshold if the energy of a grid point that is higher than the current global minimum, to start new optimizations, in unit of a.u. I.e. if energy_upper_limit = 0.05, current global minimum energy is -9.9 , then a new task starting with energy -9.8 will be skipped.",
               "title": "Energy Upper Limit"
            }
         },
         "required": [
            "dihedrals",
            "grid_spacing"
         ],
         "title": "TorsionDriveKeywords",
         "type": "object"
      },
      "TorsionDriveProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of a Torsion Drive subcalculation history.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_protocols",
               "default": "qcschema_torsion_drive_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "scan_results": {
               "$ref": "#/$defs/ScanResultsProtocolEnum",
               "default": "none",
               "description": "\n    Which gradient evaluations to keep in an optimization trajectory.\n    "
            }
         },
         "title": "TorsionDriveProtocols",
         "type": "object"
      },
      "TorsionDriveSpecification": {
         "additionalProperties": false,
         "description": "Specification for how to run a torsion drive scan.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_specification",
               "default": "qcschema_torsion_drive_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "program": {
               "default": "",
               "description": "Torsion Drive CMS code / QCEngine procedure with which to run the torsion scan.",
               "title": "Program",
               "type": "string"
            },
            "keywords": {
               "$ref": "#/$defs/TorsionDriveKeywords",
               "description": "The torsion drive specific keywords to be used."
            },
            "protocols": {
               "$ref": "#/$defs/TorsionDriveProtocols",
               "default": {},
               "description": "\n    Protocols regarding the manipulation of a Torsion Drive subcalculation history.\n    "
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            },
            "specification": {
               "$ref": "#/$defs/OptimizationSpecification",
               "description": "The specification for how to run optimizations for the torsion scan (within this is spec for gradients for the optimization."
            }
         },
         "required": [
            "keywords",
            "specification"
         ],
         "title": "TorsionDriveSpecification",
         "type": "object"
      },
      "TrajectoryProtocolEnum": {
         "description": "Which gradient evaluations to keep in an optimization trajectory.",
         "enum": [
            "all",
            "initial_and_final",
            "final",
            "none"
         ],
         "title": "TrajectoryProtocolEnum",
         "type": "string"
      },
      "WavefunctionProtocolEnum": {
         "description": "Wavefunction to keep from a computation.",
         "enum": [
            "all",
            "orbitals_and_eigenvalues",
            "occupations_and_eigenvalues",
            "return_results",
            "none"
         ],
         "title": "WavefunctionProtocolEnum",
         "type": "string"
      }
   },
   "additionalProperties": false,
   "required": [
      "initial_molecule",
      "specification"
   ]
}

Fields:
Validators:
field id: str | None = None
field initial_molecule: Annotated[list[Molecule], Len(min_length=1, max_length=None)] [Required]

The starting molecule(s) for the torsion drive.

Constraints:
  • min_length = 1

field provenance: Provenance = Provenance(creator='QCElemental', version='0.1.dev1+g997989000', routine='qcelemental.models.v2.torsion_drive')

Provenance information.

field schema_name: Literal['qcschema_torsion_drive_input'] = 'qcschema_torsion_drive_input'
field schema_version: Literal[2] = 2

The version number of schema_name to which this model conforms.

field specification: TorsionDriveSpecification [Required]

Specification for how to run a torsion drive scan.

Validated by:
  • _check_input_specification

convert_v(target_version, /)[source]

Convert to instance of particular QCSchema version.

Parameters:

target_version (int)

Return type:

qcelemental.models.v1.TorsionDriveInput | qcelemental.models.v2.TorsionDriveInput

qcelemental.models.v2.TorsionDriveInput.convert_v(self, target_version, /)

Convert to instance of particular QCSchema version.

Parameters:

target_version (int)

Return type:

qcelemental.models.v1.TorsionDriveInput | qcelemental.models.v2.TorsionDriveInput

TorsionDriveResult

pydantic model qcelemental.models.v2.TorsionDriveResult[source]

Results from running a torsion drive.

Show JSON schema
{
   "title": "TorsionDriveResult",
   "description": "Results from running a torsion drive.",
   "type": "object",
   "properties": {
      "schema_name": {
         "const": "qcschema_torsion_drive_result",
         "default": "qcschema_torsion_drive_result",
         "title": "Schema Name",
         "type": "string"
      },
      "schema_version": {
         "const": 2,
         "default": 2,
         "description": "The version number of ``schema_name`` to which this model conforms.",
         "title": "Schema Version",
         "type": "integer"
      },
      "id": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The optional ID for the computation.",
         "title": "Id"
      },
      "input_data": {
         "$ref": "#/$defs/TorsionDriveInput"
      },
      "final_molecules": {
         "additionalProperties": {
            "$ref": "#/$defs/Molecule"
         },
         "description": "The final molecule at each angle of the TorsionDrive scan.",
         "title": "Final Molecules",
         "type": "object"
      },
      "scan_properties": {
         "additionalProperties": {
            "$ref": "#/$defs/OptimizationProperties"
         },
         "description": "The map of energies and other properties for each angle of the TorsionDrive scan.",
         "title": "Scan Properties",
         "type": "object"
      },
      "scan_results": {
         "additionalProperties": {
            "items": {
               "$ref": "#/$defs/OptimizationResult"
            },
            "type": "array"
         },
         "description": "The map of each angle of the TorsionDrive scan to each optimization computations.",
         "title": "Scan Results",
         "type": "object"
      },
      "stdout": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The standard output of the program.",
         "title": "Stdout"
      },
      "stderr": {
         "anyOf": [
            {
               "type": "string"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The standard error of the program.",
         "title": "Stderr"
      },
      "native_files": {
         "additionalProperties": true,
         "default": {},
         "description": "DSL files.",
         "title": "Native Files",
         "type": "object"
      },
      "properties": {
         "$ref": "#/$defs/TorsionDriveProperties",
         "description": "\n    Named properties of torsion drive computations following the MolSSI QCSchema.\n    "
      },
      "extras": {
         "additionalProperties": true,
         "default": {},
         "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
         "title": "Extras",
         "type": "object"
      },
      "success": {
         "const": true,
         "default": true,
         "description": "The success of a given programs execution. If False, other fields may be blank.",
         "title": "Success",
         "type": "boolean"
      },
      "provenance": {
         "$ref": "#/$defs/Provenance"
      }
   },
   "$defs": {
      "AtomicInput": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "The MolSSI Quantum Chemistry Schema",
         "properties": {
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The optional ID for the computation.",
               "title": "Id"
            },
            "schema_name": {
               "const": "qcschema_atomic_input",
               "default": "qcschema_atomic_input",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of ``schema_name`` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "molecule": {
               "$ref": "#/$defs/Molecule",
               "description": "The molecule to use in the computation."
            },
            "specification": {
               "$ref": "#/$defs/AtomicSpecification",
               "description": "Additional fields specifying how to run the single-point computation."
            },
            "provenance": {
               "$ref": "#/$defs/Provenance"
            }
         },
         "required": [
            "molecule",
            "specification"
         ],
         "title": "AtomicInput",
         "type": "object"
      },
      "AtomicProperties": {
         "additionalProperties": false,
         "description": "Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\nAll arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n\n* nao: number of atomic orbitals = :attr:`~qcelemental.models.AtomicProperties.calcinfo_nbasis`\n* nmo: number of molecular orbitals = :attr:`~qcelemental.models.AtomicProperties.calcinfo_nmo`",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_properties",
               "default": "qcschema_atomic_properties",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "calcinfo_nbasis": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of basis functions for the computation.",
               "title": "Calcinfo Nbasis"
            },
            "calcinfo_nmo": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of molecular orbitals for the computation.",
               "title": "Calcinfo Nmo"
            },
            "calcinfo_nalpha": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of alpha electrons in the computation.",
               "title": "Calcinfo Nalpha"
            },
            "calcinfo_nbeta": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of beta electrons in the computation.",
               "title": "Calcinfo Nbeta"
            },
            "calcinfo_natom": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of atoms in the computation.",
               "title": "Calcinfo Natom"
            },
            "nuclear_repulsion_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The nuclear repulsion energy.",
               "title": "Nuclear Repulsion Energy"
            },
            "return_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The energy of the requested method, identical to :attr:`~qcelemental.models.AtomicResult.return_result` for :attr:`~qcelemental.models.AtomicInput.driver`\\ =\\ :attr:`~qcelemental.models.DriverEnum.energy` computations.",
               "title": "Return Energy"
            },
            "return_gradient": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The gradient of the requested method, identical to :attr:`~qcelemental.models.AtomicResult.return_result` for :attr:`~qcelemental.models.AtomicInput.driver`\\ =\\ :attr:`~qcelemental.models.DriverEnum.gradient` computations.",
               "title": "Return Gradient",
               "units": "E_h/a0"
            },
            "return_hessian": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The Hessian of the requested method, identical to :attr:`~qcelemental.models.AtomicResult.return_result` for :attr:`~qcelemental.models.AtomicInput.driver`\\ =\\ :attr:`~qcelemental.models.DriverEnum.hessian` computations.",
               "title": "Return Hessian",
               "units": "E_h/a0^2"
            },
            "scf_one_electron_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The one-electron (core Hamiltonian) energy contribution to the total SCF energy.",
               "title": "Scf One Electron Energy",
               "units": "E_h"
            },
            "scf_two_electron_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The two-electron energy contribution to the total SCF energy.",
               "title": "Scf Two Electron Energy",
               "units": "E_h"
            },
            "scf_vv10_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The VV10 functional energy contribution to the total SCF energy.",
               "title": "Scf Vv10 Energy",
               "units": "E_h"
            },
            "scf_xc_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The functional (XC) energy contribution to the total SCF energy.",
               "title": "Scf Xc Energy",
               "units": "E_h"
            },
            "scf_dispersion_correction_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The dispersion correction appended to an underlying functional when a DFT-D method is requested.",
               "title": "Scf Dispersion Correction Energy",
               "units": "E_h"
            },
            "scf_dipole_moment": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The SCF X, Y, and Z dipole components",
               "title": "Scf Dipole Moment",
               "units": "e a0"
            },
            "scf_quadrupole_moment": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The quadrupole components (redundant; 6 unique).",
               "shape": [
                  3,
                  3
               ],
               "title": "Scf Quadrupole Moment",
               "units": "e a0^2"
            },
            "scf_total_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total electronic energy of the SCF stage of the calculation.",
               "title": "Scf Total Energy",
               "units": "E_h"
            },
            "scf_total_gradient": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total electronic gradient of the SCF stage of the calculation.",
               "title": "Scf Total Gradient",
               "units": "E_h/a0"
            },
            "scf_total_hessian": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total electronic Hessian of the SCF stage of the calculation.",
               "title": "Scf Total Hessian",
               "units": "E_h/a0^2"
            },
            "scf_iterations": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of SCF iterations taken before convergence.",
               "title": "Scf Iterations"
            },
            "mp2_same_spin_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.",
               "title": "Mp2 Same Spin Correlation Energy",
               "units": "E_h"
            },
            "mp2_opposite_spin_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.",
               "title": "Mp2 Opposite Spin Correlation Energy",
               "units": "E_h"
            },
            "mp2_singles_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The singles portion of the MP2 correlation energy. Zero except in ROHF.",
               "title": "Mp2 Singles Energy",
               "units": "E_h"
            },
            "mp2_doubles_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations.",
               "title": "Mp2 Doubles Energy",
               "units": "E_h"
            },
            "mp2_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The MP2 correlation energy.",
               "title": "Mp2 Correlation Energy",
               "units": "E_h"
            },
            "mp2_total_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total MP2 energy (MP2 correlation energy + HF energy).",
               "title": "Mp2 Total Energy",
               "units": "E_h"
            },
            "mp2_dipole_moment": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The MP2 X, Y, and Z dipole components.",
               "shape": [
                  3
               ],
               "title": "Mp2 Dipole Moment",
               "units": "e a0"
            },
            "ccsd_same_spin_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.",
               "title": "Ccsd Same Spin Correlation Energy",
               "units": "E_h"
            },
            "ccsd_opposite_spin_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.",
               "title": "Ccsd Opposite Spin Correlation Energy",
               "units": "E_h"
            },
            "ccsd_singles_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The singles portion of the CCSD correlation energy. Zero except in ROHF.",
               "title": "Ccsd Singles Energy",
               "units": "E_h"
            },
            "ccsd_doubles_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations.",
               "title": "Ccsd Doubles Energy",
               "units": "E_h"
            },
            "ccsd_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSD correlation energy.",
               "title": "Ccsd Correlation Energy",
               "units": "E_h"
            },
            "ccsd_total_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total CCSD energy (CCSD correlation energy + HF energy).",
               "title": "Ccsd Total Energy",
               "units": "E_h"
            },
            "ccsd_dipole_moment": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSD X, Y, and Z dipole components.",
               "shape": [
                  3
               ],
               "title": "Ccsd Dipole Moment",
               "units": "e a0"
            },
            "ccsd_iterations": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of CCSD iterations taken before convergence.",
               "title": "Ccsd Iterations"
            },
            "ccsd_prt_pr_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSD(T) correlation energy.",
               "title": "Ccsd Prt Pr Correlation Energy",
               "units": "E_h"
            },
            "ccsd_prt_pr_total_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total CCSD(T) energy (CCSD(T) correlation energy + HF energy).",
               "title": "Ccsd Prt Pr Total Energy",
               "units": "E_h"
            },
            "ccsd_prt_pr_dipole_moment": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSD(T) X, Y, and Z dipole components.",
               "shape": [
                  3
               ],
               "title": "Ccsd Prt Pr Dipole Moment",
               "units": "e a0"
            },
            "ccsdt_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSDT correlation energy.",
               "title": "Ccsdt Correlation Energy",
               "units": "E_h"
            },
            "ccsdt_total_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total CCSDT energy (CCSDT correlation energy + HF energy).",
               "title": "Ccsdt Total Energy",
               "units": "E_h"
            },
            "ccsdt_dipole_moment": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSDT X, Y, and Z dipole components.",
               "shape": [
                  3
               ],
               "title": "Ccsdt Dipole Moment",
               "units": "e a0"
            },
            "ccsdt_iterations": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of CCSDT iterations taken before convergence.",
               "title": "Ccsdt Iterations"
            },
            "ccsdtq_correlation_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSDTQ correlation energy.",
               "title": "Ccsdtq Correlation Energy",
               "units": "E_h"
            },
            "ccsdtq_total_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total CCSDTQ energy (CCSDTQ correlation energy + HF energy).",
               "title": "Ccsdtq Total Energy",
               "units": "E_h"
            },
            "ccsdtq_dipole_moment": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The CCSDTQ X, Y, and Z dipole components.",
               "shape": [
                  3
               ],
               "title": "Ccsdtq Dipole Moment",
               "units": "e a0"
            },
            "ccsdtq_iterations": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of CCSDTQ iterations taken before convergence.",
               "title": "Ccsdtq Iterations"
            }
         },
         "title": "AtomicProperties",
         "type": "object"
      },
      "AtomicProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of computational result data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_protocols",
               "default": "qcschema_atomic_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "wavefunction": {
               "$ref": "#/$defs/WavefunctionProtocolEnum",
               "default": "none"
            },
            "stdout": {
               "default": true,
               "description": "Primary output file to keep from the computation",
               "title": "Stdout",
               "type": "boolean"
            },
            "error_correction": {
               "$ref": "#/$defs/ErrorCorrectionProtocol",
               "description": "Policies for error correction"
            },
            "native_files": {
               "$ref": "#/$defs/NativeFilesProtocolEnum",
               "default": "none",
               "description": "Policies for keeping processed files from the computation"
            }
         },
         "title": "AtomicProtocols",
         "type": "object"
      },
      "AtomicResult": {
         "additionalProperties": false,
         "description": "Results from a CMS program execution.",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_result",
               "default": "qcschema_atomic_result",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of :attr:`~qcelemental.models.AtomicResult.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The optional ID for the computation.",
               "title": "Id"
            },
            "input_data": {
               "$ref": "#/$defs/AtomicInput"
            },
            "molecule": {
               "$ref": "#/$defs/Molecule",
               "description": "The molecule with frame and orientation of the results."
            },
            "properties": {
               "$ref": "#/$defs/AtomicProperties",
               "description": "\n    Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n    All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n\n    * nao: number of atomic orbitals = :attr:`~qcelemental.models.AtomicProperties.calcinfo_nbasis`\n    * nmo: number of molecular orbitals = :attr:`~qcelemental.models.AtomicProperties.calcinfo_nmo`\n    "
            },
            "wavefunction": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/WavefunctionProperties"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Wavefunction properties resulting from a computation.\n    Matrix quantities are stored in column-major order. Presence and contents configurable by protocol."
            },
            "return_result": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "additionalProperties": true,
                     "type": "object"
                  }
               ],
               "description": "The primary return specified by the :attr:`~qcelemental.models.AtomicInput.driver` field. Scalar if energy; array if gradient or hessian; dictionary with property keys if properties.",
               "title": "Return Result"
            },
            "stdout": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The primary logging output of the program, whether natively standard output or a file. Presence vs. absence (or null-ness?) configurable by protocol.",
               "title": "Stdout"
            },
            "stderr": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The standard error of the program execution.",
               "title": "Stderr"
            },
            "native_files": {
               "additionalProperties": true,
               "default": {},
               "description": "DSL files.",
               "title": "Native Files",
               "type": "object"
            },
            "success": {
               "const": true,
               "default": true,
               "description": "The success of program execution. If False, other fields may be blank.",
               "title": "Success",
               "type": "boolean"
            },
            "provenance": {
               "$ref": "#/$defs/Provenance"
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "input_data",
            "molecule",
            "properties",
            "return_result",
            "provenance"
         ],
         "title": "AtomicResult",
         "type": "object"
      },
      "AtomicSpecification": {
         "additionalProperties": false,
         "description": "Specification for a single point QC calculation",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_specification",
               "default": "qcschema_atomic_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "keywords": {
               "additionalProperties": true,
               "default": {},
               "description": "The program specific keywords to be used.",
               "title": "Keywords",
               "type": "object"
            },
            "program": {
               "default": "",
               "description": "The program for which the Specification is intended.",
               "title": "Program",
               "type": "string"
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum"
            },
            "model": {
               "$ref": "#/$defs/Model"
            },
            "protocols": {
               "$ref": "#/$defs/AtomicProtocols",
               "default": {}
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "driver",
            "model"
         ],
         "title": "AtomicSpecification",
         "type": "object"
      },
      "BasisCenter": {
         "additionalProperties": false,
         "description": "Data for a single atom/center in a basis set.",
         "properties": {
            "electron_shells": {
               "description": "Electronic shells for this center.",
               "items": {
                  "$ref": "#/$defs/ElectronShell"
               },
               "minItems": 1,
               "title": "Electron Shells",
               "type": "array",
               "uniqueItems": true
            },
            "ecp_electrons": {
               "default": 0,
               "description": "Number of electrons replaced by ECP, MCP, or other field potentials.",
               "title": "Ecp Electrons",
               "type": "integer"
            },
            "ecp_potentials": {
               "anyOf": [
                  {
                     "items": {
                        "$ref": "#/$defs/ECPPotential"
                     },
                     "minItems": 1,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "ECPs, MCPs, or other field potentials for this center.",
               "title": "Ecp Potentials",
               "uniqueItems": true
            }
         },
         "required": [
            "electron_shells"
         ],
         "title": "BasisCenter",
         "type": "object"
      },
      "BasisSet": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "A quantum chemistry basis description.",
         "properties": {
            "schema_name": {
               "const": "qcschema_basis_set",
               "default": "qcschema_basis_set",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of :attr:`~qcelemental.models.BasisSet.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "name": {
               "description": "The standard basis name if available (e.g., 'cc-pVDZ').",
               "title": "Name",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Brief description of the basis set.",
               "title": "Description"
            },
            "center_data": {
               "additionalProperties": {
                  "$ref": "#/$defs/BasisCenter"
               },
               "description": "Shared basis data for all atoms/centers in the parent molecule",
               "title": "Center Data",
               "type": "object"
            },
            "atom_map": {
               "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.",
               "items": {
                  "type": "string"
               },
               "title": "Atom Map",
               "type": "array"
            },
            "nbf": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of basis functions. Use for convenience or as checksum",
               "title": "Nbf"
            }
         },
         "required": [
            "name",
            "center_data",
            "atom_map"
         ],
         "title": "BasisSet",
         "type": "object"
      },
      "DriverEnum": {
         "description": "Allowed computation driver values.",
         "enum": [
            "energy",
            "gradient",
            "hessian",
            "properties"
         ],
         "title": "DriverEnum",
         "type": "string"
      },
      "ECPPotential": {
         "additionalProperties": false,
         "description": "Information for a single ECP potential.",
         "properties": {
            "ecp_type": {
               "$ref": "#/$defs/ECPType"
            },
            "angular_momentum": {
               "description": "Angular momentum for the potential as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "r_exponents": {
               "description": "Exponents of the 'r' term.",
               "items": {
                  "type": "integer"
               },
               "minItems": 1,
               "title": "R Exponents",
               "type": "array"
            },
            "gaussian_exponents": {
               "description": "Exponents of the 'gaussian' term.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Gaussian Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "ecp_type",
            "angular_momentum",
            "r_exponents",
            "gaussian_exponents",
            "coefficients"
         ],
         "title": "ECPPotential",
         "type": "object"
      },
      "ECPType": {
         "description": "The type of the ECP potential.",
         "enum": [
            "scalar",
            "spinorbit"
         ],
         "title": "ECPType",
         "type": "string"
      },
      "ElectronShell": {
         "additionalProperties": false,
         "description": "Information for a single electronic shell.",
         "properties": {
            "angular_momentum": {
               "description": "Angular momentum for the shell as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "harmonic_type": {
               "$ref": "#/$defs/HarmonicType"
            },
            "exponents": {
               "description": "Exponents for the contracted shell.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "angular_momentum",
            "harmonic_type",
            "exponents",
            "coefficients"
         ],
         "title": "ElectronShell",
         "type": "object"
      },
      "ErrorCorrectionProtocol": {
         "additionalProperties": false,
         "description": "Configuration for how QCEngine handles error correction\n\nWARNING: These protocols are currently experimental and only supported by NWChem tasks",
         "properties": {
            "default_policy": {
               "default": true,
               "description": "Whether to allow error corrections to be used if not directly specified in `policies`",
               "title": "Default Policy",
               "type": "boolean"
            },
            "policies": {
               "anyOf": [
                  {
                     "additionalProperties": {
                        "type": "boolean"
                     },
                     "type": "object"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Settings that define whether specific error corrections are allowed. Keys are the name of a known error and values are whether it is allowed to be used.",
               "title": "Policies"
            }
         },
         "title": "ErrorCorrectionProtocol",
         "type": "object"
      },
      "HarmonicType": {
         "description": "The angular momentum representation of a shell.",
         "enum": [
            "spherical",
            "cartesian"
         ],
         "title": "HarmonicType",
         "type": "string"
      },
      "Identifiers": {
         "additionalProperties": false,
         "description": "Canonical chemical identifiers",
         "properties": {
            "molecule_hash": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Molecule Hash"
            },
            "molecular_formula": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Molecular Formula"
            },
            "smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Smiles"
            },
            "inchi": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Inchi"
            },
            "inchikey": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Inchikey"
            },
            "canonical_explicit_hydrogen_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Explicit Hydrogen Smiles"
            },
            "canonical_isomeric_explicit_hydrogen_mapped_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Explicit Hydrogen Mapped Smiles"
            },
            "canonical_isomeric_explicit_hydrogen_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Explicit Hydrogen Smiles"
            },
            "canonical_isomeric_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Isomeric Smiles"
            },
            "canonical_smiles": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Canonical Smiles"
            },
            "pubchem_cid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Compound ID",
               "title": "Pubchem Cid"
            },
            "pubchem_sid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Substance ID",
               "title": "Pubchem Sid"
            },
            "pubchem_conformerid": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "PubChem Conformer ID",
               "title": "Pubchem Conformerid"
            }
         },
         "title": "Identifiers",
         "type": "object"
      },
      "Model": {
         "additionalProperties": true,
         "description": "The computational molecular sciences model to run.",
         "properties": {
            "method": {
               "description": "The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.",
               "title": "Method",
               "type": "string"
            },
            "basis": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/BasisSet"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The quantum chemistry basis set to evaluate (e.g., 6-31g, cc-pVDZ, ...). Can be ``None`` for methods without basis sets. For molecular mechanics, name of the atom-typer.",
               "title": "Basis"
            }
         },
         "required": [
            "method"
         ],
         "title": "Model",
         "type": "object"
      },
      "Molecule": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "The physical Cartesian representation of the molecular system.\n\nA QCSchema representation of a Molecule. This model contains\ndata for symbols, geometry, connectivity, charges, fragmentation, etc while also supporting a wide array of I/O and manipulation capabilities.\n\nMolecule objects geometry, masses, and charges are truncated to 8, 6, and 4 decimal places respectively to assist with duplicate detection.\n\nNotes\n-----\nAll arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n\n  * nat: number of atomic = calcinfo_natom\n  * nfr: number of fragments\n  * <varies>: irregular dimension not systematically reshapable",
         "properties": {
            "schema_name": {
               "const": "qcschema_molecule",
               "default": "qcschema_molecule",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 3,
               "default": 3,
               "description": "The version number of :attr:`~qcelemental.models.Molecule.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "validated": {
               "default": false,
               "description": "A boolean indicator (for speed purposes) that the input Molecule data has been previously checked for schema (data layout and type) and physics (e.g., non-overlapping atoms, feasible multiplicity) compliance. This should be False in most cases. A ``True`` setting should only ever be set by the constructor for this class itself or other trusted sources such as a Fractal Server or previously serialized Molecules.",
               "title": "Validated",
               "type": "boolean"
            },
            "symbols": {
               "description": "The ordered array of atomic elemental symbols in title case. This field's index sets atomic order for all other per-atom fields like :attr:`~qcelemental.models.Molecule.real` and the first dimension of :attr:`~qcelemental.models.Molecule.geometry`. Ghost/virtual atoms must have an entry here in :attr:`~qcelemental.models.Molecule.symbols`; ghostedness is indicated through the :attr:`~qcelemental.models.Molecule.real` field.",
               "items": {
                  "type": "number"
               },
               "shape": [
                  "nat"
               ],
               "title": "Symbols",
               "type": "array"
            },
            "geometry": {
               "description": "The ordered array for Cartesian XYZ atomic coordinates [a0]. Atom ordering is fixed; that is, a consumer who shuffles atoms must not reattach the input (pre-shuffling) molecule schema instance to any output (post-shuffling) per-atom results (e.g., gradient). Index of the first dimension matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`.\nSerialized storage is always flat, (3*nat,), but QCSchema implementations will want to reshape it. QCElemental can also accept array-likes which can be mapped to (nat,3) such as a 1-D list of length 3*nat, or the serialized version of the array in (3*nat,) shape; all forms will be reshaped to (nat,3) for this attribute.",
               "items": {
                  "type": "number"
               },
               "shape": [
                  "nat",
                  3
               ],
               "title": "Geometry",
               "type": "array",
               "units": "a0"
            },
            "name": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Common or human-readable name to assign to this molecule. This field can be arbitrary; see :attr:`~qcelemental.models.Molecule.identifiers` for well-defined labels.",
               "title": "Name"
            },
            "identifiers": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Identifiers"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional dictionary of additional identifiers by which this molecule can be referenced, such as INCHI, canonical SMILES, etc. See the :class:`~qcelemental.models.results.Identifiers` model for more details."
            },
            "comment": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Additional comments for this molecule. Intended for pure human/user consumption and clarity.",
               "title": "Comment"
            },
            "molecular_charge": {
               "default": 0.0,
               "description": "The net electrostatic charge of the molecule.",
               "title": "Molecular Charge",
               "type": "number"
            },
            "molecular_multiplicity": {
               "default": 1,
               "description": "The total multiplicity of the molecule.",
               "title": "Molecular Multiplicity",
               "type": "number"
            },
            "masses": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The ordered array of atomic masses. Index order matches the 0-indexed indices of all other per-atom fields like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. If this is not provided, the mass of each atom is inferred from its most common isotope. If this is provided, it must be the same length as :attr:`~qcelemental.models.Molecule.symbols` but can accept ``None`` entries for standard masses to infer from the same index in the :attr:`~qcelemental.models.Molecule.symbols` field.",
               "shape": [
                  "nat"
               ],
               "title": "Masses",
               "units": "u"
            },
            "real": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The ordered array indicating if each atom is real (``True``) or ghost/virtual (``False``). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and the first dimension of :attr:`~qcelemental.models.Molecule.geometry`. If this is not provided, all atoms are assumed to be real (``True``). If this is provided, the reality or ghostedness of every atom must be specified.",
               "shape": [
                  "nat"
               ],
               "title": "Real"
            },
            "atom_labels": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Additional per-atom labels as an array of strings. Typical use is in model conversions, such as Elemental <-> Molpro and not typically something which should be user assigned. See the :attr:`~qcelemental.models.Molecule.comment` field for general human-consumable text to affix to the molecule.",
               "shape": [
                  "nat"
               ],
               "title": "Atom Labels"
            },
            "atomic_numbers": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional ordered 1-D array-like object of atomic numbers of shape (nat,). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Values are inferred from the :attr:`~qcelemental.models.Molecule.symbols` list if not explicitly set. Ghostedness should be indicated through :attr:`~qcelemental.models.Molecule.real` field, not zeros here.",
               "shape": [
                  "nat"
               ],
               "title": "Atomic Numbers"
            },
            "mass_numbers": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "An optional ordered 1-D array-like object of atomic *mass* numbers of shape (nat). Index matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Values are inferred from the most common isotopes of the :attr:`~qcelemental.models.Molecule.symbols` list if not explicitly set. If single isotope not (yet) known for an atom, -1 is placeholder.",
               "shape": [
                  "nat"
               ],
               "title": "Mass Numbers"
            },
            "connectivity": {
               "anyOf": [
                  {
                     "items": {
                        "maxItems": 3,
                        "minItems": 3,
                        "prefixItems": [
                           {
                              "minimum": 0,
                              "type": "integer"
                           },
                           {
                              "minimum": 0,
                              "type": "integer"
                           },
                           {
                              "maximum": 5,
                              "minimum": 0,
                              "type": "number"
                           }
                        ],
                        "type": "array"
                     },
                     "minItems": 1,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A list of bonds within the molecule. Each entry is a tuple of ``(atom_index_A, atom_index_B, bond_order)`` where the ``atom_index`` matches the 0-indexed indices of all other per-atom settings like :attr:`~qcelemental.models.Molecule.symbols` and :attr:`~qcelemental.models.Molecule.real`. Bonds may be freely reordered and inverted.",
               "title": "Connectivity"
            },
            "fragments": {
               "anyOf": [
                  {
                     "items": {
                        "items": {
                           "type": "number"
                        },
                        "type": "array"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "List of indices grouping atoms (0-indexed) into molecular fragments within the molecule. Each entry in the outer list is a new fragment; index matches the ordering in :attr:`~qcelemental.models.Molecule.fragment_charges` and :attr:`~qcelemental.models.Molecule.fragment_multiplicities`. Inner lists are 0-indexed atoms which compose the fragment; every atom must be in exactly one inner list. Noncontiguous fragments are allowed, though no QM program is known to support them. Fragment ordering is fixed; that is, a consumer who shuffles fragments must not reattach the input (pre-shuffling) molecule schema instance to any output (post-shuffling) per-fragment results (e.g., n-body energy arrays).",
               "shape": [
                  "nfr",
                  "<varies>"
               ],
               "title": "Fragments"
            },
            "fragment_charges": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The total charge of each fragment in the :attr:`~qcelemental.models.Molecule.fragments` list. The index of this list matches the 0-index indices of :attr:`~qcelemental.models.Molecule.fragments` list. Will be filled in based on a set of rules if not provided (and :attr:`~qcelemental.models.Molecule.fragments` are specified).",
               "shape": [
                  "nfr"
               ],
               "title": "Fragment Charges"
            },
            "fragment_multiplicities": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The multiplicity of each fragment in the :attr:`~qcelemental.models.Molecule.fragments` list. The index of this list matches the 0-index indices of :attr:`~qcelemental.models.Molecule.fragments` list. Will be filled in based on a set of rules if not provided (and :attr:`~qcelemental.models.Molecule.fragments` are specified).",
               "shape": [
                  "nfr"
               ],
               "title": "Fragment Multiplicities"
            },
            "fix_com": {
               "default": false,
               "description": "Whether translation of geometry is allowed (fix F) or disallowed (fix T).When False, QCElemental will pre-process the Molecule object to translate the center of mass to (0,0,0) in Euclidean coordinate space, resulting in a different :attr:`~qcelemental.models.Molecule.geometry` than the one provided. 'Fix' is used in the sense of 'specify': that is, `fix_com=True` signals that the origin in `geometry` is a deliberate part of the Molecule spec, whereas `fix_com=False` (default) allows that the origin is happenstance and may be adjusted. guidance: A consumer who translates the geometry must not reattach the input (pre-translation) molecule schema instance to any output (post-translation) origin-sensitive results (e.g., an ordinary energy when EFP present).",
               "title": "Fix Com",
               "type": "boolean"
            },
            "fix_orientation": {
               "default": false,
               "description": "Whether rotation of geometry is allowed (fix F) or disallowed (fix T). When False, QCElemental will pre-process the Molecule object to orient via the intertial tensor, resulting in a different :attr:`~qcelemental.models.Molecule.geometry` than the one provided. 'Fix' is used in the sense of 'specify': that is, `fix_orientation=True` signals that the frame orientation in `geometry` is a deliberate part of the Molecule spec, whereas `fix_orientation=False` (default) allows that the frame is happenstance and may be adjusted. guidance: A consumer who rotates the geometry must not reattach the input (pre-rotation) molecule schema instance to any output (post-rotation) frame-sensitive results (e.g., molecular vibrations).",
               "title": "Fix Orientation",
               "type": "boolean"
            },
            "fix_symmetry": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Maximal point group symmetry which :attr:`~qcelemental.models.Molecule.geometry` should be treated. Lowercase.",
               "title": "Fix Symmetry"
            },
            "provenance": {
               "$ref": "#/$defs/Provenance",
               "description": "The provenance information about how this Molecule (and its attributes) were generated, provided, and manipulated."
            },
            "id": {
               "anyOf": [
                  {},
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A unique identifier for this Molecule object. This field exists primarily for Databases (e.g. Fractal's Server) to track and lookup this specific object and should virtually never need to be manually set.",
               "title": "Id"
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the molecule. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "symbols",
            "geometry"
         ],
         "title": "Molecule",
         "type": "object"
      },
      "NativeFilesProtocolEnum": {
         "description": "CMS program files to keep from a computation.",
         "enum": [
            "all",
            "input",
            "none"
         ],
         "title": "NativeFilesProtocolEnum",
         "type": "string"
      },
      "OptimizationInput": {
         "additionalProperties": false,
         "description": "QCSchema input directive for geometry optimization.",
         "properties": {
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "schema_name": {
               "const": "qcschema_optimization_input",
               "default": "qcschema_optimization_input",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of ``schema_name`` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "specification": {
               "$ref": "#/$defs/OptimizationSpecification"
            },
            "initial_molecule": {
               "$ref": "#/$defs/Molecule",
               "description": "The starting molecule for the geometry optimization."
            },
            "provenance": {
               "$ref": "#/$defs/Provenance",
               "default": {
                  "creator": "QCElemental",
                  "version": "0.1.dev1+g997989000",
                  "routine": "qcelemental.models.v2.optimization"
               }
            }
         },
         "required": [
            "specification",
            "initial_molecule"
         ],
         "title": "OptimizationInput",
         "type": "object"
      },
      "OptimizationProperties": {
         "additionalProperties": false,
         "description": "Named properties of geometry optimization computations following the MolSSI QCSchema.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_properties",
               "default": "qcschema_optimization_properties",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "nuclear_repulsion_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The nuclear repulsion energy.",
               "title": "Nuclear Repulsion Energy"
            },
            "return_energy": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The energy of the final optimized molecule. Always available. Identical to the final :attr:`~qcelemental.models.OptimizationResult.trajectory_properties.return_energy`.",
               "title": "Return Energy",
               "units": "E_h"
            },
            "return_gradient": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The gradient of the final optimized molecule. Always available. Identical to :attr:`~qcelemental.models.OptimizationResult.trajectory_properties.return_gradient`.",
               "shape": [
                  "nat",
                  3
               ],
               "title": "Return Gradient",
               "units": "E_h/a0"
            },
            "optimization_iterations": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of geometry iterations taken before convergence.",
               "title": "Optimization Iterations"
            },
            "final_rms_force": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The final RMS gradient of the molecule in Eh/Bohr.",
               "title": "Final Rms Force"
            }
         },
         "title": "OptimizationProperties",
         "type": "object"
      },
      "OptimizationProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of a Optimization output data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_protocols",
               "default": "qcschema_optimization_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "trajectory_results": {
               "$ref": "#/$defs/TrajectoryProtocolEnum",
               "default": "none",
               "description": "\n    Which gradient evaluations to keep in an optimization trajectory.\n    "
            }
         },
         "title": "OptimizationProtocols",
         "type": "object"
      },
      "OptimizationResult": {
         "additionalProperties": false,
         "description": "QCSchema results model for geometry optimization.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_result",
               "default": "qcschema_optimization_result",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of ``schema_name`` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The optional ID for the computation.",
               "title": "Id"
            },
            "input_data": {
               "$ref": "#/$defs/OptimizationInput"
            },
            "final_molecule": {
               "anyOf": [
                  {
                     "$ref": "#/$defs/Molecule"
                  },
                  {
                     "type": "null"
                  }
               ],
               "description": "The final molecule of the geometry optimization."
            },
            "trajectory_results": {
               "description": "An ordered list of single-geometry result objects for each step in the optimization. Either an ordinary atomic/single-point or a many-body result.",
               "items": {
                  "$ref": "#/$defs/AtomicResult"
               },
               "title": "Trajectory Results",
               "type": "array"
            },
            "trajectory_properties": {
               "description": "An ordered list of abridged single-geometry property sets (energy and other properties) for each step in the optimization. Either an ordinary atomic/single-point or a many-body properties.",
               "items": {
                  "$ref": "#/$defs/AtomicProperties"
               },
               "title": "Trajectory Properties",
               "type": "array"
            },
            "stdout": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The standard output of the program.",
               "title": "Stdout"
            },
            "stderr": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The standard error of the program.",
               "title": "Stderr"
            },
            "success": {
               "const": true,
               "default": true,
               "description": "The success of a given programs execution. If False, other fields may be blank.",
               "title": "Success",
               "type": "boolean"
            },
            "provenance": {
               "$ref": "#/$defs/Provenance"
            },
            "native_files": {
               "additionalProperties": true,
               "default": {},
               "description": "DSL files.",
               "title": "Native Files",
               "type": "object"
            },
            "properties": {
               "$ref": "#/$defs/OptimizationProperties",
               "description": "\n    Named properties of geometry optimization computations following the MolSSI QCSchema.\n    "
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "input_data",
            "final_molecule",
            "trajectory_results",
            "trajectory_properties",
            "provenance",
            "properties"
         ],
         "title": "OptimizationResult",
         "type": "object"
      },
      "OptimizationSpecification": {
         "additionalProperties": false,
         "description": "Specification for how to run a geometry optimization.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_specification",
               "default": "qcschema_optimization_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "program": {
               "default": "",
               "description": "Optimizer CMS code / QCEngine procedure to run the geometry optimization with.",
               "title": "Program",
               "type": "string"
            },
            "keywords": {
               "additionalProperties": true,
               "default": {},
               "description": "The optimization specific keywords to be used.",
               "title": "Keywords",
               "type": "object"
            },
            "protocols": {
               "$ref": "#/$defs/OptimizationProtocols",
               "default": {},
               "description": "\n    Protocols regarding the manipulation of a Optimization output data.\n    "
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            },
            "specification": {
               "$ref": "#/$defs/AtomicSpecification",
               "description": "A directive for how to compute a gradient for the optimization. Either an ordinary atomic/single-point or a many-body spec."
            }
         },
         "required": [
            "specification"
         ],
         "title": "OptimizationSpecification",
         "type": "object"
      },
      "Provenance": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": true,
         "description": "Provenance information.",
         "properties": {
            "creator": {
               "description": "The name of the program, library, or person who created the object.",
               "title": "Creator",
               "type": "string"
            },
            "version": {
               "default": "",
               "description": "The version of the creator, blank otherwise. This should be sortable by the very broad `PEP 440 <https://www.python.org/dev/peps/pep-0440/>`_.",
               "title": "Version",
               "type": "string"
            },
            "routine": {
               "default": "",
               "description": "The name of the routine or function within the creator, blank otherwise.",
               "title": "Routine",
               "type": "string"
            }
         },
         "required": [
            "creator"
         ],
         "title": "Provenance",
         "type": "object"
      },
      "ScanResultsProtocolEnum": {
         "description": "Which gradient evaluations to keep in an optimization trajectory.",
         "enum": [
            "all",
            "lowest",
            "none"
         ],
         "title": "ScanResultsProtocolEnum",
         "type": "string"
      },
      "TorsionDriveInput": {
         "additionalProperties": false,
         "description": "Inputs for running a torsion drive.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_input",
               "default": "qcschema_torsion_drive_input",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of ``schema_name`` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "id": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "title": "Id"
            },
            "initial_molecule": {
               "description": "The starting molecule(s) for the torsion drive.",
               "items": {
                  "$ref": "#/$defs/Molecule"
               },
               "minItems": 1,
               "title": "Initial Molecule",
               "type": "array"
            },
            "specification": {
               "$ref": "#/$defs/TorsionDriveSpecification"
            },
            "provenance": {
               "$ref": "#/$defs/Provenance",
               "default": {
                  "creator": "QCElemental",
                  "version": "0.1.dev1+g997989000",
                  "routine": "qcelemental.models.v2.torsion_drive"
               }
            }
         },
         "required": [
            "initial_molecule",
            "specification"
         ],
         "title": "TorsionDriveInput",
         "type": "object"
      },
      "TorsionDriveKeywords": {
         "additionalProperties": false,
         "description": "TorsionDriveRecord options\n\nNotes\n-----\n* This class is still provisional and may be subject to removal and re-design.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_keywords",
               "default": "qcschema_torsion_drive_keywords",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "dihedrals": {
               "description": "The list of dihedrals to select for the TorsionDrive operation. Each entry is a tuple of integers of for particle indices.",
               "items": {
                  "maxItems": 4,
                  "minItems": 4,
                  "prefixItems": [
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     }
                  ],
                  "type": "array"
               },
               "title": "Dihedrals",
               "type": "array"
            },
            "grid_spacing": {
               "description": "List of grid spacing for dihedral scan in degrees. Multiple values will be mapped to each dihedral angle.",
               "items": {
                  "type": "integer"
               },
               "title": "Grid Spacing",
               "type": "array"
            },
            "dihedral_ranges": {
               "anyOf": [
                  {
                     "items": {
                        "maxItems": 2,
                        "minItems": 2,
                        "prefixItems": [
                           {
                              "type": "integer"
                           },
                           {
                              "type": "integer"
                           }
                        ],
                        "type": "array"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A list of dihedral range limits as a pair (lower, upper). Each range corresponds to the dihedrals in input.",
               "title": "Dihedral Ranges"
            },
            "energy_decrease_thresh": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The threshold of the smallest energy decrease amount to trigger activating optimizations from grid point.",
               "title": "Energy Decrease Thresh"
            },
            "energy_upper_limit": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The threshold if the energy of a grid point that is higher than the current global minimum, to start new optimizations, in unit of a.u. I.e. if energy_upper_limit = 0.05, current global minimum energy is -9.9 , then a new task starting with energy -9.8 will be skipped.",
               "title": "Energy Upper Limit"
            }
         },
         "required": [
            "dihedrals",
            "grid_spacing"
         ],
         "title": "TorsionDriveKeywords",
         "type": "object"
      },
      "TorsionDriveProperties": {
         "additionalProperties": false,
         "description": "Named properties of torsion drive computations following the MolSSI QCSchema.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_properties",
               "default": "qcschema_torsion_drive_properties",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "calcinfo_ngrid": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of dihedral constraints optimized.",
               "title": "Calcinfo Ngrid"
            }
         },
         "title": "TorsionDriveProperties",
         "type": "object"
      },
      "TorsionDriveProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of a Torsion Drive subcalculation history.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_protocols",
               "default": "qcschema_torsion_drive_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "scan_results": {
               "$ref": "#/$defs/ScanResultsProtocolEnum",
               "default": "none",
               "description": "\n    Which gradient evaluations to keep in an optimization trajectory.\n    "
            }
         },
         "title": "TorsionDriveProtocols",
         "type": "object"
      },
      "TorsionDriveSpecification": {
         "additionalProperties": false,
         "description": "Specification for how to run a torsion drive scan.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_specification",
               "default": "qcschema_torsion_drive_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "program": {
               "default": "",
               "description": "Torsion Drive CMS code / QCEngine procedure with which to run the torsion scan.",
               "title": "Program",
               "type": "string"
            },
            "keywords": {
               "$ref": "#/$defs/TorsionDriveKeywords",
               "description": "The torsion drive specific keywords to be used."
            },
            "protocols": {
               "$ref": "#/$defs/TorsionDriveProtocols",
               "default": {},
               "description": "\n    Protocols regarding the manipulation of a Torsion Drive subcalculation history.\n    "
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            },
            "specification": {
               "$ref": "#/$defs/OptimizationSpecification",
               "description": "The specification for how to run optimizations for the torsion scan (within this is spec for gradients for the optimization."
            }
         },
         "required": [
            "keywords",
            "specification"
         ],
         "title": "TorsionDriveSpecification",
         "type": "object"
      },
      "TrajectoryProtocolEnum": {
         "description": "Which gradient evaluations to keep in an optimization trajectory.",
         "enum": [
            "all",
            "initial_and_final",
            "final",
            "none"
         ],
         "title": "TrajectoryProtocolEnum",
         "type": "string"
      },
      "WavefunctionProperties": {
         "additionalProperties": false,
         "description": "Wavefunction properties resulting from a computation.\nMatrix quantities are stored in column-major order. Presence and contents configurable by protocol.",
         "properties": {
            "schema_name": {
               "const": "qcschema_wavefunction_properties",
               "default": "qcschema_wavefunction_properties",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "basis": {
               "$ref": "#/$defs/BasisSet",
               "description": "\n    A quantum chemistry basis description.\n    "
            },
            "restricted": {
               "description": "If the computation was restricted or not (alpha == beta). If True, all beta quantities are skipped.",
               "title": "Restricted",
               "type": "boolean"
            },
            "h_core_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Alpha-spin core (one-electron) Hamiltonian in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "H Core A"
            },
            "h_core_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Beta-spin core (one-electron) Hamiltonian in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "H Core B"
            },
            "h_effective_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Alpha-spin effective core (one-electron) Hamiltonian in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "H Effective A"
            },
            "h_effective_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Beta-spin effective core (one-electron) Hamiltonian in the AO basis",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "H Effective B"
            },
            "scf_orbitals_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF alpha-spin orbitals in the AO basis.",
               "shape": [
                  "nao",
                  "nmo"
               ],
               "title": "Scf Orbitals A"
            },
            "scf_orbitals_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF beta-spin orbitals in the AO basis.",
               "shape": [
                  "nao",
                  "nmo"
               ],
               "title": "Scf Orbitals B"
            },
            "scf_density_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF alpha-spin density matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Density A"
            },
            "scf_density_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF beta-spin density matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Density B"
            },
            "scf_fock_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF alpha-spin Fock matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Fock A"
            },
            "scf_fock_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF beta-spin Fock matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Fock B"
            },
            "scf_eigenvalues_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF alpha-spin orbital eigenvalues.",
               "shape": [
                  "nmo"
               ],
               "title": "Scf Eigenvalues A"
            },
            "scf_eigenvalues_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF beta-spin orbital eigenvalues.",
               "shape": [
                  "nmo"
               ],
               "title": "Scf Eigenvalues B"
            },
            "scf_occupations_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF alpha-spin orbital occupations.",
               "shape": [
                  "nmo"
               ],
               "title": "Scf Occupations A"
            },
            "scf_occupations_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF beta-spin orbital occupations.",
               "shape": [
                  "nmo"
               ],
               "title": "Scf Occupations B"
            },
            "scf_coulomb_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF alpha-spin Coulomb matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Coulomb A"
            },
            "scf_coulomb_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF beta-spin Coulomb matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Coulomb B"
            },
            "scf_exchange_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF alpha-spin exchange matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Exchange A"
            },
            "scf_exchange_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "SCF beta-spin exchange matrix in the AO basis.",
               "shape": [
                  "nao",
                  "nao"
               ],
               "title": "Scf Exchange B"
            },
            "localized_orbitals_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Localized alpha-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.",
               "shape": [
                  "nao",
                  "nmo"
               ],
               "title": "Localized Orbitals A"
            },
            "localized_orbitals_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Localized beta-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.",
               "shape": [
                  "nao",
                  "nmo"
               ],
               "title": "Localized Orbitals B"
            },
            "localized_fock_a": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Alpha-spin Fock matrix in the localized molecular orbital basis. All nmo orbitals are included, even if only a subset were localized.",
               "shape": [
                  "nmo",
                  "nmo"
               ],
               "title": "Localized Fock A"
            },
            "localized_fock_b": {
               "anyOf": [
                  {
                     "items": {
                        "type": "number"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Beta-spin Fock matrix in the localized molecular orbital basis. All nmo orbitals are included, even if only a subset were localized.",
               "shape": [
                  "nmo",
                  "nmo"
               ],
               "title": "Localized Fock B"
            },
            "orbitals_a": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the alpha-spin orbitals of the primary return.",
               "title": "Orbitals A"
            },
            "orbitals_b": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the beta-spin orbitals of the primary return.",
               "title": "Orbitals B"
            },
            "density_a": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the alpha-spin density of the primary return.",
               "title": "Density A"
            },
            "density_b": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the beta-spin density of the primary return.",
               "title": "Density B"
            },
            "fock_a": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the alpha-spin Fock matrix of the primary return.",
               "title": "Fock A"
            },
            "fock_b": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the beta-spin Fock matrix of the primary return.",
               "title": "Fock B"
            },
            "eigenvalues_a": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the alpha-spin orbital eigenvalues of the primary return.",
               "title": "Eigenvalues A"
            },
            "eigenvalues_b": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the beta-spin orbital eigenvalues of the primary return.",
               "title": "Eigenvalues B"
            },
            "occupations_a": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the alpha-spin orbital occupations of the primary return.",
               "title": "Occupations A"
            },
            "occupations_b": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Index to the beta-spin orbital occupations of the primary return.",
               "title": "Occupations B"
            }
         },
         "required": [
            "basis",
            "restricted"
         ],
         "title": "WavefunctionProperties",
         "type": "object"
      },
      "WavefunctionProtocolEnum": {
         "description": "Wavefunction to keep from a computation.",
         "enum": [
            "all",
            "orbitals_and_eigenvalues",
            "occupations_and_eigenvalues",
            "return_results",
            "none"
         ],
         "title": "WavefunctionProtocolEnum",
         "type": "string"
      }
   },
   "additionalProperties": false,
   "required": [
      "input_data",
      "final_molecules",
      "scan_properties",
      "scan_results",
      "properties",
      "provenance"
   ]
}

Fields:
Validators:
field extras: Dict[str, Any] = {}

Additional information to bundle with the computation. Use for schema development and scratch space.

field final_molecules: Dict[str, Molecule] [Required]

The final molecule at each angle of the TorsionDrive scan.

field id: str | None = None

The optional ID for the computation.

field input_data: TorsionDriveInput [Required]

Inputs for running a torsion drive.

field native_files: Dict[str, Any] = {}

DSL files.

field properties: TorsionDriveProperties [Required]

Named properties of torsion drive computations following the MolSSI QCSchema.

field provenance: Provenance [Required]

Provenance information.

field scan_properties: Dict[str, OptimizationProperties] [Required]

The map of energies and other properties for each angle of the TorsionDrive scan.

field scan_results: Dict[str, List[OptimizationResult]] [Required]

The map of each angle of the TorsionDrive scan to each optimization computations.

Validated by:
  • _scan_protocol

field schema_name: Literal['qcschema_torsion_drive_result'] = 'qcschema_torsion_drive_result'
field schema_version: Literal[2] = 2

The version number of schema_name to which this model conforms.

field stderr: str | None = None

The standard error of the program.

field stdout: str | None = None

The standard output of the program.

field success: Literal[True] = True

The success of a given programs execution. If False, other fields may be blank.

convert_v(target_version, /)[source]

Convert to instance of particular QCSchema version.

Notes

  • Use TorsionDriveProtocols.scan_results=all for full conversion to v1.

Parameters:

target_version (int)

Return type:

qcelemental.models.v1.TorsionDriveResult | qcelemental.models.v2.TorsionDriveResult

qcelemental.models.v2.TorsionDriveResult.convert_v(self, target_version, /)

Convert to instance of particular QCSchema version.

Notes

  • Use TorsionDriveProtocols.scan_results=all for full conversion to v1.

Parameters:

target_version (int)

Return type:

qcelemental.models.v1.TorsionDriveResult | qcelemental.models.v2.TorsionDriveResult

Sub-Models

TorsionDriveSpecification

pydantic model qcelemental.models.v2.TorsionDriveSpecification[source]

Specification for how to run a torsion drive scan.

Show JSON schema
{
   "title": "TorsionDriveSpecification",
   "description": "Specification for how to run a torsion drive scan.",
   "type": "object",
   "properties": {
      "schema_name": {
         "const": "qcschema_torsion_drive_specification",
         "default": "qcschema_torsion_drive_specification",
         "title": "Schema Name",
         "type": "string"
      },
      "program": {
         "default": "",
         "description": "Torsion Drive CMS code / QCEngine procedure with which to run the torsion scan.",
         "title": "Program",
         "type": "string"
      },
      "keywords": {
         "$ref": "#/$defs/TorsionDriveKeywords",
         "description": "The torsion drive specific keywords to be used."
      },
      "protocols": {
         "$ref": "#/$defs/TorsionDriveProtocols",
         "default": {},
         "description": "\n    Protocols regarding the manipulation of a Torsion Drive subcalculation history.\n    "
      },
      "extras": {
         "additionalProperties": true,
         "default": {},
         "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
         "title": "Extras",
         "type": "object"
      },
      "specification": {
         "$ref": "#/$defs/OptimizationSpecification",
         "description": "The specification for how to run optimizations for the torsion scan (within this is spec for gradients for the optimization."
      }
   },
   "$defs": {
      "AtomicProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of computational result data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_protocols",
               "default": "qcschema_atomic_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "wavefunction": {
               "$ref": "#/$defs/WavefunctionProtocolEnum",
               "default": "none"
            },
            "stdout": {
               "default": true,
               "description": "Primary output file to keep from the computation",
               "title": "Stdout",
               "type": "boolean"
            },
            "error_correction": {
               "$ref": "#/$defs/ErrorCorrectionProtocol",
               "description": "Policies for error correction"
            },
            "native_files": {
               "$ref": "#/$defs/NativeFilesProtocolEnum",
               "default": "none",
               "description": "Policies for keeping processed files from the computation"
            }
         },
         "title": "AtomicProtocols",
         "type": "object"
      },
      "AtomicSpecification": {
         "additionalProperties": false,
         "description": "Specification for a single point QC calculation",
         "properties": {
            "schema_name": {
               "const": "qcschema_atomic_specification",
               "default": "qcschema_atomic_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "keywords": {
               "additionalProperties": true,
               "default": {},
               "description": "The program specific keywords to be used.",
               "title": "Keywords",
               "type": "object"
            },
            "program": {
               "default": "",
               "description": "The program for which the Specification is intended.",
               "title": "Program",
               "type": "string"
            },
            "driver": {
               "$ref": "#/$defs/DriverEnum"
            },
            "model": {
               "$ref": "#/$defs/Model"
            },
            "protocols": {
               "$ref": "#/$defs/AtomicProtocols",
               "default": {}
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            }
         },
         "required": [
            "driver",
            "model"
         ],
         "title": "AtomicSpecification",
         "type": "object"
      },
      "BasisCenter": {
         "additionalProperties": false,
         "description": "Data for a single atom/center in a basis set.",
         "properties": {
            "electron_shells": {
               "description": "Electronic shells for this center.",
               "items": {
                  "$ref": "#/$defs/ElectronShell"
               },
               "minItems": 1,
               "title": "Electron Shells",
               "type": "array",
               "uniqueItems": true
            },
            "ecp_electrons": {
               "default": 0,
               "description": "Number of electrons replaced by ECP, MCP, or other field potentials.",
               "title": "Ecp Electrons",
               "type": "integer"
            },
            "ecp_potentials": {
               "anyOf": [
                  {
                     "items": {
                        "$ref": "#/$defs/ECPPotential"
                     },
                     "minItems": 1,
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "ECPs, MCPs, or other field potentials for this center.",
               "title": "Ecp Potentials",
               "uniqueItems": true
            }
         },
         "required": [
            "electron_shells"
         ],
         "title": "BasisCenter",
         "type": "object"
      },
      "BasisSet": {
         "$schema": "http://json-schema.org/draft-04/schema#",
         "additionalProperties": false,
         "description": "A quantum chemistry basis description.",
         "properties": {
            "schema_name": {
               "const": "qcschema_basis_set",
               "default": "qcschema_basis_set",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "schema_version": {
               "const": 2,
               "default": 2,
               "description": "The version number of :attr:`~qcelemental.models.BasisSet.schema_name` to which this model conforms.",
               "title": "Schema Version",
               "type": "integer"
            },
            "name": {
               "description": "The standard basis name if available (e.g., 'cc-pVDZ').",
               "title": "Name",
               "type": "string"
            },
            "description": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Brief description of the basis set.",
               "title": "Description"
            },
            "center_data": {
               "additionalProperties": {
                  "$ref": "#/$defs/BasisCenter"
               },
               "description": "Shared basis data for all atoms/centers in the parent molecule",
               "title": "Center Data",
               "type": "object"
            },
            "atom_map": {
               "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.",
               "items": {
                  "type": "string"
               },
               "title": "Atom Map",
               "type": "array"
            },
            "nbf": {
               "anyOf": [
                  {
                     "type": "integer"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The number of basis functions. Use for convenience or as checksum",
               "title": "Nbf"
            }
         },
         "required": [
            "name",
            "center_data",
            "atom_map"
         ],
         "title": "BasisSet",
         "type": "object"
      },
      "DriverEnum": {
         "description": "Allowed computation driver values.",
         "enum": [
            "energy",
            "gradient",
            "hessian",
            "properties"
         ],
         "title": "DriverEnum",
         "type": "string"
      },
      "ECPPotential": {
         "additionalProperties": false,
         "description": "Information for a single ECP potential.",
         "properties": {
            "ecp_type": {
               "$ref": "#/$defs/ECPType"
            },
            "angular_momentum": {
               "description": "Angular momentum for the potential as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "r_exponents": {
               "description": "Exponents of the 'r' term.",
               "items": {
                  "type": "integer"
               },
               "minItems": 1,
               "title": "R Exponents",
               "type": "array"
            },
            "gaussian_exponents": {
               "description": "Exponents of the 'gaussian' term.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Gaussian Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "ecp_type",
            "angular_momentum",
            "r_exponents",
            "gaussian_exponents",
            "coefficients"
         ],
         "title": "ECPPotential",
         "type": "object"
      },
      "ECPType": {
         "description": "The type of the ECP potential.",
         "enum": [
            "scalar",
            "spinorbit"
         ],
         "title": "ECPType",
         "type": "string"
      },
      "ElectronShell": {
         "additionalProperties": false,
         "description": "Information for a single electronic shell.",
         "properties": {
            "angular_momentum": {
               "description": "Angular momentum for the shell as an array of integers.",
               "items": {
                  "minimum": 0,
                  "type": "integer"
               },
               "minItems": 1,
               "title": "Angular Momentum",
               "type": "array",
               "uniqueItems": true
            },
            "harmonic_type": {
               "$ref": "#/$defs/HarmonicType"
            },
            "exponents": {
               "description": "Exponents for the contracted shell.",
               "items": {
                  "anyOf": [
                     {
                        "type": "number"
                     },
                     {
                        "type": "string"
                     }
                  ]
               },
               "minItems": 1,
               "title": "Exponents",
               "type": "array"
            },
            "coefficients": {
               "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.",
               "items": {
                  "items": {
                     "anyOf": [
                        {
                           "type": "number"
                        },
                        {
                           "type": "string"
                        }
                     ]
                  },
                  "type": "array"
               },
               "minItems": 1,
               "title": "Coefficients",
               "type": "array"
            }
         },
         "required": [
            "angular_momentum",
            "harmonic_type",
            "exponents",
            "coefficients"
         ],
         "title": "ElectronShell",
         "type": "object"
      },
      "ErrorCorrectionProtocol": {
         "additionalProperties": false,
         "description": "Configuration for how QCEngine handles error correction\n\nWARNING: These protocols are currently experimental and only supported by NWChem tasks",
         "properties": {
            "default_policy": {
               "default": true,
               "description": "Whether to allow error corrections to be used if not directly specified in `policies`",
               "title": "Default Policy",
               "type": "boolean"
            },
            "policies": {
               "anyOf": [
                  {
                     "additionalProperties": {
                        "type": "boolean"
                     },
                     "type": "object"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "Settings that define whether specific error corrections are allowed. Keys are the name of a known error and values are whether it is allowed to be used.",
               "title": "Policies"
            }
         },
         "title": "ErrorCorrectionProtocol",
         "type": "object"
      },
      "HarmonicType": {
         "description": "The angular momentum representation of a shell.",
         "enum": [
            "spherical",
            "cartesian"
         ],
         "title": "HarmonicType",
         "type": "string"
      },
      "Model": {
         "additionalProperties": true,
         "description": "The computational molecular sciences model to run.",
         "properties": {
            "method": {
               "description": "The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.",
               "title": "Method",
               "type": "string"
            },
            "basis": {
               "anyOf": [
                  {
                     "type": "string"
                  },
                  {
                     "$ref": "#/$defs/BasisSet"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The quantum chemistry basis set to evaluate (e.g., 6-31g, cc-pVDZ, ...). Can be ``None`` for methods without basis sets. For molecular mechanics, name of the atom-typer.",
               "title": "Basis"
            }
         },
         "required": [
            "method"
         ],
         "title": "Model",
         "type": "object"
      },
      "NativeFilesProtocolEnum": {
         "description": "CMS program files to keep from a computation.",
         "enum": [
            "all",
            "input",
            "none"
         ],
         "title": "NativeFilesProtocolEnum",
         "type": "string"
      },
      "OptimizationProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of a Optimization output data.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_protocols",
               "default": "qcschema_optimization_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "trajectory_results": {
               "$ref": "#/$defs/TrajectoryProtocolEnum",
               "default": "none",
               "description": "\n    Which gradient evaluations to keep in an optimization trajectory.\n    "
            }
         },
         "title": "OptimizationProtocols",
         "type": "object"
      },
      "OptimizationSpecification": {
         "additionalProperties": false,
         "description": "Specification for how to run a geometry optimization.",
         "properties": {
            "schema_name": {
               "const": "qcschema_optimization_specification",
               "default": "qcschema_optimization_specification",
               "title": "Schema Name",
               "type": "string"
            },
            "program": {
               "default": "",
               "description": "Optimizer CMS code / QCEngine procedure to run the geometry optimization with.",
               "title": "Program",
               "type": "string"
            },
            "keywords": {
               "additionalProperties": true,
               "default": {},
               "description": "The optimization specific keywords to be used.",
               "title": "Keywords",
               "type": "object"
            },
            "protocols": {
               "$ref": "#/$defs/OptimizationProtocols",
               "default": {},
               "description": "\n    Protocols regarding the manipulation of a Optimization output data.\n    "
            },
            "extras": {
               "additionalProperties": true,
               "default": {},
               "description": "Additional information to bundle with the computation. Use for schema development and scratch space.",
               "title": "Extras",
               "type": "object"
            },
            "specification": {
               "$ref": "#/$defs/AtomicSpecification",
               "description": "A directive for how to compute a gradient for the optimization. Either an ordinary atomic/single-point or a many-body spec."
            }
         },
         "required": [
            "specification"
         ],
         "title": "OptimizationSpecification",
         "type": "object"
      },
      "ScanResultsProtocolEnum": {
         "description": "Which gradient evaluations to keep in an optimization trajectory.",
         "enum": [
            "all",
            "lowest",
            "none"
         ],
         "title": "ScanResultsProtocolEnum",
         "type": "string"
      },
      "TorsionDriveKeywords": {
         "additionalProperties": false,
         "description": "TorsionDriveRecord options\n\nNotes\n-----\n* This class is still provisional and may be subject to removal and re-design.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_keywords",
               "default": "qcschema_torsion_drive_keywords",
               "description": "The QCSchema specification to which this model conforms.",
               "title": "Schema Name",
               "type": "string"
            },
            "dihedrals": {
               "description": "The list of dihedrals to select for the TorsionDrive operation. Each entry is a tuple of integers of for particle indices.",
               "items": {
                  "maxItems": 4,
                  "minItems": 4,
                  "prefixItems": [
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     }
                  ],
                  "type": "array"
               },
               "title": "Dihedrals",
               "type": "array"
            },
            "grid_spacing": {
               "description": "List of grid spacing for dihedral scan in degrees. Multiple values will be mapped to each dihedral angle.",
               "items": {
                  "type": "integer"
               },
               "title": "Grid Spacing",
               "type": "array"
            },
            "dihedral_ranges": {
               "anyOf": [
                  {
                     "items": {
                        "maxItems": 2,
                        "minItems": 2,
                        "prefixItems": [
                           {
                              "type": "integer"
                           },
                           {
                              "type": "integer"
                           }
                        ],
                        "type": "array"
                     },
                     "type": "array"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "A list of dihedral range limits as a pair (lower, upper). Each range corresponds to the dihedrals in input.",
               "title": "Dihedral Ranges"
            },
            "energy_decrease_thresh": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The threshold of the smallest energy decrease amount to trigger activating optimizations from grid point.",
               "title": "Energy Decrease Thresh"
            },
            "energy_upper_limit": {
               "anyOf": [
                  {
                     "type": "number"
                  },
                  {
                     "type": "null"
                  }
               ],
               "default": null,
               "description": "The threshold if the energy of a grid point that is higher than the current global minimum, to start new optimizations, in unit of a.u. I.e. if energy_upper_limit = 0.05, current global minimum energy is -9.9 , then a new task starting with energy -9.8 will be skipped.",
               "title": "Energy Upper Limit"
            }
         },
         "required": [
            "dihedrals",
            "grid_spacing"
         ],
         "title": "TorsionDriveKeywords",
         "type": "object"
      },
      "TorsionDriveProtocols": {
         "additionalProperties": false,
         "description": "Protocols regarding the manipulation of a Torsion Drive subcalculation history.",
         "properties": {
            "schema_name": {
               "const": "qcschema_torsion_drive_protocols",
               "default": "qcschema_torsion_drive_protocols",
               "title": "Schema Name",
               "type": "string"
            },
            "scan_results": {
               "$ref": "#/$defs/ScanResultsProtocolEnum",
               "default": "none",
               "description": "\n    Which gradient evaluations to keep in an optimization trajectory.\n    "
            }
         },
         "title": "TorsionDriveProtocols",
         "type": "object"
      },
      "TrajectoryProtocolEnum": {
         "description": "Which gradient evaluations to keep in an optimization trajectory.",
         "enum": [
            "all",
            "initial_and_final",
            "final",
            "none"
         ],
         "title": "TrajectoryProtocolEnum",
         "type": "string"
      },
      "WavefunctionProtocolEnum": {
         "description": "Wavefunction to keep from a computation.",
         "enum": [
            "all",
            "orbitals_and_eigenvalues",
            "occupations_and_eigenvalues",
            "return_results",
            "none"
         ],
         "title": "WavefunctionProtocolEnum",
         "type": "string"
      }
   },
   "additionalProperties": false,
   "required": [
      "keywords",
      "specification"
   ]
}

Fields:
Validators:
field extras: Dict[str, Any] = {}

Additional information to bundle with the computation. Use for schema development and scratch space.

field keywords: TorsionDriveKeywords [Required]

The torsion drive specific keywords to be used.

field program: str = ''

Torsion Drive CMS code / QCEngine procedure with which to run the torsion scan.

Validated by:
  • _check_procedure

field protocols: TorsionDriveProtocols = TorsionDriveProtocols(schema_name='qcschema_torsion_drive_protocols', scan_results=<ScanResultsProtocolEnum.none: 'none'>)

Protocols regarding the manipulation of a Torsion Drive subcalculation history.

field schema_name: Literal['qcschema_torsion_drive_specification'] = 'qcschema_torsion_drive_specification'
field specification: OptimizationSpecification [Required]

The specification for how to run optimizations for the torsion scan (within this is spec for gradients for the optimization.

TorsionDriveKeywords

pydantic model qcelemental.models.v2.TorsionDriveKeywords[source]

TorsionDriveRecord options

Notes

  • This class is still provisional and may be subject to removal and re-design.

Show JSON schema
{
   "title": "TorsionDriveKeywords",
   "description": "TorsionDriveRecord options\n\nNotes\n-----\n* This class is still provisional and may be subject to removal and re-design.",
   "type": "object",
   "properties": {
      "schema_name": {
         "const": "qcschema_torsion_drive_keywords",
         "default": "qcschema_torsion_drive_keywords",
         "description": "The QCSchema specification to which this model conforms.",
         "title": "Schema Name",
         "type": "string"
      },
      "dihedrals": {
         "description": "The list of dihedrals to select for the TorsionDrive operation. Each entry is a tuple of integers of for particle indices.",
         "items": {
            "maxItems": 4,
            "minItems": 4,
            "prefixItems": [
               {
                  "type": "integer"
               },
               {
                  "type": "integer"
               },
               {
                  "type": "integer"
               },
               {
                  "type": "integer"
               }
            ],
            "type": "array"
         },
         "title": "Dihedrals",
         "type": "array"
      },
      "grid_spacing": {
         "description": "List of grid spacing for dihedral scan in degrees. Multiple values will be mapped to each dihedral angle.",
         "items": {
            "type": "integer"
         },
         "title": "Grid Spacing",
         "type": "array"
      },
      "dihedral_ranges": {
         "anyOf": [
            {
               "items": {
                  "maxItems": 2,
                  "minItems": 2,
                  "prefixItems": [
                     {
                        "type": "integer"
                     },
                     {
                        "type": "integer"
                     }
                  ],
                  "type": "array"
               },
               "type": "array"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "A list of dihedral range limits as a pair (lower, upper). Each range corresponds to the dihedrals in input.",
         "title": "Dihedral Ranges"
      },
      "energy_decrease_thresh": {
         "anyOf": [
            {
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The threshold of the smallest energy decrease amount to trigger activating optimizations from grid point.",
         "title": "Energy Decrease Thresh"
      },
      "energy_upper_limit": {
         "anyOf": [
            {
               "type": "number"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The threshold if the energy of a grid point that is higher than the current global minimum, to start new optimizations, in unit of a.u. I.e. if energy_upper_limit = 0.05, current global minimum energy is -9.9 , then a new task starting with energy -9.8 will be skipped.",
         "title": "Energy Upper Limit"
      }
   },
   "additionalProperties": false,
   "required": [
      "dihedrals",
      "grid_spacing"
   ]
}

Fields:
field dihedral_ranges: List[Tuple[int, int]] | None = None

A list of dihedral range limits as a pair (lower, upper). Each range corresponds to the dihedrals in input.

field dihedrals: List[Tuple[int, int, int, int]] [Required]

The list of dihedrals to select for the TorsionDrive operation. Each entry is a tuple of integers of for particle indices.

field energy_decrease_thresh: float | None = None

The threshold of the smallest energy decrease amount to trigger activating optimizations from grid point.

field energy_upper_limit: float | None = None

The threshold if the energy of a grid point that is higher than the current global minimum, to start new optimizations, in unit of a.u. I.e. if energy_upper_limit = 0.05, current global minimum energy is -9.9 , then a new task starting with energy -9.8 will be skipped.

field grid_spacing: List[int] [Required]

List of grid spacing for dihedral scan in degrees. Multiple values will be mapped to each dihedral angle.

field schema_name: Literal['qcschema_torsion_drive_keywords'] = 'qcschema_torsion_drive_keywords'

The QCSchema specification to which this model conforms.

TorsionDriveProtocols

pydantic model qcelemental.models.v2.TorsionDriveProtocols[source]

Protocols regarding the manipulation of a Torsion Drive subcalculation history.

Show JSON schema
{
   "title": "TorsionDriveProtocols",
   "description": "Protocols regarding the manipulation of a Torsion Drive subcalculation history.",
   "type": "object",
   "properties": {
      "schema_name": {
         "const": "qcschema_torsion_drive_protocols",
         "default": "qcschema_torsion_drive_protocols",
         "title": "Schema Name",
         "type": "string"
      },
      "scan_results": {
         "$ref": "#/$defs/ScanResultsProtocolEnum",
         "default": "none",
         "description": "\n    Which gradient evaluations to keep in an optimization trajectory.\n    "
      }
   },
   "$defs": {
      "ScanResultsProtocolEnum": {
         "description": "Which gradient evaluations to keep in an optimization trajectory.",
         "enum": [
            "all",
            "lowest",
            "none"
         ],
         "title": "ScanResultsProtocolEnum",
         "type": "string"
      }
   },
   "additionalProperties": false
}

Fields:
field scan_results: ScanResultsProtocolEnum = ScanResultsProtocolEnum.none

Which gradient evaluations to keep in an optimization trajectory.

field schema_name: Literal['qcschema_torsion_drive_protocols'] = 'qcschema_torsion_drive_protocols'

TorsionDriveProperties

pydantic model qcelemental.models.v2.TorsionDriveProperties[source]

Named properties of torsion drive computations following the MolSSI QCSchema.

Show JSON schema
{
   "title": "TorsionDriveProperties",
   "description": "Named properties of torsion drive computations following the MolSSI QCSchema.",
   "type": "object",
   "properties": {
      "schema_name": {
         "const": "qcschema_torsion_drive_properties",
         "default": "qcschema_torsion_drive_properties",
         "description": "The QCSchema specification to which this model conforms.",
         "title": "Schema Name",
         "type": "string"
      },
      "calcinfo_ngrid": {
         "anyOf": [
            {
               "type": "integer"
            },
            {
               "type": "null"
            }
         ],
         "default": null,
         "description": "The number of dihedral constraints optimized.",
         "title": "Calcinfo Ngrid"
      }
   },
   "additionalProperties": false
}

Fields:
field calcinfo_ngrid: int | None = None

The number of dihedral constraints optimized.

field schema_name: Literal['qcschema_torsion_drive_properties'] = 'qcschema_torsion_drive_properties'

The QCSchema specification to which this model conforms.