Skip to content

Latest commit

 

History

History
221 lines (196 loc) · 11.7 KB

paper.md

File metadata and controls

221 lines (196 loc) · 11.7 KB
title tags authors affiliations date bibliography
ASIMTools: A lightweight framework for scalable and reproducible atomic simulations
Python
atomic simulation
density functional theory
workflow
name orcid equal-contrib affiliation
Mgcini Keith Phuthi
0000-0002-0982-8635
false
1
name orcid equal-contrib affiliation
Emil Annevelink
0000-0001-5035-7807
false
2
name orcid equal-contrib affiliation
Venkatasubramanian Viswanathan
0000-0003-1060-5495
false
1
name index
University of Michigan, United States
1
name index
Carnegie Mellon University, United States
2
17 June 2024
paper.bib

Summary

Atomic SIMulation Tools (ASIMTools) is a lightweight workflow and simulation manager for reproducible atomistic simulations on Unix-based systems. Within the framework, simulations can be transferred across computing environments, DFT codes, interatomic potentials and atomic structures. By using in-built or user-defined python modules (called asimmodules) and utilities, users can run simulation protocols and automatically scale them on slurm based clusters or locally on their console. The core idea is to separate the dependence of the atomistic potential/calculator, the computing environment and the simulation protocol thereby allowing the same simulation to be run with different calculators, atomic structures or on different computers with just a change of one parameter in an input file after initial setup. This is increasingly necessary as benchmarking Machine Learning Interatomic Potentials has become a core part of computational materials science. Input and output files follow a simple standard format, usually yaml, providing a simple interface that also acts as a record of the parameters used in a simulation without having to edit python scripts. The minimal set of requirements means any materials science codes can be incorporated into an ASIMTools workflow in a unified way.

Statement of need

Atomic simulations are a key component of modern day materials science in both academia and industry. However, simulation protocols and workflows used by researchers are typically difficult to transfer to systems using different inputs, codes and computing environments. It often involves rewriting entire scripts in different languages to change from one type of atomistic potential or atomic structure to another. This leads to poor reproducibility and inefficient transfer of code from one researcher to the next. In addition, there exists a zoo of tools and packages for atomic simulation with more being developed every day [@walsh_open_2024]. There is however no unifying framework that can encompass all these tools without significant software development effort. Significant effort should not be necessary because while the source of the fundamental outputs of atomistic potentials such as energy, forces etc. may differ, simulation protocols built on these outputs should converge towards the most accurate and computationally efficient. ASIMTools focuses on this last aspect by introducing asimmodules which are simply Python functions that act as simulation protocols which have no dependence on a specific atomistic potential or computational environment or atomic structure. Through iteration and community input, these simulation protocols will hopefully converge towards best practice and ensure reproducibility of simulation results.

ASIMTools is for users interested in performing atomistic calculations on UNIX-like operating systems and/or on slurm-based High Performance Computing clusters. By defining simulation protocols as "asimmodules", they can be easily added to the library of provided asimmodules and iterated on. The flexibility of ASIMTools allows integration of any kind of simulation tools such as the heavily used Atomic Simulation Environment [@larsen_atomic_2017] pymatgen [@ong_python_2013], LAMMPS [@thompson_lammps_2022] etc. with examples provided. With the asimmodules defined, users only need to provide a set of inputs in the form of yaml files that define the parameters used for each simulation and are therefore a concrete record of used parameters.

State of the Field

There exist a number of popular workflow tools for atomistic simulations such as Aiida [@huber_aiida_2020], Fireworks [@jain_fireworks_2015] and many more. These tools provide frameworks for constructing complex workflows with different underlying principles. Some managers enforce strict rules that ensure that data obeys FAIR principles and emphasizes data provenance and reproducibility. These methods however tend to be fairly large packages with steep learning curves. ASIMTools provides a simple interface as a starting point that can transform any code into ASIMTools compatible code by simply wrapping it in a function that returns a Python dictionary. Any such code can work in ASIMTools and with a few extra steps, the protocol can be made to support an arbitrary calculator and input atomic structure.

In some workflow managers, such as Atomic Simulation Recipes [@gjerding_atomic_2021], once workflows are built, it can often be difficult to quickly change and iterate over key parameters such as the choice of atomistic calculator or structure as they are intrinsically built into the code. This is particularly challenging in an age where machine learning models are becoming more popular. Workflows involving machine learning interatomic potentials tend to require the ability to repeat the same calculations on different examples, using different calculators on different hardware iteratively. This is where the value of ASIMTools lies in contrast to more established workflows. ASIMTools is not designed to replace the more powerful workflow managers but rather to supplement them. This is achieved by providing unified inputs that can be easily integrated into, for example, Aiida as Python functions/asimmodules while also being a stand-alone lightweight workflow manager for simpler cases.

Usage To-Date

ASIMTools has been used in the benchmarking Machine Learning Interatomic Potentials [@phuthi_accurate_2024] and creating a workflow for calculation of vibrational properties of solids calculations [@phuthi_vibrational_2024].

Conclusion and Availability

The ASIMTools package is a powerful tool for building and executing atomic simulation protocols locally and at scale on slurm-based HPC infrastructure. The code is hosted on a public Github repository (https://github.com/BattModels/asimtools) with a number of examples. Asimmodules for common calculations are also implemented with examples. Interested users are encouraged to submit issues, contact developers and make pull requests, particularly for adding new simulation protocols to the library.

Author Contribution Statement

Conceptualization by Keith Phuthi. Coding and development by Keith Phuthi and Emil Annevelink. Paper writing by Keith Phuthi. Project management by all.

Acknowledgements

We acknowledge feedback from Kian Pu, Lance Kavalsky, Hancheng Zhao and Ziqi Wang.

References