machine learning interatomic potentials aiida plugin
- Supports multiple MLIPs
- MACE
- M3GNET
- CHGNET
- Single point calculations
- Geometry optimisation
- Molecular Dynamics:
- NVE
- NVT (Langevin(Eijnden/Ciccotti flavour) and Nosé-Hoover (Melchionna flavour))
- NPT (Nosé-Hoover (Melchiona flavour))
- Training MLIPs
- MACE
- Fine tuning MLIPs
- MACE
- MLIP descriptors
- MACE
The code relies heavily on janus-core, which handles mlip calculations using ASE.
pip install aiida-mlip
verdi quicksetup # better to set up a new profile
verdi plugin list aiida.calculations
The last command should show a list of AiiDA pre-installed calculations and the aiida-mlip plugin calculations (mlip.opt, mlip.sp)
Registered entry points for aiida.calculations:
* core.arithmetic.add
* core.templatereplacer
* core.transfer
* mlip.opt
* mlip.sp
* mlip.md
* mlip.train
* mlip.descriptors
The example folder provides scripts to submit calculations in the calculations folder, and tutorials in jupyter notebook format in the tutorials folder.
A quick demo of how to submit a calculation using the provided example files:
verdi daemon start # make sure the daemon is running
cd examples/calculations
verdi run submit_singlepoint.py "janus@localhost" --struct "path/to/structure" --architecture mace --model "/path/to/model" # run singlepoint calculation
verdi run submit_geomopt.py "janus@localhost" --struct "path/to/structure" --model "path/to/model" --steps 5 --opt_cell_fully True # run geometry optimisation
verdi run submit_md.py "janus@localhost" --struct "path/to/structure" --model "path/to/model" --ensemble "nve" --md_dict_str "{'temp':300,'steps':4,'traj-every':3,'stats-every':1}" # run molecular dynamics
verdi process list -a # check record of calculation
Models can be trained by using the Train calcjob. In that case the needed inputs are a config file containig the path to train, test and validation xyz file and other optional parameters. Running
verdi run submit_train.py
a model will be trained using the provided example config file and xyz files (can be found in the tests folder)
We recommend installing uv for dependency management when developing for aiida-mlip
:
- Install uv
- Install
aiida-mlip
with dependencies in a virtual environment:
git clone https://github.com/stfc/aiida-mlip
cd aiida-mlip
uv sync # Create a virtual environment and install dependencies
source .venv/bin/activate
pre-commit install # Install pre-commit hooks
pytest -v # Discover and run all tests
See the developer guide for more information.
.github/
: Github Actions configurationci.yml
: runs tests, checks test coverage and builds documentation at every new commitpublish-on-pypi.yml
: automatically deploy git tags to PyPI - just generate a PyPI API token for your PyPI account and add it to thepypi_token
secret of your github repositorydocs.yml
: builds and deploys the documentation
aiida_mlip/
: The main source code of the plugin packagedata/
: PluginData
classesmodel.py
ModelData
class to save mlip models as AiiDA data types
calculations/
: PluginCalcjob
classesbase.py
: BaseCalcjob
class for other calculationssinglepoint.py
:Calcjob
class to run single point calculations using mlipsgeomopt.py
:Calcjob
class to perform geometry optimization using mlipsmd.py
:Calcjob
class to perform molecular dynamics using mlipsdescriptors.py
:Calcjob
class to calculate MLIP descriptors
parsers/
:Parsers
for the calculationsbase_parser.py
: BaseParser
for all calculations.sp_parser.py
:Parser
forSinglepoint
calculation.opt_parser.py
:Parser
forGeomopt
calculation.md_parser.py
:Parser
forMD
calculation.train_parser.py
:Parser
forTrain
calculation.descriptors_parser.py
:Parser
forDescriptors
calculation.
helpers/
:Helpers
to run calculations.workflows/
:WorkGraphs
orWorkChains
for common workflows with mlips.ht_workgraph.py
: AWorkGraph
to run high-throughput optimisations.
docs/
: Code documentationapidoc/
: API documentationdeveloper_guide/
: Documentation for developersuser_guide/
: Documentation for usersimages/
: Logos etc used in the documentation
examples/
: Examples for submitting calculations using this plugintutorials/
: Jupyter notebooks with tutorials for running calculations and other files that are used in the tutorialcalculations/
: Scripts for submitting calculationssubmit_singlepoint.py
: Script for submitting a singlepoint calculationsubmit_geomopt.py
: Script for submitting a geometry optimisation calculationsubmit_md.py
: Script for submitting a molecular dynamics calculationsubmit_train.py
: Script for submitting a train calculation.submit_descriptors.py
: Script for submitting a descriptors calculation.
workflows/
: Scripts for submitting workflowssubmit_ht_workgraph.py
: Script for submitting a high-throughput WorkGraph for singlepoint calculation.
tests/
: Basic regression tests using the pytest framework (submitting a calculation, ...). Installpip install -e .[testing]
and runpytest
.conftest.py
: Configuration of fixtures for pytestcalculations/
: Calculationstest_singlepoint.py
: TestSinglePoint
calculationtest_geomopt.py
: TestGeomopt
calculationtest_md.py
: TestMD
calculationtest_train.py
: TestTrain
calculationtest_descriptors.py
: TestDescriptors
calculation
data/
: Datatest_model.py
: TestModelData
typetest_config.py
: TestJanusConfigfile
type
workflows/
: Workflowstest_ht.py
: Test high throughput workgraph.
.gitignore
: Telling git which files to ignore.pre-commit-config.yaml
: Configuration of pre-commit hooks that sanitize coding style and check for syntax errors. Enable viapip install -e .[pre-commit] && pre-commit install
LICENSE
: License for the pluginREADME.md
: This filetox.ini
: File to set up toxpyproject.toml
: Python package metadata for registration on PyPI and the AiiDA plugin registry (including entry points)
Contributors to this project were funded by