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)¶
autojob.bases.task_base: An abstract base class for tasks;TaskandCalculationhave been re-written as subclasses with necessary write_inputs and from_directory methodsautojob.tasks: a namespace package for pre-defined concreteTaskBaseimplementationstasks.Task.write_task_script(): write the task scripttasks.Calculation.write_task_script(): write the task script; this replacesCalculation.write_slurm_scripttasks.Calculation.write_calculation_script(): write the calculation scriptRemoved use_cache argument from Task.from_directory and Calculation.from_directory
TaskOutcome.UNKNOWNand comprehensive description oftask_Base.TaskOutcomeautojob.study.Study.to_directory()andautojob.study.Study.from_directory(): utility functions for study directoriesstudy_group.StudyGroup.to_directory()andstudy_group.StudyGroup.from_directory()Custom serialization for writing
autojob.study.Studymetadata filesRe-added the cpu2021-bf05 partition (see the commit message from commit 85c4092980e01963586702c2f4ee443f0313244a for details)
autojob.hpc.JobState: SLURM-specific job states
Coordinator¶
autojob.coordinator.coordinator.Coordinator.ase_calculator: a property for getting the ASE calculator corresponding to the CalculatorTypeautojob.coordinator.coordinator.submission_parameters_to_scheduler_inputs(): convert the submission parameters as represented in the GUI toautojob.hpc.SchedulerInputsautojob.coordinator.filters: Utilities for filtering parameter dictionaries by their valuesautojob.coordinator.gui.gui.CoordinatorTabs: aTypedDictrepresenting the GUI notebook tabsautojob.coordinator.gui.job_submission.JobSubmissionParameters: aTypedDictrepresenting the GUI defined scheduler inputsautojob.coordinator.gui.groups.CalculationParameterGroup.get_sets(): get all permutations of the parameter values specified in aautojob.coordinator.gui.groups.CalculationParameterGroup--destCLI option forautojob coordinator
Harvest¶
--destCLI option forautojob harvest,autojob.harvest.harvest.harvest(), andautojob.harvest.archive.archive()support for Quantum Espresso
progress bar for harvesting calculations with
autojob.harvest.harvest.harvest()autojob.harvest.harvesters: a namespace package with pre-defined harvesters (VASP, gaussian, espresso, DDEC6, bader, default)
next¶
autojob restartCLIautojob.next.advanceandautojob.next.restartautojob.parametrizations.create_parametrization
Other¶
The plugin interface for tasks, harvesters, and analyses
autojob.legacy: legacy mode classes/functionsSeveral settings: see
AutojobSettingsautojob.utils.get_loader(): replacement forautojob.coordinator.scripter.Scripter.get_loader()autojob.utils.get_last_updatedautojob.utils.copy_file_permissions_and_ownershipautojob.utils.schemas.id_factory
Changed¶
Task/Study (Group)¶
major refactor of
Taskand subclasses to adhere to theTaskBaseabstract base classmagmomsare retrieved from the calculatorresultsdictionary instead of withase.atoms.Atoms.get_magnetic_moments()inTask.prepare_input_atoms().TaskMetadata._build_classchanged toautojob.bases.task_base.TaskMetadataBase.task_classMoved
.patch_tasktoautojob.calculation.calculation.CalculationJob stats files are created newly every time and are now JSON files
autojob.task.TaskOutputs.outcomeis set in calculation according to convergence andautojob.hpc.SchedulerOutputs.stateautojob.study.Studyandautojob.study_group.StudyGroupimplemented as PydanticBaseModelautojob.study.StudyTypemoved toautojob.legacymoduleTask metadata is now only read from the job file (set by
SETTINGS.TASK_METADATA_FILE)copy metadata from input atoms in
Calculation.patch_taskautojob.taskre-implemented inautojob.tasks.task
Coordinator¶
Job directories are created using
autojob.study_group.StudyGroup.to_directory()SchedulerOutputs.partitionis typed and validated as a stringautojob.calculation.parametersmoved toautojob.coordinator
Harvest¶
autojob.harvest.patch.build_metadata_patches()implements a “Strategy” design pattern to enable applicability for all types of metadataautojob.harvest.chargeimplemented as ddec6 and bader harvestersthe
whitelistandblacklistarguments toautojob harvestandharvest()are renamed towhitelistsandblacklistsin better agreement with their implementationsElementarySteprenamed toautojob.harvest.mechanism.ElectrochemicalStep; stoichiometric coefficient added as attributeall new calculation outputs returned in
flatten_calculationsDOS can be optionally retained when harvesting VASP calculations
next¶
autojob.parametrizations.VariableReference.set_input_value()accepts both an object in addition to a mapping forshell
Other¶
autojob.utils.parsing.parse_job_stats_file()raises aDeprecationWarningif an oldjob_stats.txtfile is parsedthe names of several
autojobsettings have been changedreorder_vasp_sequencemoved to utilsautojob runCLIall templates but for new, simplified templates
run.py.j2andrun.sh.j2directory finders (e.g.,
find_study_dirs) identify directories by the presence of metadata filesfind_job_dirsrenamed tofind_task_dirsfind_calculation_dirsrenamed tofind_task_group_dirssubstitute_placeholdersaccepts regular Python format stringsadd defaults for fields for
autojob.workflow.Step
Fixed¶
Task/Study (Group)¶
Pydantic warnings emitted when calling
SchedulerInputs.model_dump()(see commit fda0e7eb7c3af3f3e9f7772fc9f04b15e9ccc851)task.TaskMetadata.calculation_type,task.TaskMetadata.calculator_type, andtask.TaskMetadata.study_typeare serialized as None when NoneSchedulerOutputsnow correctly recognizes “Partition” as an alias forSchedulerOutputs.partitionSchedulerInputsare now included in the result offlatten_calculations()
Harvest¶
All DDEC6 charge data is loaded instead of a subset, if present
autojob.parametrizations.VariableReference.set_input_value()previously (and incorrectly) checked the type ofshellto decide how to set and delete attributes/keys, resulting in attempting to set nonexistent attributes on a dictionaryrestart_relaxation()properly handles calc and slurm modsautojob.calculation.charge.BaderAnalysisschema now matches that ofpymatgen.command_line.bader_caller.BaderAnalysis.summary
Other¶
Atomsobjects that are serialized withBaseModel.model_dumpare serialized asAtomsobjects ifmode="python"and as dictionaries otherwise
Removed¶
Task/Study (Group)¶
autojob.study.StudyType:study_typewill only be a field name for legacy modeCalculation.write_input_atoms: useautojob.task.Task.write_inputs()Calculation.to_directory: useautojob.task.Task.to_directory()autojob.study.TASK_FILESStudyGroup.as_dict,StudyGroup.from_dict,StudyGroup.from_path,StudyGroup.create_directory,StudyGroup.addstudies,StudyGroup.removestudiesandStudyGroup.studiespropertySchedulerOutputs.error: all scheduler information is recorded inautojob.hpc.SchedulerOutputs.statetask.TaskInputs.extract_files_to_copy()calculation.Calculation.write_python_script()autojob.hpc.Clusterand all instancesautojob.hpc.SchedulerErrorautojob.next.update_metadata_filelegacy_modearguments from most functions/methods
Coordinator¶
autojob.coordinator.scripter: script writing handled byautojob.task.Task.write_inputs()
Harvest¶
autojob.harvest.patch.build_calculation_patches(): useautojob.harvest.patch.build_metadata_patches()withmetadata_type="calculation"autojob.harvest.patch.build_study_patches(): useautojob.harvest.patch.build_metadata_patches()withmetadata_type="study"autojob.harvest.structure
next¶
autojob.advanceandautojob.cli.advance(CLI logic is contained inautojob.next.advance)restart-relaxationandrun-vibrationCLIs and related modulesautojob.next.restart_relaxationandautojob.next.run_vibration
Other¶
autojob.advance.advance.write_calculation_metadata
autojob.schemas: charge data consolidated inautojob.calculation.chargeautojob.calculationsub-packageautojob.utils.extract_structure_nameautojob.utils.parsing.import_class
0.0.1a37 (2024-08-21)¶
Added¶
LORBITVasp INCAR tag toautojob.coordinator.vaspsupport for Gaussian-powered calculations
support for custom Python script templates
default template for infrared calculations
New modules:
autojob.advance: incremental job controlautojob.harvest: data assimilation convenience functions & CLIautojob.harvest.harvest: utilities for harvesting task dataautojob.harvest.patch: utilities for patching task data
autojob.cli.restart_relaxation,autojob.next.relaxationand corresponding CLI command restart-relaxationautojob.cli.run_vibration,autojob.next.vibrationand corresponding CLI command run-vibration: create metadata preserving thermodynamic calculation directoriesautojob.cli.init: enable shell completion forautojobautojob.taskautojob.study,autojob.study_group,autojob.hpc,autojob.settings,autojob.schemas,autojob.parametrizationsautojob.calculation: representations/manipulation of calculation data
New dependencies:
Pydantic & pydantic-settings: for data validation/data model
cclib: for calculation output parsing
Changed¶
Deprecated modules:
autojob.coordinator.calculation: useautojob.calculationautojob.coordinator.classification: useautojob.calculationautojob.coordinator.job: useautojob.calculationautojob.coordinator.study: useautojob.studyautojob.coordinator.vasp: useautojob.calculation.vasp
vasp.shtemplate no longer removes wildcard files upon cleaning up the scratch directorySwitched to Hatch for build backend and testing (no more Poetry/tox)
autojob.cli.restart: move toautojob.nextDropped support for Python <3.10
Python and SLURM script templates
Minimum
ccudependency is v0.0.5
Removed¶
autojob.accountantandautojob.auditorhave been removed in favour of using Pydantic for validation and deserializationautojob.coordinator.archas been removed; useautojob.hpcinsteadautojob.coordinator.calculationhas been removed; useautojob.calculationandautojob.taskinsteadautojob.coordinator.studyhas been removed; useautojob.studyinsteadautojob.coordinator.submission_configuration.ParameterSelectionComboboxhas been removedautojob.utils.validate_idhas 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¶
AMIX,AMIX_MAG,BMIX,BMIX_MAG,IMIXVasp INCAR tags toautojob.coordinator.vaspfindfile.get_slurm_job_id()findfile.find_last_submitted_jobs()
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 tofindfile._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.parsingfunctionsOptional keyword argument parameter (
with_wavecar) toautojob.cli.restart.Restarter.create_restart_jobs()Optional inclusion of
WAVECARin restarted jobs fromautojob restartautojob.cli.restart.Restarter.characterize_jobs()
Changed¶
study group ID, study ID, calculation ID, and job ID included in
accountant.AccountingErrorraised byparsing.parse_job_results()gammakey added to first dictionary returned byparsing.parse_job_results()Different printing of not added study groups in
Accountant.create_study_group(),Accountant.create_study(),Accountant.create_calculation()depending on verbosityAccountant.create_study_group(),Accountant.create_study(),Accountant.create_calculation()print unknown errors to console
Fixed¶
values argument to
job.CalculationParameterforLDAUTYPEandNSW
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.shfor running on ComputeCanada clusters
Removed¶
removed support for dictionaries in
validation.iter_to_native()
0.0.1a31 (2022-11-14)¶
Added¶
validation.iter_to_native()supports dictionaries
Changed¶
autojob.coordinator.gui.groups.CalculationParameterGroupstores values as native Python values instead of strings
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(), andfindfile.find_job_dirs()docstrings for
AuditorAuditor.audit()Auditor.format()Auditor.prune()Auditor.prune_calculation_directories()autojob auditorCLI 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.auditorsubpackage
Changed¶
JobStats.parse_max_rss()parses memory appropriately according to unitsdest variable not passed to
Accountant.export()
Fixed¶
Accountant.add()now correctly callsAccountant.create_study()instead ofAccountant.create_study_group()Accountant.export()no longer passes dest as positional argument toAccountant._export_jobs(),Accountant._export_calculations(),Accountant._export_studies(), andAccountant._export_study_groups()parsing.parse_job_results()handlesIndexErrorfrom 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(), andfindfile.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¶
docstring added for
TreeviewFrame.clear_treeview()docstrings added for
autojob.coordinator.gui.submission_configuration
Changed¶
Coordinator.calc_params_for()andCoordinator.calc_param_values_for()accept a list ofPath`s for the `structuresparameters instead of a list of stringsCoordinator.structure_groups_with()accepts an iterable ofpathlib.Path`s for the `structuresparameters instead of an iterable of strings
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.Restarterclass
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()raisesAccountingErrorif no valid vasprun.xml foundautojob.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¶
ParameterSelectionTab.calc_params()values areCalculationParameterGroup’svalues in dictionary return by
ParameterSelectionTab.load_calc_params()areCalculationParameterGroup’s
Fixed¶
bool values are cast correctly in
ParameterSelectionTab
0.0.1a15 (2022-10-12)¶
Fixed¶
AttributeErrordue to calling extend method of values parameter passed toCalculationParameterGroup.add_values()byParameterPanel.add_parameter_values()
0.0.1a14 (2022-10-12)¶
Changed¶
Jobs that are not added to database by
autojob.accountant.accountant.add()are printed outaccountant.AccountingErrorraised ifparsing.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¶
FileNotFoundErroris handled byautojob.cli.restart.create_restart_calculation()
0.0.1a12 (2022-10-11)¶
Added¶
autojob.coordinator.groups.CalculationParameterGroup.defined_values()SubmissionParameterGroupautojob.cli.restartand correspondind CLI subcommand
Fixed¶
Duplicate
CalculationParameter`s in :class:`CalculationParameterGroupExtra argument supplied to load methods of tabs
Return value from
SelectionFrame.structures()is now a list of strings instead of a list ofpathlib.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¶
JobSubmissionTab,ParameterSelectionTab,StructureSelectionTab,StudyConfigurationTab,SubmissionConfigurationTab, andSummaryTabconstructors no longer require notebook parameterautojob.coordinator.job.InputParameterrenamed toCalculationParameter
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
DetailEncoderPartition.from_name()parsing.match_xml_tags()parsing.parse_job_results()Calculation.as_dict()Study.as_dictStudyGroup.as_dictAccountant.create_study_group()Accountant.create_study()Accountant.create_calculation()Accountant.create_job()Accountant.load_db()Accountant.add_to_database()Jobaccepts None for results and job_stats parameters
Changed¶
MainApplicationrenamed toGUIstrict parameter renamed to update in
autojob.accountant.accountantautojob.accountant.accountantCLI methods moved toautojob.accountant.cliCalculationaccepts a list of strings instead of a list ofJob’sStudyaccepts a list of strings instead of a list ofCalculation’sStudyGroupaccepts a list of strings instead of a list ofStudy’sCalculationType,CalculatorType,StudyTypedo not capitalize __str__ return valueAccountantconstructor requires three positional arguments (exclusive, update, verbose)exclusive, update, verbose are stored as instance attributes of
Accountantobjects and are no longer passed as arguments toAccountant.add()autojob.accountant.parsing.parse_job_stats_file()raisesAccountingErroris unable to parse job stats fileparsing.parse_job_stats_file()raises ValueError is headers missing in job stats fileJobproperties changed to attributesStudy.study_typeproperty changed to attributeStudyGroup.date_createdproperty changed to attributeCalculationproperties (except job) changed to attributes
0.0.1a5 (2022-09-13)¶
Added¶
isym as a vasp parameter
Changed¶
Properties of
Coordinatorare no longer cached
0.0.1a4 (2022-09-12)¶
Added¶
autojob.accountantautojob.coordinator.scriptermonty.json.MSONablemethods toCalculation,Job,Study, andStudyGroup
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¶
The Job Submission tab allows for different submission parameters for each
ParameterGroupStructure groups
Summary Tab in GUI
Changed¶
0.0.1a1 (2022-09-02)¶
First version.