ECENet-4.8M (SPICE)
ECENet is an O(2)-equivariant line-graph interatomic potential: the edges of the atomic graph carry the features, expressed in a frame aligned with each edge, and messages pass between edges through their shared atoms. This checkpoint is the larger of the two models trained on the MACE-OFF split of SPICE, with latent Ewald summation (LES) for long-range electrostatics. It predicts energies, forces, and latent atomic charges and bond dipoles, from which molecular dipoles and Born effective charges can be obtained without any training on charges.
Paper: ECENet: An Edge Cluster Expansion Line Graph Neural Network, A. LaCour and T. Head-Gordon (in preparation). Code: https://github.com/THGLab/ECEnet
Model
| parameters | 4,826,077 |
| elements | H, C, N, O, F, P, S, Cl, Br, I |
| cutoff | 5.0 Å (edges and atomic bases) |
| angular truncation | ℓ_max = 3, m_max = 2 |
| radial basis | 16 sinc functions, cosine cutoff |
| channels per (ℓ, m) | 42; bottleneck 256; 16 azimuthal grid points |
| message passing | 3 layers, width 128, 6 gating heads |
| read-out | invariant MLP [512, 512] × enveloped radial basis |
| long-range | LES: latent charges + bond dipoles per edge, σ = 1.5 Å, scale 0.1 |
| precision | trained in float32 (TF32, then plain float32) |
| energy units | eV (per-element references stored in the checkpoint) |
Training
MACE-OFF23 split of SPICE v1 (neutral molecules of the ten elements above, ion
pairs removed): 900,000 training and 51,005 validation structures from the
released training file, evaluated on the standard 50,195-structure test set.
Huber loss (δ = 0.0025) on per-atom energies (weight 10) and force components
(weight 0.5); AdamW, learning rate 5×10⁻⁴ halved at seven milestones, 300
epochs with TF32 followed by 20 epochs in full float32; 16 A100 GPUs. The exact
driver is train.py in this repository; the weights are those of the epoch
with the lowest weighted validation error.
Usage
Install ECENet and the optional les package (required for this checkpoint):
git clone https://github.com/THGLab/ECEnet && cd ECEnet
pip install -e ".[les]"
from ase.io import read
from ecenet.calculator import load_calculator
calc = load_calculator("ecenet-4.8m-spice.mdl") # picks the LES calculator automatically
atoms = read("molecule.xyz")
atoms.calc = calc
energy = atoms.get_potential_energy() # eV, short-range + long-range
forces = atoms.get_forces() # eV/Å
charges = atoms.get_charges() # latent charges (e; global sign arbitrary)
dipoles = calc.results["les_dipoles"] # latent bond dipoles per atom (e·Å)
Pass device="cuda" to load_calculator for GPU inference. For molecular
dynamics with charge, dipole and Born-effective-charge output along the
trajectory, see examples/run_md_xyz.py in the code repository
(--dump_charges, --dump_bec). Periodic systems are supported (Ewald
summation for the long-range term).
Intended use and limitations
- Organic and biomolecular systems within the ten SPICE elements; neutral systems only (no charged species in the training data).
- The long-range energy is quadratic in the latent charges, so their overall
sign is not determined by training: it is consistent within the checkpoint
but not physically pinned. Molecular dipoles from
Σ(qᵢ − q̄) rᵢ + Σ uᵢare meaningful up to this sign. - Trained on isolated molecules and small clusters; bulk-phase behaviour (liquid water structure and IR spectrum) is demonstrated in the paper but was not part of training.
Licensing
The ECENet code and these weights are released under the UC Regents license in
LICENSE.