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