Skip to content

isayevlab/aimnetcentral

Repository files navigation

Release Python Build status codecov License

AIMNet2 : ML interatomic potential for fast and accurate atomistic simulations

Key Features

  • Accurate and Versatile: AIMNet2 excels at modeling neutral, charged, organic, and elemental-organic systems.
  • Flexible Interfaces: Use AIMNet2 through convenient calculators for popular simulation packages like ASE and PySisyphus.
  • Flexible Long-Range Interactions: Optionally employ the Dumped-Shifted Force (DSF) or Ewald summation Coulomb models for accurate calculations in large or periodic systems.

Installation

Basic Installation

Install from GitHub:

pip install git+https://github.com/isayevlab/aimnetcentral.git

For non-default pytorch installation (e.g. CUDA on Windows), install pytorch first, see pytorch.org.

Optional Features

AIMNet2 provides optional extras for different use cases:

ASE Calculator (for atomistic simulations with ASE):

pip install "aimnet[ase] @ git+https://github.com/isayevlab/aimnetcentral.git"

PySisyphus Calculator (for reaction path calculations):

pip install "aimnet[pysis] @ git+https://github.com/isayevlab/aimnetcentral.git"

Training (for model training and development):

pip install "aimnet[train] @ git+https://github.com/isayevlab/aimnetcentral.git"

All Features:

pip install "aimnet[ase,pysis,train] @ git+https://github.com/isayevlab/aimnetcentral.git"

Development Installation

For contributors, use uv for fast dependency management:

git clone https://github.com/isayevlab/aimnetcentral.git
cd aimnetcentral
make install
source .venv/bin/activate

Quick Start

Basic Usage (Core)

from aimnet.calculators import AIMNet2Calculator

# Load a pre-trained model
calc = AIMNet2Calculator("aimnet2")

# Prepare input
data = {
    "coord": coordinates,  # Nx3 array
    "numbers": atomic_numbers,  # N array
    "charge": 0.0,
}

# Run inference
results = calc(data, forces=True)
print(results["energy"], results["forces"])

ASE Integration

With aimnet[ase] installed:

from ase.io import read
from aimnet.calculators import AIMNet2ASE

atoms = read("molecule.xyz")
atoms.calc = AIMNet2ASE("aimnet2")

energy = atoms.get_potential_energy()
forces = atoms.get_forces()

Training

With aimnet[train] installed:

aimnet train --config my_config.yaml --model aimnet2.yaml

Development

Common development tasks using make:

make check       # Run linters and code quality checks
make test        # Run tests with coverage
make docs        # Build and serve documentation
make build       # Build distribution packages

Citation

If you use AIMNet2 in your research, please cite:

@article{aimnet2,
  title={AIMNet2: A Neural Network Potential to Meet Your Neutral, Charged, Organic, and Elemental-Organic Needs},
  author={Zubatyuk, Roman and Smith, Justin S and Nebgen, Benjamin and Tretiak, Sergei and Isayev, Olexandr},
  journal={},
  year={2024}
}

License

See LICENSE file for details.

About

No description, website, or topics provided.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 5