AIMNet2
Fast and accurate neural network potential for molecular simulations
Status: Active Development
AIMNet2 is a neural network-based interatomic potential designed for fast and accurate molecular dynamics simulations. It can model neutral, charged, organic, and elemental-organic systems with quantum chemical accuracy at a fraction of the computational cost.
Key Features
- Versatile Modeling: Handles diverse chemical systems including neutral molecules, ions, radicals, and organic compounds
- Multiple Interfaces: Integration with ASE and PySisyphus calculators for seamless workflow integration
- Flexible Electrostatics: Supports Damped-Shifted Force (DSF) or Ewald summation for long-range interactions
- GPU Acceleration: Optional CUDA support for ~5x speedup in molecular dynamics simulations
- Chemical Accuracy: Achieves ~1 kcal/mol accuracy relative to DFT reference calculations
Installation
Install from GitHub:
pip install git+https://github.com/isayevlab/aimnetcentral.git
With optional features:
# ASE calculator support
pip install "aimnet[ase] @ git+https://github.com/isayevlab/aimnetcentral.git"
# PySisyphus calculator support
pip install "aimnet[pysis] @ git+https://github.com/isayevlab/aimnetcentral.git"
# Training capabilities
pip install "aimnet[train] @ git+https://github.com/isayevlab/aimnetcentral.git"
Usage
from aimnet.calculators import AIMNet2Calculator
# Initialize calculator
calc = AIMNet2Calculator("aimnet2")
# Prepare molecular data
data = {
"coord": coordinates, # Atomic coordinates (N, 3)
"numbers": atomic_numbers, # Atomic numbers (N,)
"charge": 0.0, # Total molecular charge
}
# Run calculation
results = calc(data, forces=True)
print(f"Energy: {results['energy']}")
print(f"Forces: {results['forces']}")
print(f"Charges: {results['charges']}")
ASE Integration
from ase import Atoms
from aimnet.calculators.ase import AIMNet2ASE
# Create ASE atoms object
atoms = Atoms('H2O', positions=[[0, 0, 0], [0, 0, 1], [0, 1, 0]])
# Attach AIMNet2 calculator
atoms.calc = AIMNet2ASE("aimnet2")
# Get energy and forces
energy = atoms.get_potential_energy()
forces = atoms.get_forces()
Applications
- Molecular dynamics simulations
- Geometry optimization
- Conformer generation
- Reaction path calculations
- Free energy calculations
- High-throughput screening
Benchmark Results
- Accuracy: ~1 kcal/mol MAE on diverse organic molecules
- Speed: 1000× faster than DFT, ~5× faster with GPU
- Coverage: 14 elements covering >90% of drug-like molecules
Citation
@article{anstine2024aimnet2,
title={AIMNet2: A Neural Network Potential to Meet your Neutral, Charged, Organic, and Elemental-Organic Needs},
author={Anstine, Dylan and Zubatyuk, Roman and Isayev, Olexandr},
journal={ChemRxiv},
year={2024},
doi={10.26434/chemrxiv-2023-296ch-v2}
}
Resources
Installation
pip install aimnet