ECENet-1.7M (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 smaller, faster 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. For the most accurate model see ECENet-4.8M.

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 1,671,237
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) 24; bottleneck 256; 10 azimuthal grid points
message passing 1 layer, width 64, 8 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 six milestones, 200 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-1.7m-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.
  • Trained on isolated molecules and small clusters; use in the condensed phase was not part of training.

Licensing

The ECENet code and these weights are released under the UC Regents license in LICENSE.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support