Notable changes to this project will be documented in this file. The format is based on Keep a Changelog.
The versioning for this project aligns with that of AMS. The format for this is the original year of the main release as a prefix, and an incremental postfix for each sub-release, starting at 101. In general, subsequent sub-releases after the main release contain only bug fixes. For example, 2024.101 is the major release of 2024, and 2024.102 is the first bugfix release.
This changelog is effective from the 2025 releases.
- New
BANDFragmentand updatedADFFragmentrecepis for automatic EDA calculations.
AMSAnalysisJobsnow have Pisa support, accept multiple AMSJobs as input, and no longer overwrite user supplied input settings.context_configandget_contextmethods to allow context-based override of globalconfigsettingsinput_to_settingsmethod to convert AMS text input to a settings objectget_system_blocks_as_molecules_from_inputmethod to extract molecules from AMS text inputJobAnalysis.add_rkf_fieldmethod to simplify adding values from an rkf to the analysisJobAnalysis.get_settings_field_keyandJobAnalysis.get_rkf_field_keymethods to simplify getting the correct keys for analysis fieldsjobs_in_directorycontext manager which allows jobs to be run in a subdirectory of the job manager working directory
JobAnalysisreturns an updated copy on modification instead of performing the operation in-placepackmolcan accept a singleNonevalue forn_moleculesif two ofn_atoms,densityandbox_boundsare specified. The missing value is then auto-calculated.
- Method to guess density in
packmol_aroundchanged to resolve large underestimations in molecular volumes
SingleJob.load,JobManager.load_jobandloadcan load jobs from a.dillfile from PLAMS<2025
- Methods
get_system,get_input_systemandget_main_systemtoAMSResults, which return an AMSChemicalSysteminstead of a PLAMSMolecule AMSJobcan accept an AMSChemicalSysteminstead of a PLAMSMoleculeas an input system- Specific
ConfigSettingsand related settings classes with explicitly defined fields - Support for work functions:
AMSResults.get_work_function_resultsandplot_work_function - Support for plotting phonons with
plot_phonons_band_structure,plot_phonons_dosandplot_phonons_thermodynamic_properties - New
packmol_aroundfunction for packing in non-orthorhombic boxes. - New
plot_grid_moleculesfunction for plotting with rdkit multiple molecules. Molecule.delete_atomsmethod to delete multiple atoms with partial success- Examples on
MoleculeFormatsandMoleculeTools - Examples on
Logging - Script
generate_example.shto generate documentation pages from notebook examples - GitHub workflows for CI and publishing to PyPI
- Build using
pyproject.toml, addition of extras groups to install optional dependencies - Logging of job summaries to CSV logfile
- Logging of AMS job error messages to stdout and logfile on job failure
- Method
get_errormsgenforced on theJobbase class, with a default implementation - Added an interface to the Serenity program through methods such as
SerenityJob,SerenityResultsandSerenitySettings - Methods
Settings.nested_keys,Settings.block_keysfor accessing nested keys andSettings.contains_nestedandSettings.pop_nestedfor checking if nested keys exist in a settings object and popping them - Method
Settings.compareadded to compare and contrast items in two settings objects - Method
readcoskfadded toMoleculeclass, enabling the reading of COSKF file JobAnalysistool for extracting job statuses, settings and results- Added support for calculating the hydrogen bond center using the Densf calculation in the
ADFCOSMORSCompoundJobclass - Introduced the
update_hbc_to_coskfmethod inADFCOSMORSCompoundJobclass to calculate the hydrogen bond center using an existing COSKF file - Added
AMSViscosityFromBinLogJobfor running the AMS trajectory analysis tool to extract viscosity.
- Functions for optional packages (e.g. RDKit, ASE) are available even when these packages are not installed, but will raise an
MissingOptionalPackageErrorwhen called AMSResults.get_main_ase_atomsalso includes atomic charges- Global
configis initialized with aConfigSettingsinstead of loading from the standardplams_defaultsfile initandfinishfunctions are now optionalJob.statusis aJobStatusstring enum- Supercell and RDKit properties are no longer serialized to AMS input
- Restructuring of examples and conversion of various examples to notebooks
- Support for
networkx>=3andase>=3.23 - Use standard library logger for
logfunction - Make
Jobclass inherit fromABCand mark abstract methods - Exceptions raised in
prerunandpostrunwill always be caught and populate error message Settings.get_nestedtakes a default argument which is returned if the nested key is not present in the settings instanceJobManager.workdirconverted to a readonly property, with the underlying workdir lazily created if it does not existJobRunner.parallel,JobRunner.maxjobsandJobRunner.maxthreadsare properties which can take values of0or>1andJobRunner.semaphorehas been moved to a protected attributeJobRunner._job_limit
Molecule.properties.chargeis a numeric instead of string type when loading molecule from a fileMolecule.delete_all_bondsremoves the reference molecule from the removed bond instancesSingleJob.loadreturns the correctly loaded jobAMSJob.checkhandles aNoneTypestatus, returningFalseMultiJob.runlocking resolved when errors raised withinprerunandpostrunmethodsMolecule.add_hatomsto use bonding information if available when adding new hydrogen atoms- Changes made to
JobRunner.maxjobsafter initialization are correctly applied
plamslaunch script is deprecated in favor of simply running withamspython
- Legacy
BANDJob,DFTBJob,UFFJob,MOPACJob,ReaxFFJob,CSHessianADFJobandADFJobhave been removed - Exception classes
AMSPipeDecodeError,AMSPipeError,AMSPipeInvalidArgumentError,AMSPipeLogicError,AMSPipeRuntimeError,AMSPipeUnknownArgumentError,AMSPipeUnknownMethodError,AMSPipeUnknownVersionError, were moved from scm.plams to scm.amspipe.