A Python package for learning representations of battery discharge voltage profiles across diverse compositions in disordered rocksalt cathodes (DRX).
Preprint at: https://arxiv.org/abs/2304.04986
Inputs:
- composition (string)
- current density rate (mA/g)
- test voltage window (V)
- cycle number (integer)
- Requirements:
pymatgen
,torch
,torch-scatter
. - Here is a simple installation if you are using
DRXNet
for prediction on CPU:
conda create -n drxnet python=3.9
conda activate drxnet
pip install pymatgen
pip install torch==1.12.0 -f https://download.pytorch.org/whl/cpu/torch_stable.html
pip install torch-scatter -f https://pytorch-geometric.com/whl/torch-1.12.0+cpu.html
python setup.py install
We open-sourced the pretrained models in ./drxnet/pretrained/
. We provided an example script for DRXNet training using the initial ten cycles of Li1.2Mn0.4Ti0.4O2.0 (LMTO) (see ./examples/train_example/
, simply run python train_LMTO.py
).
The model and the training scheme are highly expandable to other systems, such as element-doping in NCM materials, high-entropy Na-ion cathode, etc. Practitioners can customize their own electrochemical dataset and parameterize the model to make predictions.
The following examples require the pretrained model:
(1) Discharge capacity predictions in Li-Mn-O-F chemical space ./examples/[1]-predict_LMOF_chemical_space.ipynb
(2) Multi-rate performance predictions of high-entropy DRXs ./examples/[2]-predict_HE-DRX.ipynb
If you have generated the model weights, you can save them as ./pretrained/model_0
, and you can run the following example to get the voltage profile.
from drxnet.funciton import load_pretrained_models, ensemble_prediction, voltageFeaturizer
from drxnet.drxnet.model import DRXNet
from drxnet.core import Featurizer
import matplotlib.pyplot as plt
############# load the pretrained models #############
model_list = load_pretrained_models()
vol_featurizer = voltageFeaturizer()
############# predict discharge curve #############
Q_, V_ , *_ = ensemble_prediction(model_list = model_list,
vol_featurizer = vol_featurizer,
composition_string = 'Li1.2Mn0.2Cr0.2Ti0.4O2.0',
input_rate = 20,
input_cycle = 1,
input_V_low = 1.5,
input_V_high = 4.8)
plt.plot(Q_, V_, '-', color = 'k', linewidth = 2.0)
plt.show()
The Roost (Representation Learning from Stoichiometry) and mat2vec is used for compositional encoding in DRXNet. Please consider citing the relevant works:
-
R. E. A. Goodall and A. A. Lee, Predicting Materials Properties without Crystal Structure: Deep Representation Learning from Stoichiometry, Nat. Commun. 11, 6280 (2020). [link]
-
V. Tshitoyan, J. Dagdelen, L. Weston, A. Dunn, Z. Rong, O. Kononova, K. A. Persson, G. Ceder, and A. Jain, Unsupervised Word Embeddings Capture Latent Knowledge from Materials Science Literature, Nature 571, 95 (2019). [link]