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, we apologize that we are not able to release the DRX test dataset and models now.
(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]