| --- |
| library_name: aimnet |
| license: mit |
| tags: |
| - chemistry |
| - computational-chemistry |
| - molecular-dynamics |
| - interatomic-potential |
| - neural-network-potential |
| - pytorch |
| - aimnet2 |
| pipeline_tag: other |
| --- |
| |
| # AIMNet2 NSE (Open-Shell) |
|
|
| AIMNet2 is a neural network interatomic potential for fast and accurate molecular simulations. This is a spin-polarized model for **open-shell chemistry** (radicals, triplet states, excited states). Accepts spin multiplicity as additional input. |
|
|
| ## Highlights |
|
|
| - **Fast:** Orders of magnitude faster than DFT, with optional `torch.compile` for ~5x additional speedup on GPU |
| - **Accurate:** Near-DFT accuracy for energies, forces, and charges |
| - **Broad coverage:** Supports 14 elements: H, B, C, N, O, F, Si, P, S, Cl, As, Se, Br, I |
| - **Ensemble:** 4 ensemble members for uncertainty estimation |
| - **Features:** Energy, forces, charges, Hessian, stress tensor, periodic boundary conditions |
|
|
| ## Installation |
|
|
| ```bash |
| pip install "aimnet[hf]" |
| ``` |
|
|
| ## Quick Start |
|
|
| ```python |
| from aimnet.calculators import AIMNet2Calculator |
| |
| # Load from Hugging Face (downloads and caches automatically) |
| calc = AIMNet2Calculator("isayevlab/aimnet2-nse") |
| |
| # Single-point calculation (closed-shell) |
| results = calc( |
| {"coord": coords, "numbers": atomic_numbers, "charge": 0.0}, |
| forces=True, |
| ) |
| print(results["energy"]) # Energy in eV |
| print(results["forces"]) # Forces in eV/A |
| print(results["charges"]) # Partial charges in e |
| |
| # For open-shell species (e.g., methyl radical, doublet) |
| results = calc( |
| {"coord": coords, "numbers": atomic_numbers, "charge": 0.0, "mult": 2.0}, |
| forces=True, |
| ) |
| ``` |
|
|
| ### With ASE |
|
|
| ```python |
| from aimnet.calculators.aimnet2ase import AIMNet2ASE |
| from ase.build import molecule |
| |
| atoms = molecule("H2O") |
| atoms.calc = AIMNet2ASE("isayevlab/aimnet2-nse", mult=2) |
| |
| energy = atoms.get_potential_energy() |
| forces = atoms.get_forces() |
| ``` |
|
|
| ## Ensemble Members |
|
|
| This repo contains 4 ensemble members (`ensemble_0.safetensors` through `ensemble_3.safetensors`). The default loads member 0. For uncertainty estimation, load all 4 and average predictions. |
|
|
| | File | Description | |
| |------|-------------| |
| | `ensemble_0.safetensors` | Ensemble member 0 (default) | |
| | `ensemble_1.safetensors` | Ensemble member 1 | |
| | `ensemble_2.safetensors` | Ensemble member 2 | |
| | `ensemble_3.safetensors` | Ensemble member 3 | |
| | `config.json` | Shared model configuration and metadata | |
|
|
| ## Model Details |
|
|
| - **Architecture:** AIMNet2 (Atomic Environment Vectors + message-passing MLPs) |
| - **Cutoff radius:** 5.0 A |
| - **DFT functional:** wB97M |
| - **Dispersion:** D3BJ (externalized, handled by calculator) |
| - **Coulomb:** Short-range embedded + external long-range (DSF/Ewald) |
| - **Format:** safetensors (converted from PyTorch state dict) |
|
|
| ## Limitations |
|
|
| - **Periodic systems** are supported through the Python API / ASE interface, not through the Gradio demo |
| - Element coverage is limited to the 14 elements listed above; unsupported elements will raise an error |
|
|
| ## Citation |
|
|
| ```bibtex |
| @article{anstine2025aimnet2, |
| 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={Chemical Science}, |
| year={2025}, |
| publisher={Royal Society of Chemistry}, |
| doi={10.1039/D4SC08572H} |
| } |
| ``` |
|
|
| ## License |
|
|
| MIT License |
|
|