license: other
extra_gated_prompt: >-
The AQVolt26 models and dataset are for non-commercial use. If you want to
work with us or discuss obtaining a commercial license, please contact us
directly at materials@sandboxaq.com.
extra_gated_fields:
First Name: text
Last Name: text
Company Name or Affiliation: text
Role or Job Title: text
I want to use the AQVolt26 models and datasets for: text
I agree to use the AQVolt26 models and datasets are for non-commercial use ONLY: checkbox
tags:
- chemistry
- materials-science
- machine-learning
- computational-chemistry
- dft
- batteries
AQVolt26 Universal Potentials 🔋
This repository contains AQVolt26 model checkpoints. The models released currently are based on the Smooth Energy Network (eSEN) architecture, co-trained with a combination of datasets.
Please see our blog and paper for more details about the impact of the models and dataset.
1. Model Installation
This section details how to install and run the eSEN models.
Step 1.1: Create Environment
First, create and activate a new micromamba (or conda) environment with Python 3.10.
micromamba create -n aqvolt python=3.10
micromamba activate aqvolt
Step 1.2: Install Dependencies
Install all the required libraries
pip install huggingface_hub datasets pandas jupyterlab ase fairchem-core --no-input
Step 1.3: Log in to Hugging Face
If you don't have one, create an account at huggingface.co.
Create an Access Token:
Navigate to your Settings -> Access Tokens page or click here. Create a new token with at least read permissions. Copy this token to your clipboard.
Step 1.4: Download the AQVolt26 Models
Access via Jupyter Lab:
Open your terminal or command prompt and type
python -m ipykernel install --user --name=aqvolt --display-name="aqvolt"
jupyter lab
This will open a tab in your web browser. Open a new Jupyter notebook. Make sure that your notebook is using the Python environment where the packages installed above are located when selecting your kernel. Type the following into a cell
import torch
from huggingface_hub import hf_hub_download
You can access the foundational potential more suited to off-equilibrium tasks at this checkpoint named aqvolt-esen.pt or the version more suited to tasks near 0K called aqvolt-mp-esen.pt.
model_path = hf_hub_download(
repo_id="SandboxAQ/aqvolt26-models",
filename="aqvolt-esen.pt",
token=<YOUR-TOKEN>
)
Load the model as an ASE-compatible calculator
from fairchem.core import FAIRChemCalculator
from fairchem.core.units.mlip_unit import load_predict_unit
predictor = load_predict_unit(path=model_path)
calc = FAIRChemCalculator(predictor)
2. Model Usage
You can test the model with a subset of the AQVolt26 test data
from datasets import load_dataset
dataset = load_dataset("SandboxAQ/aqvolt26-dataset-subset", split="test", token=<YOUR-TOKEN>)
from ase import Atoms
atoms = Atoms(**dataset[0]['atoms'])
atoms.calc = calc
print(atoms.get_potential_energy())
print(atoms.get_forces())
print(atoms.get_stress())
Example: Run a Molecular Dynamics NpT simulation with an AQVolt26 model:
Set the desired inputs
temperature = 400 # in Kelvin
pressure = 1 # in atm
timestep = 1 # in fs
interval = 1 # frequency of data logging, 1 for every frame
nsteps = 10 # MD steps to run
Convert the inputs into the correct units
import numpy as np
import scipy.constants as const
from ase import units
pressure_pa = pressure * const.atm
angstrom_to_meter = const.angstrom
joule_to_ev = 1 / const.e
pressure_ev_per_cubic_meter = pressure_pa * joule_to_ev
conversion_factor_m3_to_A3 = angstrom_to_meter**3
pressure_ev_per_cubic_angstrom = pressure_ev_per_cubic_meter * conversion_factor_m3_to_A3
Scale the initial velocity
from ase.md.velocitydistribution import MaxwellBoltzmannDistribution
MaxwellBoltzmannDistribution(atoms, temperature_K=temperature)
Feed in the MD inputs
from ase.md.npt import NPT
dyn = NPT(
atoms=atoms,
timestep=timestep * units.fs,
temperature_K=temperature,
externalstress=pressure_ev_per_cubic_angstrom,
ttime=float(25.0) * units.fs,
pfactor=float(75.0**2.0) * units.fs,
mask=np.array([(1, 0, 0), (0, 1, 0), (0, 0, 1)]) # mask for isotropic pressure
)
Set up a logger to monitor your run
from ase.md.logger import MDLogger
logger = MDLogger(
dyn,
atoms,
'aqvolt.log',
header=True,
peratom=False,
stress=False,
)
dyn.attach(logger, interval=interval)
Define your trajectory file to read the generated configurations
from ase.io import read, write, Trajectory
traj = Trajectory('aqvolt.traj', 'w', atoms)
dyn.attach(traj.write, interval=interval)
Run the NpT simulation for the desired period of time
dyn.run(nsteps)
3. How to Cite
If you use the AQVolt26 models or dataset in your research, please cite the following paper:
Jiyoon Kim, Chuhong Wang, Aayush R. Singh, Tyler Sours, Shivang Agarwal, AJ Nish, Paul Abruzzo, Ang Xiao, Omar Allam. (2026). AQVolt26: High-Temperature r2SCAN Halide Dataset for Universal ML Potentials and Solid-State Batteries. arXiv preprint arXiv:XXXX.XXXXX.
BibTeX Entry
@article{kim2026aqvolt26hightemperaturer2scanhalide,
title={AQVolt26: High-Temperature r2SCAN Halide Dataset for Universal ML Potentials and Solid-State Batteries},
author={Jiyoon Kim and Chuhong Wang and Aayush R. Singh and Tyler Sours and Shivang Agarwal and AJ Nish and Paul Abruzzo and Ang Xiao and Omar Allam},
year={2026},
eprint={2604.02524},
archivePrefix={arXiv},
primaryClass={cond-mat.mtrl-sci},
url={https://arxiv.org/abs/2604.02524},
}