Pyiron: an integrated development environment for computational materials science
J. Janssen, S. Surendralal, Y. Lysogorskiy, M. Todorova, T. Hickel, R. Drautz, J. Neugebauer.
To support and accelerate the development of simulation protocols in atomistic modelling, we introduce an integrated development environment (IDE) for computational materials science called pyiron (http://pyiron.org). The pyiron IDE combines a web based source code editor, a job management system for build automation, and a hierarchical data management solution. The core components of the pyiron IDE are pyiron objects based on an abstract class, which links application structures such as atomistic structures, projects, jobs, simulation protocols and computing resources with persistent storage and an interactive user environment. The simulation protocols within the pyiron IDE are constructed using the Python programming language. To highlight key concepts of this tool as well as to demonstrate its ability to simplify the implementation and testing of simulation protocols we discuss two applications. In these examples we show how pyiron supports the whole life cycle of a typical simulation, seamlessly combines ab initio with empirical potential calculations, and how complex feedback loops can be implemented. While originally developed with focus on ab initio thermodynamics simulations, the concepts and implementation of pyiron are general thus allowing to employ it for a wide range of simulation topics.
Schematic view of a typical simulation life cycle, which illustrates the user’s interaction with the various simulation tasks. It is divided in twelve steps, from the definition of the model – step 1 – to its validation – step 12. Three of these steps require obligatory input from the user, the model definition – step 1, the project definition – step 2, and the validation – step 12, while the rest can be automated. In particular the parsing of input and output data – steps 4 & 6 – as well as the collection of data – step 9 – are common tasks to any simulation. Using an intermediate layer with generic input – step 3, generic output – step 7 – and generalized tools for visualization – step 11, provides an abstraction layer that is code independent.