DOI: 10.5281/zenodo.8322494
title: ReaxFF Alumina Parametrization Data Set

description: <strong>ReaxFF Alumina Parametrization Data Set</strong> 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: <pre><code>unzip dataset-parametrization.zip</code></pre> 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. <strong>Data descriptor</strong> <em>*** How the data were generated ***</em> 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 <code>amsenv.sh.example</code> to <code>amsenv.sh</code> 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 <code>./setup-env-micromamba.sh</code>. After installation, you either manually activate the environment with <pre><code>source env/bin/activate</code></pre> or use direnv. The VASP calculations for the training and validation sets are converted into files for ParAMS by running the following scripts: <pre><code>(cd training-set/conversion; ./job.sh) (cd validation-set/conversion; ./job.sh)</code></pre> The job scripts can also be submitted with <code>sbatch</code> 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: <code>chemformula.json</code>: names and chemical formulas of all structures <code>counts.json</code>: counts of data set items in each category, per structure <code>energies.json</code>: electronic energies of all structures and chemical equations <code>ics_phase1.json</code>: internal coordinates in phase 1, see article for details <code>ics_phase2.json</code>: internal coordinates in phase 2, see article for details <code>job_collection_{name}.yaml</code>: Job collections for ParAMS <code>{name}_set.yaml</code>: Dataset entries for ParAMS These output files are already included in this archive. Only the <code>.yaml</code> 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: <pre><code>(cd parameter-selection; ./parameter_selection_ams.py)</code></pre> This will produce a <code>parameter_interface.yaml</code> 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 <code>parameter_interface.yaml</code> 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 <code>opt-*-p28</code> directories. Note that the inputs to ParAMS and some configuration files for the workflow are stored in <code>opt-*-p28/results/given</code>. To repeat the parametrization workflow, remove the existing outputs (all directories under <code>opt-*-p28/results/</code> except <code>given</code>). If some directories still exist, these steps will not be repeated. After removing existing outputs, enter one of the <code>opt-*-p28</code> directories and run <pre><code>../opt/workflow.py</code></pre> This will coordinate the submission of various jobs to Slurm including: 40 CMA optimizations, the recomputation of the loss for a range <code>geometryoptimization.MaxIterations</code> 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 <code>opt/templates/*/</code> to make them work on your system. <em>*** Software that was used ***</em> AMS 2023.101. Python 3.11 and all packages listed in <code>environment.yaml</code>. (These are installed with the command <code>./setup-env-micromamba.sh</code>.) The custom ParAMS extractors defined in <code>./extractors/</code>. 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 <code>dataset.yaml</code> file. The Python scripts under <code>scripts/</code> are used to generate the training and validation sets. The Balanced Loss function is implemented in a module <code>site-packages/balanced_loss_ams.py</code>. <em>*** Directory and file organization ***</em> 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 <code>opt/templates</code>. Running <code>./setup-env-micromamba.sh</code> installs the Python environment in a subdirectory <code>env</code>. The VASP outputs can be found in <code>training-set/vasp-calculations</code> and <code>validation-set/vasp-calculations</code>. Note that <code>POTCAR</code> files are not included due to restrictions imposed by the VASP license. Python scripts ending with <code>_ams.py</code> should be executed (or imported) with <code>amspython</code>. 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 <code>pyupgrade</code> selectively for different Python versions. The <code>MANIFEST.sha256sum</code> 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: <pre><code>cut -c 17- MANIFEST.sha256 | sha256sum -c</code></pre> <em>*** File content details ***</em> All <code>.json</code> 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.