Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.9.0]

Changed

  • Failed calculations are now stored in a failed-quacc-12345- directory to distinguish these tasks from the running tasks in tmp-quacc-12345-
  • The output schema is now written to a serialized JSON file instead of pickle for security and ease-of-use reasons. It can be rehydrated via loadfn("quacc_results.json.gz") where loadfn is from monty.serialization import loadfn
  • The fmax attribute was move from the base level to the parameters_opt section since it is an input parameter

Fixed

  • File shuttling after a completed calculation is now faster since we simply rename the directory instead of moving each individual file

[0.8.0]

Added

  • Added a context handler, quacc.settings.change_settings, that can be used to modify global settings temporarily
  • Added quacc.calculators.vasp.params.MPtoASEConverter to convert between Pymatgen- and Atomate2-style input parameters to ASE-compatabile parameters

Fixed

  • Fixed copying of WAVECAR between steps of the QMOF recipes

Changed

  • Overhauled the MP recipes to ensure better compatability with atomate2 workflows
  • The workflow engine must be directly specified with WORKFLOW_ENGINE, as noted in the docs
  • Changed VASP_MAG_CUTOFF from 0.05 to 0.02
  • Removed the preset keyword argument from the QMOF recipes

Removed

  • Removed the pmg_input_set keyword argument from the Vasp calculator

[0.7.8]

Added

  • Added support for Parsl "special" keyword arguments (e.g. timeout, parsl_resource_specification)

Fixed

  • Fixed bug where the common phonon subflow would generate a Phonopy object based on the unrelaxed, rather than relaxed, structure
  • Sped up the common phonon subflow by removing duplicate get_phonopy() calls

[0.7.7]

Added

  • Added quasi IRC recipes to ORCA and Q-Chem
  • Added frequency recipe to ORCA

Fixed

  • Fixed various type hints
  • Improved performance for the common phonon flow
  • Improved performance for ideal gas thermo calculations

[0.7.6]

Fixed

  • Fixed file extension for the optimizer trajectories, which should have been .json instead of .pckl

[0.7.5]

Changed

  • Removed the atoms_info field from the AtomsSchema since this is already available in the database via Pymatgen's MSONAtoms serialization

[0.7.4]

Changed

  • Only call jsanitize once before uploading to the Store

[0.7.3]

Added

  • Added new Espresso recipes to perform electron-phonon calculations and Fourier interpolation of the phonon potential

Fixed

  • Fixed potential issues with I/O settings and Espresso
  • Fixed passing of custom decorators in the Espresso grid_phonon_flow

[0.7.2]

Changed

  • Calculator executable commands are now str type instead of Path
  • Removed slowconv from the default parameters of the ORCA recipes
  • The Q-Chem calculator now uses the TaskDoc from emmet in its results attribute

Fixed

  • Fixed user setting of logger level
  • Fixed a glob-based issue with copy_decompress_files

[0.7.1]

Added

  • Added an optional MP compatability checker for MP recipes
  • Summaries for intermediate ASE optimization steps are now stored in the output schema for VASP and cclib-based recipes when store_intermediate_results=True
  • Added a WRITE_PICKLE setting, which by default, will write out a .pkl file containing the result schema to the directory

Changed

  • Updated ruff settings
  • The Gaussian and ORCA static_job routines do a force calculation by default now

Fixed

  • Fixed input file formatting for orcablocks in ORCA recipes

Removed

  • Removed the CHDIR setting

[0.7.0]

Added

  • Added a non_scf_job for VASP

Changed

  • There are no more os.chdir calls to ensure thread safety
  • Use pymatgen.io.ase.MSONAtoms to make MSONable Atoms
  • Changed default NEDOS value from 5001 to 3001 for VASP static jobs (10x the default)

Fixed

  • Fixed multithreaded @task distribution with VASP and Q-Chem
  • Fixed a bug where, with Prefect, the State would raise an indexing error when passing around deferred dict entries
  • Fixed a bug when job_parameters and job_decorators are both passed to customize_funcs()
  • Raise a ValueError when the user provides SCRATCH_DIR or RESULTS_DIR as a relative path

[0.6.10]

Fixed

  • Fixed pickle-ability of the schemas
  • Fixed multithreaded @task distribution with GULP, Espresso, and common phonon flow recipes
  • Fixed concurrency issues with VASP/Q-Chem due to refactoring

Removed

  • Removed the quacc.schemas.atoms._quacc_sanitize function

[0.6.9]

Added

  • Added MP compatability corrections in VASP MP recipes
  • Added various phonon recipes for Espresso
  • Added various DOS recipes for Espresso

Fixed

  • Fixed a rare edge case where final magmoms would not be moved to initial magmoms of next run in MP VASP recipes

[0.6.8]

Added

  • Added an option to prevent os.chdir calls for multithread safety
  • Added a common elastic calculation

Changed

  • Switched to ruff for formatting, replacing the need for black and isort
  • Changed VASP double relaxes to be flows and not jobs
  • Changed the behavior of quacc.utils.files.copy_decompress_files

Fixed

  • Fixed copy_files handling with workflow engines
  • Fixed MP VASP double relaxes, where the same relaxation was done twice by mistake
  • Fixed use of **calc_kwargs in MP flow recipes

[0.6.7]

Added

  • Added a store_intermediate_results keyword option to quacc.runners.ase.run_opt() to allow for storing of the logfiles in intermediate geometry optimization steps.
  • Added support for Pymatgen-based input sets in VASP jobs
  • Added an MP meta-GGA VASP static job
  • Added MP GGA relax job, MP GGA static job, and MP GGA relax flow
  • Added a validity checker on CLI parameters

Changed

  • Changed the default ASE optimizer from FIRE to BFGS for most recipes
  • Changed the VASP DoubleRelaxSchema to be consistent between flows
  • Refactored VASP and Q-Chem execution commands in custom calculators

Fixed

  • Fixed dir_name in VASP output schema
  • Fixed auto-detection of the Prefect workflow engine in settings
  • Fixed compatability of MP meta-GGA workflow with that in atomate2

[0.6.6]

Fixed

  • Using environment variables to set a setting to None now works as expected
  • Overall, more intuitive and robust handling of settings across the various input methods

[0.6.5]

Added

  • PDOS jobs and flows for Espresso

Changed

  • Modified the Espresso results schema to be DB-compatible
  • The PRIMARY_STORE setting has changed to STORE and is now formatted more intuitively
  • Uses 2024 stable release of black

Fixed

  • Fixed usage of MontyStore as the data store option

Removed

  • Removed the deprecated "q-chem legacy" recipes

[0.6.4]

Added

  • Added a supercell_matrix keyword argument to the phonon recipes.
  • More data is now generated, parsed, and stored in phonon workflows, including total DOS and the automatically generated band structure

Changed

  • The seekpath dependency is now required for phonon workflows, as reflected in the quacc[phonons] optional dependencies
  • Changed the min_length: float | None keyword argument in phonon flows to min_lengths: float | tuple[float, float, float] | None for greater flexibility. The default value is now set to 20.0 instead of 15.0 as well.

Fixed

  • Fixed occasional edge cases where the charge/spin multiplicity checker would raise a ValueError in generating the RunSchema
  • Fixed phonon flow with MACE-MP-0 when dispersion=True

[0.6.3]

Added

  • Added phonon job for MLPs
  • Added an ASE relax job recipe for ONETEP
  • Added a non-SCF job for Quantum Espresso
  • Added a DOS job for Quantum Espresso
  • Added a DOS flow for Quantum Espresso

Changed

  • Redesigned the common_phonon_flow to accept new keyword arguments that enable symmetry reduction. A pre-relaxation step is now also carried out by default.

Fixed

  • Ensures the "restart" keyword argument is not set when a SciPy optimizer is used
  • Fixed the ONETEP_CMD setting to be str instead of Path when used to instantiate the calculator
  • Quantum Espresso restarts are now disabled between steps in ASE relaxations
  • Various bug fixes for the Espresso grid_phonon_flow
  • Fixed redundant Structure info in the RunSchema

[0.6.2]

Changed

  • The CREATE_UNIQUE_DIR setting is now set to True by default.
  • The temporary directory name and its symlink have been slightly updated to have "tmp-" and "symlink-" at the front of the name instead of the end for easier file navigation.
  • Updated the "trajectory" entry in the OptSchema to be list[Atoms] instead of list[AtomsSchema]

Fixed

  • Fixed an occasional race condition that occurs when running concurrent calculations in multi-threaded mode
  • The temporary directory made when a @job runs now has a name consistent with the folder where the results will ultimately be stored.
  • Significant speedup in generating the OptSchema

[0.6.1]

Added

  • Support for ONETEP recipes (@nekkrad)
  • New Espresso recipe for ASE external relaxations (@tomdemeyere)

Fixed

  • Fixed bug where autoamtic k-point schemes in VASP would return kpts as list[float] instead of list[int]
  • VASP runs now respect the CHECK_CONVERGENCE global setting when set to False
  • Fixed bug where the gamma-point only version of VASP was being called if kpts was None but kspacing was not None

Removed

  • Removed the broken TRICs support with Sella
  • Removed the covalent_to_db function

[0.6.0]

Added

  • A new grid_phonon recipe in Espresso (@tomdemeyere)
  • Preliminary support for the Prefect workflow engine, again, but this time without it breaking everything

Changed

  • Raised the default logger level from WARNING to INFO

Fixed

  • Codes calling Custodian can be used in Jupyter Notebooks
  • Fixed an error in the Espresso phonon_flow when using the master branch of ASE
  • Fixed a few erroneous type hints
  • Fixed the typer depenendecy in pyproject.toml to be typer[all] like it was supposed to be
  • Fixed a bug when passing decorator keyword arguments when using Dask

[0.5.2]

Changed

  • ORCA and GULP recipes now use a more intuitive and concise list[str] input argument format instead of a dict format when overriding defaults

Fixed

  • Fixed concurrency issues with Dask subflows

[0.5.1]

Added

  • Adds a new ase_relax_job for ORCA
  • Adds a new relax_job and post_processing_job for Quantum Espresso
  • quacc.wflow_tools.customizers.strip_decorator and quacc.wflow_tools.customizers.redecorate are imported in the base __init__.py for easy user access
  • The CLI now has color

Changed

  • The test suite's SCRATCH_DIR and RESULTS_DIR are now fixed to a given location
  • The default Espresso preset has been changed to "sssp_1.3.0_pbe_efficiency"
  • To remove calculator defaults entirely, quacc.Remove is recommended in place of None
  • The quacc.wflow_tools.customizers.strip_decorator function is recommended instead of calling .__wrapped__

Fixed

  • Fixed Dask subflows that were calling .compute()
  • Fixed various bugs in the Espresso calculator and recipes

[0.5.0]

Added

  • Created a quacc.wflow_tools.customizers module to aid in customizing pre-made recipes.

Changed

  • Overhauled how sub-jobs in recipes can be dynamically modified by the user to increase flexibility.
  • Changed default fmax for quacc.recipes.mlp.core.relax_job to 0.05.
  • Renamed the quacc.utils.dicts.merge_dicts function to ._recursive_dict_pair_merge to better reflect its functionality.
  • Renamed the quacc.utils.dicts.merge_several_dicts function to .recursive_dict_merge to better reflect its functionality.

Fixed

  • Increased support of ~/ throughout quacc file handling mechanisms
  • Fixed an infinite recursion error when copy_decompress_files_from_dir was run in the current working directory.

[0.4.6]

Added

  • The WORKFLOW_ENGINE quacc setting now accepts None.
  • A DEBUG quacc setting as been added.

Changed

  • The way to run complex, dynamic flows has been modified to rely on functools.partial() instead of kwargs. See the updated documentation.
  • Refactored test suite

[0.4.5]

Added

  • Added ML interatomic potential recipes

Changed

  • ASE optimization log files and pickle files are written to disk by default
  • Deprecated the old Q-Chem recipes and replaced them with the updated versions

Removed

  • Officially drop support of the Prefect workflow engine

[0.4.4]

Added

  • Added core Quantum ESPRESSO recipes and custom calculator. (@tomdemeyere)
  • Added a new function, quacc.utils.files.copy_decompress_files_from_dir

Changed

  • The copy_files kwarg in most recipes can now include a directory
  • Renamed quacc.utils.files.copy_decompress to quacc.utils.files.copy_decompress_files

Fixed

  • Quacc settings that are paths now have ~/ expanded in most cases

[0.4.3]

Added

  • Added preliminary support for the Dask workflow engine via Dask Delayed and Dask Distributed.

Changed

  • Renamed CREATE_UNIQUE_WORKDIR to CREATE_UNIQUE_DIR to better reflect its utility.
  • The default for the SCRATCH_DIR setting is now None instead of ~/.quacc_scratch. In other words, the default is to not use a scratch directory. This should help with onboarding, and the ability to set it as None may be broadly of interest. Setting the SCRATCH_DIR to a given Path will still work as expected.
  • Files are no longer recursively copied from SCRATCH_DIR to RESULTS_DIR. Instead, they are recursively moved. This should speed up I/O operations.

Fixed

  • Fixed a missing phonopy_kwargs keyword argument in quacc.recipes.common.phonons

[0.4.2]

Added

  • Added a Jenkins-based test suite that runs tests on HPC resources without mocking for Gaussian, GULP, ORCA, and VASP (minimal)
  • Added a TBLite phonon recipe

Changed

  • Changed the auto_kpts kwarg in the Vasp calculator to pmg_kpts
  • Internal refactoring of recipes to have a separate _base.py module when appropriate
  • Removed the unnecessary Atoms arg from the calc_setup function

Fixed

  • Fixed slow initial import (3 s → 1 s)
  • Fixed a few broken type hints
  • Fixed functional and basis set strings in Gaussian recipes
  • Uses number of physical cores instead of logical cores as default for molecular DFT recipes

[0.4.1]

Changed

  • Switched to using the PyPI release of NewtonNet (1.1).
  • NewtonNet recipes don't run a Hessian calculation by default unless needed

Fixed

  • Fixed circular import issue when running Q-Chem calculations.

Removed

  • Removed unsupported qchem_internal_relax_job

[0.4.0]

Added

  • Added quacc.recipes.common, including quacc.recipes.common.slabs, quacc.recipes.common.defects, and quacc.recipes.common.phonons
  • Added phonopy schema in quacc.schemas.phonons
  • Added EMT phonon workflow

Changed

  • The method for specifying swaps to the default calculator arguments in recipes has been overhauled. In place of the previous calc_swaps: dict approach, additional parameters can be specified via the **kwargs. In practice, this means in recipes you can do scf = "diis", max_steps=100 instead of calc_swaps={"scf":"diis", "max_steps":100}, for instance.
  • Moved quacc.runners.calc to quacc.runners.ase
  • Moved quacc.runners.prep to quacc.schemas.prep
  • Reduced code duplication across complex flows

[0.3.13]

Fixed

  • Fixed support for the most recent version of ASE as of 11/2/2023

[0.3.12]

Added

  • Added more type hints for input keyword arguments
  • Added the quacc info command-line argument for error reporting

Changed

  • Consolidated VASP INCAR co-pilot settings
  • Internal refactoring of the Q-Chem and VASP calculators

Fixed

  • All Path-based settings have .expanduser() applied

[0.3.11]

Changed

  • Improved error handling

[0.3.10]

Changed

  • DFTB+ MaxSccIterations set to 200 by default
  • SCC errors in DFTB+ relaxations will be reported with higher priority than a relaxation error

[0.3.9]

Changed

  • Changed prefix of scratch directories to have the datetime in it for easier debugging

Fixed

  • DFTB+ recipes now won't crash when kpts=None for structures with PBCs

[0.3.8]

Changed

  • Changed minimum version of Parsl

[0.3.7]

Added

  • Added type-hinting for schemas

Changed

  • Recipes now take Atoms instead of Atoms | dict as input
  • Recipes no longer require the use of fetch_atoms
  • Standardized schema fields

Removed

  • Removed the fetch_atoms function

[0.3.6]

Fixed

  • Fixed VASP recipes to always respect calc_swaps.
  • Fixed setting multiple cores in Custodian for Q-Chem runs.

[0.3.5]

Added

  • Added a new VibThermoSchema that merges the VibSchema and ThermoSchema as a convenience

Changed

  • The output of recies no longer automatically removes blank lists/dicts/sets to maintain a consistent schema.
  • The tblite freq_job and lj freq_job now use VibThermoSchema as the output
  • Changed default SCRATCH_DIR from Path.cwd() / ".scratch" to Path("~/.scratch")

[0.3.4]

Added

  • Added a new documentation section for worked examples on HPC.

Changed

  • Updated the minimum required versions for Pymatgen and emmet-core to reflect Pydantic 2 update.
  • Added symprec=1e-8 to the default parameters of VASP relaxation jobs.
  • VASP bulk recipes now use "BulkSet" as the default preset instead of None.
  • VASP slab recipes now use "SlabSet" as the default preset instead of None.

[0.3.3]

Fixed

  • Fixed pip version conflict when installing Covalent dependencies.

[0.3.2]

Changed

  • Migration to Pydantic 2 is complete, along with the corresponding dependencies.

[0.3.1]

Changed

  • Pydantic field type validation has been improved.
  • Moved quacc.utils.atoms/.slabs/.defects into quacc.atoms.core/.slabs/.defects
  • Moved quacc.custodian to quacc.calculators.custodian
  • Moved quacc.utils.thermo.ideal_gas to quacc.builders.thermo.run_ideal_gas
  • Renamed quacc.schemas.ase.summarize_thermo to quacc.schemas.ase.summarize_ideal_gas_thermo

[0.3.0]

Changed

  • Changed default SCRATCH_DIR from /tmp to Path.cwd() / .scratch
  • Refactored decorator handling to be more concise
  • Renamed [optimizers] extras to [sella]
  • Moved quacc.utils.wflows into quacc.wflow_tools.decorators and quacc.wflow_tools.prefect
  • Moved quacc.utils.db into quacc.wflow_tools.db
  • Moved quacc.utils.calc to quacc.runners.ase
  • Moved quacc.presets to quacc.calculators.presets

Fixed

  • Fixed parsing of RESULTS_DIR and SCRATCH_DIR paths when they contain ~
  • Symlinks are no longer created if RESULTS_DIR == SCRATCH_DIR since this is redundant
  • If RESULTS_DIR or SCRATCH_DIR are not present, they will be automatically made

[0.2.8]

Changed

  • Decorators are now applied at import time rather than at function-call time.

Fixed

  • Fixed compatibility with FireWorks.
  • Fixed I/O issue on Windows and NFS file systems where Sella optimizations would crash.

[0.2.7]

Added

  • Added a freq_job recipe in Q-Chem (@samblau)
  • Added support for TRICs in Sella calculations (@samblau)

Changed

  • Refactored all recipes to prevent code duplication
  • Set LREAL = False in VASP BulkSet.yaml

[0.2.6]

Added

  • Add support for Path objects everywhere possible.

Changed

  • Charge and spin multiplicity are now required arguments in molecular DFT calculators.
  • Slab recipes now use make_slabs_from_bulk instead of make_max_slabs_from_bulk
  • Use the logging module when warnings do not need to be immediately addressed.
  • Functions are no longer used as kwargs in recipes to help with (de)serialization in certain workflow engines.

Removed

  • Removed make_max_slabs_from_bulk function.

[0.2.5]

Added

  • Added support for the Redun workflow engine.
  • Added a simple CLI for (un)setting YAML config parameters.

Changed

  • Internal refactoring of the Vasp calculator.

Removed

  • Removed the demonstration Jobflow EMT slab recipe.

[0.2.4]

Changed

  • Updated VASP co-pilot rules and BulkSet.yaml in accordance with recent MP benchmarking (#849).
  • Moved fetch_atoms to quacc.schemas.

Fixed

  • VASP: Fixed a scenario where SIGMA was set to 0.05 if the user provided SIGMA > 0.05. This was supposed to happen when ISMEAR = 0 but was previously done when ISMEAR = -5, which is not influenced by SIGMA.
  • Fixed mp_metagga_relax_flow to use a @flow decorator instead of @job
  • Fixed the Q-Chem Quasi-IRC job to run as one @job instead of two.

[0.2.3]

Added

  • Added new defect EMT workflows (@rwexler)
  • Added new defect utilities (@rwexler)
  • Added a custom Q-Chem calculator based on Pymatgen and Custodian. (@samblau)
  • Added Q-chem core recipes. (@samblau)
  • Added the ability to pass option run_kwargs to the .run() method of the ASE optimizers.

Changed

  • Removed the need to call ct.dispatch when launching Covalent workflows.
  • Renamed quacc.util to quacc.utils
  • Refactored and standardized the NewtonNet recipes to match the other recipes

Fixed

  • The WORKFLOW_ENGINE setting can now be set dynamically, as expected.

[0.2.2]

Changed

  • Changed package handling in pyproject.toml to better handle pip installs.

[0.2.1]

Added

  • Added NewtonNet recipes and better sella support (@kumaranu)

Changed

  • Standardized relax_cell to be False by default for all recipes.
  • Update the default SIGMA and ISMEAR in MPScanSet to match the new values to be used in Atomate2.

Fixed

  • Fixed a bug on Windows where the trajectory file would not be closed after a relaxation, causing permission errors.

Removed

  • Removed atomate2 as a dependency.
  • Removed experimental Prefect support.

[0.2.0]

Added

  • Added a quacc global setting, WORKFLOW_ENGINE, to set the workflow manager.
  • Added support for the new covalent-hpc-plugin in pyproject.toml.

Changed

  • Quacc recipes are now decorated with generic @job, @subflow, or @flow decorators to be workflow engine-agnostic.
  • Covalent is now an optional dependency to allow the base quacc package to be dependency-light.
  • Default VASP pseudopotentials changed to setups_pbe54.yaml.
  • Changed quacc.recipes.emt.jobflow and quacc.recipes.emt.prefect to quacc.recipes.emt._jobflow and quacc.recipes.emt._prefect

Fixed

  • Set LMAXMIX based on the Z value, not the s/p/d/f-block type.
  • Do not set automatically LMAXTAU to 8 for f-containing elements in Vasp calculator.

Removed

  • Removed quacc.recipes.emt.parsl since it is now obsolete.
  • Removed quacc config command-line option.

[0.1.3]

Added

  • Added a PRIMARY_STORE quacc setting that, when specified, will automatically store all results in the specified Maggma store.

Changed

  • The trajectory is now stored in quacc.schemas.cclib.summarize_run.
  • By default, results are now stored in a fixed RESULTS_DIR, which defaults to the current working directory.

Fixed

  • Fix path-related issues when running in local multi-threaded mode.
  • Psi4 recipes now use uks for unrestricted calculations instead of uhf.

[0.1.2]

Added

  • Added support for Prefect.
  • Added quacc.wflow_tools module.

Changed

  • Made slab-related kwargs more consistent, such as by changing slab_relax_electron/slab_relax_app to just slab_relax regardless of workflow manager.

[0.1.1]

Added

  • Added this CHANGELOG.md file.
  • Added the quacc.recipes.emt.parsl module.
  • Added a CLI for quacc along with a quacc config option to configure Covalent appropriately upon install.
  • Added generic type hints for schemas.
  • Added a CREATE_UNIQUE_DIR global setting to have quacc automatically make a unique working directory for each calculation.
  • Added CHECK_CONVERGENCE to global settings.

Changed

  • The quacc directory is now found in a src basefolder.
  • All recipes now support the Atoms object being passed in as an AtomsSchema.
  • The slab_relax_job kwarg in recipes.emt.slabs and recipes.vasp.slabs workflows can no longer be set to None, as there are few situations where this would be desired.
  • Class-based recipes have been converted to functions since they don't save state or have inheritance.

Docs

  • Switched the docs from Furo to Material for MkDocs.
  • Expanded upon Parsl documentation.
  • Modified tutorials and added example configs for Slurm.

Fixed

  • Temporary directories are cleaned up after the run is completed.

Removed

  • Removed quacc.recipes.vasp.jobflow module to prioritize Covalent and Parsl.

[0.1.0]

See https://github.com/quantum-accelerators/quacc/releases/tag/v0.1.0 for more details.

[0.0.6]

See https://github.com/quantum-accelerators/quacc/releases/tag/v0.0.6 for more details.

[0.0.5]

See https://github.com/quantum-accelerators/quacc/releases/tag/v0.0.5 for more details.

[0.0.4]

See https://github.com/quantum-accelerators/quacc/releases/tag/v0.0.4 for more details.

[0.0.3]

See https://github.com/quantum-accelerators/quacc/releases/tag/v0.0.3 for more details.

[0.0.2]

See https://github.com/quantum-accelerators/quacc/releases/tag/v0.0.2 for more details.

[0.0.1]

See https://github.com/quantum-accelerators/quacc/releases/tag/v0.0.1 for more details.