| --- |
| 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 |
| --- |
| |
|
|
| <h1 align="center" style="font-size: 36px;"> |
| <span style="color: #DAA520;">AQ</span>Volt26 Universal Potentials 🔋</h1> |
|
|
| <p align="center"> |
| <img src="aqvolt26.png" alt="AQVolt26 Overview" width="600"> |
| </p> |
|
|
|
|
| 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](https://www.sandboxaq.com/post/aqvolt26-advancing-ai-driven-discovery-for-next-generation-solid-state-batteries) and [paper](https://arxiv.org/abs/2604.02524) for more details about the impact of the models and [dataset](https://huggingface.co/collections/SandboxAQ/aqvolt26). |
|
|
| ## 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. |
|
|
| ```bash |
| micromamba create -n aqvolt python=3.10 |
| micromamba activate aqvolt |
| ``` |
|
|
| ### Step 1.2: Install Dependencies |
|
|
| Install all the required libraries |
|
|
| ```bash |
| 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](https://huggingface.co/join). |
|
|
| **Create an Access Token:** |
| Navigate to your **Settings -> Access Tokens** page or click [here](https://huggingface.co/settings/tokens). 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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**. |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| from ase.md.velocitydistribution import MaxwellBoltzmannDistribution |
| MaxwellBoltzmannDistribution(atoms, temperature_K=temperature) |
| ``` |
|
|
| Feed in the MD inputs |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bash |
| 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 |
|
|
| ```bibtex |
| @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}, |
| } |
| ``` |
| --- |