Supporting datasets and scripts for the paper "Evaluation of GlassNet for physics-informed machine learning of glass stability and glass forming ability", Allec et al. A preprint of the manuscript is available on arXiv.
Jupyter notebooks for reproducing the figures of the paper are in
the notebooks
folder. Supporting datasets are in the
data
folder.
After activating your python environment that you will be using
to run these notebooks (e.g., conda activate piml_gfa
), use pip
to install the requirements:
pip install -r requirements.txt
Note that installation of glasspy
requires pytorch
(for pytorch
installation, see here).
Also, different notebooks require different glasspy
versions in order to
reproduce the results in the paper exactly. Please see the top cell of each
notebook to see if a specific version is recommended.
All of the notebooks can be ran independently of each other; however, certain lines are time consuming and can be reduced by saving data locally. Two examples of this are i) the loading of the GlassNet training and test datasets and ii) the regression of the MYEGA equation for these datasets.
Currently, in each notebook, we use glasspy
to load the GlassNet data
like this:
# Import GlassNet
from glasspy.predict.models import GlassNet
# Load the model
glassnet = GlassNet()
# Then load data
glassnet_test_df = glassnet.get_test_dataset()
glassnet_train_df = glassnet.get_training_dataset()
Instead, you can do this once on your machine, and then save these dataframes as csv files and read them in later:
# Save dataframes to csv files
glassnet_test_df.to_csv('glassnet_test_df.csv')
glassnet_train_df.to_csv('glassnet_train_df.csv')
# Load dataframes from csv files
glassnet_test_df = pd.read_csv('glassnet_test_df.csv', index_col=0, header=[0, 1])
glassnet_train_df = pd.read_csv('glassnet_train_df.csv', index_col=0, header=[0, 1])
Currently, in any notebook that requires
# Import GlassNet
from glasspy.predict.models import GlassNet
# Load the model
glassnet = GlassNet()
# Read training data from csv file (this can only be done after completing 1. above)
glassnet_train_df = pd.read_csv('glassnet_train_df.csv', index_col=0, header=[0, 1])
X = glassnet_train_df.elements
Tl = glassnet_train_df.property.Tl
visc_at_Tl = glassnet.predict_log10_viscosity( T = Tl, composition = X )
Similar to the example above, you can do this once and then save the viscosity in a csv file to load later:
# Save series to csv file
visc_at_Tl.to_csv('viscosity_glassnet_train.csv')
# Load series from csv file
visc_at_Tl = pd.read_csv('viscosity_glassnet_train.csv', index_col=0)
- For the ternary plots, the only systems for which the true glass forming region
can be plotted are Na2O-Fe2O3-P2O5 and Na2O-B2O3-SiO2. This is hard-coded. If you'd
like to add your own system, you will have to edit
plot_ternary
ofnotebooks/utils.py
.