Skip to content

Migration and verification

Retain the original calculation record. Write its physical request in .oqp, then compare the lowered section dictionary and the final typed configuration. A raw schema inventory, successful parse, or source review is not a molecular calculation or a scientific support qualification.

A complete HF conversion

An equivalent explicit reference route:

rhf/sto-3g scf(conv=1e-08)
geom="""
H 0 0 0
H 0 0 0.74
"""

Canonical input (download):

hf/sto-3g scf(conv=1e-8)
geom="""
H 0 0 0
H 0 0 0.74
"""

Run with openqp hf.oqp. The slash route supplies method and basis; energy is the omitted primary calculation. scf(conv=...) remains an exact section call. For a ground-state HF derivative, add grad(S0).

For MRSF, translate an internal root to its physical label within the selected spin multiplicity, rather than copying the number: download the MRSF gradient. It requests grad(S1), which lowers to properties.grad=2. The automatic triplet ROHF reference is separate from the singlet target.

CLI, Python API and Studio

Physical request Canonical / CLI Python API setting Internal consumer
Geometry and charge geom=..., charge=0 job.molecule(geometry=...,charge=0) input.system/charge → Molecule geometry/electron count
HF/DFT model hf/BASIS, dft/FUNCTIONAL/BASIS job.theory.hf(...), job.theory.dft(...) input.method/functional/basis → SCF setup
MRSF mrsf(nstate=3)/bhhlyp/6-31g* job.theory.mrsf(functional="bhhlyp",basis="6-31g*",nstate=3) tdhf.type/nstate, automatic scf.type/multiplicity → response solver
SCF threshold scf(conv=1e-8) job.scf(conv=1e-8) scf.conv → SCF convergence
MRSF gradient grad(S1) Inspect physical-state API contract before copying a numeric state properties.grad=2 → response derivative
Nuclear temperature md(temperature=300) Common nuclear controls through the MD API md.init_temp=300 and md.thermostat_temperature=300
Friction md(friction=1) Common nuclear controls through the MD API md.thermostat_friction=1
Native optimization opt(S0,coordsys=tric) job.workflow.optimize(...); compatible API can also select legacy backends optimize.istate and oqp.coordsys → selected optimizer
SOC counts soc(ns=3,nt=5) job.workflow.soc(...) tdhf.nstate_s/nstate_t → separate spin calculations
Threads omp_threads=8; CLI --omp 8 job.control(omp_threads=8) input.omp_threads → runtime setup

These API names are source mappings, not an assertion that the two entry points share every default. In particular Python SOC selects scal_rel=2 unless overridden. Compare job.to_input_dict() and job.config_typed with the canonical lowering and schema conversion before running. The Python API describes supported calls.

Save canonical Studio input as input.oqp; the runner passes it to the engine. Inspect the saved content as well as the extension. Its builder controls are not an independent keyword schema. Inspect the actual saved input and selected engine version. The source mapping does not replace testing the built application, all builder fields, or packaged executables.

Reproducible source checks

tools/canonical_keywords.py reads only a full committed gateway SHA. It loads the standard-library canonical parser and schema converter from that commit without importing oqp or a native library. Schema converter functions are extracted unchanged from the committed schema file. The report retains parser/source hashes, accepted examples, lowered dictionaries, typed selected values, and rejected cases.

python tools/canonical_keywords.py --engine /safe/gateway --check \
  --report /safe/task/canonical-check.json

All seven topic code blocks also pass the same parser and schema conversion. Eleven complete downloadable decks are generated from the checked positive cases, including NAC, NAMD, SOC and QM/MM. The QM/MM example requires the PDB, solute XML and water XML in the same directory. Source checks remain separate from the native execution record.

The full default/type/ownership inventory and driver options are regenerated from that same commit. --check fails if checked-in reference files differ. It also tests render/reparse/lower equivalence. It distinguishes syntax errors from later schema type-conversion errors; it does not label every invalid value a parser rejection.

The negative cases cover unknown/typo keys, duplicate aliases, conflicting basis, two primary calculations, reserved state/reference keys, forbidden legacy calls, missing root-count values, insufficient/negative/noninteger root counts, wrong state labels, and invalid numeric section values. Accepted compatibility aliases are tested separately; an accepted alias is not labelled deprecated without engine evidence.

Source version and limits

This reference is pinned to gateway source version 1.3.1, shown in the inventory. The public manual retains the 1.3.0 release identity; parser availability in this later source baseline is not a promise that a 1.3.0 binary supports every setting. Check the installed engine version.

Full calculation validation, native CLI/Python execution and packaged Studio builder equivalence require their own checks. Parsing does not establish scientific validity or numerical equivalence.