Changelog

v0.50.0rc4 / 2026-05-04 (Prerelease)

Docs v0.50.0rc4 for current. Docs v0.34.1 for QCSchema v1.

Breaking Changes

  • (GH#500) s-dftd3 - For simple-dftd3 >=1.3.0, 3-body is now off by default (s9=0.0) through the python interface used by the QCSchema interface and by QCEngine. Results will change if you’re not passing params_tweaks or using apply_qcengine_aliases=True (see below). Pass “atm=True” and “method” to re-impose s9=1.0 as in test case test_dftd3_task_pbe_m02. @loriab

New Features

  • (GH#500) xtb - Update harness to allow versions that can use QCSchema v2 natively, anticipated as v26.1 . @loriab

  • (GH#503) geomeTRIC and optking - Failed runs that have produced useful results (e.g., a gradient) now store them in FailedOperation.error.extras[“failed_result”]. These are structured in that they are dicts but have no guarantees of what information is stored or which style (QCSchema v1 or v2) they most resemble. They are presented as returned from the optimizer.

Enhancements

  • (GH#500) s-dftd3 - When apply_qcengine_aliases=True for a 3-body-including dispersion correction (which includes unspecified, e.g. d3bj) the parameters are now explicitly passed as params_tweaks. There is no change in results, but this compensates for a change in default in the simple-dftd3 v1.3.0 project. Also, for 2-body-only, the returned “info” parameters (namely, s9) will more accurately match those used. @loriab

  • (GH#503) geomeTRIC - Though upstream continues to work with only QCSchema v1, the harness now uses the v1-layout-in-v2-API class so it can work with Py 3.14. @loriab

Bug Fixes

Misc.

v0.50.0rc3 / 2026-04-02 (Prerelease)

Docs v0.50.0rc3 for current. Docs v0.34.1 for QCSchema v1.

New Features

  • (GH#499) Testing - Program names are now pytest markers, so pytest -m openmm thoroughly collects all tests involving that program. Note that the nearly retired harnesses for Grimme programs have markers “classic-dftd3” and “classic-gcp”.

Enhancements

  • (GH#499) QCElemental - Update encoding=json to mode=json in serialization calls to match QCElemental v0.50.0rc4 changes.

  • (GH#499) DFTD3, DFTD4 - Allow running in QCSchema v2 mode for WIP upstream versions. Note that QCEngine-added input extras appear in AtomicResult.input_data.specification.extras, formerly AtomicResult.extras, even routing through older (pre-v1.3, v4.1) programs.

  • (GH#499) GCP, MP2D - Update model_copy and casting of energy for qcel rc3 and Pydantic v2.

Bug Fixes

  • (GH#499) Psi4 - Fix Psi4 detected but not registered error arising from parsing of version and paths being obscured by QCSchema/Pydantic Warnings.

v0.50.0rc2 / 2026-03-13 (Prerelease)

Docs v0.50.0rc2 for current. Docs v0.34.1 for QCSchema v1.

Breaking Changes

New Features

  • (GH#493) Docs - Serve multiple versions

  • (GH#498) QCManyBody, OptKing - MBE optimization (e.g., counterpoise-corrected geometry opt) is working and tested again. Valid only for v2. The old GeneralizedOptimization with v1 is retired.

Enhancements

  • (GH#495) DFTD4, DFTD3 - New SAPT (0, PBE0, B3LYP) D4 and D3 parameters for intermolecular (good) and supermolecular (bad) forms.

  • (GH#498) Deps - Require QCElemental >= v0.50.0rc3. Note that conda install qcengine -c conda-forge -c conda-forge/label/qcengine_dev -c conda-forge/label/qcelemental_dev is the way to install this at the moment.

  • (GH#498) OptKing - Adapt harness so that for OptKing >=0.5.0, it runs natively in QCSchema v2.

  • (GH#498) QCManyBody - Allow QCManyBody harness to run in QCSchema v2 mode for >=0.6.0 .

Bug Fixes

  • (GH#392) More precise Pydantic version constraints: v2.11, unless py314+

  • (GH#498) OptKing - Grab logger from optking rather than using imitation logic that is vulnerable to stray import psi4. This can fix OptimizationResult.stdout being unexpectedly empty.

Misc.

  • (GH#494) CI - Fix lanes for setuptools removing pkg_resources and Libint2 update.

0.34.2 / 2026-03-12

Docs

Enhancements

  • (GH#495) DFTD4, DFTD3 - New SAPT (0, PBE0, B3LYP) D4 and D3 parameters for intermolecular (good) and supermolecular (bad) forms.

0.34.1 / 2026-02-15

Docs

Enhancements

  • (GH#492) Docs - Set up documentation build to store versions of documentation for each tag plus dev. Note that this changes intersphinx links. Below is current.

"qcelemental": ("https://molssi.github.io/QCElemental/dev/", None),
"qcengine": ("https://molssi.github.io/QCEngine/dev/", None),
"qcfractal": ("https://molssi.github.io/QCFractal/", None),

Misc.

  • (GH#491) Maint - update CI lanes for setuptools dropping pkg_resources and psi4 not pinned to right libmints. @loriab

v0.50.0rc1 / 2026-01-31 (aka “next” aka “QCSchema v2 available”) (Prerelease)

Breaking Changes

  • (GH#486) Deps - Require Python >=3.9. Practically for conda, >=3.10.

  • (GH#453) Deps - Require Pydantic v2 dependency (don’t worry, this isn’t changing QCEngine’s role as QCSchema I/O runner. Also require pydantic-settings for CLI. @loriab

  • (GH#455) API - As promised 2 years ago for >=v0.30, local_options has been removed in favor of task_config in compute and compute_procedure. Note that Psi4 v1.6 will need an older qcel or a sed to work (see GHA). The qcengine.MDIEngine is on notice (probably not user-facing. @loriab

  • (GH#455) API - qcengine.compute and qcengine.compute_procedure have been merged in favor of the former. Also, treat the second argument (e.g., “nwchem” or “geometric”) as a positional argument, rather than keyword argument with key “program” or “procedure”. @loriab

  • (GH#455) API - compute learned an optional argument return_version to specify the schema_version of the returned model or dictionary. By default it’ll return the input schema_version. If not determinable, it will return v1. @loriab

New Features

  • QCSchema v2 implemented and used internally for harnesses.

  • Both QCSchema v1 and v2 may be used for input and requested as output.

  • Note that QCSchema v2 field layout isn’t finalized until v0.60, so there may be lock-step advancements of the QCArchive stack.

  • Python 3.14 is now useable. Use of QCSchema v1 with 3.14 is limited (by Pydantic). Generally, input (as dict or json) will work. v1 output is technically forbidden but see envvar below for returning as dict. See table:compute_result_schver in compute.py for details. Note that when CMS community codes aren’t 3.14-ready, their presence may interfere with normal QCEngine functionality (like qcengine info).

  • See QCElemental for a map of QCSchema v1 and v2, a schema changelog, and a migration guide.

Enhancements (General)

  • (GH#458) qcengine run learned new argument --return-version analogous to qcengine.compute(..., return_version=1|2) so CLI matches API capabilities. Note not ported to phasing-out qcengine run-procedure.

  • API — Standardize failed job handling toward models for QCSchema v2. - (GH#458) When qcengine.compute() fails and forms a fop = FailedOperation

    (raise_error=T), with v2, fop.input_data will be an <>Input model (when possible; if the error was in forming the model, it’ll still be a dict), not always a dict like v1.

    • (GH#458) When <executor>.compute() fails and collects the input for processing, with v2 it now uses the <>Input model passed to the executor, not the model-or-dict passed into compute().

    • (GH#458) The net result of the two above is that whereas fop.input_data in v1 was reliably a dict and its contents would reflect whether a model or dict was passed to qcengine.compute(), now in v2, fop.input_data is a model whenever possible (to mirror <>Result.input_data) regardless of model or dict passed to qcengine.compute(); the only case where it’s a dict is if the error was in forming the model.

    • (GH#486) When the requested type of return can’t be formed for Python 3.14, it will form the nearest approximation in QCSchema v2.FailedOperation. See table:compute_result_schver in compute.py for details.

  • (GH#454) Testing - Tests check QCSchema v1 and v2. @loriab

  • (GH#453) Maint - Convert internal (non-QCSchema) pydantic classes to pydantic v2 API, namely NodeDescriptor, TaskConfig, ProgramHarness, ProcedureHarness. @loriab

  • (GH#460) Testing — Integrate AtomicInput.specification into harnesses (as part of migrating Program harnesses to use QCSchema v2 internally) and show what new inputs look like in tests.

  • (GH#460) Schema — If you’re missing something from AtomicResult.extras (or any <>Result.extras), check AtomicResult.input_data.extras in case it was passed in on input. Result extras are no longer merged with Input extras.

  • (GH#468) Schema — lightly adapt harnesses for Molecule v3 (remember, Molecule schema_version is one greater than general QCSchema schema_version. This doesn’t change the layout, just the version field. Layout not finalized until v0.60.

  • (GH#486) Schema — Adapt more harnesses to use model_dump instead of dict when serializing Pydantic models to clear away warnings. Pydantic v1 models use the latter and v2 the former but QCSchema aliases each.

  • (GH#486) Deps — Adapt harnesses to allow Py 3.14 through small syntax changes.

  • (GH#486) API — With QCNG_USE_V1V2_SHIM=1 in Python 3.14, QCSchema v1 inputs and outputs (atomic flavor) can be used as dictionaries (never models). See the table:compute_result_schver in compute.py for details.

Enhancements (Harnesses)

  • (GH#458) DFTD3 & DFTD4 (new intf) - intercept v1.AtomicResult with success=False and error fields set from QCSchema interfaces and return FailedOperation``s. Someday when upstream switches to v2, request packages return FaileOp directly and use ``input_error rather than input error.

  • (GH#459) OpenMM — Gained AtomicResult.properties.return_gradient

  • (GH#459) GCP, MP2D — several got properties.return_energy, retunr_gradient

  • (GH#461) Optking — now fills in v2.OptimizationResult.stdout. Through QCSchema v2, one can alter gradient protocols in an optimization.

  • (GH#461) nwchemdriver — allow nwchemdriver w/o driver=energy. provenance now “nwchemdriver” not “nwchemrelax”.

  • (GH#461) Pyberny — berny harness rewritten in v2. optking and geometric natively speak v1, so adapted as well as can be.

  • (GH#461) TorsionDrive — torsiondrive rewritten in QCSchema v2.

  • (GH#468) Torsiondrive — now accepts protocols. use protocols={"scan_results": "all"} if going to be converted to v1.

  • (GH#468) RDKIT, MRChem — RDKit, store AtomicResult.properties.return_gradient and calcinfo_natom. MRChem, store AtomicResult.properties.return_gradient.

  • (GH#468) TorsionDrive — Adapt harnesses for TD.initial_molecules -> TD.initial_molecule and TD.optimization_history -> TD.scan_results

  • (GH#490) TorchANI - Updated species handling for newer Pythons, ANI syntax. @loriab

  • (GH#486) QCManyBody — Adapt harness to work with QCSchema v1 and v2 and to work with QCManyBody v0.50 (in preparation) as well as current v0.5.1.

  • (GH#486) Psi4 — Add another generation to the Psi4 harness (to become active ~v1.11) to pass/receive QCSchema v2 to/from Psi4.

Bug Fixes

  • (GH#453) Maint - Fix a warning thrown by execute about unclosed files. @loriab

Misc.

  • (GH#452) Maint - Set up pre-commit and run over repository. @loriab

  • (GH#453) CI - Dropped Entos/QCore and Psi4 v1.5 as too hard to solve with pydantic v2 and modern python versions. @loriab

  • (GH#468) Deps — use packaging instead of setuptools to provide version parsing.

  • (GH#469) Maint — setup.py replaced by pyproject.toml with setuptools backend and replaced versioneer with setuptools-scm. With removal of versioneer, remove __git_revision__ and get_information(“git_revision”).

v0.34.0 / 2026-01-16

Misc.

  • (GH#483) Maint - update CI lanes for smirnoff-Frosst and pkg_resources import changes and Windows challenges. @loriab

  • (GH#487) Maint - update CI lanes for spacing and old Psi4 needing defaults channel. @loriab

  • (GH#489) Maint - encode in setup.py that QCEngine cannot work with Python 3.14. @loriab

v0.33.0 / 2025-07-31

New Features

  • (GH#477) DFTD4 - added a new dispersion type d4bjeeqtwo so parameters can be defined for fittings without 3-body dispersion, as for SAPT0-D4 in Psi4. @Awallace3

Misc.

  • (GH#476, GH#478) Maint - repair some CI lanes that needed extra specs to operate correctly. @loriab

v0.32.0 / 2025-05-03

Breaking Changes

  • (GH#472) Maint - dftd3/gcp/entos/qcore harnesses are all deprecated. See qcengine info for details. @loriab

New Features

Enhancements

  • (GH#472) CLI - Add a qcengine info bulletin subcommand (also runs with qcengine info) for notices about additions and deprecations. @loriab

Bug Fixes

  • (GH#472) DFTD4 - New Windows builds of the latest version have a bug with the QCSchema interface (https://github.com/dftd4/dftd4/pull/292). QCEngine now compensates so v3.7.0 can be used as-is. @loriab

  • (GH#472) geomeTRIC - New v1.1 has been failing one of the mocked “retries” tests here. QCEngine now excuses it until upstream fix available (https://github.com/leeping/geomeTRIC/pull/222). @loriab

  • (GH#472) Config - Fixed some tests of Config.scratch_directory so they can run cleanly on Windows when HOME envvar isn’t set. No change to Config itself. @loriab

Misc.

  • (GH#472) Maint - Use new packaging dependency instead of deprecated pkg_resources. @loriab

  • (GH#472) Testing - Drop an unsolvable py38 environment and start testing py313. @loriab

v0.31.0 / 2025-01-17

Breaking Changes

New Features

  • (GH#466) QCManyBody - new procedure for computing interaction energies or truncation or full many-body expansions with no, counterpoise, or Valiron-Mayer function counterpoise correction for basis set superposition error. @loriab

Enhancements

  • (GH#463) Maint - Pin to QCElemental <0.70 since we now know QCSchema v2 release schedule.

  • (GH#463) MACE - New v0.3.9 release yields a pytorch error, so recommend pymace=0.3.6 .

  • (GH#464, GH#447) CFOUR - Allow CC-PVDZ alias basis specification. Also fix the PwCVXZ basis keyword. @philipmnel

  • (GH#440) TorsionDrive - Support other geometric-style constraints by not overwriting those already present. @jthorton

Bug Fixes

  • (GH#451, GH#450) Psi4 - Fixes bug in Psi4 detection when command python not available. @susilehtola, @topazus

  • (GH#466) CFOUR - fix error collecting molecule when it’s a single atom with two-letter symbol. @loriab

Misc.

  • (GH#457) Docs - Fix auto-numbering on a documentation page. @mikemhenry

v0.30.0 / 2024-06-25

New Features

  • (GH#441) MACE - Added harness for MACE-OFF23 and local MACE models. @jthorton

  • (GH#443) AIMNET2 - Added harness for AIMNET2 NN ML models. @jthorton

Misc.

  • (GH#445) CI - fix some test regex issues.

  • (GH#449) Maint - bump the QCElemental compatibility range.

v0.29.0 / 2023-10-31

Bug Fixes

  • (GH#427) Config - Once again, expand environment variables (now more flexibly) and newly expand ~ passed into TaskConfig. Particularly relevant for scratch setting. @yueyericardo

  • (GH#428) MDI - Ensure that molecule orientation remains fixed for MDI. @taylor-a-barnes

  • (GH#405, GH#415, GH#417) Config - change default jobs_per_node from 2 to more expected 1 so a single job fills the node. Alter CPU count formula to return physical cores on Hyperthreading machines, affecting default ncores. The net effect (both changes) for default cores running on Hyperthreading machines is unchanged. Nevertheless, fixes some Windows problems. @cvsik, @loriab

  • (GH#433) Turbomole, Q-Chem - Use raw strings when needed to avoid py312 warnings. @loriab

  • (GH#435) GAMESS - Collect the correct MP2 module in parsing for newer versions (>2021,<=2023). @loriab

Misc.

  • (GH#433) CI - Check py312 and some Windows lanes. @loriab

v0.28.1 / 2023-08-18

Bug Fixes

  • (GH#426) Psi4 - fix get_version on Windows where whole path and command were getting passed to version parser. @loriab

v0.28.0 / 2023-08-15

Breaking Changes

New Features

  • (GH#400) Config - task configuration can now be set via CLI (qcengine run -h for details) or by environment variables beginning with QCENGINE_. @bennybp

  • (GH#393, GH#392) MCTC-GCP - Adds b973c and r2scan3c methods to the gcp (mctc only, not classic) harness. @hokru

  • (GH#393) DFTD4 - Allows ga, gc, wf parameters to be tweaked (needed for r2scan-3c). This feature requires dftd4 3.5.0. @hokru

Enhancements

  • (GH#410, GH#408) TorsionDrive - silence warnings by using the task_config argument internally. @jthorton

  • (GH#409) Psi4 - improve no-valid-error message so classifies as a RandomError and is eligible for restart. @jthorton

  • (GH#405) Turbomole - correctly enable OpenMP and environment passing. Pass SCF convergence and maximum iterations to define. @cvsik

  • (GH#403, GH#402) PyBerny - fix optimizer to respect the task_config options. @q-posev

  • (GH#386) CI - turn on formerly LGTM now GitHub CodeQL analysis. @lgtm-migrator

  • (GH#388) MRChem - more detailed info about the parallel setup saved to output provenance. @robertodr

  • (GH#424) testing - update SVWN Hessian reference values from Psi4. @loriab

  • (GH#423, GH#377) NWChem - allow two answers for test test_atom_labels[nwchem] to accommodate SCF solutions in different versions. @loriab

Bug Fixes

  • (GH#401) MDI - fix bug in the shape of the MDI forces structure. @taylor-a-barnes

  • (GH#399, GH#401) MPI - remove MPI setup for MDI. This eliminates a bug where interfering MPI environment variables were getting set upon import qcengine when pymdi and mpi4py packages were present. @awvwgk, @taylor-a-barnes

  • (GH#418, GH#389, GH#292) Psi4 - make Psi4 exe/module detection and version parsing more robust. @Flamefire, @coltonbh, @loriab

Misc.

  • (GH#419) CI - remove disabled LGTM and update badges. @loriab

  • (GH#422) CI - turn on crontab CI running to better notice external trouble. @loriab

v0.27.0 / 2023-08-02

Bug Fixes

  • (GH#414) Import pydantic.v1 from pydantic v2 so that QCEngine can work with any >=1.8.2 pydantic until QCEngine is updated for v2. If using v2, use QCElemental >=v0.26.0 that has a similar change. QCEngineRecords received similar treatment. @Lnaden, @loriab

  • (GH#414) Versioneer - update so works with Python 3.12.

  • (GH#414) Maintenance
    • Sphinx - fix build errors.

    • Lint - pin black to 2022 format.

    • GHA - switch to mamba solver. @loriab

  • (GH#394) Entos/Qcore - updated model environments. @loriab

v0.26.0 / 2022-11-30

Breaking Changes

  • (GH#385) Dispersion - the dispersion parameters resources file has been altered so that for D3 variants there’s a 2b set (e.g., d3bj2b) that is pure 2-body and doesn’t accept s9 (effectively fixed at 0.0) and a atm set (e.g., d3zeroatm) that does accept s9 (by default 1.0 but user-variable). Previous D3 levels are aliased to 2b. Only downstreams that call the dispersion resources directly should be affected, and retrofits are in place for the known victim/instigator (Psi4). @loriab

New Features

Enhancements

  • (GH#380) MRChem - added gradient and thus geometry optimizations support. @robertodr

  • (GH#385) dftd3 - the classic interface now accepts e.g., d3mbj2b as a level hint. @loriab

  • (GH#385) s-dftd3 - added keyword apply_qcengine_aliases that when True and level_hint present allows the levels and aliases in the dispersion resources (e.g., d3, d3atm, d32b) to be given as level_hint. The resource parameters are passed to s-dftd3 as param_tweaks. @loriab

Bug Fixes

  • (GH#383) yaml - uses safe loading. @mbanck, @loriab

  • (GH#385) dftd3 - the pairwise analysis requested through AtomicInput.keywords["pair_resolved"] = True and returned in AtomicResult.extras["qcvars"]["2-BODY PAIRWISE DISPERSION CORRECTION ANALYSIS"] was elementwise too large by a factor of 2. It now matches the s-dftd3 harness and fulfills that the sum of the array equals the 2-body dispersion energy. @loriab

v0.25.0 / 2022-11-11

Breaking Changes

  • (GH#376) GAMESS - slight breaking changes of (1) ROHF MP2 ZAPT quantities now stored in “ZAPT” variables, not “MP2” variables; and (2) “HF TOTAL ENERGY” no longer stores DFT energy in DFT computation. @loriab

  • (GH#376) testing - reference quantities now indexed by “standard” or “semicanonical” orbitals since program defaults differ (mostly in CCSD ROHF FC). Downstream projects using the stdsuite interface will need to add an extra argument to query reference data. @loriab

New Features

Enhancements

  • (GH#376) Cfour - added parsing for BCCD and BCCD(T) methods. @loriab

  • (GH#376) NWChem - B2PLYP double-hybrid can now be run and parsed. Added CC2 parsing. @loriab

  • (GH#376) testing - added parsing contracts for ZAPT2, CEPA(1), CEPA(3), ACPF, AQCC, BCCD, BCCD(T), CC2, CC3, and DH-DFT. Added conventional references for most. @loriab

  • (GH#378) OpenFF - Support OpenFF Toolkit v0.11+. @Yoshanuikabundi

Bug Fixes

v0.24.1 / 2022-08-16

Enhancements

  • (GH#375) testing - in standard suite, add reference values for occ, a-ccsd(t), olccd grad, remp2, omp2, omp2.5, omp3, oremp2, density fitted ccsd, ccsd(t), a-ccsd(t). @loriab

v0.24.0 / 2022-07-08

Upcoming Breaking Changes

  • (GH#372) QCSchema - changes are planned to schema layout and QCEngine API that will be outlined in an issue. These are not expected to involve detailed changes to the harnesses, and update helper functions will be provided. In preparation, QCEngine is pinned to a maximum compatible QCElemental v0.25.0 (current release). Projects using QCSchema through QCElemental are advised to pin to maximum v0.25.0 qcel and v0.24.0 to avert trouble, since this is our first experience with schema increments. @loriab

New Features

  • (GH#343) DFT-D3 - added the SDFTD3Harness to handle DFT-D3 via a Python API. This has native QCSchema support and programmatic access to the parameter database. @awvwgk

  • (GH#353) TeraChem - added the TeraChemFrontEndHarness to handle file I/O in extension to the protocol buffer TeraChemPBSHarness interface. @coltonbh

Enhancements

  • (GH#350) Rename the compute(..., local_options) argument to compute(..., task_config). Former still works and will for a while. @coltonbh

  • (GH#361) testing - in standard suite, add references for Hartree–Fock density-fitten Hessians. @loriab

  • (GH#362) docs - update setup with theme and fuller information on Pydantic models. @loriab

  • (GH#363) CFOUR - learned not to set DERIV_LEVEL when atomicinput.driver=properties. Helps properties like DBOC. @loriab

  • (GH#363) Allow directory structure in execute(..., infiles) argument, not just flat-level files. @loriab

  • (GH#364) CFOUR - learned to harvest gradients when ghost atoms involved. Any CFOUR job with ghost atoms involves a hack that may go amiss when Xenon atoms in target molecule. @loriab

  • (GH#364) NWChem - learned to handle keyword geometry__autosym to tighten or loosen automatic symmetry detection. @loriab

  • (GH#372) testing - 2022 OpenMopac now actively tested in GHA. Note fields and output slightly different since 2019 harness. @awvwgk, @loriab

Bug Fixes

  • (GH#301, GH#367) PyBerny - learned how to fail informatively when something goes wrong instead of assuming all is well and failing misleadingly while processing success. @coltonbh

  • (GH#333) NWChem - learned to skip writing the original atomicinput.molecule geometry to the input file only when both (1) the job is known to be part of a restart and (2) the job originates from the NWChem “driver” (that is, the optimizer). Previously, the geometry writing was skipped under (1) circumstances, so single-point e/g/h didn’t have a geometry to work from. @WardLT

  • (GH#349) Turbomole - learned to correctly parse Hessian files when molecule contains more than 33 atoms. @eljost

Misc.

v0.23.0 / 2022-03-10

Enhancements

  • (GH#351) Torsiondrive procedure refactored to make it easier for users to implement a parallel version via subclassing and overwriting the _spawn_optimizations method. @jthorton

v0.22.0 / 2022-01-25

Bug Fixes

  • (GH#338) Correctly export version to tarballs created by git-archive. @mbanck, @loriab

  • (GH#339) QCEngine now tolerant of cpuinfo failure to populate brand_raw, brand. @dotsdl, @loriab, @WardLT

v0.21.0 / 2021-11-22

Enhancements

  • (GH#321) CFOUR, GAMESS, NWChem, Psi4, DFTD3, MP2D, gCP - learned to return certain native text files under control of the native_files protocol. GAMESS users are strongly advised to at least set protocols.native_files = "input" so that the job is reproducible. @loriab

  • (GH#325) Torsiondrive - learned to use multiple molecules as input to torsiondrives. @jthorton

  • (GH#327) TorchANI - learned to use GPUs if available. @kexul

  • (GH#330, GH#332) NWChem - learned to restart from existing scratch if QCEngine is killed. @WardLT

v0.20.1 / 2021-10-08

Bug Fixes

v0.20.0 / 2021-10-01

New Features

  • (GH#305) TorsionDrive - new procedure to automate constrained optimizations along a geometry grid. Akin to the longstanding QCFractal TorsionDrive service. @SimonBoothroyd

Enhancements

  • (GH#307) NWChem - learns to automatically increase the number of iterations when SCF, CC, etc. fails to converge. @WardLT

  • (GH#309) qcengine info learned to print the location of found CMS programs, and geometric, OpenMM, and RDKit learned to return their versions. @loriab

  • (GH#311) CFOUR, GAMESS, NWChem harnesses learned to notice which internal module performs a calc (e.g., tce/cc for NWChem) and to store it in AtomicResult.provenance.module. Psi4 already does this. @loriab

  • (GH#312) CFOUR, GAMESS, NWChem harnesses learned to run and harvest several new methods in the MP, CC, CI, DFT families. @loriab

  • (GH#316) Config - TaskConfig learned a new field scratch_messy to instruct a qcng.compute() run to not clean up the scratch directory at the end. @loriab

  • (GH#316) GAMESS - harness learned to obey ncores and scratch_messy local_config options. When ncores > 1, the memory option is partitioned into replicated and non after exetyp=check trials. @loriab

  • (GH#316) Psi4 - harness learned to obey scratch_messy and memory local_config options. Memory was previously off by a little (GB vs GiB). @loriab

  • (GH#316) CFOUR - harness learned to obey scratch_messy and memory local_config options. Memory was previously off by a little. @loriab

  • (GH#316) NWChem - harness learned to obey scratch_messy and memory local_config options. Memory was previously very off for v7. @loriab

  • (GH#315) CFOUR, GAMESS, NWChem – learned to return in AtomicInput or program native orientation depending on fix_com & fix_orientation= T or F. Psi4 already did this. Previously these three always returned AtomicInput orientation. Note that when returning program native orientation, the molecule is overwritten, so AtomicResult is not a superset of AtomicInput. @loriab

  • (GH#315) CFOUR, GAMESS, NWChem – learned to harvest gradients and Hessians. @loriab

  • (GH#317) Docs - start “new harness” docs, so contributors have a coarse roadmap. @loriab

  • (GH#318) Docs - documentation is now served from https://molssi.github.io/QCEngine/ and built by https://github.com/MolSSI/QCEngine/blob/master/.github/workflows/CI.yml . https://qcengine.readthedocs.io/en/latest/ will soon be retired. @loriab

  • (GH#320) CFOUR, NWChem – learned to run with ghost atoms, tentatively. @loriab

Bug Fixes

  • (GH#313, GH#319) OpenMM - accommocate both old and new simtk/openmm import patterns. @dotsdl

v0.19.0 / 2021-05-16

New Features

  • (GH#290) MCTC-GCP - harness for new implementation of gCP, mctc-gcp, whose cmdline interface is drop-in replacement. @loriab

  • (GH#291) DFTD4 - new harness for standalone DFT-D4 executable. @awvwgk

  • (GH#289) TeraChem - new harness for TeraChem Protocol Buffer Server mode. @coltonbh

Enhancements

  • (GH#288) GAMESS, Cfour, NWChem - add calcinfo harvesting, HF and MP2 gradient harvesting. @loriab

Bug Fixes

  • (GH#288) Avert running model.basis = BasisSet schema even though they validate. @loriab

  • (GH#294) NWChem - fixed bug where was retrieving only the first step in a geometry relaxation with line-search off. @WardLT

  • (GH#297) MDI - Update interface for v1.2. @loriab

v0.18.0 / 2021-02-16

New Features

  • (GH#206) OptKing - new procedure harness for OptKing optimizer. @AlexHeide

  • (GH#269) MRChem - new multiresolution chemistry program harness. @robertodr

  • (GH#277) ADCC - new program harness for ADC-connect. (Requires Psi4 for SCF.) @maxscheurer

  • (GH#278) gCP - new program harness for geometric counterpoise. @hokru

  • (GH#280) Add framework to register identifying known outfile errors, modify input schema, and rerun. @WardLT

  • (GH#281) NWChem - new procedure harness to use NWChem’s DRIVER geometry optimizer with NWChem’s program harness gradients. @WardLT

  • (GH#282) DFTD3 - added D3m and D3m(bj) parameters for SAPT0/HF. Allow pairwise analysis to be returned. @jeffschriber

Enhancements

  • (GH#274) Entos/Qcore - renamed harness and updated to new Python bindings. @dgasmith

  • (GH#283) OpenMM - transition harness from openforcefield packages on omnia channel to openff.toolkit packages on conda-forge channel. @SimonBoothroyd

  • (GH#286, GH#287) CI - moves from Travis-CI to GHA for open-source testing. @loriab

Bug Fixes

  • (GH#273) TeraChem - fixed bug of missing method field. @stvogt

v0.17.0 / 2020-10-02

New Features

  • (GH#262) Add project authors information. @loriab

Enhancements

  • (GH#264) Turbomole - add analytic and finite difference Hessians. @eljost

  • (GH#266) Psi4- error messages from Psi4Harness no longer swallowed by KeyError. @dotsdl

Bug Fixes

  • (GH#264) Turbomole - fix output properties handling. @eljost

  • (GH#265) xtb - ensure extra tags are preserved in XTB harness. @WardLT

  • (GH#270) TorchANI - now lazily loads models as requested for compute. @dotsdl

v0.16.0 / 2020-08-19

New Features

Enhancements

  • (GH#241) NWChem - improved performance by turning on atoms_map=True, which does seem to be true. @WardLT

  • (GH#257) TorchANI - learned the ANI2x model and to work with v2. @farhadrgh

  • (GH#259) Added MP2.5 & MP3 energies and HF, MP2.5, MP3, LCCD gradients reference data to stdsuite. @loriab

  • (GH#261) Q-Chem - learned to return more informative Provenance, learned to work with v5.1. @loriab

  • (GH#263) NWChem - learned how to turn off automatic Z-Matrix coordinates with geometry__noautoz = True. @WardLT

Bug Fixes

  • (GH#261) Molpro - learned to error cleanly if version too old for XML parsing. @loriab

  • (GH#261) Q-Chem - learned to extract version from output file instead of qchem -h since command isn’t available from a source install. @loriab

v0.15.0 / 2020-06-26

New Features

  • (GH#232) PyBerny - new geometry optimizer procedure harness. @jhrmnn

  • (GH#238) Set up testing infrastructure, “stdsuite”, where method reference values and expected results names (e.g., total energy and correlation energy from MP2) are stored here in QCEngine but may be used from anywhere (presently, Psi4). Earlier MP2 and CCSD tests here converted to new scheme, removing test_standard_suite_mp2.py and ccsd.

  • (GH#249, GH#254) XTB - new harness for xtb-python that natively speaks QCSchema. @awvwgk

Enhancements

  • (GH#230) NWChem - improved dipole, HOMO, LUMO harvesting.

  • (GH#233) qcng.util.execute learned argument exit_code above which to fail, rather than just != 0.

  • (GH#234) MDI - harness updated to support release verion v1.0.0 .

  • (GH#238) Cfour, GAMESS, NWChem – harnesses updated to collect available spin components for MP2 and CCSD. Also updated to set appropriate qcel.models.AtomicProperties from collected QCVariables.

  • (GH#239) OpenMM - OpenMM harness now looks for cmiles information in the molecule extras field when typing. Also we allow for the use of gaff forcefields. @jthorton

  • (GH#243) NWChem - more useful stdout error return.

  • (GH#244) Added CCSD(T), LCCD, and LCCSD reference data to stdsuite. @loriab

  • (GH#246) TorchANI - harness does not support v2 releases.

  • (GH#251) DFTD3 - added D3(0) and D3(BJ) parameters for PBE0-DH functional.

Bug Fixes

v0.14.0 / 2020-02-06

New Features

  • (GH#212) NWChem - Adds CI for the NWChem harness.

  • (GH#226) OpenMM - Moves the OpenMM harness to a canonical forcefield based method/basis language combination.

  • (GH#228) RDKit - Adds MMFF94 force field capabilities.

Enhancements

  • (GH#201) Psi4 - psi4 --version collection to only grab the last line.

  • (GH#202) Entos - Adds wavefunction parsing.

  • (GH#203) NWChem - Parses DFT empirical dispersion energy.

  • (GH#204) NWChem - Allows custom DFT functionals to be run.

  • (GH#205) NWChem - Improved gradient output and added Hessian support for NWChem.

  • (GH#215) Psi4 - if Psi4 location can be found by either PATH or PYTHONPATH, harness sets up both subprocesses and API execution.

  • (GH#215) get_program shows the helpful “install this” messages from found() rather than just saying “cannot be found”.

Bug Fixes

  • (GH#199) Fix typo breaking NWChem property parsing.

  • (GH#215) NWChem complains before a calculation if the necessary networkx package not available.

  • (GH#207) NWChem - Minor bug fixes for NWChem when more than core per MPI rank is used.

  • (GH#209) NWChem - Fixed missing extras tags in NWChem harness.

v0.13.0 / 2019-12-10

New Features

  • (GH#151) Adds a OpenMM Harness for evaluation of SMIRNOFF force fields.

  • (GH#189) General MPI support and MPI CLI generator.

Enhancements

  • (GH#175) Allows specifications for nnodes to begin MPI support.

  • (GH#177) NWChem - Parsing updates including Hessian abilities.

  • (GH#180) GAMESS - Output properties improvements.

  • (GH#181) NWChem - Output properties improvements.

  • (GH#183) Entos - Hessian and XTB support.

  • (GH#185) Entos - Improved subcommand support.

  • (GH#187) QChem - Support for raw log files without the binary file requirements and improved output properties support.

  • (GH#188) Automatic buffer reads to prevent deadlocking of process for very large outputs.

  • (GH#194) DFTD3 - Improved error message on failed evaluations.

  • (GH#195) Blackens the code base add GHA-based lint checks.

Bug Fixes

  • (GH#179) QChem - fixes print issue when driver is of an incorrect value.

  • (GH#190) Psi4 - fixes issues for methods without basis sets such as HF-3c.

v0.12.0 / 2019-11-13

New Features

  • (GH#159) Adds MolSSI Driver Interface support.

  • (GH#160) Adds Turbomole support.

  • (GH#164) Adds Q-Chem support.

Enhancements

  • (GH#155) Support for Psi4 Wavefunctions using v1.4a2 or greater.

  • (GH#162) Adds test for geometry optimization with trajectory protocol truncation.

  • (GH#167) CFOUR and NWChem parsing improvements for CCSD(T) properties.

  • (GH#168) Standardizes on dispatch.out for the common output files.

  • (GH#170) Increases coverage and begins a common documentation page.

  • (GH#171) Add Molpro to the standard suite.

  • (GH#172) Models renamed according to https://github.com/MolSSI/QCElemental/issues/155, particularly ResultInput -> AtomicInput, Result -> AtomicResult, Optimization -> OptimizationResult.

Bug Fixes

v0.11.0 / 2019-10-01

New Features

  • (GH#162) Adds a test to take advantage of Elemental’s Protocols. Although this PR does not technically change anything in Engine, bumping the minor version here allows upstream programs to note when this feature was available because the minimum version dependency on Elemental has been bumped as well.

Enhancements

  • (GH#143) Updates to Entos and Molpro to allow Entos to execute functions from the Molpro Harness. Also helps the two drivers to conform to GH#86.

  • (GH#145, GH#148) Initial CLI tests have been added to help further ensure Engine is running proper.

  • (GH#149) The GAMESS Harness has been improved by adding testing.

  • (GH#150, GH#153) TorchANI has been improved by adding a Hessian driver to it and additional information is returned in the extra field when energy is the driver. This also bumped the minimum version of TorchANI Engine supports from 0.5 to 0.9.

  • (GH#154) Molpro’s harness has been improved to support callinfo_X properties, unrestricted HF and DFT calculations, and the initial support for parsing local correlation calculations.

  • (GH#158) Entos’ output parsing has been improved to read the json dictionary produced by the program directly. Also updates the input file generation.

  • (GH#161) Updates MOPAC to have more sensible quantum-chemistry like keywords by default.

Bug Fixes

  • (GH#156) Fixed a compatibility bug in specific version of Intel-OpenMP by skipping version 2019.5-281.

  • (GH#161) Improved error handling in MOPAC if the execution was incorrect.

v0.10.0 / 2019-08-25

New Features

  • (GH#132) Expands CLI for info, run, and run-procedure options.

  • (GH#137) A new CI pipeline through Azure has been developed which uses custom, private Docker images to house non-public code which will enable us to test Engine through integrated CI on these codes securely.

  • (GH#140) GAMESS, CFOUR, NWChem preliminary implementations.

Enhancements

  • (GH#138) Documentation on Azure triggers.

  • (GH#139) Overhauls install documentation and clearly defines dev install vs production installs.

v0.9.0 / 2019-08-14

New Features

  • (GH#120) Engine now takes advantage of Elemental’s new Msgpack serialization option for Models. Serialization defaults to msgpack when available (conda install msgpack-python [-c conda-forge]), falling back to JSON otherwise. This results in substantial speedups for both serialization and deserialization actions and should be a transparent replacement for users within Engine and Elemental themselves.

Enhancements

  • (GH#112) The MolproHarness has been updated to handle DFT and CCSD(T) energies and gradients.

  • (GH#116) An environment context manager has been added to catch NumPy style parallelization with Python functions.

  • (GH#117) MOPAC and DFTD3 can now accept an extras field which can pass around additional data, conforming to the rest of the Harnesses.

  • (GH#119) Small visual improvements to the docs have been made.

  • (GH#120) Lists inside models are now generally converted to numpy arrays for internal storage to maximize the benefit of the new Msgpack feature from Elemental.

  • (GH#133) The GAMESS Harness now collects the CCSD as part of its output.

Bug Fixes

  • (GH#127) Removed unused imports from the NWChem Harvester module.

  • (GH#129) Missing type hints from the MolproHarness have been added.

  • (GH#131) A code formatting redundancy in the GAMESS input file parser has been removed.

v0.8.2 / 2019-07-25

Bug Fixes

  • (GH#114) Make compute and compute_procedure not have required kwargs while debugging a Fractal serialization issue. This is intended to be a temporary change and likely reverted in a later release

v0.8.1 / 2019-07-22

Enhancements

  • (GH#110) Psi4’s auto-retry exception handlers now catch more classes of random errors

Bug Fixes

  • (GH#109) Geometric auto-retry settings now correctly propagate through the base code.

v0.8.0 / 2019-07-19

New Features

  • (GH#95, GH#96, GH#97, and GH#98) The NWChem interface from QCDB has been added. Thanks to @vivacebelles and @jygrace for this addition!

  • (GH#100) The MOPAC interface has now been added to QCEngine thanks help to from @godotalgorithm.

Enhancements

  • (GH#94) The gradient and molecule parsed from a GAMESS calculation output file are now returned in parse_output

  • (GH#101) Enabled extra files in TeraChem scratch folder to be requested by users, collected after program execution, and recorded in the Result object as extras.

  • (GH#103) Random errors can now be retried a finite, controllable number of times (current default is zero retries). Geometry optimizations automatically set retries to 2. This only impacts errors which are categorized as RandomError by QCEngine and all other errors are raised as normal.

Bug Fixes

  • (GH#99) QCEngine now manages an explicit folder for each Psi4 job to write into and passes the scratch directory via -s command line. This resolves a key mismatch which could cause an error.

  • (GH#102) DFTD3 errors are now correctly returned as a FailedOperation instead of a raw dict.

v0.7.1 / 2019-06-18

Bug Fixes

  • (GH#92) Added an __init__.py file to the programs/tests directory so they are correctly bundled with the package.

v0.7.0 / 2019-06-17

Breaking Changes

  • (GH#85) The resource file programs.dftd3.dashparam.py has relocated and renamed to programs.empirical_dispersion_resources.py.

  • (GH#89) Function util.execute forgot str argument scratch_location and learned scratch_directory in the same role of existing directory within which temporary directories are created and cleaned up. Non-user-facing function util.scratch_directory renamed to util.temporary_directory.

New Features

  • (GH#60) WIP: QCEngine interface to GAMESS can run the program (after light editing of rungms) and parse selected output (HF, CC, FCI) into QCSchema.

  • (GH#73) WIP: QCEngine interface to CFOUR can run the program and parse a variety of output into QCSchema.

  • (GH#59, GH#71, GH#75, GH#76, GH#78, GH#88) Molpro improvements: Molpro can be run by QCEngine; and the input generator and output parser now supports CCSD energy and gradient calculations. Large thanks to @sjrl for many of the improvements

  • (GH#69) Custom Exceptions have been added to QCEngine’s returns which will make parsing and diagnosing them easier and more programmatic for codes which invoke QCEngine. Thanks to @dgasmith for implementation.

  • (GH#82) QCEngine interface to entos can create input files (dft energy and gradients), run the program, and parse the output.

  • (GH#85) MP2D interface switched to upstream repo (https://github.com/Chandemonium/MP2D v1.1) and now produces correct analytic gradients.

Enhancements

  • (GH#62, GH#67, GH#83) A large block of TeraChem improvements thanks to @ffangliu contributions. Changed the input parser to call qcelemental to_string method with bohr unit, improved output of parser to turn stdout into Result, and modified how version is parsed.

  • (GH#63) QCEngine functions util.which, util.which_version, util.parse_version, and util.safe_version removed after migrating to QCElemental.

  • (GH#65) Torchani can now handle the ANI1-x and ANI1-ccx models. Credit to @dgasmith for implementation

  • (GH#74) Removes caching and reduces pytorch overhead from Travis CI. Credit to @dgasmith for implementation

  • (GH#77) Rename ProgramExecutor to ProgramHarness and BaseProcedure to ProcedureHarness.

  • (GH#77) Function util.execute(..., outfiles=[]) learned to collect output files matching a globbed filename.

  • (GH#81) Function util.execute learned list argument as_binary to handle input or output files as binary rather than string.

  • (GH#81) Function util.execute learned bool argument scratch_exist_ok to run in a preexisting directory. This is handy for stringing together execute calls.

  • (GH#84) Function util.execute learned str argument scratch_suffix to identify temp dictionaries for debugging.

  • (GH#90) DFTD3 now supports preliminary parameters for zero and Becke-Johnson damping to use with SAPT0-D

Bug Fixes

  • (GH#80) Fix “psi4:qcvars” handling for older Psi4 versions.

v0.6.4 / 2019-03-21

Bug Fixes

  • (GH#54) Psi4’s Engine implementation now checks its key words in a case insensitive way to give the same value whether you called Psi4 or Engine to do the compute.

  • (GH#55) Fixed an error handling routine in Engine to match Psi4.

  • (GH#56) Complex inputs are now handled better through Psi4’s wrapper which caused Engine to hang while trying to write to stdout.

v0.6.3 / 2019-03-15

New Features

  • (GH#28) TeraChem is now a registered executor in Engine! Thanks to @ffangliu for implementing.

  • (GH#46) MP2D is now a registered executor in Engine! Thanks to @loriab for implementing.

Enhancements

  • (GH#46) dftd3’s workings received an overhaul. The mol keyword has been replaced with dtype=2, full Psi4 support is now provided, and an MP2D interface has been added.

Bug Fixes

  • (GH#50 and GH#51) Executing Psi4 on a single node with multiprocessing is more stable because Psi4 temps are moved to scratch directories. This behavior is now better documented with an example as well.

  • (GH#52) Psi4 calls are now executed through the subprocess module to prevent possible multiprocessing issues and memory leak after thousands of runs. A trade off is this adds about 0.5 seconds to task start-up, but its safe. A future Psi4 release will correct this issue and the change can be reverted.

v0.6.2 / 2019-03-07

Enhancements

  • (GH#38 and GH#39) Documentation now pulls from the custom QC Archive Sphinx Theme, but can fall back to the standard RTD theme. This allows all docs across QCA to appear consistent with each other.

  • (GH#43) Added a base model for all Procedure objects to derive from. This allows procedures’ interactions with compute programs to be more unified. This PR also ensured GeomeTRIC provides Provenance information.

Bug Fixes

  • (GH#40) This PR improved numerous back-end and testing quality of life aspects. Fixed setup.py to call pytest instead of unittest when running tests on install. Some conda packages for Travis-CI are cached to reduce the download time of the larger computation codes. Psi4 is now pinned to the 1.3 version to fix build-level pin of libint. Conda-build recipe removed to avoid possible confusion for everyone who isn’t a Conda-Forge recipe maintainer. Tests now rely exclusively on the conda env setups.

v0.6.1 / 2019-02-20

Bug Fixes

  • (GH#37) Fixed an issue where RDKit methods were not case agnostic.

v0.6.0 / 2019-02-28

Breaking Changes

  • (GH#36) breaking change Model objects are returned by default rather than a dictionary.

New Features

  • (GH#18) Add the dftd3 program to available computers.

  • (GH#29) Adds preliminary support for the Molpro compute engine.

  • (GH#31) Moves all computation to ProgramExecutor to allow for a more flexible input generation, execution, output parsing interface.

  • (GH#32) Adds a general execute process which safely runs subprocess jobs.

Enhancements

  • (GH#33) Moves the dftd3 executor to the new ProgramExecutor interface.

  • (GH#34) Updates models to the more strict QCElemental v0.3.0 model classes.

  • (GH#35) Updates CI to avoid pulling CUDA libraries for torchani.

  • (GH#36) First pass at documentation.

v0.5.2 / 2019-02-13

Enhancements

  • (GH#24) Improves load times dramatically by delaying imports and cpuutils.

  • (GH#25) Code base linting.

  • (GH#30) Ensures Psi4 output is already returned and Pydantic v0.20+ changes.

v0.5.1 / 2019-01-29

Enhancements

  • (GH#22) Compute results are now returned as a dict of Python Primals which have been serialized-deserialized through Pydantic instead of returning un-processed Python objects or json-compatible string.

v0.5.0 / 2019-01-28

New Features

  • (GH#8) Adds the TorchANI program for ANI-1 like energies and potentials.

  • (GH#16) Adds QCElemental models based off QCSchema to QCEngine for both validation and object-based manipulation of input and output data.

Enhancements

  • (GH#14) Migrates option to Pydantic objects for validation and creation.

  • (GH#14) Introduces NodeDescriptor (for individual node description) and JobConfig (individual job configuration) objects.

  • (GH#17) NodeDescriptor overhauled to work better with Parsl/Balsam/Dask/etc.