From b6136480e9aa2bcefd3b95419a96f1b38bd248df Mon Sep 17 00:00:00 2001 From: "Lori A. Burns" Date: Thu, 3 Sep 2020 03:03:22 -0400 Subject: [PATCH 1/2] replace schema with autogen --- README.md | 25 + qcschema/data/vdev/AtomicInput.schema | 1 + qcschema/data/vdev/AtomicResult.schema | 1 + .../data/vdev/AtomicResultProperties.schema | 1 + qcschema/data/vdev/BasisSet.schema | 1 + qcschema/data/vdev/Molecule.schema | 1 + qcschema/data/vdev/Provenance.schema | 1 + qcschema/dev/QCSchema.schema | 1575 +++++++++++++++++ qcschema/dev/__init__.py | 5 + qcschema/dev/basis.py | 48 - qcschema/dev/definitions.py | 176 -- qcschema/dev/dev_schema.py | 116 -- qcschema/dev/molecule.py | 169 -- qcschema/dev/properties/__init__.py | 1 - .../dev/properties/calcinfo_properties.py | 40 - qcschema/dev/properties/cc_properties.py | 137 -- qcschema/dev/properties/mp_properties.py | 53 - qcschema/dev/properties/properties_base.py | 21 - qcschema/dev/properties/scf_properties.py | 69 - qcschema/dev/wavefunction/__init__.py | 1 - .../dev/wavefunction/core_wavefunction.py | 38 - .../wavefunction/localized_wavefunction.py | 44 - .../dev/wavefunction/result_wavefunction.py | 68 - qcschema/dev/wavefunction/scf_wavefunction.py | 121 -- .../dev/wavefunction/wavefunction_base.py | 26 - qcschema/versions.py | 4 - tests/test_schema.py | 4 - 27 files changed, 1611 insertions(+), 1136 deletions(-) create mode 100644 qcschema/data/vdev/AtomicInput.schema create mode 100644 qcschema/data/vdev/AtomicResult.schema create mode 100644 qcschema/data/vdev/AtomicResultProperties.schema create mode 100644 qcschema/data/vdev/BasisSet.schema create mode 100644 qcschema/data/vdev/Molecule.schema create mode 100644 qcschema/data/vdev/Provenance.schema create mode 100644 qcschema/dev/QCSchema.schema delete mode 100644 qcschema/dev/basis.py delete mode 100644 qcschema/dev/definitions.py delete mode 100644 qcschema/dev/dev_schema.py delete mode 100644 qcschema/dev/molecule.py delete mode 100644 qcschema/dev/properties/__init__.py delete mode 100644 qcschema/dev/properties/calcinfo_properties.py delete mode 100644 qcschema/dev/properties/cc_properties.py delete mode 100644 qcschema/dev/properties/mp_properties.py delete mode 100644 qcschema/dev/properties/properties_base.py delete mode 100644 qcschema/dev/properties/scf_properties.py delete mode 100644 qcschema/dev/wavefunction/__init__.py delete mode 100644 qcschema/dev/wavefunction/core_wavefunction.py delete mode 100644 qcschema/dev/wavefunction/localized_wavefunction.py delete mode 100644 qcschema/dev/wavefunction/result_wavefunction.py delete mode 100644 qcschema/dev/wavefunction/scf_wavefunction.py delete mode 100644 qcschema/dev/wavefunction/wavefunction_base.py diff --git a/README.md b/README.md index e5a9759..b95b411 100644 --- a/README.md +++ b/README.md @@ -13,3 +13,28 @@ matrices in a consistent format that can be easily parsed. Please see the [website](http://molssi-qc-schema.readthedocs.io/en/latest/index.html#) for the current specification. +## Modifying the Schema + +JSON Schema can specify only data layout, descriptions, and basic +defaults and type information for the models that compose QCSchema. To +supplement data layout validation, physics validation, defaulting, +serialization, and helper functions, a reference implementation in +Python for the latest development version of QCSchema is available +at the [QCElemental](https://github.com/MolSSI/QCElemental/) +project. QCElemental uses +[Pydantic](https://github.com/samuelcolvin/pydantic) to encode the +models into Python classes which undergo considerable testing. Since +the classes can auto-generate JSON Schema, it makes sense to use them +as the definition of QCSchema, rather than hand-writing schema here +and synching versions. + +The gist of the above is that schema in this repository are read-only. To +propose a change, open an issue here at QCSchema or open a pull request +at QCElemental. Any discussion of changes to QCSchema will take place +here or will be cross-linked to here in accordance with The Guidance. + +* [`qcschema/dev/QCSchema.schema`](qcschema/dev/QCSchema.schema) — single-file, human-readable development schema exported from QCElemental. +* [`qcschema/data/vdev/`](qcschema/data/vdev) — multi-file, compressed development schema exported from QCElemental. contents redundant to above. +* [`qcschema/data/v2/`](qcschema/data/v2) — multi-file, compressed version 2 schema hand-written here. contents were `qcschema/dev/` until September 2020. +* [`qcschema/data/v1/`](qcschema/data/v1) — multi-file, compressed version 1 schema hand-written here. + diff --git a/qcschema/data/vdev/AtomicInput.schema b/qcschema/data/vdev/AtomicInput.schema new file mode 100644 index 0000000..57cae71 --- /dev/null +++ b/qcschema/data/vdev/AtomicInput.schema @@ -0,0 +1 @@ +{"title": "AtomicInput", "description": "The MolSSI Quantum Chemistry Schema\n\nParameters\n----------\nid : str, Optional\n The optional ID for the computation.\nschema_name : ConstrainedStrValue, Default: qcschema_input\n The QCSchema specification this model conforms to. Explicitly fixed as qcschema_input.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nmolecule : :class:`Molecule`\n The molecule to use in the computation.\ndriver : {energy,gradient,hessian,properties}\n Allowed computation driver values.\nmodel : :class:`Model`\n The computational molecular sciences model to run.\nkeywords : Dict[str, Any], Default: {}\n The program-specific keywords to be used.\nprotocols : :class:`AtomicResultProtocols`, Optional\n Protocols regarding the manipulation of computational result data.\nextras : Dict[str, Any], Default: {}\n Additional information to bundle with the computation. Use for schema development and scratch space.\nprovenance : :class:`Provenance`, Optional\n Provenance information.", "type": "object", "properties": {"id": {"title": "Id", "description": "The optional ID for the computation.", "type": "string"}, "schema_name": {"title": "Schema Name", "description": "The QCSchema specification this model conforms to. Explicitly fixed as qcschema_input.", "default": "qcschema_input", "pattern": "^(qc_?schema_input)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 1, "type": "integer"}, "molecule": {"title": "Molecule", "description": "The molecule to use in the computation.", "allOf": [{"$ref": "#/definitions/Molecule"}]}, "driver": {"$ref": "#/definitions/DriverEnum"}, "model": {"title": "Model", "description": "The computational molecular sciences model to run.", "allOf": [{"$ref": "#/definitions/Model"}]}, "keywords": {"title": "Keywords", "description": "The program-specific keywords to be used.", "default": {}, "type": "object"}, "protocols": {"title": "Protocols", "description": "Protocols regarding the manipulation of computational result data.", "default": {}, "allOf": [{"$ref": "#/definitions/AtomicResultProtocols"}]}, "extras": {"title": "Extras", "description": "Additional information to bundle with the computation. Use for schema development and scratch space.", "default": {}, "type": "object"}, "provenance": {"title": "Provenance", "description": "Provenance information.", "allOf": [{"$ref": "#/definitions/Provenance"}]}}, "required": ["molecule", "driver", "model"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#", "definitions": {"Identifiers": {"title": "Identifiers", "description": "Canonical chemical identifiers\n\nParameters\n----------\nmolecule_hash : str, Optional\nmolecular_formula : str, Optional\nsmiles : str, Optional\ninchi : str, Optional\ninchikey : str, Optional\ncanonical_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_mapped_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_smiles : str, Optional\ncanonical_smiles : str, Optional\npubchem_cid : str, Optional\n PubChem Compound ID\npubchem_sid : str, Optional\n PubChem Substance ID\npubchem_conformerid : str, Optional\n PubChem Conformer ID", "type": "object", "properties": {"molecule_hash": {"title": "Molecule Hash", "type": "string"}, "molecular_formula": {"title": "Molecular Formula", "type": "string"}, "smiles": {"title": "Smiles", "type": "string"}, "inchi": {"title": "Inchi", "type": "string"}, "inchikey": {"title": "Inchikey", "type": "string"}, "canonical_explicit_hydrogen_smiles": {"title": "Canonical Explicit Hydrogen Smiles", "type": "string"}, "canonical_isomeric_explicit_hydrogen_mapped_smiles": {"title": "Canonical Isomeric Explicit Hydrogen Mapped Smiles", "type": "string"}, "canonical_isomeric_explicit_hydrogen_smiles": {"title": "Canonical Isomeric Explicit Hydrogen Smiles", "type": "string"}, "canonical_isomeric_smiles": {"title": "Canonical Isomeric Smiles", "type": "string"}, "canonical_smiles": {"title": "Canonical Smiles", "type": "string"}, "pubchem_cid": {"title": "Pubchem Cid", "description": "PubChem Compound ID", "type": "string"}, "pubchem_sid": {"title": "Pubchem Sid", "description": "PubChem Substance ID", "type": "string"}, "pubchem_conformerid": {"title": "Pubchem Conformerid", "description": "PubChem Conformer ID", "type": "string"}}, "additionalProperties": false}, "Provenance": {"title": "Provenance", "description": "Provenance information.\n\nParameters\n----------\ncreator : str\n The name of the program, library, or person who created the object.\nversion : str, Default: \n 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/).\nroutine : str, Default: \n The name of the routine or function within the creator, blank otherwise.", "type": "object", "properties": {"creator": {"title": "Creator", "description": "The name of the program, library, or person who created the object.", "type": "string"}, "version": {"title": "Version", "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/).", "default": "", "type": "string"}, "routine": {"title": "Routine", "description": "The name of the routine or function within the creator, blank otherwise.", "default": "", "type": "string"}}, "required": ["creator"], "$schema": "http://json-schema.org/draft-04/schema#"}, "Molecule": {"title": "Molecule", "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 nat: number of atomic = calcinfo_natom\n nfr: number of fragments\n : irregular dimension not systematically reshapable", "type": "object", "properties": {"schema_name": {"title": "Schema Name", "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_molecule.", "default": "qcschema_molecule", "pattern": "^(qcschema_molecule)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 2, "type": "integer"}, "validated": {"title": "Validated", "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.", "default": false, "type": "boolean"}, "symbols": {"title": "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 ``real`` and the first dimension of ``geometry``. Ghost/virtual atoms must have an entry here in ``symbols``; ghostedness is indicated through the ``real`` field.", "shape": ["nat"], "type": "array", "items": {"type": "string"}}, "geometry": {"title": "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 ``symbols`` and ``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.", "shape": ["nat", 3], "units": "a0", "type": "array", "items": {"type": "number"}}, "name": {"title": "Name", "description": "Common or human-readable name to assign to this molecule. This field can be arbitrary; see ``identifiers`` for well-defined labels.", "type": "string"}, "identifiers": {"title": "Identifiers", "description": "An optional dictionary of additional identifiers by which this molecule can be referenced, such as INCHI, canonical SMILES, etc. See the :class:``Identifiers`` model for more details.", "allOf": [{"$ref": "#/definitions/Identifiers"}]}, "comment": {"title": "Comment", "description": "Additional comments for this molecule. Intended for pure human/user consumption and clarity.", "type": "string"}, "molecular_charge": {"title": "Molecular Charge", "description": "The net electrostatic charge of the molecule.", "default": 0.0, "type": "number"}, "molecular_multiplicity": {"title": "Molecular Multiplicity", "description": "The total multiplicity of the molecule.", "default": 1, "type": "integer"}, "masses": {"title": "Masses", "description": "The ordered array of atomic masses. Index order matches the 0-indexed indices of all other per-atom fields like ``symbols`` and ``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 ``symbols`` but can accept ``None`` entries for standard masses to infer from the same index in the ``symbols`` field.", "shape": ["nat"], "units": "u", "type": "array", "items": {"type": "number"}}, "real": {"title": "Real", "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 ``symbols`` and the first dimension of ``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"], "type": "array", "items": {"type": "boolean"}}, "atom_labels": {"title": "Atom Labels", "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 ``comments`` field for general human-consumable text to affix to the molecule.", "shape": ["nat"], "type": "array", "items": {"type": "string"}}, "atomic_numbers": {"title": "Atomic Numbers", "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 ``symbols`` and ``real``. Values are inferred from the ``symbols`` list if not explicitly set. Ghostedness should be indicated through ``real`` field, not zeros here.", "shape": ["nat"], "type": "array", "items": {"type": "number", "multipleOf": 1.0}}, "mass_numbers": {"title": "Mass Numbers", "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 ``symbols`` and ``real``. Values are inferred from the most common isotopes of the ``symbols`` list if not explicitly set. If single isotope not (yet) known for an atom, -1 is placeholder.", "shape": ["nat"], "type": "array", "items": {"type": "number", "multipleOf": 1.0}}, "connectivity": {"title": "Connectivity", "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 ``symbols`` and ``real``. Bonds may be freely reordered and inverted.", "minItems": 1, "type": "array", "items": {"type": "array", "items": [{"type": "integer", "minimum": 0}, {"type": "integer", "minimum": 0}, {"type": "number", "minimum": 0, "maximum": 5}]}}, "fragments": {"title": "Fragments", "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 ``fragment_charges`` and ``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", ""], "type": "array", "items": {"type": "array", "items": {"type": "number", "multipleOf": 1.0}}}, "fragment_charges": {"title": "Fragment Charges", "description": "The total charge of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", "shape": ["nfr"], "type": "array", "items": {"type": "number"}}, "fragment_multiplicities": {"title": "Fragment Multiplicities", "description": "The multiplicity of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", "shape": ["nfr"], "type": "array", "items": {"type": "integer"}}, "fix_com": {"title": "Fix Com", "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 ``geometry`` than the one provided. 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).", "default": false, "type": "boolean"}, "fix_orientation": {"title": "Fix Orientation", "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 ``geometry`` than the one provided. 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).", "default": false, "type": "boolean"}, "fix_symmetry": {"title": "Fix Symmetry", "description": "Maximal point group symmetry which ``geometry`` should be treated. Lowercase.", "type": "string"}, "provenance": {"title": "Provenance", "description": "The provenance information about how this Molecule (and its attributes) were generated, provided, and manipulated.", "allOf": [{"$ref": "#/definitions/Provenance"}]}, "id": {"title": "Id", "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."}, "extras": {"title": "Extras", "description": "Additional information to bundle with the molecule. Use for schema development and scratch space.", "type": "object"}}, "required": ["symbols", "geometry"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#"}, "DriverEnum": {"title": "DriverEnum", "description": "Allowed computation driver values.", "enum": ["energy", "gradient", "hessian", "properties"], "type": "string"}, "HarmonicType": {"title": "HarmonicType", "description": "The angular momentum representation of a shell.", "enum": ["spherical", "cartesian"], "type": "string"}, "ElectronShell": {"title": "ElectronShell", "description": "Information for a single electronic shell.", "type": "object", "properties": {"angular_momentum": {"title": "Angular Momentum", "description": "Angular momentum for the shell as an array of integers.", "minItems": 1, "type": "array", "items": {"type": "integer", "minimum": 0}, "uniqueItems": true}, "harmonic_type": {"$ref": "#/definitions/HarmonicType"}, "exponents": {"title": "Exponents", "description": "Exponents for the contracted shell.", "minItems": 1, "type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}}, "coefficients": {"title": "Coefficients", "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.", "minItems": 1, "type": "array", "items": {"type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}, "minItems": 1}}}, "required": ["angular_momentum", "harmonic_type", "exponents", "coefficients"], "additionalProperties": false}, "ECPType": {"title": "ECPType", "description": "The type of the ECP potential.", "enum": ["scalar", "spinorbit"], "type": "string"}, "ECPPotential": {"title": "ECPPotential", "description": "Information for a single ECP potential.", "type": "object", "properties": {"ecp_type": {"$ref": "#/definitions/ECPType"}, "angular_momentum": {"title": "Angular Momentum", "description": "Angular momentum for the potential as an array of integers.", "minItems": 1, "type": "array", "items": {"type": "integer", "minimum": 0}, "uniqueItems": true}, "r_exponents": {"title": "R Exponents", "description": "Exponents of the 'r' term.", "minItems": 1, "type": "array", "items": {"type": "integer"}}, "gaussian_exponents": {"title": "Gaussian Exponents", "description": "Exponents of the 'gaussian' term.", "minItems": 1, "type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}}, "coefficients": {"title": "Coefficients", "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.", "minItems": 1, "type": "array", "items": {"type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}, "minItems": 1}}}, "required": ["ecp_type", "angular_momentum", "r_exponents", "gaussian_exponents", "coefficients"], "additionalProperties": false}, "BasisCenter": {"title": "BasisCenter", "description": "Data for a single atom/center in a basis set.\n\nParameters\n----------\nelectron_shells : :class:`ElectronShell`\n Electronic shells for this center.\necp_electrons : int, Default: 0\n Number of electrons replaced by ECP, MCP, or other field potentials.\necp_potentials : :class:`ECPPotential`, Optional\n ECPs, MCPs, or other field potentials for this center.", "type": "object", "properties": {"electron_shells": {"title": "Electron Shells", "description": "Electronic shells for this center.", "minItems": 1, "type": "array", "items": {"$ref": "#/definitions/ElectronShell"}, "uniqueItems": true}, "ecp_electrons": {"title": "Ecp Electrons", "description": "Number of electrons replaced by ECP, MCP, or other field potentials.", "default": 0, "type": "integer"}, "ecp_potentials": {"title": "Ecp Potentials", "description": "ECPs, MCPs, or other field potentials for this center.", "minItems": 1, "type": "array", "items": {"$ref": "#/definitions/ECPPotential"}, "uniqueItems": true}}, "required": ["electron_shells"], "additionalProperties": false}, "BasisSet": {"title": "BasisSet", "description": "A quantum chemistry basis description.\n\n\nParameters\n----------\nschema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nname : str\n The standard basis name if available (e.g., 'cc-pVDZ').\ndescription : str, Optional\n Brief description of the basis set.\ncenter_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\natom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\nnbf : int, Optional\n The number of basis functions. Use for convenience or as checksum", "type": "object", "properties": {"schema_name": {"title": "Schema Name", "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.", "default": "qcschema_basis", "pattern": "^(qcschema_basis)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 1, "type": "integer"}, "name": {"title": "Name", "description": "The standard basis name if available (e.g., 'cc-pVDZ').", "type": "string"}, "description": {"title": "Description", "description": "Brief description of the basis set.", "type": "string"}, "center_data": {"title": "Center Data", "description": "Shared basis data for all atoms/centers in the parent molecule", "type": "object", "additionalProperties": {"$ref": "#/definitions/BasisCenter"}}, "atom_map": {"title": "Atom Map", "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.", "type": "array", "items": {"type": "string"}}, "nbf": {"title": "Nbf", "description": "The number of basis functions. Use for convenience or as checksum", "type": "integer"}}, "required": ["name", "center_data", "atom_map"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#"}, "Model": {"title": "Model", "description": "The computational molecular sciences model to run.\n\nParameters\n----------\nmethod : str\n The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.\nbasis : Union[str, :class:`BasisSet`], Optional\n 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.", "type": "object", "properties": {"method": {"title": "Method", "description": "The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.", "type": "string"}, "basis": {"title": "Basis", "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.", "anyOf": [{"type": "string"}, {"$ref": "#/definitions/BasisSet"}]}}, "required": ["method"]}, "WavefunctionProtocolEnum": {"title": "WavefunctionProtocolEnum", "description": "Wavefunction to keep from a computation.", "enum": ["all", "orbitals_and_eigenvalues", "return_results", "none"], "type": "string"}, "ErrorCorrectionProtocol": {"title": "ErrorCorrectionProtocol", "description": "Configuration for how QCEngine handles error correction\n\n WARNING: These protocols are currently experimental and only supported by NWChem tasks\n\n\nParameters\n----------\ndefault_policy : bool, Default: True\n Whether to allow error corrections to be used if not directly specified in `policies`\npolicies : name='policies' type=Optional[Mapping[str, bool]] required=False default=None, Optional\n 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.", "type": "object", "properties": {"default_policy": {"title": "Default Policy", "description": "Whether to allow error corrections to be used if not directly specified in `policies`", "default": true, "type": "boolean"}, "policies": {"title": "Policies", "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.", "type": "object", "additionalProperties": {"type": "boolean"}}}, "additionalProperties": false}, "AtomicResultProtocols": {"title": "AtomicResultProtocols", "description": "Protocols regarding the manipulation of computational result data.\n\nParameters\n----------\nwavefunction : {all,orbitals_and_eigenvalues,return_results,none}, Default: none\n Wavefunction to keep from a computation.\nstdout : bool, Default: True\n Primary output file to keep from the computation\nerror_correction : :class:`ErrorCorrectionProtocol`, Optional\n Policies for error correction", "type": "object", "properties": {"wavefunction": {"$ref": "#/definitions/WavefunctionProtocolEnum"}, "stdout": {"title": "Stdout", "description": "Primary output file to keep from the computation", "default": true, "type": "boolean"}, "error_correction": {"title": "Error Correction", "description": "Policies for error correction", "allOf": [{"$ref": "#/definitions/ErrorCorrectionProtocol"}]}}, "additionalProperties": false}}} \ No newline at end of file diff --git a/qcschema/data/vdev/AtomicResult.schema b/qcschema/data/vdev/AtomicResult.schema new file mode 100644 index 0000000..b97edcd --- /dev/null +++ b/qcschema/data/vdev/AtomicResult.schema @@ -0,0 +1 @@ +{"title": "AtomicResult", "description": "Results from a CMS program execution.\n\nParameters\n----------\nid : str, Optional\n The optional ID for the computation.\nschema_name : ConstrainedStrValue, Default: qcschema_output\n The QCSchema specification this model conforms to. Explicitly fixed as qcschema_output.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nmolecule : :class:`Molecule`\n The molecule to use in the computation.\ndriver : {energy,gradient,hessian,properties}\n Allowed computation driver values.\nmodel : :class:`Model`\n The computational molecular sciences model to run.\nkeywords : Dict[str, Any], Default: {}\n The program-specific keywords to be used.\nprotocols : :class:`AtomicResultProtocols`, Optional\n Protocols regarding the manipulation of computational result data.\nextras : Dict[str, Any], Default: {}\n Additional information to bundle with the computation. Use for schema development and scratch space.\nprovenance : :class:`Provenance`\n Provenance information.\nproperties : :class:`AtomicResultProperties`\n Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n Notes\n -----\n All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n nao: number of atomic orbitals = calcinfo_nbasis\n nmo: number of molecular orbitals\n \nwavefunction : :class:`WavefunctionProperties`, Optional\n Wavefunction properties resulting from a computation. Matrix quantities are stored in column-major order. Presence and contents configurable by protocol.\nreturn_result : Union[float, Array, Dict[str, Any]]\n The primary return specified by the ``driver`` field. Scalar if energy; array if gradient or hessian; dictionary with property keys if properties.\nstdout : str, Optional\n The primary logging output of the program, whether natively standard output or a file. Presence vs. absence (or null-ness?) configurable by protocol.\nstderr : str, Optional\n The standard error of the program execution.\nsuccess : bool\n The success of program execution. If False, other fields may be blank.\nerror : :class:`ComputeError`, Optional\n Complete description of the error from an unsuccessful program execution.", "type": "object", "properties": {"id": {"title": "Id", "description": "The optional ID for the computation.", "type": "string"}, "schema_name": {"title": "Schema Name", "description": "The QCSchema specification this model conforms to. Explicitly fixed as qcschema_output.", "default": "qcschema_output", "pattern": "^(qc_?schema_output)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 1, "type": "integer"}, "molecule": {"title": "Molecule", "description": "The molecule to use in the computation.", "allOf": [{"$ref": "#/definitions/Molecule"}]}, "driver": {"$ref": "#/definitions/DriverEnum"}, "model": {"title": "Model", "description": "The computational molecular sciences model to run.", "allOf": [{"$ref": "#/definitions/Model"}]}, "keywords": {"title": "Keywords", "description": "The program-specific keywords to be used.", "default": {}, "type": "object"}, "protocols": {"title": "Protocols", "description": "Protocols regarding the manipulation of computational result data.", "default": {}, "allOf": [{"$ref": "#/definitions/AtomicResultProtocols"}]}, "extras": {"title": "Extras", "description": "Additional information to bundle with the computation. Use for schema development and scratch space.", "default": {}, "type": "object"}, "provenance": {"title": "Provenance", "description": "Provenance information.", "allOf": [{"$ref": "#/definitions/Provenance"}]}, "properties": {"title": "Properties", "description": "Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n Notes\n -----\n All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n nao: number of atomic orbitals = calcinfo_nbasis\n nmo: number of molecular orbitals\n ", "allOf": [{"$ref": "#/definitions/AtomicResultProperties"}]}, "wavefunction": {"title": "Wavefunction", "description": "Wavefunction properties resulting from a computation. Matrix quantities are stored in column-major order. Presence and contents configurable by protocol.", "allOf": [{"$ref": "#/definitions/WavefunctionProperties"}]}, "return_result": {"title": "Return Result", "description": "The primary return specified by the ``driver`` field. Scalar if energy; array if gradient or hessian; dictionary with property keys if properties.", "anyOf": [{"type": "number"}, {"type": "array", "items": {"type": "number"}}, {"type": "object"}]}, "stdout": {"title": "Stdout", "description": "The primary logging output of the program, whether natively standard output or a file. Presence vs. absence (or null-ness?) configurable by protocol.", "type": "string"}, "stderr": {"title": "Stderr", "description": "The standard error of the program execution.", "type": "string"}, "success": {"title": "Success", "description": "The success of program execution. If False, other fields may be blank.", "type": "boolean"}, "error": {"title": "Error", "description": "Complete description of the error from an unsuccessful program execution.", "allOf": [{"$ref": "#/definitions/ComputeError"}]}}, "required": ["molecule", "driver", "model", "provenance", "properties", "return_result", "success"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#", "definitions": {"Identifiers": {"title": "Identifiers", "description": "Canonical chemical identifiers\n\nParameters\n----------\nmolecule_hash : str, Optional\nmolecular_formula : str, Optional\nsmiles : str, Optional\ninchi : str, Optional\ninchikey : str, Optional\ncanonical_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_mapped_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_smiles : str, Optional\ncanonical_smiles : str, Optional\npubchem_cid : str, Optional\n PubChem Compound ID\npubchem_sid : str, Optional\n PubChem Substance ID\npubchem_conformerid : str, Optional\n PubChem Conformer ID", "type": "object", "properties": {"molecule_hash": {"title": "Molecule Hash", "type": "string"}, "molecular_formula": {"title": "Molecular Formula", "type": "string"}, "smiles": {"title": "Smiles", "type": "string"}, "inchi": {"title": "Inchi", "type": "string"}, "inchikey": {"title": "Inchikey", "type": "string"}, "canonical_explicit_hydrogen_smiles": {"title": "Canonical Explicit Hydrogen Smiles", "type": "string"}, "canonical_isomeric_explicit_hydrogen_mapped_smiles": {"title": "Canonical Isomeric Explicit Hydrogen Mapped Smiles", "type": "string"}, "canonical_isomeric_explicit_hydrogen_smiles": {"title": "Canonical Isomeric Explicit Hydrogen Smiles", "type": "string"}, "canonical_isomeric_smiles": {"title": "Canonical Isomeric Smiles", "type": "string"}, "canonical_smiles": {"title": "Canonical Smiles", "type": "string"}, "pubchem_cid": {"title": "Pubchem Cid", "description": "PubChem Compound ID", "type": "string"}, "pubchem_sid": {"title": "Pubchem Sid", "description": "PubChem Substance ID", "type": "string"}, "pubchem_conformerid": {"title": "Pubchem Conformerid", "description": "PubChem Conformer ID", "type": "string"}}, "additionalProperties": false}, "Provenance": {"title": "Provenance", "description": "Provenance information.\n\nParameters\n----------\ncreator : str\n The name of the program, library, or person who created the object.\nversion : str, Default: \n 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/).\nroutine : str, Default: \n The name of the routine or function within the creator, blank otherwise.", "type": "object", "properties": {"creator": {"title": "Creator", "description": "The name of the program, library, or person who created the object.", "type": "string"}, "version": {"title": "Version", "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/).", "default": "", "type": "string"}, "routine": {"title": "Routine", "description": "The name of the routine or function within the creator, blank otherwise.", "default": "", "type": "string"}}, "required": ["creator"], "$schema": "http://json-schema.org/draft-04/schema#"}, "Molecule": {"title": "Molecule", "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 nat: number of atomic = calcinfo_natom\n nfr: number of fragments\n : irregular dimension not systematically reshapable", "type": "object", "properties": {"schema_name": {"title": "Schema Name", "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_molecule.", "default": "qcschema_molecule", "pattern": "^(qcschema_molecule)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 2, "type": "integer"}, "validated": {"title": "Validated", "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.", "default": false, "type": "boolean"}, "symbols": {"title": "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 ``real`` and the first dimension of ``geometry``. Ghost/virtual atoms must have an entry here in ``symbols``; ghostedness is indicated through the ``real`` field.", "shape": ["nat"], "type": "array", "items": {"type": "string"}}, "geometry": {"title": "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 ``symbols`` and ``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.", "shape": ["nat", 3], "units": "a0", "type": "array", "items": {"type": "number"}}, "name": {"title": "Name", "description": "Common or human-readable name to assign to this molecule. This field can be arbitrary; see ``identifiers`` for well-defined labels.", "type": "string"}, "identifiers": {"title": "Identifiers", "description": "An optional dictionary of additional identifiers by which this molecule can be referenced, such as INCHI, canonical SMILES, etc. See the :class:``Identifiers`` model for more details.", "allOf": [{"$ref": "#/definitions/Identifiers"}]}, "comment": {"title": "Comment", "description": "Additional comments for this molecule. Intended for pure human/user consumption and clarity.", "type": "string"}, "molecular_charge": {"title": "Molecular Charge", "description": "The net electrostatic charge of the molecule.", "default": 0.0, "type": "number"}, "molecular_multiplicity": {"title": "Molecular Multiplicity", "description": "The total multiplicity of the molecule.", "default": 1, "type": "integer"}, "masses": {"title": "Masses", "description": "The ordered array of atomic masses. Index order matches the 0-indexed indices of all other per-atom fields like ``symbols`` and ``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 ``symbols`` but can accept ``None`` entries for standard masses to infer from the same index in the ``symbols`` field.", "shape": ["nat"], "units": "u", "type": "array", "items": {"type": "number"}}, "real": {"title": "Real", "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 ``symbols`` and the first dimension of ``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"], "type": "array", "items": {"type": "boolean"}}, "atom_labels": {"title": "Atom Labels", "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 ``comments`` field for general human-consumable text to affix to the molecule.", "shape": ["nat"], "type": "array", "items": {"type": "string"}}, "atomic_numbers": {"title": "Atomic Numbers", "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 ``symbols`` and ``real``. Values are inferred from the ``symbols`` list if not explicitly set. Ghostedness should be indicated through ``real`` field, not zeros here.", "shape": ["nat"], "type": "array", "items": {"type": "number", "multipleOf": 1.0}}, "mass_numbers": {"title": "Mass Numbers", "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 ``symbols`` and ``real``. Values are inferred from the most common isotopes of the ``symbols`` list if not explicitly set. If single isotope not (yet) known for an atom, -1 is placeholder.", "shape": ["nat"], "type": "array", "items": {"type": "number", "multipleOf": 1.0}}, "connectivity": {"title": "Connectivity", "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 ``symbols`` and ``real``. Bonds may be freely reordered and inverted.", "minItems": 1, "type": "array", "items": {"type": "array", "items": [{"type": "integer", "minimum": 0}, {"type": "integer", "minimum": 0}, {"type": "number", "minimum": 0, "maximum": 5}]}}, "fragments": {"title": "Fragments", "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 ``fragment_charges`` and ``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", ""], "type": "array", "items": {"type": "array", "items": {"type": "number", "multipleOf": 1.0}}}, "fragment_charges": {"title": "Fragment Charges", "description": "The total charge of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", "shape": ["nfr"], "type": "array", "items": {"type": "number"}}, "fragment_multiplicities": {"title": "Fragment Multiplicities", "description": "The multiplicity of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", "shape": ["nfr"], "type": "array", "items": {"type": "integer"}}, "fix_com": {"title": "Fix Com", "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 ``geometry`` than the one provided. 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).", "default": false, "type": "boolean"}, "fix_orientation": {"title": "Fix Orientation", "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 ``geometry`` than the one provided. 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).", "default": false, "type": "boolean"}, "fix_symmetry": {"title": "Fix Symmetry", "description": "Maximal point group symmetry which ``geometry`` should be treated. Lowercase.", "type": "string"}, "provenance": {"title": "Provenance", "description": "The provenance information about how this Molecule (and its attributes) were generated, provided, and manipulated.", "allOf": [{"$ref": "#/definitions/Provenance"}]}, "id": {"title": "Id", "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."}, "extras": {"title": "Extras", "description": "Additional information to bundle with the molecule. Use for schema development and scratch space.", "type": "object"}}, "required": ["symbols", "geometry"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#"}, "DriverEnum": {"title": "DriverEnum", "description": "Allowed computation driver values.", "enum": ["energy", "gradient", "hessian", "properties"], "type": "string"}, "HarmonicType": {"title": "HarmonicType", "description": "The angular momentum representation of a shell.", "enum": ["spherical", "cartesian"], "type": "string"}, "ElectronShell": {"title": "ElectronShell", "description": "Information for a single electronic shell.", "type": "object", "properties": {"angular_momentum": {"title": "Angular Momentum", "description": "Angular momentum for the shell as an array of integers.", "minItems": 1, "type": "array", "items": {"type": "integer", "minimum": 0}, "uniqueItems": true}, "harmonic_type": {"$ref": "#/definitions/HarmonicType"}, "exponents": {"title": "Exponents", "description": "Exponents for the contracted shell.", "minItems": 1, "type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}}, "coefficients": {"title": "Coefficients", "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.", "minItems": 1, "type": "array", "items": {"type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}, "minItems": 1}}}, "required": ["angular_momentum", "harmonic_type", "exponents", "coefficients"], "additionalProperties": false}, "ECPType": {"title": "ECPType", "description": "The type of the ECP potential.", "enum": ["scalar", "spinorbit"], "type": "string"}, "ECPPotential": {"title": "ECPPotential", "description": "Information for a single ECP potential.", "type": "object", "properties": {"ecp_type": {"$ref": "#/definitions/ECPType"}, "angular_momentum": {"title": "Angular Momentum", "description": "Angular momentum for the potential as an array of integers.", "minItems": 1, "type": "array", "items": {"type": "integer", "minimum": 0}, "uniqueItems": true}, "r_exponents": {"title": "R Exponents", "description": "Exponents of the 'r' term.", "minItems": 1, "type": "array", "items": {"type": "integer"}}, "gaussian_exponents": {"title": "Gaussian Exponents", "description": "Exponents of the 'gaussian' term.", "minItems": 1, "type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}}, "coefficients": {"title": "Coefficients", "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.", "minItems": 1, "type": "array", "items": {"type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}, "minItems": 1}}}, "required": ["ecp_type", "angular_momentum", "r_exponents", "gaussian_exponents", "coefficients"], "additionalProperties": false}, "BasisCenter": {"title": "BasisCenter", "description": "Data for a single atom/center in a basis set.\n\nParameters\n----------\nelectron_shells : :class:`ElectronShell`\n Electronic shells for this center.\necp_electrons : int, Default: 0\n Number of electrons replaced by ECP, MCP, or other field potentials.\necp_potentials : :class:`ECPPotential`, Optional\n ECPs, MCPs, or other field potentials for this center.", "type": "object", "properties": {"electron_shells": {"title": "Electron Shells", "description": "Electronic shells for this center.", "minItems": 1, "type": "array", "items": {"$ref": "#/definitions/ElectronShell"}, "uniqueItems": true}, "ecp_electrons": {"title": "Ecp Electrons", "description": "Number of electrons replaced by ECP, MCP, or other field potentials.", "default": 0, "type": "integer"}, "ecp_potentials": {"title": "Ecp Potentials", "description": "ECPs, MCPs, or other field potentials for this center.", "minItems": 1, "type": "array", "items": {"$ref": "#/definitions/ECPPotential"}, "uniqueItems": true}}, "required": ["electron_shells"], "additionalProperties": false}, "BasisSet": {"title": "BasisSet", "description": "A quantum chemistry basis description.\n\n\nParameters\n----------\nschema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nname : str\n The standard basis name if available (e.g., 'cc-pVDZ').\ndescription : str, Optional\n Brief description of the basis set.\ncenter_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\natom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\nnbf : int, Optional\n The number of basis functions. Use for convenience or as checksum", "type": "object", "properties": {"schema_name": {"title": "Schema Name", "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.", "default": "qcschema_basis", "pattern": "^(qcschema_basis)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 1, "type": "integer"}, "name": {"title": "Name", "description": "The standard basis name if available (e.g., 'cc-pVDZ').", "type": "string"}, "description": {"title": "Description", "description": "Brief description of the basis set.", "type": "string"}, "center_data": {"title": "Center Data", "description": "Shared basis data for all atoms/centers in the parent molecule", "type": "object", "additionalProperties": {"$ref": "#/definitions/BasisCenter"}}, "atom_map": {"title": "Atom Map", "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.", "type": "array", "items": {"type": "string"}}, "nbf": {"title": "Nbf", "description": "The number of basis functions. Use for convenience or as checksum", "type": "integer"}}, "required": ["name", "center_data", "atom_map"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#"}, "Model": {"title": "Model", "description": "The computational molecular sciences model to run.\n\nParameters\n----------\nmethod : str\n The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.\nbasis : Union[str, :class:`BasisSet`], Optional\n 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.", "type": "object", "properties": {"method": {"title": "Method", "description": "The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.", "type": "string"}, "basis": {"title": "Basis", "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.", "anyOf": [{"type": "string"}, {"$ref": "#/definitions/BasisSet"}]}}, "required": ["method"]}, "WavefunctionProtocolEnum": {"title": "WavefunctionProtocolEnum", "description": "Wavefunction to keep from a computation.", "enum": ["all", "orbitals_and_eigenvalues", "return_results", "none"], "type": "string"}, "ErrorCorrectionProtocol": {"title": "ErrorCorrectionProtocol", "description": "Configuration for how QCEngine handles error correction\n\n WARNING: These protocols are currently experimental and only supported by NWChem tasks\n\n\nParameters\n----------\ndefault_policy : bool, Default: True\n Whether to allow error corrections to be used if not directly specified in `policies`\npolicies : name='policies' type=Optional[Mapping[str, bool]] required=False default=None, Optional\n 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.", "type": "object", "properties": {"default_policy": {"title": "Default Policy", "description": "Whether to allow error corrections to be used if not directly specified in `policies`", "default": true, "type": "boolean"}, "policies": {"title": "Policies", "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.", "type": "object", "additionalProperties": {"type": "boolean"}}}, "additionalProperties": false}, "AtomicResultProtocols": {"title": "AtomicResultProtocols", "description": "Protocols regarding the manipulation of computational result data.\n\nParameters\n----------\nwavefunction : {all,orbitals_and_eigenvalues,return_results,none}, Default: none\n Wavefunction to keep from a computation.\nstdout : bool, Default: True\n Primary output file to keep from the computation\nerror_correction : :class:`ErrorCorrectionProtocol`, Optional\n Policies for error correction", "type": "object", "properties": {"wavefunction": {"$ref": "#/definitions/WavefunctionProtocolEnum"}, "stdout": {"title": "Stdout", "description": "Primary output file to keep from the computation", "default": true, "type": "boolean"}, "error_correction": {"title": "Error Correction", "description": "Policies for error correction", "allOf": [{"$ref": "#/definitions/ErrorCorrectionProtocol"}]}}, "additionalProperties": false}, "AtomicResultProperties": {"title": "AtomicResultProperties", "description": "Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n Notes\n -----\n All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n nao: number of atomic orbitals = calcinfo_nbasis\n nmo: number of molecular orbitals\n\n\nParameters\n----------\ncalcinfo_nbasis : int, Optional\n The number of basis functions for the computation.\ncalcinfo_nmo : int, Optional\n The number of molecular orbitals for the computation.\ncalcinfo_nalpha : int, Optional\n The number of alpha electrons in the computation.\ncalcinfo_nbeta : int, Optional\n The number of beta electrons in the computation.\ncalcinfo_natom : int, Optional\n The number of atoms in the computation.\nnuclear_repulsion_energy : float, Optional\n The nuclear repulsion energy.\nreturn_energy : float, Optional\n The energy of the requested method, identical to ``return_result`` for ``driver=energy`` computations.\nscf_one_electron_energy : float, Optional\n The one-electron (core Hamiltonian) energy contribution to the total SCF energy.\nscf_two_electron_energy : float, Optional\n The two-electron energy contribution to the total SCF energy.\nscf_vv10_energy : float, Optional\n The VV10 functional energy contribution to the total SCF energy.\nscf_xc_energy : float, Optional\n The functional (XC) energy contribution to the total SCF energy.\nscf_dispersion_correction_energy : float, Optional\n The dispersion correction appended to an underlying functional when a DFT-D method is requested.\nscf_dipole_moment : Array, Optional\n The SCF X, Y, and Z dipole components\nscf_quadrupole_moment : Array, Optional\n The quadrupole components (redundant; 6 unique).\nscf_total_energy : float, Optional\n The total electronic energy of the SCF stage of the calculation.\nscf_iterations : int, Optional\n The number of SCF iterations taken before convergence.\nmp2_same_spin_correlation_energy : float, Optional\n The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.\nmp2_opposite_spin_correlation_energy : float, Optional\n The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.\nmp2_singles_energy : float, Optional\n The singles portion of the MP2 correlation energy. Zero except in ROHF.\nmp2_doubles_energy : float, Optional\n The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations.\nmp2_total_correlation_energy : float, Optional\n The MP2 correlation energy.\nmp2_correlation_energy : float, Optional\n The MP2 correlation energy.\nmp2_total_energy : float, Optional\n The total MP2 energy (MP2 correlation energy + HF energy).\nmp2_dipole_moment : Array, Optional\n The MP2 X, Y, and Z dipole components.\nccsd_same_spin_correlation_energy : float, Optional\n The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.\nccsd_opposite_spin_correlation_energy : float, Optional\n The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.\nccsd_singles_energy : float, Optional\n The singles portion of the CCSD correlation energy. Zero except in ROHF.\nccsd_doubles_energy : float, Optional\n The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations.\nccsd_correlation_energy : float, Optional\n The CCSD correlation energy.\nccsd_total_energy : float, Optional\n The total CCSD energy (CCSD correlation energy + HF energy).\nccsd_dipole_moment : Array, Optional\n The CCSD X, Y, and Z dipole components.\nccsd_iterations : int, Optional\n The number of CCSD iterations taken before convergence.\nccsd_prt_pr_correlation_energy : float, Optional\n The CCSD(T) correlation energy.\nccsd_prt_pr_total_energy : float, Optional\n The total CCSD(T) energy (CCSD(T) correlation energy + HF energy).\nccsd_prt_pr_dipole_moment : Array, Optional\n The CCSD(T) X, Y, and Z dipole components.\nccsdt_correlation_energy : float, Optional\n The CCSDT correlation energy.\nccsdt_total_energy : float, Optional\n The total CCSDT energy (CCSDT correlation energy + HF energy).\nccsdt_dipole_moment : Array, Optional\n The CCSDT X, Y, and Z dipole components.\nccsdt_iterations : int, Optional\n The number of CCSDT iterations taken before convergence.\nccsdtq_correlation_energy : float, Optional\n The CCSDTQ correlation energy.\nccsdtq_total_energy : float, Optional\n The total CCSDTQ energy (CCSDTQ correlation energy + HF energy).\nccsdtq_dipole_moment : Array, Optional\n The CCSDTQ X, Y, and Z dipole components.\nccsdtq_iterations : int, Optional\n The number of CCSDTQ iterations taken before convergence.", "type": "object", "properties": {"calcinfo_nbasis": {"title": "Calcinfo Nbasis", "description": "The number of basis functions for the computation.", "type": "integer"}, "calcinfo_nmo": {"title": "Calcinfo Nmo", "description": "The number of molecular orbitals for the computation.", "type": "integer"}, "calcinfo_nalpha": {"title": "Calcinfo Nalpha", "description": "The number of alpha electrons in the computation.", "type": "integer"}, "calcinfo_nbeta": {"title": "Calcinfo Nbeta", "description": "The number of beta electrons in the computation.", "type": "integer"}, "calcinfo_natom": {"title": "Calcinfo Natom", "description": "The number of atoms in the computation.", "type": "integer"}, "nuclear_repulsion_energy": {"title": "Nuclear Repulsion Energy", "description": "The nuclear repulsion energy.", "type": "number"}, "return_energy": {"title": "Return Energy", "description": "The energy of the requested method, identical to ``return_result`` for ``driver=energy`` computations.", "type": "number"}, "scf_one_electron_energy": {"title": "Scf One Electron Energy", "description": "The one-electron (core Hamiltonian) energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_two_electron_energy": {"title": "Scf Two Electron Energy", "description": "The two-electron energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_vv10_energy": {"title": "Scf Vv10 Energy", "description": "The VV10 functional energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_xc_energy": {"title": "Scf Xc Energy", "description": "The functional (XC) energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_dispersion_correction_energy": {"title": "Scf Dispersion Correction Energy", "description": "The dispersion correction appended to an underlying functional when a DFT-D method is requested.", "units": "E_h", "type": "number"}, "scf_dipole_moment": {"title": "Scf Dipole Moment", "description": "The SCF X, Y, and Z dipole components", "units": "e a0", "type": "array", "items": {"type": "number"}}, "scf_quadrupole_moment": {"title": "Scf Quadrupole Moment", "description": "The quadrupole components (redundant; 6 unique).", "shape": [3, 3], "units": "e a0^2", "type": "array", "items": {"type": "number"}}, "scf_total_energy": {"title": "Scf Total Energy", "description": "The total electronic energy of the SCF stage of the calculation.", "units": "E_h", "type": "number"}, "scf_iterations": {"title": "Scf Iterations", "description": "The number of SCF iterations taken before convergence.", "type": "integer"}, "mp2_same_spin_correlation_energy": {"title": "Mp2 Same Spin Correlation Energy", "description": "The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "mp2_opposite_spin_correlation_energy": {"title": "Mp2 Opposite Spin Correlation Energy", "description": "The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "mp2_singles_energy": {"title": "Mp2 Singles Energy", "description": "The singles portion of the MP2 correlation energy. Zero except in ROHF.", "units": "E_h", "type": "number"}, "mp2_doubles_energy": {"title": "Mp2 Doubles Energy", "description": "The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations.", "units": "E_h", "type": "number"}, "mp2_total_correlation_energy": {"title": "Mp2 Total Correlation Energy", "description": "The MP2 correlation energy.", "type": "number"}, "mp2_correlation_energy": {"title": "Mp2 Correlation Energy", "description": "The MP2 correlation energy.", "units": "E_h", "type": "number"}, "mp2_total_energy": {"title": "Mp2 Total Energy", "description": "The total MP2 energy (MP2 correlation energy + HF energy).", "units": "E_h", "type": "number"}, "mp2_dipole_moment": {"title": "Mp2 Dipole Moment", "description": "The MP2 X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsd_same_spin_correlation_energy": {"title": "Ccsd Same Spin Correlation Energy", "description": "The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "ccsd_opposite_spin_correlation_energy": {"title": "Ccsd Opposite Spin Correlation Energy", "description": "The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "ccsd_singles_energy": {"title": "Ccsd Singles Energy", "description": "The singles portion of the CCSD correlation energy. Zero except in ROHF.", "units": "E_h", "type": "number"}, "ccsd_doubles_energy": {"title": "Ccsd Doubles Energy", "description": "The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations.", "units": "E_h", "type": "number"}, "ccsd_correlation_energy": {"title": "Ccsd Correlation Energy", "description": "The CCSD correlation energy.", "units": "E_h", "type": "number"}, "ccsd_total_energy": {"title": "Ccsd Total Energy", "description": "The total CCSD energy (CCSD correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsd_dipole_moment": {"title": "Ccsd Dipole Moment", "description": "The CCSD X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsd_iterations": {"title": "Ccsd Iterations", "description": "The number of CCSD iterations taken before convergence.", "type": "integer"}, "ccsd_prt_pr_correlation_energy": {"title": "Ccsd Prt Pr Correlation Energy", "description": "The CCSD(T) correlation energy.", "units": "E_h", "type": "number"}, "ccsd_prt_pr_total_energy": {"title": "Ccsd Prt Pr Total Energy", "description": "The total CCSD(T) energy (CCSD(T) correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsd_prt_pr_dipole_moment": {"title": "Ccsd Prt Pr Dipole Moment", "description": "The CCSD(T) X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsdt_correlation_energy": {"title": "Ccsdt Correlation Energy", "description": "The CCSDT correlation energy.", "units": "E_h", "type": "number"}, "ccsdt_total_energy": {"title": "Ccsdt Total Energy", "description": "The total CCSDT energy (CCSDT correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsdt_dipole_moment": {"title": "Ccsdt Dipole Moment", "description": "The CCSDT X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsdt_iterations": {"title": "Ccsdt Iterations", "description": "The number of CCSDT iterations taken before convergence.", "type": "integer"}, "ccsdtq_correlation_energy": {"title": "Ccsdtq Correlation Energy", "description": "The CCSDTQ correlation energy.", "units": "E_h", "type": "number"}, "ccsdtq_total_energy": {"title": "Ccsdtq Total Energy", "description": "The total CCSDTQ energy (CCSDTQ correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsdtq_dipole_moment": {"title": "Ccsdtq Dipole Moment", "description": "The CCSDTQ X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsdtq_iterations": {"title": "Ccsdtq Iterations", "description": "The number of CCSDTQ iterations taken before convergence.", "type": "integer"}}, "additionalProperties": false}, "WavefunctionProperties": {"title": "WavefunctionProperties", "description": "Wavefunction properties resulting from a computation. Matrix quantities are stored in column-major order. Presence and contents configurable by protocol.\n\nParameters\n----------\nbasis : :class:`BasisSet`\n\n A quantum chemistry basis description.\n\n\n Parameters\n ----------\n schema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\n schema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\n name : str\n The standard basis name if available (e.g., 'cc-pVDZ').\n description : str, Optional\n Brief description of the basis set.\n center_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\n atom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\n nbf : int, Optional\n The number of basis functions. Use for convenience or as checksum\n\nrestricted : bool\n If the computation was restricted or not (alpha == beta). If True, all beta quantities are skipped.\nh_core_a : Array, Optional\n Alpha-spin core (one-electron) Hamiltonian in the AO basis.\nh_core_b : Array, Optional\n Beta-spin core (one-electron) Hamiltonian in the AO basis.\nh_effective_a : Array, Optional\n Alpha-spin effective core (one-electron) Hamiltonian in the AO basis.\nh_effective_b : Array, Optional\n Beta-spin effective core (one-electron) Hamiltonian in the AO basis\nscf_orbitals_a : Array, Optional\n SCF alpha-spin orbitals in the AO basis.\nscf_orbitals_b : Array, Optional\n SCF beta-spin orbitals in the AO basis.\nscf_density_a : Array, Optional\n SCF alpha-spin density matrix in the AO basis.\nscf_density_b : Array, Optional\n SCF beta-spin density matrix in the AO basis.\nscf_fock_a : Array, Optional\n SCF alpha-spin Fock matrix in the AO basis.\nscf_fock_b : Array, Optional\n SCF beta-spin Fock matrix in the AO basis.\nscf_eigenvalues_a : Array, Optional\n SCF alpha-spin orbital eigenvalues.\nscf_eigenvalues_b : Array, Optional\n SCF beta-spin orbital eigenvalues.\nscf_occupations_a : Array, Optional\n SCF alpha-spin orbital occupations.\nscf_occupations_b : Array, Optional\n SCF beta-spin orbital occupations.\nscf_coulomb_a : Array, Optional\n SCF alpha-spin Coulomb matrix in the AO basis.\nscf_coulomb_b : Array, Optional\n SCF beta-spin Coulomb matrix in the AO basis.\nscf_exchange_a : Array, Optional\n SCF alpha-spin exchange matrix in the AO basis.\nscf_exchange_b : Array, Optional\n SCF beta-spin exchange matrix in the AO basis.\nlocalized_orbitals_a : Array, Optional\n Localized alpha-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.\nlocalized_orbitals_b : Array, Optional\n Localized beta-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.\nlocalized_fock_a : Array, Optional\n Alpha-spin Fock matrix in the localized molecular orbital basis. All nmo orbitals are included, even if only a subset were localized.\nlocalized_fock_b : Array, Optional\n Beta-spin Fock matrix in the localized molecular orbital basis. All nmo orbitals are included, even if only a subset were localized.\norbitals_a : str, Optional\n Index to the alpha-spin orbitals of the primary return.\norbitals_b : str, Optional\n Index to the beta-spin orbitals of the primary return.\ndensity_a : str, Optional\n Index to the alpha-spin density of the primary return.\ndensity_b : str, Optional\n Index to the beta-spin density of the primary return.\nfock_a : str, Optional\n Index to the alpha-spin Fock matrix of the primary return.\nfock_b : str, Optional\n Index to the beta-spin Fock matrix of the primary return.\neigenvalues_a : str, Optional\n Index to the alpha-spin orbital eigenvalues of the primary return.\neigenvalues_b : str, Optional\n Index to the beta-spin orbital eigenvalues of the primary return.\noccupations_a : str, Optional\n Index to the alpha-spin orbital occupations of the primary return.\noccupations_b : str, Optional\n Index to the beta-spin orbital occupations of the primary return.", "type": "object", "properties": {"basis": {"title": "Basis", "description": "\nA quantum chemistry basis description.\n\n\nParameters\n----------\nschema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nname : str\n The standard basis name if available (e.g., 'cc-pVDZ').\ndescription : str, Optional\n Brief description of the basis set.\ncenter_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\natom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\nnbf : int, Optional\n The number of basis functions. Use for convenience or as checksum\n", "allOf": [{"$ref": "#/definitions/BasisSet"}]}, "restricted": {"title": "Restricted", "description": "If the computation was restricted or not (alpha == beta). If True, all beta quantities are skipped.", "type": "boolean"}, "h_core_a": {"title": "H Core A", "description": "Alpha-spin core (one-electron) Hamiltonian in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "h_core_b": {"title": "H Core B", "description": "Beta-spin core (one-electron) Hamiltonian in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "h_effective_a": {"title": "H Effective A", "description": "Alpha-spin effective core (one-electron) Hamiltonian in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "h_effective_b": {"title": "H Effective B", "description": "Beta-spin effective core (one-electron) Hamiltonian in the AO basis", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_orbitals_a": {"title": "Scf Orbitals A", "description": "SCF alpha-spin orbitals in the AO basis.", "shape": ["nao", "nmo"], "type": "array", "items": {"type": "number"}}, "scf_orbitals_b": {"title": "Scf Orbitals B", "description": "SCF beta-spin orbitals in the AO basis.", "shape": ["nao", "nmo"], "type": "array", "items": {"type": "number"}}, "scf_density_a": {"title": "Scf Density A", "description": "SCF alpha-spin density matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_density_b": {"title": "Scf Density B", "description": "SCF beta-spin density matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_fock_a": {"title": "Scf Fock A", "description": "SCF alpha-spin Fock matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_fock_b": {"title": "Scf Fock B", "description": "SCF beta-spin Fock matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_eigenvalues_a": {"title": "Scf Eigenvalues A", "description": "SCF alpha-spin orbital eigenvalues.", "shape": ["nmo"], "type": "array", "items": {"type": "number"}}, "scf_eigenvalues_b": {"title": "Scf Eigenvalues B", "description": "SCF beta-spin orbital eigenvalues.", "shape": ["nmo"], "type": "array", "items": {"type": "number"}}, "scf_occupations_a": {"title": "Scf Occupations A", "description": "SCF alpha-spin orbital occupations.", "shape": ["nmo"], "type": "array", "items": {"type": "number"}}, "scf_occupations_b": {"title": "Scf Occupations B", "description": "SCF beta-spin orbital occupations.", "shape": ["nmo"], "type": "array", "items": {"type": "number"}}, "scf_coulomb_a": {"title": "Scf Coulomb A", "description": "SCF alpha-spin Coulomb matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_coulomb_b": {"title": "Scf Coulomb B", "description": "SCF beta-spin Coulomb matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_exchange_a": {"title": "Scf Exchange A", "description": "SCF alpha-spin exchange matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "scf_exchange_b": {"title": "Scf Exchange B", "description": "SCF beta-spin exchange matrix in the AO basis.", "shape": ["nao", "nao"], "type": "array", "items": {"type": "number"}}, "localized_orbitals_a": {"title": "Localized Orbitals A", "description": "Localized alpha-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.", "shape": ["nao", "nmo"], "type": "array", "items": {"type": "number"}}, "localized_orbitals_b": {"title": "Localized Orbitals B", "description": "Localized beta-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.", "shape": ["nao", "nmo"], "type": "array", "items": {"type": "number"}}, "localized_fock_a": {"title": "Localized Fock A", "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"], "type": "array", "items": {"type": "number"}}, "localized_fock_b": {"title": "Localized Fock B", "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"], "type": "array", "items": {"type": "number"}}, "orbitals_a": {"title": "Orbitals A", "description": "Index to the alpha-spin orbitals of the primary return.", "type": "string"}, "orbitals_b": {"title": "Orbitals B", "description": "Index to the beta-spin orbitals of the primary return.", "type": "string"}, "density_a": {"title": "Density A", "description": "Index to the alpha-spin density of the primary return.", "type": "string"}, "density_b": {"title": "Density B", "description": "Index to the beta-spin density of the primary return.", "type": "string"}, "fock_a": {"title": "Fock A", "description": "Index to the alpha-spin Fock matrix of the primary return.", "type": "string"}, "fock_b": {"title": "Fock B", "description": "Index to the beta-spin Fock matrix of the primary return.", "type": "string"}, "eigenvalues_a": {"title": "Eigenvalues A", "description": "Index to the alpha-spin orbital eigenvalues of the primary return.", "type": "string"}, "eigenvalues_b": {"title": "Eigenvalues B", "description": "Index to the beta-spin orbital eigenvalues of the primary return.", "type": "string"}, "occupations_a": {"title": "Occupations A", "description": "Index to the alpha-spin orbital occupations of the primary return.", "type": "string"}, "occupations_b": {"title": "Occupations B", "description": "Index to the beta-spin orbital occupations of the primary return.", "type": "string"}}, "required": ["basis", "restricted"], "additionalProperties": false}, "ComputeError": {"title": "ComputeError", "description": "Complete description of the error from an unsuccessful program execution.\n\nParameters\n----------\nerror_type : str\n The type of error which was thrown. Restrict this field to short classifiers e.g. 'input_error'. Suggested classifiers: https://github.com/MolSSI/QCEngine/blob/master/qcengine/exceptions.py\nerror_message : str\n Text associated with the thrown error. This is often the backtrace, but it can contain additional information as well.\nextras : Dict[str, Any], Optional\n Additional information to bundle with the error.", "type": "object", "properties": {"error_type": {"title": "Error Type", "description": "The type of error which was thrown. Restrict this field to short classifiers e.g. 'input_error'. Suggested classifiers: https://github.com/MolSSI/QCEngine/blob/master/qcengine/exceptions.py", "type": "string"}, "error_message": {"title": "Error Message", "description": "Text associated with the thrown error. This is often the backtrace, but it can contain additional information as well.", "type": "string"}, "extras": {"title": "Extras", "description": "Additional information to bundle with the error.", "type": "object"}}, "required": ["error_type", "error_message"], "additionalProperties": false}}} \ No newline at end of file diff --git a/qcschema/data/vdev/AtomicResultProperties.schema b/qcschema/data/vdev/AtomicResultProperties.schema new file mode 100644 index 0000000..0a7123b --- /dev/null +++ b/qcschema/data/vdev/AtomicResultProperties.schema @@ -0,0 +1 @@ +{"title": "AtomicResultProperties", "description": "Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n Notes\n -----\n All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n nao: number of atomic orbitals = calcinfo_nbasis\n nmo: number of molecular orbitals\n\n\nParameters\n----------\ncalcinfo_nbasis : int, Optional\n The number of basis functions for the computation.\ncalcinfo_nmo : int, Optional\n The number of molecular orbitals for the computation.\ncalcinfo_nalpha : int, Optional\n The number of alpha electrons in the computation.\ncalcinfo_nbeta : int, Optional\n The number of beta electrons in the computation.\ncalcinfo_natom : int, Optional\n The number of atoms in the computation.\nnuclear_repulsion_energy : float, Optional\n The nuclear repulsion energy.\nreturn_energy : float, Optional\n The energy of the requested method, identical to ``return_result`` for ``driver=energy`` computations.\nscf_one_electron_energy : float, Optional\n The one-electron (core Hamiltonian) energy contribution to the total SCF energy.\nscf_two_electron_energy : float, Optional\n The two-electron energy contribution to the total SCF energy.\nscf_vv10_energy : float, Optional\n The VV10 functional energy contribution to the total SCF energy.\nscf_xc_energy : float, Optional\n The functional (XC) energy contribution to the total SCF energy.\nscf_dispersion_correction_energy : float, Optional\n The dispersion correction appended to an underlying functional when a DFT-D method is requested.\nscf_dipole_moment : Array, Optional\n The SCF X, Y, and Z dipole components\nscf_quadrupole_moment : Array, Optional\n The quadrupole components (redundant; 6 unique).\nscf_total_energy : float, Optional\n The total electronic energy of the SCF stage of the calculation.\nscf_iterations : int, Optional\n The number of SCF iterations taken before convergence.\nmp2_same_spin_correlation_energy : float, Optional\n The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.\nmp2_opposite_spin_correlation_energy : float, Optional\n The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.\nmp2_singles_energy : float, Optional\n The singles portion of the MP2 correlation energy. Zero except in ROHF.\nmp2_doubles_energy : float, Optional\n The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations.\nmp2_total_correlation_energy : float, Optional\n The MP2 correlation energy.\nmp2_correlation_energy : float, Optional\n The MP2 correlation energy.\nmp2_total_energy : float, Optional\n The total MP2 energy (MP2 correlation energy + HF energy).\nmp2_dipole_moment : Array, Optional\n The MP2 X, Y, and Z dipole components.\nccsd_same_spin_correlation_energy : float, Optional\n The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.\nccsd_opposite_spin_correlation_energy : float, Optional\n The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.\nccsd_singles_energy : float, Optional\n The singles portion of the CCSD correlation energy. Zero except in ROHF.\nccsd_doubles_energy : float, Optional\n The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations.\nccsd_correlation_energy : float, Optional\n The CCSD correlation energy.\nccsd_total_energy : float, Optional\n The total CCSD energy (CCSD correlation energy + HF energy).\nccsd_dipole_moment : Array, Optional\n The CCSD X, Y, and Z dipole components.\nccsd_iterations : int, Optional\n The number of CCSD iterations taken before convergence.\nccsd_prt_pr_correlation_energy : float, Optional\n The CCSD(T) correlation energy.\nccsd_prt_pr_total_energy : float, Optional\n The total CCSD(T) energy (CCSD(T) correlation energy + HF energy).\nccsd_prt_pr_dipole_moment : Array, Optional\n The CCSD(T) X, Y, and Z dipole components.\nccsdt_correlation_energy : float, Optional\n The CCSDT correlation energy.\nccsdt_total_energy : float, Optional\n The total CCSDT energy (CCSDT correlation energy + HF energy).\nccsdt_dipole_moment : Array, Optional\n The CCSDT X, Y, and Z dipole components.\nccsdt_iterations : int, Optional\n The number of CCSDT iterations taken before convergence.\nccsdtq_correlation_energy : float, Optional\n The CCSDTQ correlation energy.\nccsdtq_total_energy : float, Optional\n The total CCSDTQ energy (CCSDTQ correlation energy + HF energy).\nccsdtq_dipole_moment : Array, Optional\n The CCSDTQ X, Y, and Z dipole components.\nccsdtq_iterations : int, Optional\n The number of CCSDTQ iterations taken before convergence.", "type": "object", "properties": {"calcinfo_nbasis": {"title": "Calcinfo Nbasis", "description": "The number of basis functions for the computation.", "type": "integer"}, "calcinfo_nmo": {"title": "Calcinfo Nmo", "description": "The number of molecular orbitals for the computation.", "type": "integer"}, "calcinfo_nalpha": {"title": "Calcinfo Nalpha", "description": "The number of alpha electrons in the computation.", "type": "integer"}, "calcinfo_nbeta": {"title": "Calcinfo Nbeta", "description": "The number of beta electrons in the computation.", "type": "integer"}, "calcinfo_natom": {"title": "Calcinfo Natom", "description": "The number of atoms in the computation.", "type": "integer"}, "nuclear_repulsion_energy": {"title": "Nuclear Repulsion Energy", "description": "The nuclear repulsion energy.", "type": "number"}, "return_energy": {"title": "Return Energy", "description": "The energy of the requested method, identical to ``return_result`` for ``driver=energy`` computations.", "type": "number"}, "scf_one_electron_energy": {"title": "Scf One Electron Energy", "description": "The one-electron (core Hamiltonian) energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_two_electron_energy": {"title": "Scf Two Electron Energy", "description": "The two-electron energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_vv10_energy": {"title": "Scf Vv10 Energy", "description": "The VV10 functional energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_xc_energy": {"title": "Scf Xc Energy", "description": "The functional (XC) energy contribution to the total SCF energy.", "units": "E_h", "type": "number"}, "scf_dispersion_correction_energy": {"title": "Scf Dispersion Correction Energy", "description": "The dispersion correction appended to an underlying functional when a DFT-D method is requested.", "units": "E_h", "type": "number"}, "scf_dipole_moment": {"title": "Scf Dipole Moment", "description": "The SCF X, Y, and Z dipole components", "units": "e a0", "type": "array", "items": {"type": "number"}}, "scf_quadrupole_moment": {"title": "Scf Quadrupole Moment", "description": "The quadrupole components (redundant; 6 unique).", "shape": [3, 3], "units": "e a0^2", "type": "array", "items": {"type": "number"}}, "scf_total_energy": {"title": "Scf Total Energy", "description": "The total electronic energy of the SCF stage of the calculation.", "units": "E_h", "type": "number"}, "scf_iterations": {"title": "Scf Iterations", "description": "The number of SCF iterations taken before convergence.", "type": "integer"}, "mp2_same_spin_correlation_energy": {"title": "Mp2 Same Spin Correlation Energy", "description": "The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "mp2_opposite_spin_correlation_energy": {"title": "Mp2 Opposite Spin Correlation Energy", "description": "The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "mp2_singles_energy": {"title": "Mp2 Singles Energy", "description": "The singles portion of the MP2 correlation energy. Zero except in ROHF.", "units": "E_h", "type": "number"}, "mp2_doubles_energy": {"title": "Mp2 Doubles Energy", "description": "The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations.", "units": "E_h", "type": "number"}, "mp2_total_correlation_energy": {"title": "Mp2 Total Correlation Energy", "description": "The MP2 correlation energy.", "type": "number"}, "mp2_correlation_energy": {"title": "Mp2 Correlation Energy", "description": "The MP2 correlation energy.", "units": "E_h", "type": "number"}, "mp2_total_energy": {"title": "Mp2 Total Energy", "description": "The total MP2 energy (MP2 correlation energy + HF energy).", "units": "E_h", "type": "number"}, "mp2_dipole_moment": {"title": "Mp2 Dipole Moment", "description": "The MP2 X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsd_same_spin_correlation_energy": {"title": "Ccsd Same Spin Correlation Energy", "description": "The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "ccsd_opposite_spin_correlation_energy": {"title": "Ccsd Opposite Spin Correlation Energy", "description": "The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.", "units": "E_h", "type": "number"}, "ccsd_singles_energy": {"title": "Ccsd Singles Energy", "description": "The singles portion of the CCSD correlation energy. Zero except in ROHF.", "units": "E_h", "type": "number"}, "ccsd_doubles_energy": {"title": "Ccsd Doubles Energy", "description": "The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations.", "units": "E_h", "type": "number"}, "ccsd_correlation_energy": {"title": "Ccsd Correlation Energy", "description": "The CCSD correlation energy.", "units": "E_h", "type": "number"}, "ccsd_total_energy": {"title": "Ccsd Total Energy", "description": "The total CCSD energy (CCSD correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsd_dipole_moment": {"title": "Ccsd Dipole Moment", "description": "The CCSD X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsd_iterations": {"title": "Ccsd Iterations", "description": "The number of CCSD iterations taken before convergence.", "type": "integer"}, "ccsd_prt_pr_correlation_energy": {"title": "Ccsd Prt Pr Correlation Energy", "description": "The CCSD(T) correlation energy.", "units": "E_h", "type": "number"}, "ccsd_prt_pr_total_energy": {"title": "Ccsd Prt Pr Total Energy", "description": "The total CCSD(T) energy (CCSD(T) correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsd_prt_pr_dipole_moment": {"title": "Ccsd Prt Pr Dipole Moment", "description": "The CCSD(T) X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsdt_correlation_energy": {"title": "Ccsdt Correlation Energy", "description": "The CCSDT correlation energy.", "units": "E_h", "type": "number"}, "ccsdt_total_energy": {"title": "Ccsdt Total Energy", "description": "The total CCSDT energy (CCSDT correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsdt_dipole_moment": {"title": "Ccsdt Dipole Moment", "description": "The CCSDT X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsdt_iterations": {"title": "Ccsdt Iterations", "description": "The number of CCSDT iterations taken before convergence.", "type": "integer"}, "ccsdtq_correlation_energy": {"title": "Ccsdtq Correlation Energy", "description": "The CCSDTQ correlation energy.", "units": "E_h", "type": "number"}, "ccsdtq_total_energy": {"title": "Ccsdtq Total Energy", "description": "The total CCSDTQ energy (CCSDTQ correlation energy + HF energy).", "units": "E_h", "type": "number"}, "ccsdtq_dipole_moment": {"title": "Ccsdtq Dipole Moment", "description": "The CCSDTQ X, Y, and Z dipole components.", "shape": [3], "units": "e a0", "type": "array", "items": {"type": "number"}}, "ccsdtq_iterations": {"title": "Ccsdtq Iterations", "description": "The number of CCSDTQ iterations taken before convergence.", "type": "integer"}}, "additionalProperties": false} \ No newline at end of file diff --git a/qcschema/data/vdev/BasisSet.schema b/qcschema/data/vdev/BasisSet.schema new file mode 100644 index 0000000..9c53e80 --- /dev/null +++ b/qcschema/data/vdev/BasisSet.schema @@ -0,0 +1 @@ +{"title": "BasisSet", "description": "A quantum chemistry basis description.\n\n\nParameters\n----------\nschema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nname : str\n The standard basis name if available (e.g., 'cc-pVDZ').\ndescription : str, Optional\n Brief description of the basis set.\ncenter_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\natom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\nnbf : int, Optional\n The number of basis functions. Use for convenience or as checksum", "type": "object", "properties": {"schema_name": {"title": "Schema Name", "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.", "default": "qcschema_basis", "pattern": "^(qcschema_basis)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 1, "type": "integer"}, "name": {"title": "Name", "description": "The standard basis name if available (e.g., 'cc-pVDZ').", "type": "string"}, "description": {"title": "Description", "description": "Brief description of the basis set.", "type": "string"}, "center_data": {"title": "Center Data", "description": "Shared basis data for all atoms/centers in the parent molecule", "type": "object", "additionalProperties": {"$ref": "#/definitions/BasisCenter"}}, "atom_map": {"title": "Atom Map", "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.", "type": "array", "items": {"type": "string"}}, "nbf": {"title": "Nbf", "description": "The number of basis functions. Use for convenience or as checksum", "type": "integer"}}, "required": ["name", "center_data", "atom_map"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#", "definitions": {"HarmonicType": {"title": "HarmonicType", "description": "The angular momentum representation of a shell.", "enum": ["spherical", "cartesian"], "type": "string"}, "ElectronShell": {"title": "ElectronShell", "description": "Information for a single electronic shell.", "type": "object", "properties": {"angular_momentum": {"title": "Angular Momentum", "description": "Angular momentum for the shell as an array of integers.", "minItems": 1, "type": "array", "items": {"type": "integer", "minimum": 0}, "uniqueItems": true}, "harmonic_type": {"$ref": "#/definitions/HarmonicType"}, "exponents": {"title": "Exponents", "description": "Exponents for the contracted shell.", "minItems": 1, "type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}}, "coefficients": {"title": "Coefficients", "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.", "minItems": 1, "type": "array", "items": {"type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}, "minItems": 1}}}, "required": ["angular_momentum", "harmonic_type", "exponents", "coefficients"], "additionalProperties": false}, "ECPType": {"title": "ECPType", "description": "The type of the ECP potential.", "enum": ["scalar", "spinorbit"], "type": "string"}, "ECPPotential": {"title": "ECPPotential", "description": "Information for a single ECP potential.", "type": "object", "properties": {"ecp_type": {"$ref": "#/definitions/ECPType"}, "angular_momentum": {"title": "Angular Momentum", "description": "Angular momentum for the potential as an array of integers.", "minItems": 1, "type": "array", "items": {"type": "integer", "minimum": 0}, "uniqueItems": true}, "r_exponents": {"title": "R Exponents", "description": "Exponents of the 'r' term.", "minItems": 1, "type": "array", "items": {"type": "integer"}}, "gaussian_exponents": {"title": "Gaussian Exponents", "description": "Exponents of the 'gaussian' term.", "minItems": 1, "type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}}, "coefficients": {"title": "Coefficients", "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.", "minItems": 1, "type": "array", "items": {"type": "array", "items": {"anyOf": [{"type": "number"}, {"type": "string"}]}, "minItems": 1}}}, "required": ["ecp_type", "angular_momentum", "r_exponents", "gaussian_exponents", "coefficients"], "additionalProperties": false}, "BasisCenter": {"title": "BasisCenter", "description": "Data for a single atom/center in a basis set.\n\nParameters\n----------\nelectron_shells : :class:`ElectronShell`\n Electronic shells for this center.\necp_electrons : int, Default: 0\n Number of electrons replaced by ECP, MCP, or other field potentials.\necp_potentials : :class:`ECPPotential`, Optional\n ECPs, MCPs, or other field potentials for this center.", "type": "object", "properties": {"electron_shells": {"title": "Electron Shells", "description": "Electronic shells for this center.", "minItems": 1, "type": "array", "items": {"$ref": "#/definitions/ElectronShell"}, "uniqueItems": true}, "ecp_electrons": {"title": "Ecp Electrons", "description": "Number of electrons replaced by ECP, MCP, or other field potentials.", "default": 0, "type": "integer"}, "ecp_potentials": {"title": "Ecp Potentials", "description": "ECPs, MCPs, or other field potentials for this center.", "minItems": 1, "type": "array", "items": {"$ref": "#/definitions/ECPPotential"}, "uniqueItems": true}}, "required": ["electron_shells"], "additionalProperties": false}}} \ No newline at end of file diff --git a/qcschema/data/vdev/Molecule.schema b/qcschema/data/vdev/Molecule.schema new file mode 100644 index 0000000..75d360f --- /dev/null +++ b/qcschema/data/vdev/Molecule.schema @@ -0,0 +1 @@ +{"title": "Molecule", "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 nat: number of atomic = calcinfo_natom\n nfr: number of fragments\n : irregular dimension not systematically reshapable", "type": "object", "properties": {"schema_name": {"title": "Schema Name", "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_molecule.", "default": "qcschema_molecule", "pattern": "^(qcschema_molecule)$", "type": "string"}, "schema_version": {"title": "Schema Version", "description": "The version number of ``schema_name`` to which this model conforms.", "default": 2, "type": "integer"}, "validated": {"title": "Validated", "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.", "default": false, "type": "boolean"}, "symbols": {"title": "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 ``real`` and the first dimension of ``geometry``. Ghost/virtual atoms must have an entry here in ``symbols``; ghostedness is indicated through the ``real`` field.", "shape": ["nat"], "type": "array", "items": {"type": "string"}}, "geometry": {"title": "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 ``symbols`` and ``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.", "shape": ["nat", 3], "units": "a0", "type": "array", "items": {"type": "number"}}, "name": {"title": "Name", "description": "Common or human-readable name to assign to this molecule. This field can be arbitrary; see ``identifiers`` for well-defined labels.", "type": "string"}, "identifiers": {"title": "Identifiers", "description": "An optional dictionary of additional identifiers by which this molecule can be referenced, such as INCHI, canonical SMILES, etc. See the :class:``Identifiers`` model for more details.", "allOf": [{"$ref": "#/definitions/Identifiers"}]}, "comment": {"title": "Comment", "description": "Additional comments for this molecule. Intended for pure human/user consumption and clarity.", "type": "string"}, "molecular_charge": {"title": "Molecular Charge", "description": "The net electrostatic charge of the molecule.", "default": 0.0, "type": "number"}, "molecular_multiplicity": {"title": "Molecular Multiplicity", "description": "The total multiplicity of the molecule.", "default": 1, "type": "integer"}, "masses": {"title": "Masses", "description": "The ordered array of atomic masses. Index order matches the 0-indexed indices of all other per-atom fields like ``symbols`` and ``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 ``symbols`` but can accept ``None`` entries for standard masses to infer from the same index in the ``symbols`` field.", "shape": ["nat"], "units": "u", "type": "array", "items": {"type": "number"}}, "real": {"title": "Real", "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 ``symbols`` and the first dimension of ``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"], "type": "array", "items": {"type": "boolean"}}, "atom_labels": {"title": "Atom Labels", "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 ``comments`` field for general human-consumable text to affix to the molecule.", "shape": ["nat"], "type": "array", "items": {"type": "string"}}, "atomic_numbers": {"title": "Atomic Numbers", "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 ``symbols`` and ``real``. Values are inferred from the ``symbols`` list if not explicitly set. Ghostedness should be indicated through ``real`` field, not zeros here.", "shape": ["nat"], "type": "array", "items": {"type": "number", "multipleOf": 1.0}}, "mass_numbers": {"title": "Mass Numbers", "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 ``symbols`` and ``real``. Values are inferred from the most common isotopes of the ``symbols`` list if not explicitly set. If single isotope not (yet) known for an atom, -1 is placeholder.", "shape": ["nat"], "type": "array", "items": {"type": "number", "multipleOf": 1.0}}, "connectivity": {"title": "Connectivity", "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 ``symbols`` and ``real``. Bonds may be freely reordered and inverted.", "minItems": 1, "type": "array", "items": {"type": "array", "items": [{"type": "integer", "minimum": 0}, {"type": "integer", "minimum": 0}, {"type": "number", "minimum": 0, "maximum": 5}]}}, "fragments": {"title": "Fragments", "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 ``fragment_charges`` and ``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", ""], "type": "array", "items": {"type": "array", "items": {"type": "number", "multipleOf": 1.0}}}, "fragment_charges": {"title": "Fragment Charges", "description": "The total charge of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", "shape": ["nfr"], "type": "array", "items": {"type": "number"}}, "fragment_multiplicities": {"title": "Fragment Multiplicities", "description": "The multiplicity of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", "shape": ["nfr"], "type": "array", "items": {"type": "integer"}}, "fix_com": {"title": "Fix Com", "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 ``geometry`` than the one provided. 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).", "default": false, "type": "boolean"}, "fix_orientation": {"title": "Fix Orientation", "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 ``geometry`` than the one provided. 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).", "default": false, "type": "boolean"}, "fix_symmetry": {"title": "Fix Symmetry", "description": "Maximal point group symmetry which ``geometry`` should be treated. Lowercase.", "type": "string"}, "provenance": {"title": "Provenance", "description": "The provenance information about how this Molecule (and its attributes) were generated, provided, and manipulated.", "allOf": [{"$ref": "#/definitions/Provenance"}]}, "id": {"title": "Id", "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."}, "extras": {"title": "Extras", "description": "Additional information to bundle with the molecule. Use for schema development and scratch space.", "type": "object"}}, "required": ["symbols", "geometry"], "additionalProperties": false, "$schema": "http://json-schema.org/draft-04/schema#", "definitions": {"Identifiers": {"title": "Identifiers", "description": "Canonical chemical identifiers\n\nParameters\n----------\nmolecule_hash : str, Optional\nmolecular_formula : str, Optional\nsmiles : str, Optional\ninchi : str, Optional\ninchikey : str, Optional\ncanonical_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_mapped_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_smiles : str, Optional\ncanonical_smiles : str, Optional\npubchem_cid : str, Optional\n PubChem Compound ID\npubchem_sid : str, Optional\n PubChem Substance ID\npubchem_conformerid : str, Optional\n PubChem Conformer ID", "type": "object", "properties": {"molecule_hash": {"title": "Molecule Hash", "type": "string"}, "molecular_formula": {"title": "Molecular Formula", "type": "string"}, "smiles": {"title": "Smiles", "type": "string"}, "inchi": {"title": "Inchi", "type": "string"}, "inchikey": {"title": "Inchikey", "type": "string"}, "canonical_explicit_hydrogen_smiles": {"title": "Canonical Explicit Hydrogen Smiles", "type": "string"}, "canonical_isomeric_explicit_hydrogen_mapped_smiles": {"title": "Canonical Isomeric Explicit Hydrogen Mapped Smiles", "type": "string"}, "canonical_isomeric_explicit_hydrogen_smiles": {"title": "Canonical Isomeric Explicit Hydrogen Smiles", "type": "string"}, "canonical_isomeric_smiles": {"title": "Canonical Isomeric Smiles", "type": "string"}, "canonical_smiles": {"title": "Canonical Smiles", "type": "string"}, "pubchem_cid": {"title": "Pubchem Cid", "description": "PubChem Compound ID", "type": "string"}, "pubchem_sid": {"title": "Pubchem Sid", "description": "PubChem Substance ID", "type": "string"}, "pubchem_conformerid": {"title": "Pubchem Conformerid", "description": "PubChem Conformer ID", "type": "string"}}, "additionalProperties": false}, "Provenance": {"title": "Provenance", "description": "Provenance information.\n\nParameters\n----------\ncreator : str\n The name of the program, library, or person who created the object.\nversion : str, Default: \n 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/).\nroutine : str, Default: \n The name of the routine or function within the creator, blank otherwise.", "type": "object", "properties": {"creator": {"title": "Creator", "description": "The name of the program, library, or person who created the object.", "type": "string"}, "version": {"title": "Version", "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/).", "default": "", "type": "string"}, "routine": {"title": "Routine", "description": "The name of the routine or function within the creator, blank otherwise.", "default": "", "type": "string"}}, "required": ["creator"], "$schema": "http://json-schema.org/draft-04/schema#"}}} \ No newline at end of file diff --git a/qcschema/data/vdev/Provenance.schema b/qcschema/data/vdev/Provenance.schema new file mode 100644 index 0000000..e7eab14 --- /dev/null +++ b/qcschema/data/vdev/Provenance.schema @@ -0,0 +1 @@ +{"title": "Provenance", "description": "Provenance information.\n\nParameters\n----------\ncreator : str\n The name of the program, library, or person who created the object.\nversion : str, Default: \n 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/).\nroutine : str, Default: \n The name of the routine or function within the creator, blank otherwise.", "type": "object", "properties": {"creator": {"title": "Creator", "description": "The name of the program, library, or person who created the object.", "type": "string"}, "version": {"title": "Version", "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/).", "default": "", "type": "string"}, "routine": {"title": "Routine", "description": "The name of the routine or function within the creator, blank otherwise.", "default": "", "type": "string"}}, "required": ["creator"], "$schema": "http://json-schema.org/draft-04/schema#"} \ No newline at end of file diff --git a/qcschema/dev/QCSchema.schema b/qcschema/dev/QCSchema.schema new file mode 100644 index 0000000..38cd928 --- /dev/null +++ b/qcschema/dev/QCSchema.schema @@ -0,0 +1,1575 @@ +{ + "title": "QCSchema", + "definitions": { + "Identifiers": { + "title": "Identifiers", + "description": "Canonical chemical identifiers\n\nParameters\n----------\nmolecule_hash : str, Optional\nmolecular_formula : str, Optional\nsmiles : str, Optional\ninchi : str, Optional\ninchikey : str, Optional\ncanonical_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_mapped_smiles : str, Optional\ncanonical_isomeric_explicit_hydrogen_smiles : str, Optional\ncanonical_isomeric_smiles : str, Optional\ncanonical_smiles : str, Optional\npubchem_cid : str, Optional\n PubChem Compound ID\npubchem_sid : str, Optional\n PubChem Substance ID\npubchem_conformerid : str, Optional\n PubChem Conformer ID", + "type": "object", + "properties": { + "molecule_hash": { + "title": "Molecule Hash", + "type": "string" + }, + "molecular_formula": { + "title": "Molecular Formula", + "type": "string" + }, + "smiles": { + "title": "Smiles", + "type": "string" + }, + "inchi": { + "title": "Inchi", + "type": "string" + }, + "inchikey": { + "title": "Inchikey", + "type": "string" + }, + "canonical_explicit_hydrogen_smiles": { + "title": "Canonical Explicit Hydrogen Smiles", + "type": "string" + }, + "canonical_isomeric_explicit_hydrogen_mapped_smiles": { + "title": "Canonical Isomeric Explicit Hydrogen Mapped Smiles", + "type": "string" + }, + "canonical_isomeric_explicit_hydrogen_smiles": { + "title": "Canonical Isomeric Explicit Hydrogen Smiles", + "type": "string" + }, + "canonical_isomeric_smiles": { + "title": "Canonical Isomeric Smiles", + "type": "string" + }, + "canonical_smiles": { + "title": "Canonical Smiles", + "type": "string" + }, + "pubchem_cid": { + "title": "Pubchem Cid", + "description": "PubChem Compound ID", + "type": "string" + }, + "pubchem_sid": { + "title": "Pubchem Sid", + "description": "PubChem Substance ID", + "type": "string" + }, + "pubchem_conformerid": { + "title": "Pubchem Conformerid", + "description": "PubChem Conformer ID", + "type": "string" + } + }, + "additionalProperties": false + }, + "Provenance": { + "title": "Provenance", + "description": "Provenance information.\n\nParameters\n----------\ncreator : str\n The name of the program, library, or person who created the object.\nversion : str, Default: \n 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/).\nroutine : str, Default: \n The name of the routine or function within the creator, blank otherwise.", + "type": "object", + "properties": { + "creator": { + "title": "Creator", + "description": "The name of the program, library, or person who created the object.", + "type": "string" + }, + "version": { + "title": "Version", + "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/).", + "default": "", + "type": "string" + }, + "routine": { + "title": "Routine", + "description": "The name of the routine or function within the creator, blank otherwise.", + "default": "", + "type": "string" + } + }, + "required": [ + "creator" + ], + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "Molecule": { + "title": "Molecule", + "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 nat: number of atomic = calcinfo_natom\n nfr: number of fragments\n : irregular dimension not systematically reshapable", + "type": "object", + "properties": { + "schema_name": { + "title": "Schema Name", + "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_molecule.", + "default": "qcschema_molecule", + "pattern": "^(qcschema_molecule)$", + "type": "string" + }, + "schema_version": { + "title": "Schema Version", + "description": "The version number of ``schema_name`` to which this model conforms.", + "default": 2, + "type": "integer" + }, + "validated": { + "title": "Validated", + "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.", + "default": false, + "type": "boolean" + }, + "symbols": { + "title": "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 ``real`` and the first dimension of ``geometry``. Ghost/virtual atoms must have an entry here in ``symbols``; ghostedness is indicated through the ``real`` field.", + "shape": [ + "nat" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "geometry": { + "title": "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 ``symbols`` and ``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.", + "shape": [ + "nat", + 3 + ], + "units": "a0", + "type": "array", + "items": { + "type": "number" + } + }, + "name": { + "title": "Name", + "description": "Common or human-readable name to assign to this molecule. This field can be arbitrary; see ``identifiers`` for well-defined labels.", + "type": "string" + }, + "identifiers": { + "title": "Identifiers", + "description": "An optional dictionary of additional identifiers by which this molecule can be referenced, such as INCHI, canonical SMILES, etc. See the :class:``Identifiers`` model for more details.", + "allOf": [ + { + "$ref": "#/definitions/Identifiers" + } + ] + }, + "comment": { + "title": "Comment", + "description": "Additional comments for this molecule. Intended for pure human/user consumption and clarity.", + "type": "string" + }, + "molecular_charge": { + "title": "Molecular Charge", + "description": "The net electrostatic charge of the molecule.", + "default": 0.0, + "type": "number" + }, + "molecular_multiplicity": { + "title": "Molecular Multiplicity", + "description": "The total multiplicity of the molecule.", + "default": 1, + "type": "integer" + }, + "masses": { + "title": "Masses", + "description": "The ordered array of atomic masses. Index order matches the 0-indexed indices of all other per-atom fields like ``symbols`` and ``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 ``symbols`` but can accept ``None`` entries for standard masses to infer from the same index in the ``symbols`` field.", + "shape": [ + "nat" + ], + "units": "u", + "type": "array", + "items": { + "type": "number" + } + }, + "real": { + "title": "Real", + "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 ``symbols`` and the first dimension of ``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" + ], + "type": "array", + "items": { + "type": "boolean" + } + }, + "atom_labels": { + "title": "Atom Labels", + "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 ``comments`` field for general human-consumable text to affix to the molecule.", + "shape": [ + "nat" + ], + "type": "array", + "items": { + "type": "string" + } + }, + "atomic_numbers": { + "title": "Atomic Numbers", + "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 ``symbols`` and ``real``. Values are inferred from the ``symbols`` list if not explicitly set. Ghostedness should be indicated through ``real`` field, not zeros here.", + "shape": [ + "nat" + ], + "type": "array", + "items": { + "type": "number", + "multipleOf": 1.0 + } + }, + "mass_numbers": { + "title": "Mass Numbers", + "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 ``symbols`` and ``real``. Values are inferred from the most common isotopes of the ``symbols`` list if not explicitly set. If single isotope not (yet) known for an atom, -1 is placeholder.", + "shape": [ + "nat" + ], + "type": "array", + "items": { + "type": "number", + "multipleOf": 1.0 + } + }, + "connectivity": { + "title": "Connectivity", + "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 ``symbols`` and ``real``. Bonds may be freely reordered and inverted.", + "minItems": 1, + "type": "array", + "items": { + "type": "array", + "items": [ + { + "type": "integer", + "minimum": 0 + }, + { + "type": "integer", + "minimum": 0 + }, + { + "type": "number", + "minimum": 0, + "maximum": 5 + } + ] + } + }, + "fragments": { + "title": "Fragments", + "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 ``fragment_charges`` and ``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", + "" + ], + "type": "array", + "items": { + "type": "array", + "items": { + "type": "number", + "multipleOf": 1.0 + } + } + }, + "fragment_charges": { + "title": "Fragment Charges", + "description": "The total charge of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", + "shape": [ + "nfr" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "fragment_multiplicities": { + "title": "Fragment Multiplicities", + "description": "The multiplicity of each fragment in the ``fragments`` list. The index of this list matches the 0-index indices of ``fragments`` list. Will be filled in based on a set of rules if not provided (and ``fragments`` are specified).", + "shape": [ + "nfr" + ], + "type": "array", + "items": { + "type": "integer" + } + }, + "fix_com": { + "title": "Fix Com", + "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 ``geometry`` than the one provided. 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).", + "default": false, + "type": "boolean" + }, + "fix_orientation": { + "title": "Fix Orientation", + "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 ``geometry`` than the one provided. 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).", + "default": false, + "type": "boolean" + }, + "fix_symmetry": { + "title": "Fix Symmetry", + "description": "Maximal point group symmetry which ``geometry`` should be treated. Lowercase.", + "type": "string" + }, + "provenance": { + "title": "Provenance", + "description": "The provenance information about how this Molecule (and its attributes) were generated, provided, and manipulated.", + "allOf": [ + { + "$ref": "#/definitions/Provenance" + } + ] + }, + "id": { + "title": "Id", + "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." + }, + "extras": { + "title": "Extras", + "description": "Additional information to bundle with the molecule. Use for schema development and scratch space.", + "type": "object" + } + }, + "required": [ + "symbols", + "geometry" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "DriverEnum": { + "title": "DriverEnum", + "description": "Allowed computation driver values.", + "enum": [ + "energy", + "gradient", + "hessian", + "properties" + ], + "type": "string" + }, + "HarmonicType": { + "title": "HarmonicType", + "description": "The angular momentum representation of a shell.", + "enum": [ + "spherical", + "cartesian" + ], + "type": "string" + }, + "ElectronShell": { + "title": "ElectronShell", + "description": "Information for a single electronic shell.", + "type": "object", + "properties": { + "angular_momentum": { + "title": "Angular Momentum", + "description": "Angular momentum for the shell as an array of integers.", + "minItems": 1, + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + }, + "uniqueItems": true + }, + "harmonic_type": { + "$ref": "#/definitions/HarmonicType" + }, + "exponents": { + "title": "Exponents", + "description": "Exponents for the contracted shell.", + "minItems": 1, + "type": "array", + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + } + }, + "coefficients": { + "title": "Coefficients", + "description": "General contraction coefficients for the shell; individual list components will be the individual segment contraction coefficients.", + "minItems": 1, + "type": "array", + "items": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "minItems": 1 + } + } + }, + "required": [ + "angular_momentum", + "harmonic_type", + "exponents", + "coefficients" + ], + "additionalProperties": false + }, + "ECPType": { + "title": "ECPType", + "description": "The type of the ECP potential.", + "enum": [ + "scalar", + "spinorbit" + ], + "type": "string" + }, + "ECPPotential": { + "title": "ECPPotential", + "description": "Information for a single ECP potential.", + "type": "object", + "properties": { + "ecp_type": { + "$ref": "#/definitions/ECPType" + }, + "angular_momentum": { + "title": "Angular Momentum", + "description": "Angular momentum for the potential as an array of integers.", + "minItems": 1, + "type": "array", + "items": { + "type": "integer", + "minimum": 0 + }, + "uniqueItems": true + }, + "r_exponents": { + "title": "R Exponents", + "description": "Exponents of the 'r' term.", + "minItems": 1, + "type": "array", + "items": { + "type": "integer" + } + }, + "gaussian_exponents": { + "title": "Gaussian Exponents", + "description": "Exponents of the 'gaussian' term.", + "minItems": 1, + "type": "array", + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + } + }, + "coefficients": { + "title": "Coefficients", + "description": "General contraction coefficients for the potential; individual list components will be the individual segment contraction coefficients.", + "minItems": 1, + "type": "array", + "items": { + "type": "array", + "items": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "string" + } + ] + }, + "minItems": 1 + } + } + }, + "required": [ + "ecp_type", + "angular_momentum", + "r_exponents", + "gaussian_exponents", + "coefficients" + ], + "additionalProperties": false + }, + "BasisCenter": { + "title": "BasisCenter", + "description": "Data for a single atom/center in a basis set.\n\nParameters\n----------\nelectron_shells : :class:`ElectronShell`\n Electronic shells for this center.\necp_electrons : int, Default: 0\n Number of electrons replaced by ECP, MCP, or other field potentials.\necp_potentials : :class:`ECPPotential`, Optional\n ECPs, MCPs, or other field potentials for this center.", + "type": "object", + "properties": { + "electron_shells": { + "title": "Electron Shells", + "description": "Electronic shells for this center.", + "minItems": 1, + "type": "array", + "items": { + "$ref": "#/definitions/ElectronShell" + }, + "uniqueItems": true + }, + "ecp_electrons": { + "title": "Ecp Electrons", + "description": "Number of electrons replaced by ECP, MCP, or other field potentials.", + "default": 0, + "type": "integer" + }, + "ecp_potentials": { + "title": "Ecp Potentials", + "description": "ECPs, MCPs, or other field potentials for this center.", + "minItems": 1, + "type": "array", + "items": { + "$ref": "#/definitions/ECPPotential" + }, + "uniqueItems": true + } + }, + "required": [ + "electron_shells" + ], + "additionalProperties": false + }, + "BasisSet": { + "title": "BasisSet", + "description": "A quantum chemistry basis description.\n\n\nParameters\n----------\nschema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nname : str\n The standard basis name if available (e.g., 'cc-pVDZ').\ndescription : str, Optional\n Brief description of the basis set.\ncenter_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\natom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\nnbf : int, Optional\n The number of basis functions. Use for convenience or as checksum", + "type": "object", + "properties": { + "schema_name": { + "title": "Schema Name", + "description": "The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.", + "default": "qcschema_basis", + "pattern": "^(qcschema_basis)$", + "type": "string" + }, + "schema_version": { + "title": "Schema Version", + "description": "The version number of ``schema_name`` to which this model conforms.", + "default": 1, + "type": "integer" + }, + "name": { + "title": "Name", + "description": "The standard basis name if available (e.g., 'cc-pVDZ').", + "type": "string" + }, + "description": { + "title": "Description", + "description": "Brief description of the basis set.", + "type": "string" + }, + "center_data": { + "title": "Center Data", + "description": "Shared basis data for all atoms/centers in the parent molecule", + "type": "object", + "additionalProperties": { + "$ref": "#/definitions/BasisCenter" + } + }, + "atom_map": { + "title": "Atom Map", + "description": "Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.", + "type": "array", + "items": { + "type": "string" + } + }, + "nbf": { + "title": "Nbf", + "description": "The number of basis functions. Use for convenience or as checksum", + "type": "integer" + } + }, + "required": [ + "name", + "center_data", + "atom_map" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "Model": { + "title": "Model", + "description": "The computational molecular sciences model to run.\n\nParameters\n----------\nmethod : str\n The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.\nbasis : Union[str, :class:`BasisSet`], Optional\n 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.", + "type": "object", + "properties": { + "method": { + "title": "Method", + "description": "The quantum chemistry method to evaluate (e.g., B3LYP, PBE, ...). For MM, name of the force field.", + "type": "string" + }, + "basis": { + "title": "Basis", + "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.", + "anyOf": [ + { + "type": "string" + }, + { + "$ref": "#/definitions/BasisSet" + } + ] + } + }, + "required": [ + "method" + ] + }, + "WavefunctionProtocolEnum": { + "title": "WavefunctionProtocolEnum", + "description": "Wavefunction to keep from a computation.", + "enum": [ + "all", + "orbitals_and_eigenvalues", + "return_results", + "none" + ], + "type": "string" + }, + "ErrorCorrectionProtocol": { + "title": "ErrorCorrectionProtocol", + "description": "Configuration for how QCEngine handles error correction\n\n WARNING: These protocols are currently experimental and only supported by NWChem tasks\n\n\nParameters\n----------\ndefault_policy : bool, Default: True\n Whether to allow error corrections to be used if not directly specified in `policies`\npolicies : name='policies' type=Optional[Mapping[str, bool]] required=False default=None, Optional\n 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.", + "type": "object", + "properties": { + "default_policy": { + "title": "Default Policy", + "description": "Whether to allow error corrections to be used if not directly specified in `policies`", + "default": true, + "type": "boolean" + }, + "policies": { + "title": "Policies", + "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.", + "type": "object", + "additionalProperties": { + "type": "boolean" + } + } + }, + "additionalProperties": false + }, + "AtomicResultProtocols": { + "title": "AtomicResultProtocols", + "description": "Protocols regarding the manipulation of computational result data.\n\nParameters\n----------\nwavefunction : {all,orbitals_and_eigenvalues,return_results,none}, Default: none\n Wavefunction to keep from a computation.\nstdout : bool, Default: True\n Primary output file to keep from the computation\nerror_correction : :class:`ErrorCorrectionProtocol`, Optional\n Policies for error correction", + "type": "object", + "properties": { + "wavefunction": { + "$ref": "#/definitions/WavefunctionProtocolEnum" + }, + "stdout": { + "title": "Stdout", + "description": "Primary output file to keep from the computation", + "default": true, + "type": "boolean" + }, + "error_correction": { + "title": "Error Correction", + "description": "Policies for error correction", + "allOf": [ + { + "$ref": "#/definitions/ErrorCorrectionProtocol" + } + ] + } + }, + "additionalProperties": false + }, + "AtomicInput": { + "title": "AtomicInput", + "description": "The MolSSI Quantum Chemistry Schema\n\nParameters\n----------\nid : str, Optional\n The optional ID for the computation.\nschema_name : ConstrainedStrValue, Default: qcschema_input\n The QCSchema specification this model conforms to. Explicitly fixed as qcschema_input.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nmolecule : :class:`Molecule`\n The molecule to use in the computation.\ndriver : {energy,gradient,hessian,properties}\n Allowed computation driver values.\nmodel : :class:`Model`\n The computational molecular sciences model to run.\nkeywords : Dict[str, Any], Default: {}\n The program-specific keywords to be used.\nprotocols : :class:`AtomicResultProtocols`, Optional\n Protocols regarding the manipulation of computational result data.\nextras : Dict[str, Any], Default: {}\n Additional information to bundle with the computation. Use for schema development and scratch space.\nprovenance : :class:`Provenance`, Optional\n Provenance information.", + "type": "object", + "properties": { + "id": { + "title": "Id", + "description": "The optional ID for the computation.", + "type": "string" + }, + "schema_name": { + "title": "Schema Name", + "description": "The QCSchema specification this model conforms to. Explicitly fixed as qcschema_input.", + "default": "qcschema_input", + "pattern": "^(qc_?schema_input)$", + "type": "string" + }, + "schema_version": { + "title": "Schema Version", + "description": "The version number of ``schema_name`` to which this model conforms.", + "default": 1, + "type": "integer" + }, + "molecule": { + "title": "Molecule", + "description": "The molecule to use in the computation.", + "allOf": [ + { + "$ref": "#/definitions/Molecule" + } + ] + }, + "driver": { + "$ref": "#/definitions/DriverEnum" + }, + "model": { + "title": "Model", + "description": "The computational molecular sciences model to run.", + "allOf": [ + { + "$ref": "#/definitions/Model" + } + ] + }, + "keywords": { + "title": "Keywords", + "description": "The program-specific keywords to be used.", + "default": {}, + "type": "object" + }, + "protocols": { + "title": "Protocols", + "description": "Protocols regarding the manipulation of computational result data.", + "default": {}, + "allOf": [ + { + "$ref": "#/definitions/AtomicResultProtocols" + } + ] + }, + "extras": { + "title": "Extras", + "description": "Additional information to bundle with the computation. Use for schema development and scratch space.", + "default": {}, + "type": "object" + }, + "provenance": { + "title": "Provenance", + "description": "Provenance information.", + "allOf": [ + { + "$ref": "#/definitions/Provenance" + } + ] + } + }, + "required": [ + "molecule", + "driver", + "model" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-04/schema#" + }, + "AtomicResultProperties": { + "title": "AtomicResultProperties", + "description": "Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n Notes\n -----\n All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n nao: number of atomic orbitals = calcinfo_nbasis\n nmo: number of molecular orbitals\n\n\nParameters\n----------\ncalcinfo_nbasis : int, Optional\n The number of basis functions for the computation.\ncalcinfo_nmo : int, Optional\n The number of molecular orbitals for the computation.\ncalcinfo_nalpha : int, Optional\n The number of alpha electrons in the computation.\ncalcinfo_nbeta : int, Optional\n The number of beta electrons in the computation.\ncalcinfo_natom : int, Optional\n The number of atoms in the computation.\nnuclear_repulsion_energy : float, Optional\n The nuclear repulsion energy.\nreturn_energy : float, Optional\n The energy of the requested method, identical to ``return_result`` for ``driver=energy`` computations.\nscf_one_electron_energy : float, Optional\n The one-electron (core Hamiltonian) energy contribution to the total SCF energy.\nscf_two_electron_energy : float, Optional\n The two-electron energy contribution to the total SCF energy.\nscf_vv10_energy : float, Optional\n The VV10 functional energy contribution to the total SCF energy.\nscf_xc_energy : float, Optional\n The functional (XC) energy contribution to the total SCF energy.\nscf_dispersion_correction_energy : float, Optional\n The dispersion correction appended to an underlying functional when a DFT-D method is requested.\nscf_dipole_moment : Array, Optional\n The SCF X, Y, and Z dipole components\nscf_quadrupole_moment : Array, Optional\n The quadrupole components (redundant; 6 unique).\nscf_total_energy : float, Optional\n The total electronic energy of the SCF stage of the calculation.\nscf_iterations : int, Optional\n The number of SCF iterations taken before convergence.\nmp2_same_spin_correlation_energy : float, Optional\n The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.\nmp2_opposite_spin_correlation_energy : float, Optional\n The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.\nmp2_singles_energy : float, Optional\n The singles portion of the MP2 correlation energy. Zero except in ROHF.\nmp2_doubles_energy : float, Optional\n The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations.\nmp2_total_correlation_energy : float, Optional\n The MP2 correlation energy.\nmp2_correlation_energy : float, Optional\n The MP2 correlation energy.\nmp2_total_energy : float, Optional\n The total MP2 energy (MP2 correlation energy + HF energy).\nmp2_dipole_moment : Array, Optional\n The MP2 X, Y, and Z dipole components.\nccsd_same_spin_correlation_energy : float, Optional\n The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.\nccsd_opposite_spin_correlation_energy : float, Optional\n The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.\nccsd_singles_energy : float, Optional\n The singles portion of the CCSD correlation energy. Zero except in ROHF.\nccsd_doubles_energy : float, Optional\n The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations.\nccsd_correlation_energy : float, Optional\n The CCSD correlation energy.\nccsd_total_energy : float, Optional\n The total CCSD energy (CCSD correlation energy + HF energy).\nccsd_dipole_moment : Array, Optional\n The CCSD X, Y, and Z dipole components.\nccsd_iterations : int, Optional\n The number of CCSD iterations taken before convergence.\nccsd_prt_pr_correlation_energy : float, Optional\n The CCSD(T) correlation energy.\nccsd_prt_pr_total_energy : float, Optional\n The total CCSD(T) energy (CCSD(T) correlation energy + HF energy).\nccsd_prt_pr_dipole_moment : Array, Optional\n The CCSD(T) X, Y, and Z dipole components.\nccsdt_correlation_energy : float, Optional\n The CCSDT correlation energy.\nccsdt_total_energy : float, Optional\n The total CCSDT energy (CCSDT correlation energy + HF energy).\nccsdt_dipole_moment : Array, Optional\n The CCSDT X, Y, and Z dipole components.\nccsdt_iterations : int, Optional\n The number of CCSDT iterations taken before convergence.\nccsdtq_correlation_energy : float, Optional\n The CCSDTQ correlation energy.\nccsdtq_total_energy : float, Optional\n The total CCSDTQ energy (CCSDTQ correlation energy + HF energy).\nccsdtq_dipole_moment : Array, Optional\n The CCSDTQ X, Y, and Z dipole components.\nccsdtq_iterations : int, Optional\n The number of CCSDTQ iterations taken before convergence.", + "type": "object", + "properties": { + "calcinfo_nbasis": { + "title": "Calcinfo Nbasis", + "description": "The number of basis functions for the computation.", + "type": "integer" + }, + "calcinfo_nmo": { + "title": "Calcinfo Nmo", + "description": "The number of molecular orbitals for the computation.", + "type": "integer" + }, + "calcinfo_nalpha": { + "title": "Calcinfo Nalpha", + "description": "The number of alpha electrons in the computation.", + "type": "integer" + }, + "calcinfo_nbeta": { + "title": "Calcinfo Nbeta", + "description": "The number of beta electrons in the computation.", + "type": "integer" + }, + "calcinfo_natom": { + "title": "Calcinfo Natom", + "description": "The number of atoms in the computation.", + "type": "integer" + }, + "nuclear_repulsion_energy": { + "title": "Nuclear Repulsion Energy", + "description": "The nuclear repulsion energy.", + "type": "number" + }, + "return_energy": { + "title": "Return Energy", + "description": "The energy of the requested method, identical to ``return_result`` for ``driver=energy`` computations.", + "type": "number" + }, + "scf_one_electron_energy": { + "title": "Scf One Electron Energy", + "description": "The one-electron (core Hamiltonian) energy contribution to the total SCF energy.", + "units": "E_h", + "type": "number" + }, + "scf_two_electron_energy": { + "title": "Scf Two Electron Energy", + "description": "The two-electron energy contribution to the total SCF energy.", + "units": "E_h", + "type": "number" + }, + "scf_vv10_energy": { + "title": "Scf Vv10 Energy", + "description": "The VV10 functional energy contribution to the total SCF energy.", + "units": "E_h", + "type": "number" + }, + "scf_xc_energy": { + "title": "Scf Xc Energy", + "description": "The functional (XC) energy contribution to the total SCF energy.", + "units": "E_h", + "type": "number" + }, + "scf_dispersion_correction_energy": { + "title": "Scf Dispersion Correction Energy", + "description": "The dispersion correction appended to an underlying functional when a DFT-D method is requested.", + "units": "E_h", + "type": "number" + }, + "scf_dipole_moment": { + "title": "Scf Dipole Moment", + "description": "The SCF X, Y, and Z dipole components", + "units": "e a0", + "type": "array", + "items": { + "type": "number" + } + }, + "scf_quadrupole_moment": { + "title": "Scf Quadrupole Moment", + "description": "The quadrupole components (redundant; 6 unique).", + "shape": [ + 3, + 3 + ], + "units": "e a0^2", + "type": "array", + "items": { + "type": "number" + } + }, + "scf_total_energy": { + "title": "Scf Total Energy", + "description": "The total electronic energy of the SCF stage of the calculation.", + "units": "E_h", + "type": "number" + }, + "scf_iterations": { + "title": "Scf Iterations", + "description": "The number of SCF iterations taken before convergence.", + "type": "integer" + }, + "mp2_same_spin_correlation_energy": { + "title": "Mp2 Same Spin Correlation Energy", + "description": "The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.", + "units": "E_h", + "type": "number" + }, + "mp2_opposite_spin_correlation_energy": { + "title": "Mp2 Opposite Spin Correlation Energy", + "description": "The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.", + "units": "E_h", + "type": "number" + }, + "mp2_singles_energy": { + "title": "Mp2 Singles Energy", + "description": "The singles portion of the MP2 correlation energy. Zero except in ROHF.", + "units": "E_h", + "type": "number" + }, + "mp2_doubles_energy": { + "title": "Mp2 Doubles Energy", + "description": "The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations.", + "units": "E_h", + "type": "number" + }, + "mp2_total_correlation_energy": { + "title": "Mp2 Total Correlation Energy", + "description": "The MP2 correlation energy.", + "type": "number" + }, + "mp2_correlation_energy": { + "title": "Mp2 Correlation Energy", + "description": "The MP2 correlation energy.", + "units": "E_h", + "type": "number" + }, + "mp2_total_energy": { + "title": "Mp2 Total Energy", + "description": "The total MP2 energy (MP2 correlation energy + HF energy).", + "units": "E_h", + "type": "number" + }, + "mp2_dipole_moment": { + "title": "Mp2 Dipole Moment", + "description": "The MP2 X, Y, and Z dipole components.", + "shape": [ + 3 + ], + "units": "e a0", + "type": "array", + "items": { + "type": "number" + } + }, + "ccsd_same_spin_correlation_energy": { + "title": "Ccsd Same Spin Correlation Energy", + "description": "The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling.", + "units": "E_h", + "type": "number" + }, + "ccsd_opposite_spin_correlation_energy": { + "title": "Ccsd Opposite Spin Correlation Energy", + "description": "The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling.", + "units": "E_h", + "type": "number" + }, + "ccsd_singles_energy": { + "title": "Ccsd Singles Energy", + "description": "The singles portion of the CCSD correlation energy. Zero except in ROHF.", + "units": "E_h", + "type": "number" + }, + "ccsd_doubles_energy": { + "title": "Ccsd Doubles Energy", + "description": "The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations.", + "units": "E_h", + "type": "number" + }, + "ccsd_correlation_energy": { + "title": "Ccsd Correlation Energy", + "description": "The CCSD correlation energy.", + "units": "E_h", + "type": "number" + }, + "ccsd_total_energy": { + "title": "Ccsd Total Energy", + "description": "The total CCSD energy (CCSD correlation energy + HF energy).", + "units": "E_h", + "type": "number" + }, + "ccsd_dipole_moment": { + "title": "Ccsd Dipole Moment", + "description": "The CCSD X, Y, and Z dipole components.", + "shape": [ + 3 + ], + "units": "e a0", + "type": "array", + "items": { + "type": "number" + } + }, + "ccsd_iterations": { + "title": "Ccsd Iterations", + "description": "The number of CCSD iterations taken before convergence.", + "type": "integer" + }, + "ccsd_prt_pr_correlation_energy": { + "title": "Ccsd Prt Pr Correlation Energy", + "description": "The CCSD(T) correlation energy.", + "units": "E_h", + "type": "number" + }, + "ccsd_prt_pr_total_energy": { + "title": "Ccsd Prt Pr Total Energy", + "description": "The total CCSD(T) energy (CCSD(T) correlation energy + HF energy).", + "units": "E_h", + "type": "number" + }, + "ccsd_prt_pr_dipole_moment": { + "title": "Ccsd Prt Pr Dipole Moment", + "description": "The CCSD(T) X, Y, and Z dipole components.", + "shape": [ + 3 + ], + "units": "e a0", + "type": "array", + "items": { + "type": "number" + } + }, + "ccsdt_correlation_energy": { + "title": "Ccsdt Correlation Energy", + "description": "The CCSDT correlation energy.", + "units": "E_h", + "type": "number" + }, + "ccsdt_total_energy": { + "title": "Ccsdt Total Energy", + "description": "The total CCSDT energy (CCSDT correlation energy + HF energy).", + "units": "E_h", + "type": "number" + }, + "ccsdt_dipole_moment": { + "title": "Ccsdt Dipole Moment", + "description": "The CCSDT X, Y, and Z dipole components.", + "shape": [ + 3 + ], + "units": "e a0", + "type": "array", + "items": { + "type": "number" + } + }, + "ccsdt_iterations": { + "title": "Ccsdt Iterations", + "description": "The number of CCSDT iterations taken before convergence.", + "type": "integer" + }, + "ccsdtq_correlation_energy": { + "title": "Ccsdtq Correlation Energy", + "description": "The CCSDTQ correlation energy.", + "units": "E_h", + "type": "number" + }, + "ccsdtq_total_energy": { + "title": "Ccsdtq Total Energy", + "description": "The total CCSDTQ energy (CCSDTQ correlation energy + HF energy).", + "units": "E_h", + "type": "number" + }, + "ccsdtq_dipole_moment": { + "title": "Ccsdtq Dipole Moment", + "description": "The CCSDTQ X, Y, and Z dipole components.", + "shape": [ + 3 + ], + "units": "e a0", + "type": "array", + "items": { + "type": "number" + } + }, + "ccsdtq_iterations": { + "title": "Ccsdtq Iterations", + "description": "The number of CCSDTQ iterations taken before convergence.", + "type": "integer" + } + }, + "additionalProperties": false + }, + "WavefunctionProperties": { + "title": "WavefunctionProperties", + "description": "Wavefunction properties resulting from a computation. Matrix quantities are stored in column-major order. Presence and contents configurable by protocol.\n\nParameters\n----------\nbasis : :class:`BasisSet`\n\n A quantum chemistry basis description.\n\n\n Parameters\n ----------\n schema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\n schema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\n name : str\n The standard basis name if available (e.g., 'cc-pVDZ').\n description : str, Optional\n Brief description of the basis set.\n center_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\n atom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\n nbf : int, Optional\n The number of basis functions. Use for convenience or as checksum\n\nrestricted : bool\n If the computation was restricted or not (alpha == beta). If True, all beta quantities are skipped.\nh_core_a : Array, Optional\n Alpha-spin core (one-electron) Hamiltonian in the AO basis.\nh_core_b : Array, Optional\n Beta-spin core (one-electron) Hamiltonian in the AO basis.\nh_effective_a : Array, Optional\n Alpha-spin effective core (one-electron) Hamiltonian in the AO basis.\nh_effective_b : Array, Optional\n Beta-spin effective core (one-electron) Hamiltonian in the AO basis\nscf_orbitals_a : Array, Optional\n SCF alpha-spin orbitals in the AO basis.\nscf_orbitals_b : Array, Optional\n SCF beta-spin orbitals in the AO basis.\nscf_density_a : Array, Optional\n SCF alpha-spin density matrix in the AO basis.\nscf_density_b : Array, Optional\n SCF beta-spin density matrix in the AO basis.\nscf_fock_a : Array, Optional\n SCF alpha-spin Fock matrix in the AO basis.\nscf_fock_b : Array, Optional\n SCF beta-spin Fock matrix in the AO basis.\nscf_eigenvalues_a : Array, Optional\n SCF alpha-spin orbital eigenvalues.\nscf_eigenvalues_b : Array, Optional\n SCF beta-spin orbital eigenvalues.\nscf_occupations_a : Array, Optional\n SCF alpha-spin orbital occupations.\nscf_occupations_b : Array, Optional\n SCF beta-spin orbital occupations.\nscf_coulomb_a : Array, Optional\n SCF alpha-spin Coulomb matrix in the AO basis.\nscf_coulomb_b : Array, Optional\n SCF beta-spin Coulomb matrix in the AO basis.\nscf_exchange_a : Array, Optional\n SCF alpha-spin exchange matrix in the AO basis.\nscf_exchange_b : Array, Optional\n SCF beta-spin exchange matrix in the AO basis.\nlocalized_orbitals_a : Array, Optional\n Localized alpha-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.\nlocalized_orbitals_b : Array, Optional\n Localized beta-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.\nlocalized_fock_a : Array, Optional\n Alpha-spin Fock matrix in the localized molecular orbital basis. All nmo orbitals are included, even if only a subset were localized.\nlocalized_fock_b : Array, Optional\n Beta-spin Fock matrix in the localized molecular orbital basis. All nmo orbitals are included, even if only a subset were localized.\norbitals_a : str, Optional\n Index to the alpha-spin orbitals of the primary return.\norbitals_b : str, Optional\n Index to the beta-spin orbitals of the primary return.\ndensity_a : str, Optional\n Index to the alpha-spin density of the primary return.\ndensity_b : str, Optional\n Index to the beta-spin density of the primary return.\nfock_a : str, Optional\n Index to the alpha-spin Fock matrix of the primary return.\nfock_b : str, Optional\n Index to the beta-spin Fock matrix of the primary return.\neigenvalues_a : str, Optional\n Index to the alpha-spin orbital eigenvalues of the primary return.\neigenvalues_b : str, Optional\n Index to the beta-spin orbital eigenvalues of the primary return.\noccupations_a : str, Optional\n Index to the alpha-spin orbital occupations of the primary return.\noccupations_b : str, Optional\n Index to the beta-spin orbital occupations of the primary return.", + "type": "object", + "properties": { + "basis": { + "title": "Basis", + "description": "\nA quantum chemistry basis description.\n\n\nParameters\n----------\nschema_name : ConstrainedStrValue, Default: qcschema_basis\n The QCSchema specification to which this model conforms. Explicitly fixed as qcschema_basis.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nname : str\n The standard basis name if available (e.g., 'cc-pVDZ').\ndescription : str, Optional\n Brief description of the basis set.\ncenter_data : :class:`BasisCenter`\n Shared basis data for all atoms/centers in the parent molecule\natom_map : List[str]\n Mapping of all atoms/centers in the parent molecule to centers in ``center_data``.\nnbf : int, Optional\n The number of basis functions. Use for convenience or as checksum\n", + "allOf": [ + { + "$ref": "#/definitions/BasisSet" + } + ] + }, + "restricted": { + "title": "Restricted", + "description": "If the computation was restricted or not (alpha == beta). If True, all beta quantities are skipped.", + "type": "boolean" + }, + "h_core_a": { + "title": "H Core A", + "description": "Alpha-spin core (one-electron) Hamiltonian in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "h_core_b": { + "title": "H Core B", + "description": "Beta-spin core (one-electron) Hamiltonian in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "h_effective_a": { + "title": "H Effective A", + "description": "Alpha-spin effective core (one-electron) Hamiltonian in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "h_effective_b": { + "title": "H Effective B", + "description": "Beta-spin effective core (one-electron) Hamiltonian in the AO basis", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_orbitals_a": { + "title": "Scf Orbitals A", + "description": "SCF alpha-spin orbitals in the AO basis.", + "shape": [ + "nao", + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_orbitals_b": { + "title": "Scf Orbitals B", + "description": "SCF beta-spin orbitals in the AO basis.", + "shape": [ + "nao", + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_density_a": { + "title": "Scf Density A", + "description": "SCF alpha-spin density matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_density_b": { + "title": "Scf Density B", + "description": "SCF beta-spin density matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_fock_a": { + "title": "Scf Fock A", + "description": "SCF alpha-spin Fock matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_fock_b": { + "title": "Scf Fock B", + "description": "SCF beta-spin Fock matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_eigenvalues_a": { + "title": "Scf Eigenvalues A", + "description": "SCF alpha-spin orbital eigenvalues.", + "shape": [ + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_eigenvalues_b": { + "title": "Scf Eigenvalues B", + "description": "SCF beta-spin orbital eigenvalues.", + "shape": [ + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_occupations_a": { + "title": "Scf Occupations A", + "description": "SCF alpha-spin orbital occupations.", + "shape": [ + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_occupations_b": { + "title": "Scf Occupations B", + "description": "SCF beta-spin orbital occupations.", + "shape": [ + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_coulomb_a": { + "title": "Scf Coulomb A", + "description": "SCF alpha-spin Coulomb matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_coulomb_b": { + "title": "Scf Coulomb B", + "description": "SCF beta-spin Coulomb matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_exchange_a": { + "title": "Scf Exchange A", + "description": "SCF alpha-spin exchange matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "scf_exchange_b": { + "title": "Scf Exchange B", + "description": "SCF beta-spin exchange matrix in the AO basis.", + "shape": [ + "nao", + "nao" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "localized_orbitals_a": { + "title": "Localized Orbitals A", + "description": "Localized alpha-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.", + "shape": [ + "nao", + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "localized_orbitals_b": { + "title": "Localized Orbitals B", + "description": "Localized beta-spin orbitals in the AO basis. All nmo orbitals are included, even if only a subset were localized.", + "shape": [ + "nao", + "nmo" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "localized_fock_a": { + "title": "Localized Fock A", + "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" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "localized_fock_b": { + "title": "Localized Fock B", + "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" + ], + "type": "array", + "items": { + "type": "number" + } + }, + "orbitals_a": { + "title": "Orbitals A", + "description": "Index to the alpha-spin orbitals of the primary return.", + "type": "string" + }, + "orbitals_b": { + "title": "Orbitals B", + "description": "Index to the beta-spin orbitals of the primary return.", + "type": "string" + }, + "density_a": { + "title": "Density A", + "description": "Index to the alpha-spin density of the primary return.", + "type": "string" + }, + "density_b": { + "title": "Density B", + "description": "Index to the beta-spin density of the primary return.", + "type": "string" + }, + "fock_a": { + "title": "Fock A", + "description": "Index to the alpha-spin Fock matrix of the primary return.", + "type": "string" + }, + "fock_b": { + "title": "Fock B", + "description": "Index to the beta-spin Fock matrix of the primary return.", + "type": "string" + }, + "eigenvalues_a": { + "title": "Eigenvalues A", + "description": "Index to the alpha-spin orbital eigenvalues of the primary return.", + "type": "string" + }, + "eigenvalues_b": { + "title": "Eigenvalues B", + "description": "Index to the beta-spin orbital eigenvalues of the primary return.", + "type": "string" + }, + "occupations_a": { + "title": "Occupations A", + "description": "Index to the alpha-spin orbital occupations of the primary return.", + "type": "string" + }, + "occupations_b": { + "title": "Occupations B", + "description": "Index to the beta-spin orbital occupations of the primary return.", + "type": "string" + } + }, + "required": [ + "basis", + "restricted" + ], + "additionalProperties": false + }, + "ComputeError": { + "title": "ComputeError", + "description": "Complete description of the error from an unsuccessful program execution.\n\nParameters\n----------\nerror_type : str\n The type of error which was thrown. Restrict this field to short classifiers e.g. 'input_error'. Suggested classifiers: https://github.com/MolSSI/QCEngine/blob/master/qcengine/exceptions.py\nerror_message : str\n Text associated with the thrown error. This is often the backtrace, but it can contain additional information as well.\nextras : Dict[str, Any], Optional\n Additional information to bundle with the error.", + "type": "object", + "properties": { + "error_type": { + "title": "Error Type", + "description": "The type of error which was thrown. Restrict this field to short classifiers e.g. 'input_error'. Suggested classifiers: https://github.com/MolSSI/QCEngine/blob/master/qcengine/exceptions.py", + "type": "string" + }, + "error_message": { + "title": "Error Message", + "description": "Text associated with the thrown error. This is often the backtrace, but it can contain additional information as well.", + "type": "string" + }, + "extras": { + "title": "Extras", + "description": "Additional information to bundle with the error.", + "type": "object" + } + }, + "required": [ + "error_type", + "error_message" + ], + "additionalProperties": false + }, + "AtomicResult": { + "title": "AtomicResult", + "description": "Results from a CMS program execution.\n\nParameters\n----------\nid : str, Optional\n The optional ID for the computation.\nschema_name : ConstrainedStrValue, Default: qcschema_output\n The QCSchema specification this model conforms to. Explicitly fixed as qcschema_output.\nschema_version : int, Default: 1\n The version number of ``schema_name`` to which this model conforms.\nmolecule : :class:`Molecule`\n The molecule to use in the computation.\ndriver : {energy,gradient,hessian,properties}\n Allowed computation driver values.\nmodel : :class:`Model`\n The computational molecular sciences model to run.\nkeywords : Dict[str, Any], Default: {}\n The program-specific keywords to be used.\nprotocols : :class:`AtomicResultProtocols`, Optional\n Protocols regarding the manipulation of computational result data.\nextras : Dict[str, Any], Default: {}\n Additional information to bundle with the computation. Use for schema development and scratch space.\nprovenance : :class:`Provenance`\n Provenance information.\nproperties : :class:`AtomicResultProperties`\n Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n Notes\n -----\n All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n nao: number of atomic orbitals = calcinfo_nbasis\n nmo: number of molecular orbitals\n \nwavefunction : :class:`WavefunctionProperties`, Optional\n Wavefunction properties resulting from a computation. Matrix quantities are stored in column-major order. Presence and contents configurable by protocol.\nreturn_result : Union[float, Array, Dict[str, Any]]\n The primary return specified by the ``driver`` field. Scalar if energy; array if gradient or hessian; dictionary with property keys if properties.\nstdout : str, Optional\n The primary logging output of the program, whether natively standard output or a file. Presence vs. absence (or null-ness?) configurable by protocol.\nstderr : str, Optional\n The standard error of the program execution.\nsuccess : bool\n The success of program execution. If False, other fields may be blank.\nerror : :class:`ComputeError`, Optional\n Complete description of the error from an unsuccessful program execution.", + "type": "object", + "properties": { + "id": { + "title": "Id", + "description": "The optional ID for the computation.", + "type": "string" + }, + "schema_name": { + "title": "Schema Name", + "description": "The QCSchema specification this model conforms to. Explicitly fixed as qcschema_output.", + "default": "qcschema_output", + "pattern": "^(qc_?schema_output)$", + "type": "string" + }, + "schema_version": { + "title": "Schema Version", + "description": "The version number of ``schema_name`` to which this model conforms.", + "default": 1, + "type": "integer" + }, + "molecule": { + "title": "Molecule", + "description": "The molecule to use in the computation.", + "allOf": [ + { + "$ref": "#/definitions/Molecule" + } + ] + }, + "driver": { + "$ref": "#/definitions/DriverEnum" + }, + "model": { + "title": "Model", + "description": "The computational molecular sciences model to run.", + "allOf": [ + { + "$ref": "#/definitions/Model" + } + ] + }, + "keywords": { + "title": "Keywords", + "description": "The program-specific keywords to be used.", + "default": {}, + "type": "object" + }, + "protocols": { + "title": "Protocols", + "description": "Protocols regarding the manipulation of computational result data.", + "default": {}, + "allOf": [ + { + "$ref": "#/definitions/AtomicResultProtocols" + } + ] + }, + "extras": { + "title": "Extras", + "description": "Additional information to bundle with the computation. Use for schema development and scratch space.", + "default": {}, + "type": "object" + }, + "provenance": { + "title": "Provenance", + "description": "Provenance information.", + "allOf": [ + { + "$ref": "#/definitions/Provenance" + } + ] + }, + "properties": { + "title": "Properties", + "description": "Named properties of quantum chemistry computations following the MolSSI QCSchema.\n\n Notes\n -----\n All arrays are stored flat but must be reshapable into the dimensions in attribute ``shape``, with abbreviations as follows:\n nao: number of atomic orbitals = calcinfo_nbasis\n nmo: number of molecular orbitals\n ", + "allOf": [ + { + "$ref": "#/definitions/AtomicResultProperties" + } + ] + }, + "wavefunction": { + "title": "Wavefunction", + "description": "Wavefunction properties resulting from a computation. Matrix quantities are stored in column-major order. Presence and contents configurable by protocol.", + "allOf": [ + { + "$ref": "#/definitions/WavefunctionProperties" + } + ] + }, + "return_result": { + "title": "Return Result", + "description": "The primary return specified by the ``driver`` field. Scalar if energy; array if gradient or hessian; dictionary with property keys if properties.", + "anyOf": [ + { + "type": "number" + }, + { + "type": "array", + "items": { + "type": "number" + } + }, + { + "type": "object" + } + ] + }, + "stdout": { + "title": "Stdout", + "description": "The primary logging output of the program, whether natively standard output or a file. Presence vs. absence (or null-ness?) configurable by protocol.", + "type": "string" + }, + "stderr": { + "title": "Stderr", + "description": "The standard error of the program execution.", + "type": "string" + }, + "success": { + "title": "Success", + "description": "The success of program execution. If False, other fields may be blank.", + "type": "boolean" + }, + "error": { + "title": "Error", + "description": "Complete description of the error from an unsuccessful program execution.", + "allOf": [ + { + "$ref": "#/definitions/ComputeError" + } + ] + } + }, + "required": [ + "molecule", + "driver", + "model", + "provenance", + "properties", + "return_result", + "success" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-04/schema#" + } + } +} diff --git a/qcschema/dev/__init__.py b/qcschema/dev/__init__.py index e69de29..463b0f7 100644 --- a/qcschema/dev/__init__.py +++ b/qcschema/dev/__init__.py @@ -0,0 +1,5 @@ +import json +from pathlib import Path + +fpath = Path(__file__).parent.resolve() / "QCSchema.schema" +qcschema = json.loads(fpath.read_text()) diff --git a/qcschema/dev/basis.py b/qcschema/dev/basis.py deleted file mode 100644 index cb9b3f6..0000000 --- a/qcschema/dev/basis.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -The json-schema for the Basis Set definition -""" - -basis = { - "$schema": "http://json-schema.org/draft-04/schema#", - "name": "qcschema_basis", - "version": "1.dev", - "description": "The MolSSI Quantum Chemistry Basis Set Schema", - "type": "object", - "required": [ - "center_data", - "atom_map", - "name" - ], - "additionalProperties": False, - "properties": { - "schema_name": { - "type": "string", - "pattern": "^(qcschema_basis)$" - }, - "schema_version": { - "type": "integer" - }, - "name": { - "description": "Name of the basis set", - "type": "string" - }, - "description": { - "description": "Brief description of the basis set", - "type": "string" - }, - "center_data": { - "description": "Shared basis data for all atoms/centers in the molecule", - "type": "object", - "additionalProperties": { - "$ref": "#/definitions/center_basis" - } - }, - "atom_map": { - "description": "Mapping of all atoms/centers in the molecule to data in center_data", - "type": "array", - "items": { - "type": "string" - } - } - } -} diff --git a/qcschema/dev/definitions.py b/qcschema/dev/definitions.py deleted file mode 100644 index 25c69f2..0000000 --- a/qcschema/dev/definitions.py +++ /dev/null @@ -1,176 +0,0 @@ -""" -A list of definitions involved in the JSON schema. -""" - -definitions = {} - -definitions["error"] = { - "properties": { - "error_type": { - "description": "The type of error raised.", - "enum": ["convergence_error", "file_error", "memory_error"] - }, - "error_message": { - "description": "A description of the raised error.", - "type": "string" - } - }, - "required": ["error_type", "error_message"], - "description": "The type of error message raised.", - "additionalProperties": False -} - -definitions["provenance"] = { - "properties": { - "creator": { - "description": "The name of the person or program who created this object.", - "type": "string" - }, - "version": { - "description": "The version of the program which created this object, blank otherwise. Suggest that versions be interpretable by PEP 440 (https://www.python.org/dev/peps/pep-0440/).", - "type": "string" - }, - "routine": { - "description": "The routine of the program which created this object, blank otherwise.", - "type": "string" - } - }, - "required": ["creator", "version", "routine"], - "description": "A short provenance of the object.", - "additionalProperties": True -} - -definitions["electron_shell"] = { - "description": "Information for a single electronic shell", - "additionalProperties": False, - "required": [ - "angular_momentum", - "harmonic_type", - "exponents", - "coefficients" - ], - "properties": { - "angular_momentum": { - "description": "Angular momentum (as an array of integers)", - "type": "array", - "minItems": 1, - "uniqueItems": True, - "items": { - "type": "integer", - "minimum": 0 - } - }, - "harmonic_type": { - "description": "Whether this shell is spherical or cartesian", - "type": "string", - "enum": ["spherical", "cartesian"] - }, - "exponents": { - "description": "Exponents for this contracted shell", - "type": "array", - "minItems": 1, - "items": { - "type": "string" - } - }, - "coefficients": { - "description": "General contraction coefficients for this contracted shell", - "type": "array", - "minItems": 1, - "items": { - "description": "Segmented contraction coefficients", - "type": "array", - "minItems": 1, - "items": {"type": "string"} - } - } - } -} - -definitions["ecp_potential"] = { - "description": "ECP potential", - "additionalProperties": False, - "required": [ - "ecp_type", - "angular_momentum", - "r_exponents", - "gaussian_exponents", - "coefficients" - ], - "properties": { - "ecp_type": { - "description": "Type of the ECP Potential", - "type": "string", - "enum": [ "scalar", "spinorbit" ] - }, - "angular_momentum": { - "description": "Angular momentum (as an array of integers)", - "type": "array", - "minItems": 1, - "uniqueItems": True, - "items": { - "type": "integer", - "minimum": 0 - } - }, - "r_exponents": { - "description": "Exponents of the r term", - "type": "array", - "minItems": 1, - "items": { - "type": "integer" - } - }, - "gaussian_exponents": { - "description": "Exponents of the gaussian term", - "type": "array", - "minItems": 1, - "items": { - "type": "string" - } - }, - "coefficients": { - "description": "General contraction coefficients for this potential", - "type": "array", - "minItems": 1, - "items": { - "description": "Segmented contraction coefficients", - "type": "array", - "minItems": 1, - "items": { "type": "string" } - } - } - } -} - -definitions["center_basis"] = { - "description": "Data for a single atom/center in the basis set", - "type": "object", - "additionalProperties": False, - "properties": { - "electron_shells": { - "description": "(Electronic) shells for this element", - "type": "array", - "minItems": 1, - "uniqueItems": True, - "items": { - "$ref": "#/definitions/electron_shell" - } - }, - "ecp_electrons": - { - "description": "Number of electrons replaced by ECP", - "type": "integer", - "minimum": 1 - }, - "ecp_potentials": { - "description": "Effective Core Potential for this element", - "type": "array", - "minItems": 1, - "uniqueItems": True, - "items": { - "$ref": "#/definitions/ecp_potential" - } - } - } -} diff --git a/qcschema/dev/dev_schema.py b/qcschema/dev/dev_schema.py deleted file mode 100644 index 31f2145..0000000 --- a/qcschema/dev/dev_schema.py +++ /dev/null @@ -1,116 +0,0 @@ -""" -Integrates all components of the QC Schema into a single one. -""" - -import copy - -from . import molecule -from . import definitions -from . import properties -from . import basis -from . import wavefunction - -# The base schema definition -base_schema = { - "$schema": "http://json-schema.org/draft-04/schema#", - "name": "qcschema_input", - "version": "1.dev", - "description": "The MolSSI Quantum Chemistry Schema", - "type": "object", - "properties": { - "molecule": molecule.molecule, - "schema_name": { - "type": "string", - "pattern": "^(qc_?schema)$" - }, - "schema_version": { - "type": "integer" - }, - "driver": { - "definition": "The type of computation requested", - "enum": ["energy", "gradient", "hessian"] - }, - "model": { - "definition": "The method and basis specification requested", - "properties": { - "method": { - "type": "string" - }, - "basis": { - "anyOf": [ - basis.basis, - { - "description": "Name of the basis set to apply to the whole molecule", - "type": "string" - }, - ] - } - }, - "required": [ "method", "basis" ], - "description": "The quantum chemistry model to be run." - }, - "keywords": { - "type": "object", - "description": "Program specific parameters to be used." - }, - "provenance": { - "anyOf": [{ - "type": "object", - "$ref": "#/definitions/provenance" - }, { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/provenance" - } - }] - } - }, - "required": ["schema_name", "schema_version", "molecule", "driver", "keywords", "model"], - "definitions": definitions.definitions -} - -# Additional properties to contain in the output -output_properties = { - "properties": properties.properties, - "success": { - "type": "boolean" - }, - "error": { - "definition": "The type and description of error raised.", - "type": "object", - "$ref": "#/definitions/error" - }, - "return_result": { - "definition": "The primary specified return of the requested computation.", - "anyOf": [{ - "type": "number" - }, { - "type": "array", - "items": {"type": "number"} - }] - } -} - -# Snapshot the input dev schema -input_dev_schema = copy.deepcopy(base_schema) -input_dev_schema["name"] = "qcschema_input" -input_dev_schema["properties"]["schema_name"]["pattern"] = "^(qc_?schema_input)$" - -# Snapshot the input dev schema -output_dev_schema = copy.deepcopy(base_schema) -output_dev_schema["name"] = "qcschema_output" -output_dev_schema["properties"].update(output_properties) -output_dev_schema["properties"]["wavefunction"] = wavefunction.output_wavefunction -output_dev_schema["required"].extend(["provenance", "properties", "success", "return_result"]) -output_dev_schema["properties"]["schema_name"]["pattern"] = "^(qc_?schema_output)$" - -# Build out the molecule schema -molecule_dev_schema = copy.deepcopy(molecule.molecule) - -# Build out the basis schema -basis_dev_schema = copy.deepcopy(basis.basis) - -#import json -#print(json.dumps(input_dev_schema, indent=2)) -#print(json.dumps(output_dev_schema, indent=2)) diff --git a/qcschema/dev/molecule.py b/qcschema/dev/molecule.py deleted file mode 100644 index 30bca8f..0000000 --- a/qcschema/dev/molecule.py +++ /dev/null @@ -1,169 +0,0 @@ -""" -The json-schema for the Molecule definition -""" -molecule = { - "$schema": "http://json-schema.org/draft-04/schema#", - "name": "qcschema_molecule", - "version": "2.dev", - "description": "The MolSSI Quantum Chemistry Molecular Schema", - "type": "object", - "properties": { - "schema_name": { - "guidance": "required properties schema_name within molecule block (instead of 'qcschema_[in|out]put' from one level higher) starts with schema_name=qcschema_molecule and schema_version=2", - "type": "string", - "pattern": "^(qcschema_molecule)$" - }, - "schema_version": { - "type": "integer" - }, - "symbols": { - "description": "(nat, ) atom symbols in title case.", - "type": "array", - "items": { - "type": "string" - } - }, - "geometry": { - "description": "(3 * nat, ) vector of XYZ coordinates [a0] of the atoms.", - "guidance": "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).", - "type": "array", - "items": { - "type": "number" - } - }, - "masses": { - "description": "(nat, ) atom masses [u]; canonical weights assumed if not given.", - "type": "array", - "items": { - "type": "number" - } - }, - "atomic_numbers": { - "description": "(nat, ) atomic numbers, nuclear charge for atoms. Ghostedness should be indicated through 'real' field, not zeros here.", - "type": "array", - "items": { - "type": "number", - "multipleOf": 1.0 - } - }, - "mass_numbers": { - "description": "(nat, ) mass numbers for atoms, if known isotope, else -1.", - "type": "array", - "items": { - "type": "number", - "multipleOf": 1.0 - } - }, - "atom_labels": { - "description": "(nat, ) atom labels with any user tagging information.", - "type": "array", - "items": { - "type": "string" - } - }, - "name": { - "description": "The name of the molecule.", - "type": "string" - }, - "comment": { - "description": "Any additional comment one would attach to the molecule.", - "type": "string" - }, - "molecular_charge": { - "description": "The overall charge of the molecule.", - "type": "number", - "default": 0.0 - }, - "molecular_multiplicity": { - "description": "The overall multiplicity of the molecule.", - "type": "number", - "multipleOf": 1.0, - "default": 1 - }, - "real": { - "description": "(nat, ) list describing if atoms are real (T) or ghost (F).", - "type": "array", - "items": { - "type": "boolean" - } - }, - "connectivity": { - "description": "A list describing bonds within a molecule. Each element is a (atom1, atom2, order) tuple.", - "guidance": "Bonds may be freely reordered and inverted.", - "type": "array", - "items": { - "type": "array", - "minItems": 3, - "maxItems": 3, - "items": [ - { - "description": "Atom number (0-indexed) at one end of bond.", - "type": "number", - "multipleOf": 1.0 - }, - { - "description": "Atom number (0-indexed) at other end of bond.", - "type": "number", - "multipleOf": 1.0 - }, - { - "description": "Bond order.", - "type": "number", - "minimum": 0, - "maximum": 5, - } - ] - } - }, - "fragments": { - "description": - "(nfr, ) list of indices (0-indexed) grouping atoms into molecular fragments within the topology.", - "guidance": "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).", - "type": "array", - "items": { - "type": "array", - "items": { - "type": "number", - "multipleOf": 1.0 - } - } - }, - "fragment_charges": { - "description": "(nfr, ) list of charges associated with each fragment tuple.", - "type": "array", - "items": { - "type": "number" - } - }, - "fragment_multiplicities": { - "description": "(nfr, ) list of multiplicities associated with each fragment tuple.", - "type": "array", - "items": { - "type": "number", - "multipleOf": 1.0 - } - }, - "fix_com": { - "description": "Whether translation of geometry is allowed (fix F) or disallowed (fix T).", - "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).", - "type": "boolean", - "default": False - }, - "fix_orientation": { - "description": "Whether rotation of geometry is allowed (fix F) or disallowed (fix T).", - "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).", - "type": "boolean", - "default": False - }, - "fix_symmetry":{ - "description": "Maximal point group symmetry at which `geometry` should be treated. Lowercase.", - "type": "string" - }, - "provenance": { - "type": "object", - "$ref": "#/definitions/provenance" - } - }, - "required": ["symbols", "geometry", "schema_name", "schema_version"], - "description": "The physical cartesian representation of the molecular system" -} diff --git a/qcschema/dev/properties/__init__.py b/qcschema/dev/properties/__init__.py deleted file mode 100644 index a55f7c3..0000000 --- a/qcschema/dev/properties/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from .properties_base import properties diff --git a/qcschema/dev/properties/calcinfo_properties.py b/qcschema/dev/properties/calcinfo_properties.py deleted file mode 100644 index f0fe5ab..0000000 --- a/qcschema/dev/properties/calcinfo_properties.py +++ /dev/null @@ -1,40 +0,0 @@ -""" -The complete list of the general computation properties. -""" - -calcinfo_properties = {} - -calcinfo_properties["calcinfo_nbasis"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of basis functions for the computation." -} - -calcinfo_properties["calcinfo_nmo"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of molecular orbitals for the computation." -} - -calcinfo_properties["calcinfo_nalpha"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of alpha electrons in the computation." -} - -calcinfo_properties["calcinfo_nbeta"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of beta electrons in the computation." -} - -calcinfo_properties["calcinfo_natom"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of atoms in the computation." -} - -calcinfo_properties["return_energy"] = { - "type": "number", - "description": "The energy of the requested method, identical to `return_value` for energy computations." -} diff --git a/qcschema/dev/properties/cc_properties.py b/qcschema/dev/properties/cc_properties.py deleted file mode 100644 index 6adb3c9..0000000 --- a/qcschema/dev/properties/cc_properties.py +++ /dev/null @@ -1,137 +0,0 @@ -""" -The complete list of Coupled-Cluster properties. -""" - -cc_properties = {} - -cc_properties["ccsd_same_spin_correlation_energy"] = { - "type": - "number", - "description": - "The portion of CCSD doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling." -} - -cc_properties["ccsd_opposite_spin_correlation_energy"] = { - "type": - "number", - "description": - "The portion of CCSD doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling." -} - -cc_properties["ccsd_singles_energy"] = { - "type": "number", - "description": "The singles portion of the CCSD correlation energy. Zero except in ROHF." -} - -cc_properties["ccsd_doubles_energy"] = { - "type": - "number", - "description": - "The doubles portion of the CCSD correlation energy including same-spin and opposite-spin correlations." -} - -cc_properties['ccsd_correlation_energy'] = { - "type": - "number", - "description": - "The CCSD correlation energy." -} - -cc_properties['ccsd_total_energy'] = { - "type": - "number", - "description": - "The total CCSD energy (CCSD correlation energy + HF energy)." -} - -cc_properties['ccsd_prt_pr_correlation_energy'] = { - "type": - "number", - "description": - "The CCSD(T) correlation energy." -} - -cc_properties['ccsd_prt_pr_total_energy'] = { - "type": - "number", - "description": - "The total CCSD(T) energy (CCSD(T) correlation energy + HF energy)." -} - -cc_properties['ccsdt_correlation_energy'] = { - "type": - "number", - "description": - "The CCSDT correlation energy." -} - -cc_properties['ccsdt_total_energy'] = { - "type": - "number", - "description": - "The total CCSDT energy (CCSDT correlation energy + HF energy)." -} - -cc_properties['ccsdtq_correlation_energy'] = { - "type": - "number", - "description": - "The CCSDTQ correlation energy." -} - -cc_properties['ccsdtq_total_energy'] = { - "type": - "number", - "description": - "The total CCSDTQ energy (CCSDTQ correlation energy + HF energy)." -} - -cc_properties["ccsd_dipole_moment"] = { - "type": "array", - "description": "The CCSD X, Y, and Z dipole components.", - "items": { - "type": "number" - } -} - -cc_properties["ccsd_prt_pr_dipole_moment"] = { - "type": "array", - "description": "The CCSD(T) X, Y, and Z dipole components.", - "items": { - "type": "number" - } -} - -cc_properties["ccsdt_dipole_moment"] = { - "type": "array", - "description": "The CCSDT X, Y, and Z dipole components.", - "items": { - "type": "number" - } -} - -cc_properties["ccsdtq_dipole_moment"] = { - "type": "array", - "description": "The CCSDTQ X, Y, and Z dipole components.", - "items": { - "type": "number" - } -} - -cc_properties["ccsd_iterations"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of CCSD iterations taken before convergence." -} - -cc_properties["ccsdt_iterations"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of CCSDT iterations taken before convergence." -} - -cc_properties["ccsdtq_iterations"] = { - "type": "number", - "multipleOf": 1.0, - "description": "The number of CCSDTQ iterations taken before convergence." -} \ No newline at end of file diff --git a/qcschema/dev/properties/mp_properties.py b/qcschema/dev/properties/mp_properties.py deleted file mode 100644 index 52abd41..0000000 --- a/qcschema/dev/properties/mp_properties.py +++ /dev/null @@ -1,53 +0,0 @@ -""" -The complete list of Moller-Plesset properties. -""" - -mp_properties = {} - -mp_properties["mp2_same_spin_correlation_energy"] = { - "type": - "number", - "description": - "The portion of MP2 doubles correlation energy from same-spin (i.e. triplet) correlations, without any user scaling." -} - -mp_properties["mp2_opposite_spin_correlation_energy"] = { - "type": - "number", - "description": - "The portion of MP2 doubles correlation energy from opposite-spin (i.e. singlet) correlations, without any user scaling." -} - -mp_properties["mp2_singles_energy"] = { - "type": "number", - "description": "The singles portion of the MP2 correlation energy. Zero except in ROHF." -} - -mp_properties["mp2_doubles_energy"] = { - "type": - "number", - "description": - "The doubles portion of the MP2 correlation energy including same-spin and opposite-spin correlations." -} - -mp_properties['mp2_correlation_energy'] = { - "type": - "number", - "description": - "The MP2 correlation energy." -} - -mp_properties['mp2_total_energy'] = { - "type": - "number", - "description": - "The total MP2 energy (MP2 correlation energy + HF energy)." -} - -mp_properties["mp2_dipole_moment"] = { - "type": "array", - "description": "The MP2 X, Y, and Z dipole components.", - "items": { - "type": "number" - } -} diff --git a/qcschema/dev/properties/properties_base.py b/qcschema/dev/properties/properties_base.py deleted file mode 100644 index 285da8a..0000000 --- a/qcschema/dev/properties/properties_base.py +++ /dev/null @@ -1,21 +0,0 @@ -""" -The base file for QC Schema properties. -""" - -from .scf_properties import scf_properties -from .mp_properties import mp_properties -from .cc_properties import cc_properties -from .calcinfo_properties import calcinfo_properties - -properties = { - "type": "object", - "properties": {}, - "description": "The resulting properties of a computation", - "additionalProperties": False -} - -# Update new keys -properties["properties"].update(scf_properties) -properties["properties"].update(mp_properties) -properties["properties"].update(cc_properties) -properties["properties"].update(calcinfo_properties) diff --git a/qcschema/dev/properties/scf_properties.py b/qcschema/dev/properties/scf_properties.py deleted file mode 100644 index b05891f..0000000 --- a/qcschema/dev/properties/scf_properties.py +++ /dev/null @@ -1,69 +0,0 @@ -""" -The complete list of SCF level properties. -""" - -scf_properties = {} - -scf_properties["scf_one_electron_energy"] = { - "description": "The one-electron (core Hamiltonian) energy contribution to the total SCF energy.", - "type": "number" -} - -scf_properties["scf_two_electron_energy"] = { - "type": "number", - "description": "The two-electron energy contribution to the total SCF energy." -} - -scf_properties["nuclear_repulsion_energy"] = { - "type": - "number", - "description": - r""" -The nuclear repulsion energy contribution to the total SCF energy. -""" -# .. math:: E_{NN} = \sum_{i, j Date: Thu, 3 Sep 2020 11:01:08 -0400 Subject: [PATCH 2/2] fix pathlib for py27 --- README.md | 7 ++++--- docs/source/faq.rst | 4 +++- qcschema/dev/__init__.py | 6 +++++- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index b95b411..5fbcde2 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,10 @@ as the definition of QCSchema, rather than hand-writing schema here and synching versions. The gist of the above is that schema in this repository are read-only. To -propose a change, open an issue here at QCSchema or open a pull request -at QCElemental. Any discussion of changes to QCSchema will take place -here or will be cross-linked to here in accordance with The Guidance. +propose a change, open an issue here at QCSchema or open a pull +request at QCElemental. Any discussion of changes to QCSchema will +take place here or will be cross-linked to here in accordance with [The +Guidance](https://github.com/MolSSI/QCSchema/issues/68#issuecomment-578256825). * [`qcschema/dev/QCSchema.schema`](qcschema/dev/QCSchema.schema) — single-file, human-readable development schema exported from QCElemental. * [`qcschema/data/vdev/`](qcschema/data/vdev) — multi-file, compressed development schema exported from QCElemental. contents redundant to above. diff --git a/docs/source/faq.rst b/docs/source/faq.rst index 551caed..97b77bb 100644 --- a/docs/source/faq.rst +++ b/docs/source/faq.rst @@ -10,7 +10,9 @@ found at the `JSON-Schema website ` Does the schema accept arbitrary extra fields if my software piece needs internal extensions? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Yes, we are currently discussing which fields are reserved and where the best -place for arbitrary fields would be. +place for arbitrary fields would be. Most high-level schema do *not* accept +additional arbitrary fields, but they do have an ``extras`` dictionary-like field +that can be used for schema development and scratch space. Are there libraries for writing the schema in [programming-language]? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/qcschema/dev/__init__.py b/qcschema/dev/__init__.py index 463b0f7..1b37125 100644 --- a/qcschema/dev/__init__.py +++ b/qcschema/dev/__init__.py @@ -1,5 +1,9 @@ import json -from pathlib import Path + +try: + from pathlib import Path +except ImportError: + from pathlib2 import Path fpath = Path(__file__).parent.resolve() / "QCSchema.schema" qcschema = json.loads(fpath.read_text())