Skip to main content

Accelerated molecular dynamics with large-time-step predictions

Project description

FlashMD: universal long-stride molecular dynamics

This repository contains custom integrators to run MD trajectories with FlashMD models. These models are designed to learn and predict molecular dynamics trajectories using long strides, therefore allowing very large time steps. When using this method, make sure you are aware of its limitations, which are discussed in this preprint.

The pre-trained models we make available are trained to reproduce ab-initio MD at the r2SCAN level of theory.

ASE Quickstart (see below for LAMMPS)

You can install the package with

  pip install flashmd

After installation, you can run accelerated molecular dynamics as follows:

import ase.build
import ase.units
from ase.md.velocitydistribution import MaxwellBoltzmannDistribution
import torch
from metatomic.torch.ase_calculator import MetatomicCalculator

from flashmd import get_pretrained
from flashmd.ase.langevin import Langevin


# Choose your time step (go for 10-30x what you would use in normal MD for your system)
time_step = 64  # 64 fs; also available: 1, 2, 4, 8, 16, 32, 128 fs

# Create a structure and initialize velocities
atoms = ase.build.bulk("Al", "fcc", cubic=True)
MaxwellBoltzmannDistribution(atoms, temperature_K=300)
atoms.set_velocities(  # it is generally a good idea to remove any net velocity
    atoms.get_velocities() - atoms.get_momenta().sum(axis=0) / atoms.get_masses().sum()
)

# Load models
device="cuda" if torch.cuda.is_available() else "cpu"
energy_model, flashmd_model = get_pretrained("pet-omatpes-v2", time_step)  

# Set the energy model (see below for more precise usage)
calculator = MetatomicCalculator(energy_model, device=device)
atoms.calc = calculator

# Run MD
dyn = Langevin(
    atoms=atoms,
    timestep=time_step*ase.units.fs,
    temperature_K=300,
    time_constant=100*ase.units.fs,
    model=flashmd_model,
    device=device
)
dyn.run(1000)

[The first time you use this code and call the get_pretrained function, the pre-trained models will be downloaded. This might take a bit.]

Other available integrators:

  from flashmd.ase.velocity_verlet import VelocityVerlet
  from flashmd.ase.bussi import Bussi

Along with all FlashMD models, we also provide the potential energy model whose dynamics they are trained to reproduce. See this short guide on how to best use the energy models if you want to enforce exact energy conservation during FlashMD runs, run traditional MD with the energy model, and more.

Common pitfalls

Stick to 10-30x what you would use in normal MD for your system! The 64 fs example above is good for metals. However,

  • for most materials: try 32 fs (aggressive) or 16 fs (conservative)
  • for aqueous and/or organic systems: try 16 fs (aggressive) or 8 fs (conservative)

Using FlashMD in LAMMPS

LAMMPS can allow you to run FlashMD with better computational and memory efficiency. Furthermore, it will give you access to more sophisticated types of simulations, such as simulations in the NPT ensemble and metadynamics. See here for a guide on using FlashMD in LAMMPS.

Using FlashMD in i-PI

You can see this cookbook recipe for usage examples. i-PI is our most mature interface, and the one that was used to generate all our published results.

Models

See here for the complete list of the models we provide. If you are new to FlashMD, we recommend starting with the pet-omatpes-v2 models.

Training/fine-tuning your own FlashMD models

FlashMD models can be trained from the metatrain library. This tutorial shows how to train your own FlashMD model, either from scratch or by fine-tuning of one of our universal models.

Disclaimer

This is experimental software and should only be used if you know what you are doing. Given that the main issue we observe in FlashMD is loss of equipartition of energy between different degrees of freedom, we recommend using a Langevin thermostat, possibly monitoring the temperature of different atomic types or different parts of the simulated system. For the time being, we also recommend checking all FlashMD-powered findings with traditional MD. The energy models that were used to train FlashMD, and that we make available in this repository, can be used for this purpose.

Publication

If you found FlashMD useful, you can cite the corresponding article:

@inproceedings{FlashMD,
  title     = {FlashMD: long-stride, universal prediction of molecular dynamics},
  author    = {Bigi, Filippo and Chong, Sanggyu and Kristiadi, Agustinus and Ceriotti, Michele},
  booktitle = {Advances in Neural Information Processing Systems},
  year      = {2025},
  url       = {https://arxiv.org/abs/2505.19350}
}

Reproducing the results in the article is supported with FlashMD v0.1.2:

pip install flashmd==0.1.2 ase==3.24.0 pet-mad==1.4.3

and using the "PET-MAD" models (PBEsol) from https://huggingface.co/lab-cosmo/flashmd. Note that the results were obtained through the i-PI interface.

Instructions and material to reproduce the results in the paper are available on Materials Cloud at https://doi.org/10.24435/materialscloud:b7-xq.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flashmd-0.2.6.tar.gz (19.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flashmd-0.2.6-py3-none-any.whl (18.2 kB view details)

Uploaded Python 3

File details

Details for the file flashmd-0.2.6.tar.gz.

File metadata

  • Download URL: flashmd-0.2.6.tar.gz
  • Upload date:
  • Size: 19.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for flashmd-0.2.6.tar.gz
Algorithm Hash digest
SHA256 5ed7db86beec2205e81977af6a21d78e1e0a3507d712bf6c9b366c56c0a54256
MD5 987a7f05364a773cd2adde47266bb238
BLAKE2b-256 8dd53af0f70ecfe4dce98fd80f9d46e41604b158b81c45ec4107cd7623048280

See more details on using hashes here.

File details

Details for the file flashmd-0.2.6-py3-none-any.whl.

File metadata

  • Download URL: flashmd-0.2.6-py3-none-any.whl
  • Upload date:
  • Size: 18.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for flashmd-0.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 46dc9fb75b48193d3f503422d8023ead202a5c1db4fc12235db25c77ea287fad
MD5 97f3398f8f15c057409e2462e01479f7
BLAKE2b-256 b7ec716553cc232a50ade8f2ac5b6eccb5e33b0d49ee51024a47e740e3ca141b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page