ReaxFF Alumina Parametrization Data Set
This dataset contains all the data needed to reproduce the Alumina Parametrization of ReaxFF, see bibliographic reference in the metadata.
All AMS calculations are performed using AMS2023.101. Whenever possible, Python scripts are written so that they do not require AMS, making a large portion of the scripts reproducible with open-source software.
The instructions below assume that the archive is unpacked on a Linux system, as follows:
unzip dataset-parametrization.zip
This will preserve file permissions upon extraction. Do not transfer the files to a Linux system after unpacking this archive on Windows, as this will remove the file permission flags.
Data descriptor
*** How the data were generated ***
The following steps summarize how to reproduce the results in this dataset.
It is assumed that you have a Linux system with AMS 2023.101 installed. Copy the file amsenv.sh.example to amsenv.sh and change the variables in this copy to match the location of your AMS installation.
For all non-AMS scripts, a Micromamba environment is used, which can be created with ./setup-env-micromamba.sh. After installation, you either manually activate the environment with
source env/bin/activate
or use direnv.
The VASP calculations for the training and validation sets are converted into files for ParAMS by running the following scripts:
(cd training-set/conversion; ./job.sh)
(cd validation-set/conversion; ./job.sh)
The job scripts can also be submitted with sbatch on a cluster. (You may need to modify them to work on your system.)
This will produce several files for each set, of which the following are relevant:
chemformula.json: names and chemical formulas of all structures
counts.json: counts of data set items in each category, per structure
energies.json: electronic energies of all structures and chemical equations
ics_phase1.json: internal coordinates in phase 1, see article for details
ics_phase2.json: internal coordinates in phase 2, see article for details
job_collection_{name}.yaml: Job collections for ParAMS
{name}_set.yaml: Dataset entries for ParAMS
These output files are already included in this archive. Only the .yaml files are used by ParAMS. The JSON files are used by some of the scripts in this archive, and were also used to generate tables and figures in the article.
The parameter selection can be reproduced as follows:
(cd parameter-selection; ./parameter_selection_ams.py)
This will produce a parameter_interface.yaml file that can be used as input to ParAMS. It contains the selection of parameters, the bounds and the historical values taken from Joshi et al. The parameter_interface.yaml file is already included in the archive.
At this stage, all inputs for the parametrization are available. The actual parametrization workflow is implemented in the opt-*-p28 directories. Note that the inputs to ParAMS and some configuration files for the workflow are stored in opt-*-p28/results/given. To repeat the parametrization workflow, remove the existing outputs (all directories under opt-*-p28/results/ except given). If some directories still exist, these steps will not be repeated. After removing existing outputs, enter one of the opt-*-p28 directories and run
../opt/workflow.py
This will coordinate the submission of various jobs to Slurm including:
40 CMA optimizations,
the recomputation of the loss for a range geometryoptimization.MaxIterations values, for all 40 optimized force fields, and
the evaluation of the data sets, using the best result from the 40 CMA runs.
Again, you may need to modify the job scripts in opt/templates/*/ to make them work on your system.
*** Software that was used ***
AMS 2023.101.
Python 3.11 and all packages listed in environment.yaml. (These are installed with the command ./setup-env-micromamba.sh.)
The custom ParAMS extractors defined in ./extractors/. These extractors are a workaround for efficiency issues in ParAMS. Instead of listing each angle or distance as a separate dataset item, these extractors group such quantities into arrays, which speeds up the training and increases parallel efficiency. At the time of writing, there is still a bug in AMS 2023.101, which requires one to manually edit singleton arrays that lack square brackets in a dataset.yaml file.
The Python scripts under scripts/ are used to generate the training and validation sets.
The Balanced Loss function is implemented in a module site-packages/balanced_loss_ams.py.
*** Directory and file organization ***
Most directories have already been defined in the previous two sections. This section only discusses some points not mentioned above.
The parametrization workflow consists of three different types of jobs, whose implementation can be found in opt/templates.
Running ./setup-env-micromamba.sh installs the Python environment in a subdirectory env.
The VASP outputs can be found in training-set/vasp-calculations and validation-set/vasp-calculations. Note that POTCAR files are not included due to restrictions imposed by the VASP license.
Python scripts ending with _ams.py should be executed (or imported) with amspython. The distinction is necessary because AMS2023.101 includes Python 3.8, while the rest of the Python scripts may benefit from new features in Python 3.11. By using this filename convention, we can apply pyupgrade selectively for different Python versions.
The MANIFEST.sha256sum file can be used to check the archive for corrupted files, e.g. due to bit rot. The following command will verify all files after unpacking the archive:
cut -c 17- MANIFEST.sha256 | sha256sum -c
*** File content details ***
All .json files in this archive contain custom data structures specific to this project. To understand their contents, please refer to the source code of the scripts that generate and use these files.
All other file formats are defined in the context of external software packages (VASP, AMS, …) and these formats will not be explained here