SEAMM xnn Plug-in
A SEAMM plug-in providing machine-learned force fields (MLFFs) trained with xnn as model chemistries, run as MDI engines.
Free software: BSD-3-Clause
Documentation: https://molssi-seamm.github.io/xnn_step/index.html
Features
Advertises every xnn checkpoint found in the directories listed in xnn.ini to the Model Chemistry step as xnn:MLFF@<model>.
Launches xnn mdi – the checkpoint served as a resident MDI engine – for any step that drives a model chemistry over MDI: Energy (single points for many structures), LAMMPS (MD with the MLFF as the QM engine), Dimer Builder, Normal Mode Sampling.
Molecular and periodic systems (energy, forces and stress); runs on the CPU or a GPU (device in xnn.ini).
There is no xnn step to place in a flowchart: the models are used through Model Chemistry + Energy (or LAMMPS).
Note: xnn is published on PyPI under the name xnns; the import name and the xnn command are unchanged.
Acknowledgements
This package was created with the molssi-seamm/cookiecutter-seamm-plugin tool, which is based on the excellent Cookiecutter.
Developed by the Molecular Sciences Software Institute (MolSSI), which receives funding from the National Science Foundation under award CHE-2136142.
History
- 2026.10.2 – Show what each model is, and pass the charge for D4 models
The Model Chemistry step now describes each xnn model: its family (e.g. MACE), the elements it was trained on, and how dispersion enters it, e.g. “D4, 12 Å + tail added by the engine”. The plug-in reads this from the training configuration stored in the checkpoint, without PyTorch and without executing anything in the file.
Models trained on dispersion-subtracted labels, which record the subtracted term as subtracted_dispersion in their training configuration, are recognized; the xnn mdi engine adds the term back by itself. A model that records the term and also carries a dispersion wrapper would count the dispersion twice. It is no longer offered, and asking for it by name is an error.
For a charged configuration the total charge is now passed to the engine as --total-charge. D4 dispersion needs it for its EEQ partial charges.
- 2026.9.28 – Require xnns 0.4.0, which loads the existing checkpoints
The environment now requires xnns>=0.4.0 instead of xnns<0.2. xnns 0.4.0 loads the checkpoints that 0.2.1 and 0.3.0 could not, and its engine supports --eeq-reuse. Updating the plug-in moves an existing environment to it, including one rolled back to 0.1.0 by hand; a torch built for the machine’s CUDA driver is kept, since xnns needs only torch 2.0 or later.
- 2026.9.27.1 – Local models can belong to the installation
local: model directories in xnn.ini meant ~/SEAMM/data/Forcefields. They now mean the data/Forcefields directory of the SEAMM installation in use, then ~/SEAMM/data/Forcefields; a model in the installation’s own directory takes precedence. A second installation such as ~/SEAMM_DEV therefore sees the default installation’s models and can add its own.
The SEAMM root now comes from seamm_util.current_root(), so an installation’s xnn.ini is found without --root. Requires seamm-util 2026.9.27.1.
- 2026.9.27 – Bugfix: pin xnns below 0.2 so existing checkpoints load
The environment now requires xnns<0.2. The 0.2.1 and 0.3.0 releases on PyPI added scale_shift buffers to the MACE model with no defaults for older state dicts, so every existing checkpoint failed to load in the MDI engine (“Missing key(s) in state_dict: model.model.scale_shift.scale/shift”) and a LAMMPS run then hung waiting for it. A fresh installation was getting 0.3.0.
Updating does not downgrade an environment that already has a newer xnns; run pip install xnns==0.1.0 in it by hand. The pin will move forward once an xnns release loads the older checkpoints.
- 2026.9.26 – Internal: depend on seamm-manager rather than seamm-installer
The plug-in’s installer now builds on seamm-manager, which replaces seamm-installer for managing SEAMM installations. Nothing changes for users; this only lets the two packages stop being installed side by side.
2026.9.19.1 (2026-09-19)
Bugfix: the seamm-xnn environment file no longer installs PyTorch with conda. On Linux conda-forge resolves pytorch to a CPU-only build, so updating an environment that held a pip CUDA build of PyTorch silently lost the GPU and broke every compiled extension built against it, such as vesin-torch. PyTorch now comes from pip, which leaves a suitable existing installation alone.
Bugfix: pymdi now comes from conda-forge rather than pip. Only that build links the MDI library against MPI, which the -method MPI launch used for LAMMPS dynamics needs; with the PyPI build the engine stopped at “Error in MDI_Init: Failed to initialize MPI”.
Bugfix: xnn-step-installer reported the xnn version as “unknown” because it looked for a distribution named xnn, though the code is published as xnns.
Documented the two default model directories and their personal:/local: prefixes, the MPI launch path, and the effect of pointing xnn.ini at an environment shared with another code.
2026.9.19 (2026-09-19)
Model directories in xnn.ini may be given as personal:<subdir> (~/.seamm.d/data/Forcefields/<subdir>) or local:<subdir> (~/SEAMM/data/Forcefields/<subdir>), the same convention as the Forcefield step; the default is personal:xnn then local:xnn, a personal model shadowing a machine one of the same name. Each model’s source (e.g. personal:xnn/water.pt) is reported to the Model Chemistry step.
Installs xnn from PyPI as xnns; documents the Apple mps constraints.
2026.9.18 (2026-09-18)
Initial release. Provides xnn machine-learned force fields as xnn:MLFF@<model> model chemistries (checkpoints discovered from the directories in xnn.ini) and launches xnn mdi as the MDI engine for the Energy, LAMMPS and other MDI-driving steps. Includes xnn-step-installer for the seamm-xnn conda environment.
Plug-in created using the SEAMM plug-in cookiecutter.
Metadata
Release files for xnn-step 2026.10.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xnn_step-2026.10.2.tar.gz | 330.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xnn_step-2026.10.2-py2.py3-none-any.whl | Python 3, Python 2 | none | any | Details |
Total release size: 359.4 kB
Release files / xnn_step-2026.10.2.tar.gz
| Download URL | xnn_step-2026.10.2.tar.gz |
|---|---|
| Size | 330.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6323bd78ab88b49205b78daf05484385e9a2501ad27abfe2b40faa847d64ae18
|
|
BLAKE2b-256 checksum How to use checksums |
09af55f5d9edb0a9447094c40d9dd4d6e2928c07929a54d0e4613bcc8a89e80c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / xnn_step-2026.10.2-py2.py3-none-any.whl
| Download URL | xnn_step-2026.10.2-py2.py3-none-any.whl |
|---|---|
| Size | 29.1 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
19c1746f6a1666a4789569f58e5fd1410d226c2eb451a29d4d27f54de7bf0f06
|
|
BLAKE2b-256 checksum How to use checksums |
105e75a1298893e5e69324b49f42e3874157c36730ce9e2fd302d8766d6990dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|