Changelog

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

The format is based on Keep a Changelog.

Starting with version 0.12.0, this project implements a version of Semantic Versioning described here called “Realistic” Semantic Versioning.

Unreleased

Added

Task/Study (Group)

Coordinator

Harvest

next

  • autojob restart CLI

  • autojob.next.advance and autojob.next.restart

  • autojob.parametrizations.create_parametrization

Other

  • The plugin interface for tasks, harvesters, and analyses

  • autojob.legacy: legacy mode classes/functions

  • autojob.parametrizations.getattrpath()

  • Several settings: see AutojobSettings

  • autojob.utils.get_loader(): replacement for autojob.coordinator.scripter.Scripter.get_loader()

  • autojob.utils.get_last_updated

  • autojob.utils.copy_file_permissions_and_ownership

  • autojob.utils.schemas.id_factory

Changed

Task/Study (Group)

  • major refactor of Task and subclasses to adhere to the TaskBase abstract base class

  • magmoms are retrieved from the calculator results dictionary instead of with ase.atoms.Atoms.get_magnetic_moments() in Task.prepare_input_atoms()

  • .TaskMetadata._build_class changed to autojob.bases.task_base.TaskMetadataBase.task_class

  • Moved .patch_task to autojob.calculation.calculation.Calculation

  • Job stats files are created newly every time and are now JSON files

  • autojob.task.TaskOutputs.outcome is set in calculation according to convergence and autojob.hpc.SchedulerOutputs.state

  • autojob.study.Study and autojob.study_group.StudyGroup implemented as Pydantic BaseModel

  • autojob.study.StudyType moved to autojob.legacy module

  • Task metadata is now only read from the job file (set by SETTINGS.TASK_METADATA_FILE)

  • copy metadata from input atoms in Calculation.patch_task

  • autojob.task re-implemented in autojob.tasks.task

Coordinator

Harvest

  • autojob.harvest.patch.build_metadata_patches() implements a “Strategy” design pattern to enable applicability for all types of metadata

  • autojob.harvest.charge implemented as ddec6 and bader harvesters

  • the whitelist and blacklist arguments to autojob harvest and harvest() are renamed to whitelists and blacklists in better agreement with their implementations

  • ElementaryStep renamed to autojob.harvest.mechanism.ElectrochemicalStep; stoichiometric coefficient added as attribute

  • all new calculation outputs returned in flatten_calculations

  • DOS can be optionally retained when harvesting VASP calculations

next

Other

  • autojob.utils.parsing.parse_job_stats_file() raises a DeprecationWarning if an old job_stats.txt file is parsed

  • the names of several autojob settings have been changed

  • reorder_vasp_sequence moved to utils

  • autojob run CLI

  • all templates but for new, simplified templates run.py.j2 and run.sh.j2

  • directory finders (e.g., find_study_dirs) identify directories by the presence of metadata files

  • find_job_dirs renamed to find_task_dirs

  • find_calculation_dirs renamed to find_task_group_dirs

  • substitute_placeholders accepts regular Python format strings

  • add defaults for fields for autojob.workflow.Step

Fixed

Task/Study (Group)

Harvest

Other

  • Atoms objects that are serialized with BaseModel.model_dump are serialized as Atoms objects if mode="python" and as dictionaries otherwise

Removed

Task/Study (Group)

  • autojob.study.StudyType: study_type will only be a field name for legacy mode

  • Calculation.write_input_atoms: use autojob.task.Task.write_inputs()

  • Calculation.to_directory: use autojob.task.Task.to_directory()

  • autojob.study.TASK_FILES

  • StudyGroup.as_dict, StudyGroup.from_dict, StudyGroup.from_path, StudyGroup.create_directory, StudyGroup.addstudies, StudyGroup.removestudies and StudyGroup.studies property

  • SchedulerOutputs.error: all scheduler information is recorded in autojob.hpc.SchedulerOutputs.state

  • task.TaskInputs.extract_files_to_copy()

  • calculation.Calculation.write_python_script()

  • autojob.hpc.Cluster and all instances

  • autojob.hpc.SchedulerError

  • autojob.next.update_metadata_file

  • legacy_mode arguments from most functions/methods

Coordinator

  • autojob.coordinator.scripter: script writing handled by autojob.task.Task.write_inputs()

Harvest

next

  • autojob.advance and autojob.cli.advance (CLI logic is contained in autojob.next.advance)

  • restart-relaxation and run-vibration CLIs and related modules autojob.next.restart_relaxation and autojob.next.run_vibration

Other

  • autojob.advance.advance.write_calculation_metadata

  • autojob.schemas: charge data consolidated in autojob.calculation.charge

  • autojob.calculation sub-package

  • autojob.utils.extract_structure_name

  • autojob.utils.parsing.import_class

0.0.1a37 (2024-08-21)

Added

Changed

Removed

  • autojob.accountant and autojob.auditor have been removed in favour of using Pydantic for validation and deserialization

  • autojob.coordinator.arc has been removed; use autojob.hpc instead

  • autojob.coordinator.calculation has been removed; use autojob.calculation and autojob.task instead

  • autojob.coordinator.study has been removed; use autojob.study instead

  • autojob.coordinator.submission_configuration.ParameterSelectionCombobox has been removed

  • autojob.utils.validate_id has been removed

0.0.1a36 (2022-12-02)

Added

  • autojob.details

Removed

  • findfile.find_details()

  • findfile.infer_details()

  • findfile.determine_entry_type()

  • findfile.find_studies()

0.0.1a35 (2022-12-01)

Added

Changed

  • ParseError`s are caught by :meth:.Restarter.characterize_jobs`

  • Default buffer time (i.e., time that a Vasp calculation is stopped prior to the actual end time) is increased from 5% to 10%

  • findfile.find_template_dir() renamed to findfile._find_template_dir() (i.e., made private to module)

Fixed

  • Parsing of structure name in Restarter.create_restart_jobs()

  • New job names returned by Restarter.create_restart_jobs() instead of old job names

0.0.1a34 (2022-11-28)

Added

  • docstrings for autojob.accountant.parsing functions

  • Optional keyword argument parameter (with_wavecar) to autojob.cli.restart.Restarter.create_restart_jobs()

  • Optional inclusion of WAVECAR in restarted jobs from autojob restart

  • autojob.cli.restart.Restarter.characterize_jobs()

Changed

  • study group ID, study ID, calculation ID, and job ID included in accountant.AccountingError raised by parsing.parse_job_results()

  • gamma key added to first dictionary returned by parsing.parse_job_results()

  • Different printing of not added study groups in Accountant.create_study_group(), Accountant.create_study(), Accountant.create_calculation() depending on verbosity

  • Accountant.create_study_group(), Accountant.create_study(), Accountant.create_calculation() print unknown errors to console

Fixed

0.0.1a33 (2022-11-22)

Changed

  • Memory limit specified per core instead of per node

Fixed

  • rendering of k-pts in run.py

0.0.1a32 (2022-11-15)

Added

  • Option to format the vasp.sh for running on ComputeCanada clusters

Removed

0.0.1a31 (2022-11-14)

Added

Changed

Fixed

  • Fixed issue with distinguishing calculation parameters in submission parameter tab

0.0.1a30 (2022-11-12)

Added

  • Add docstrings for findfile.find_study_group_dirs(), findfile.find_study_dirs(), findfile.find_calculation_dirs(), and findfile.find_job_dirs()

  • docstrings for Auditor

  • Auditor.audit()

  • Auditor.format()

  • Auditor.prune()

  • Auditor.prune_calculation_directories()

  • autojob auditor CLI subcommands (add, format, prune)

  • Jinja2 dependency

Changed

  • render run.py and vasp.sh using Jinja2 templates

0.0.1a29 (2022-11-12)

Changed

  • The structure name for a restart job is determined from the run.py file

0.0.1a28 (2022-11-06)

Added

  • outline of autojob.auditor subpackage

Changed

  • JobStats.parse_max_rss() parses memory appropriately according to units

  • dest variable not passed to Accountant.export()

Fixed

  • Accountant.add() now correctly calls Accountant.create_study() instead of Accountant.create_study_group()

  • Accountant.export() no longer passes dest as positional argument to Accountant._export_jobs(), Accountant._export_calculations(), Accountant._export_studies(), and Accountant._export_study_groups()

  • parsing.parse_job_results() handles IndexError from parsing vasprun.xml

0.0.1a27 (2022-10-18)

Removed

  • pymongo dependency

0.0.1a26 (2022-10-18)

Changed

  • –memory-scale CLI option for autojob restart was renamed to –memory-multiplier

Fixed

  • autojob restart now prints the new job ID instead of the old ID when listing newly created jobs

`0.9.5`_ (2022-10-17)

Changed

  • autojob restart prints all newly created jobs

  • New memory requirements are printed with the ‘GB’ suffix

Fixed

  • the correct directories were not found due to the regex used in findfile.find_study_group_dirs(), findfile.find_study_dirs(), findfile.find_calculation_dirs(), and findfile.find_job_dirs()

  • the vasp.sh file is now correctly opened instead of attempting to open the old job directory

0.0.1a24 (2022-10-17)

Added

Changed

Removed

  • ParameterSelectionPanel

0.0.1a23 (2022-10-17)

Changed

  • Restart jobs are printed as calculationID/newjobID

0.0.1a22 (2022-10-17)

Changed

  • Logic of autojob restart moved into autojob.cli.restart.Restarter class

0.0.1a21 (2022-10-17)

Added

  • autojob.accountant.findfile.find_study_group_dirs()

  • autojob.accountant.findfile.find_study_dirs()

  • autojob.accountant.findfile.find_calculation_dirs()

  • autojob.accountant.findfile.find_job_dirs()

  • autojob.accountant.findfile.find_template_dir()

0.0.1a20 (2022-10-16)

Changed

  • autojob restart (and related API functions) support scaling the memory limit in the restart job and changing the verbosity

0.0.1a19 (2022-10-13)

Added

  • User can elect to update database entries instead of overwrite when using autojob accountant add, using the -u`CLI option, or :meth:`autojob.accountant.accountant.Accountant.add by setting the update attribute to True

Changed

  • Formatting of filename returned by autojob.accountant.findfile.get_filename()

  • autojob accountant add prints added entries by default

  • Long CLI options for specifying export files with autojob accountant add have double hyphen prefixes

0.0.1a18 (2022-10-13)

Added

  • autojob.accountant.findfile.get_filename()

  • CLI option –dest for autojob accountant export subcommand

  • User can specify filenames to output .csv files for jobs, calculations, studies, and study groups with -jf, -cf, -sf, and -gf CLI options, respectively

  • verbose option (-v) added for autojob accountant export subcommand

Changed

  • autojob.accountant.parsing.parse_job_results() raises AccountingError if no valid vasprun.xml found

  • autojob.accountant.accountant.export() has new positional arguments dest and filenames

0.0.1a17 (2022-10-13)

Changed

  • The job ID of the source job is recorded in the job.json file of the restart job by autojob.cli.restart

0.0.1a16 (2022-10-13)

Changed

Fixed

0.0.1a15 (2022-10-12)

Fixed

0.0.1a14 (2022-10-12)

Changed

  • Jobs that are not added to database by autojob.accountant.accountant.add() are printed out

  • accountant.AccountingError raised if parsing.parse_job_results() unable to parse vasprun.xml file twice

0.0.1a13 (2022-10-12)

Added

  • DFT+U and magnetization CalculationParameter`s in :mod:`autojob.coordinator.vasp

Changed

0.0.1a12 (2022-10-11)

Added

Fixed

  • Duplicate CalculationParameter`s in :class:`CalculationParameterGroup

  • Extra argument supplied to load methods of tabs

  • Return value from SelectionFrame.structures() is now a list of strings instead of a list of pathlib.Path’s

Removed

  • Coordinator.next_calc_params()

0.0.1a11 (2022-10-09)

Added

  • Version option for CLI

0.0.1a10 (2022-10-09)

Added

Changed

0.0.1a9 (2022-09-30)

Added

  • docstrings for Accountant.add() call stack

0.0.1a8 (2022-09-28)

Added

  • autojob.accountant.accountant.export() is implemented in API and CLI

Changed

  • as_dict, as_flat_dict, and from_dict moved from must be implemented by subclasses (e.g., autojob.coordinator.vasp.VaspJob)

  • structure-related keys in input_parameters return value from autojob.accountant.parsing

  • the dictionary return from Calculation.as_dict() includes the keys @module and @class

0.0.1a7 (2022-09-28)

Added

  • Inputs, Outputs, @module, @class keys in return value dictionary in Job.as_dict()

Removed

  • k-pts, and Results keys in return value dictionary in Job.as_dict

0.0.1a6 (2022-09-26)

Added

  • CLI with coordinator and accountant subcommands

  • DetailEncoder

  • JobStats

  • Partition.from_name()

  • parsing.match_xml_tags()

  • parsing.parse_job_results()

  • Job.as_dict()

  • Calculation.as_dict()

  • Study.as_dict

  • StudyGroup.as_dict

  • Accountant.create_study_group()

  • Accountant.create_study()

  • Accountant.create_calculation()

  • Accountant.create_job()

  • Accountant.load_db()

  • Accountant.add_to_database()

  • Job accepts None for results and job_stats parameters

Changed

  • MainApplication renamed to GUI

  • strict parameter renamed to update in autojob.accountant.accountant

  • autojob.accountant.accountant CLI methods moved to autojob.accountant.cli

  • Calculation accepts a list of strings instead of a list of Job’s

  • Study accepts a list of strings instead of a list of Calculation’s

  • StudyGroup accepts a list of strings instead of a list of Study’s

  • CalculationType, CalculatorType, StudyType do not capitalize __str__ return value

  • Accountant constructor requires three positional arguments (exclusive, update, verbose)

  • exclusive, update, verbose are stored as instance attributes of Accountant objects and are no longer passed as arguments to Accountant.add()

  • autojob.accountant.parsing.parse_job_stats_file() raises AccountingError is unable to parse job stats file

  • parsing.parse_job_stats_file() raises ValueError is headers missing in job stats file

  • Job properties changed to attributes

  • Study.study_type property changed to attribute

  • StudyGroup.date_created property changed to attribute

  • Calculation properties (except job) changed to attributes

0.0.1a5 (2022-09-13)

Added

  • isym as a vasp parameter

Changed

0.0.1a4 (2022-09-12)

Added

  • autojob.accountant

  • autojob.coordinator.scripter

  • monty.json.MSONable methods to Calculation, Job, Study, and StudyGroup

Changed

  • Refactored tests

  • Moved package to src/ directory

  • scripting capabilities located in autojob.coordinator.scripter

0.0.1a3 (2022-09-08)

Removed

  • pymatgen-db, acat, wulffpack, scipy, pandas dependencies

Changed

  • The list containing GUI pages has been re-implemented as a dictionary

0.0.1a2 (2022-09-07)

Added

Changed

0.0.1a1 (2022-09-02)

  • First version.