pyiron_base

Core components of the pyiron integrated development environment (IDE) for computational materials science

https://github.com/pyiron/pyiron_base

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    4 of 42 committers (9.5%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (15.3%) to scientific vocabulary

Keywords

workflow workflow-automation workflow-engine workflow-management

Keywords from Contributors

molecular-dynamics lammps free-energy free-energy-calculations interatomic-potentials thermodynamic-calculations multiprocessing flux mpi mpi4py
Last synced: 6 months ago · JSON representation ·

Repository

Core components of the pyiron integrated development environment (IDE) for computational materials science

Basic Info
Statistics
  • Stars: 22
  • Watchers: 9
  • Forks: 14
  • Open Issues: 77
  • Releases: 169
Topics
workflow workflow-automation workflow-engine workflow-management
Created over 5 years ago · Last pushed 6 months ago
Metadata Files
Readme Changelog Contributing License Code of conduct Citation

README.md

pyiron_base

codecov Release_Date Pipeline Downloads Documentation Status

The pyiron_base workflow manager provides the data storage and job management for the pyiron project. As part of the modularization of the pyiron project in 2018, the monolithic code base which started as pyCMW back in 2011 was split in pyiron_base and pyiron_atomistics. This split highlights the separation of the technical complexity and workflow management in pyiron_base and the physics modelling for atomistic simulation in pyiron_atomistics.

Features:

  • Calculation which can be either simple python functions or external executables written in any programming language can be wrapped in pyiron_base to enable parameter studies with thousands or millions of calculation.
  • The calculation can either be executed locally on the same computer or on high performance computing (HPC) resources. The python simple queuing system adapter pysqa is used to interface with the HPC queuing systems directly from python and the pympipool package is employed to assign dedicated resources like multiple CPU cores and GPUs to individual python functions.
  • Scientific data is efficiently stored using the hierarchical data format (HDF) via the h5py python library and more specifically the h5io packages to match the python datatypes to the HDF5 data types.

With this functionality the pyiron_base workflow manager enables the rapid prototyping and up-scaling of parameter studies for a wide range of scientific application. Starting from simulation codes written in Fortran without any Python bindings, over more modern modelling codes written in C or C++ with Python bindings up to machine learning models requiring GPU acceleration, the approach follows the same three steps:

  • Implement a wrapper for the simulation code, which takes a set of input parameters calls the simulation code and returns a set of output parameters. For a simulation code with python bindings this is achieved with the wrap_python_function() function and for any external executable which requires file-based communication this is achieved with the create_job_class() function which requires only a write_input() function and a collect_output() function to parse the input and output files of the external executable. Both functions return a job object. This is the central building block of the pyiron_base workflow manager.
  • Following the map-reduce pattern a series of job objects are created and submitted to the available computing resources. When the pyiron_base workflow manager is executed directly on the login node of a HPC cluster, the calculation are directly submitted to the queuing system. Alternatively, the pyiron_base workflow manager also supports submission via an secure shell (SSH) connection to the HPC cluster. Still in contrast to many other workflow managers, the pyiron_base workflow manager does not require constant connection to the remote computing resources. Once the job objects are submitted the workflow can be shutdown.
  • Finally, after the execution of the individual job objects is completed the pyiron_table object gathers the data of the individual job objects in a single table. The table is accessible as pandas.DataFrame so it is compatible to most machine learning and plotting libraries for further analysis.

Example:

As the pyiron_base workflow manager was developed as part of the pyiron project the implementation of the quantum espresso density functional theory (DFT) simulation code in the pyiron_base workflow manager is chosen as example. Still the same steps apply for any kind of simulation code: ```python import os import matplotlib.pyplot as plt import numpy as np from ase.build import bulk from ase.calculators.espresso import Espresso from ase.io import write from pwtools import io

def writeinput(inputdict, workingdirectory="."): filename = os.path.join(workingdirectory, 'input.pwi') os.makedirs(workingdirectory, existok=True) write( filename=filename, images=inputdict["structure"], Crystal=True, kpts=inputdict["kpts"], inputdata={"calculation": inputdict["calculation"]}, pseudopotentials=input_dict["pseudopotentials"], tstress=True, tprnfor=True )

def collectoutput(workingdirectory="."): filename = os.path.join(workingdirectory, 'output.pwo') try: return {"structure": io.readpwmd(filename)[-1].getaseatoms()} except TypeError: out = io.readpw_scf(filename) return { "energy": out.etot, "volume": out.volume, }

def workflow(project, structure): # Structure optimization jobqeminimize = pr.create.job.QEJob(jobname="qerelax") jobqeminimize.input["calculation"] = "vc-relax" jobqeminimize.input.structure = structure jobqeminimize.run() structureopt = jobqe_minimize.output.structure

 # Energy Volume Curve
 energy_lst, volume_lst = [], []
 for i, strain in enumerate(np.linspace(0.9, 1.1, 5)):
     structure_strain = structure_opt.copy()
     structure_strain = structure.copy()
     structure_strain.set_cell(
         structure_strain.cell * strain**(1/3),
         scale_atoms=True
     )
     job_strain = pr.create.job.QEJob(
         job_name="job_strain_" + str(i)
     )
     job_strain.input.structure = structure_strain
     job_strain.run(delete_existing_job=True)
     energy_lst.append(job_strain.output.energy)
     volume_lst.append(job_strain.output.volume)

 return {"volume": volume_lst, "energy": energy_lst}

from pyironbase import Project pr = Project("test") pr.createjobclass( classname="QEJob", writeinputfunct=writeinput, collectoutputfunct=collectoutput, defaultinputdict={ # Default Parameter "structure": None, "pseudopotentials": {"Al": "Al.pbe-n-kjpawpsl.1.0.0.UPF"}, "kpts": (3, 3, 3), "calculation": "scf", }, executablestr="mpirun -np 1 pw.x -in input.pwi > output.pwo", )

jobworkflow = pr.wrappythonfunction(workflow) jobworkflow.input.project = pr jobworkflow.input.structure = bulk('Al', a=4.15, cubic=True) jobworkflow.run()

plt.plot(jobworkflow.output.result["volume"], jobworkflow.output.result["energy"]) plt.xlabel("Volume") plt.ylabel("Energy") ```

After the definition of the write_input() and collect_output() function for the quantum espresso DFT simulation code the workflow() function is defined to combine multiple quantum espresso DFT simulation. First the structure is optimized to identify the equilibrium volume and afterwards five strains ranging from 90% to 110% are applied to determine the bulk modulus. Finally, in the last few lines all the individual pieces are put together, by creating QEJob the quantum espresso job class based on the write_input() and collect_output() function and then wrapping the workflow() function using the wrap_python_function(). The whole workflow is executed when the run() function is called. Afterwards the results are plotted using the matplotlib library.

Disclaimer

While we try to develop a stable and reliable software library, the development remains a opensource project under the BSD 3-Clause License without any warranties: ``` BSD 3-Clause License

Copyright (c) 2018, Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

  • Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ```

Documentation

Owner

  • Name: pyiron
  • Login: pyiron
  • Kind: organization

pyiron - an integrated development environment (IDE) for materials science.

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors: 
- family-names: "Janssen"
  given-names: "Jan"
  orcid: "https://orcid.org/0000-0001-9948-7119"
- family-names: "Surendralal"
  given-names: "Sudarsan"
  orcid: "https://orcid.org/0000-0003-0362-7549"
- family-names: "Lysogorskiy"
  given-names: "Yury"
  orcid: "https://orcid.org/000-0003-4617-3188"
- family-names: "Todorova"
  given-names: "Mira"
  orcid: "https://orcid.org/0000-0002-8053-9350"
- family-names: "Hickel"
  given-names: "Tilmann"
  orcid: "https://orcid.org/0000-0003-0698-4891"
- family-names: "Drautz"
  given-names: "Ralf"
  orcid: "https://orcid.org/0000-0001-7101-8804"
- family-names: "Neugebauer"
  given-names: "Joerg"
  orcid: "https://orcid.org/0000-0002-7903-2472"
title: "pyiron: An integrated development environment for computational materials science"
version: 0.1.8
doi: 10.1016/j.commatsci.2018.07.043
date-released: 2019-06-01
license: "BSD-3-Clause"
url: "http://github.com/pyiron"

GitHub Events

Total
  • Create event: 198
  • Issues event: 5
  • Release event: 24
  • Watch event: 1
  • Delete event: 164
  • Issue comment event: 192
  • Push event: 535
  • Pull request review comment event: 6
  • Pull request review event: 15
  • Pull request event: 442
  • Fork event: 1
Last Year
  • Create event: 198
  • Issues event: 5
  • Release event: 24
  • Watch event: 1
  • Delete event: 164
  • Issue comment event: 192
  • Push event: 535
  • Pull request review comment event: 6
  • Pull request review event: 15
  • Pull request event: 442
  • Fork event: 1

Committers

Last synced: almost 3 years ago

All Time
  • Total Commits: 4,039
  • Total Committers: 42
  • Avg Commits per committer: 96.167
  • Development Distribution Score (DDS): 0.714
Past Year
  • Commits: 618
  • Committers: 18
  • Avg Commits per committer: 34.333
  • Development Distribution Score (DDS): 0.825
Top Committers
Name Email Commits
Jan Janßen j****n@u****m 1,157
Jan Janßen j****n@m****e 687
sudarsan1989 s****l@m****e 395
Marvin Poul p****r@c****e 369
Niklas Siemer 7****r@u****m 269
pyiron-runner p****n@m****e 162
Marvin Poul p****l@m****e 157
dependabot[bot] 4****]@u****m 127
muh-hassani m****6@g****m 103
Niklas Leimeroth l****h@m****e 89
Sam Waseda o****a@m****e 88
Osamu Waseda s****d@c****e 69
Jan Janssen j****n@o****m 64
Liam Huber l****r@g****m 53
Jan Janssen j****n@l****v 39
dependabot-preview[bot] 2****]@u****m 39
muh-hassani m****d@c****e 34
github-actions[bot] 4****]@u****m 22
Jan-Nicolai Geistler O****3@w****e 19
Sam Dareska 3****a@u****m 14
Christoph Freysoldt f****t@m****e 9
Sudarsan Surendralal s****l@g****m 9
Liam Huber l****r@g****m 7
raynol-dsouza d****a@m****e 7
Michael Ashton a****n@m****e 6
The Codacy Badger b****r@c****m 6
FeLoch l****m@g****e 5
MuhammadHassani 6****i@u****m 5
Markus Peter Tautschnig m****3@c****e 5
Sander Borgmans s****s@u****e 4
and 12 more...

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 89
  • Total pull requests: 1,125
  • Average time to close issues: 4 months
  • Average time to close pull requests: 11 days
  • Total issue authors: 20
  • Total pull request authors: 14
  • Average comments per issue: 3.26
  • Average comments per pull request: 1.24
  • Merged pull requests: 926
  • Bot issues: 1
  • Bot pull requests: 368
Past Year
  • Issues: 5
  • Pull requests: 344
  • Average time to close issues: 4 days
  • Average time to close pull requests: 3 days
  • Issue authors: 5
  • Pull request authors: 5
  • Average comments per issue: 5.0
  • Average comments per pull request: 0.95
  • Merged pull requests: 283
  • Bot issues: 0
  • Bot pull requests: 196
Top Authors
Issue Authors
  • jan-janssen (18)
  • samwaseda (17)
  • pmrv (14)
  • liamhuber (13)
  • Leimeroth (5)
  • ligerzero-ai (4)
  • niklassiemer (4)
  • XzzX (2)
  • pstaerk (2)
  • ahmedabdelkawy (2)
  • freyso (2)
  • jyang2009 (2)
  • pre-commit-ci[bot] (1)
  • skatnagallu (1)
  • hari-ushankar (1)
Pull Request Authors
  • jan-janssen (581)
  • dependabot[bot] (318)
  • pre-commit-ci[bot] (105)
  • pmrv (94)
  • samwaseda (82)
  • liamhuber (38)
  • niklassiemer (19)
  • XzzX (11)
  • raynol-dsouza (2)
  • ligerzero-ai (2)
  • srmnitc (2)
  • Leimeroth (1)
  • pyiron-runner (1)
  • yasser-sulaiman (1)
Top Labels
Issue Labels
bug (19) enhancement (11) help wanted (5) Feature request (3) good first issue (2) question (2) documentation (1) integration (1) patch (1) Discussion (1) code_smell (1)
Pull Request Labels
dependencies (318) patch (161) format_black (123) integration (62) python (53) minor (51) enhancement (37) stale (30) bug (23) major (21) code_smell (9) performance (5) help wanted (2) Feature request (2) documentation (1) Discussion (1)

Packages

  • Total packages: 2
  • Total downloads:
    • pypi 5,657 last-month
  • Total dependent packages: 16
    (may contain duplicates)
  • Total dependent repositories: 20
    (may contain duplicates)
  • Total versions: 325
  • Total maintainers: 5
pypi.org: pyiron-base

Core components of the pyiron integrated development environment (IDE) for computational materials science

  • Homepage: https://github.com/pyiron/pyiron_base
  • Documentation: https://github.com/pyiron/pyiron_base
  • License: BSD 3-Clause License Copyright (c) 2018, Max-Planck-Institut für Eisenforschung GmbH - Computational Materials Design (CM) Department All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  • Latest release: 0.14.1
    published 6 months ago
  • Versions: 216
  • Dependent Packages: 9
  • Dependent Repositories: 1
  • Downloads: 5,657 Last month
  • Docker Downloads: 0
Rankings
Dependent packages count: 1.0%
Docker downloads count: 1.9%
Downloads: 7.1%
Average: 9.5%
Forks count: 10.2%
Stargazers count: 15.2%
Dependent repos count: 21.6%
Last synced: 6 months ago
conda-forge.org: pyiron_base

pyiron was initially developed in the Computational Materials Design department of Joerg Neugebauer at the Max Planck Insitut für Eisenforschung (Max Planck Insitute for iron research) as a framework for ab initio thermodynamics. In collaboration with the Interdisciplinary Centre for Advanced Materials Simulation (ICAMS) the framework was recently extended for high throughput applications resulting in the opensource release of pyiron.

  • Versions: 109
  • Dependent Packages: 7
  • Dependent Repositories: 19
Rankings
Dependent packages count: 8.0%
Dependent repos count: 8.1%
Average: 28.2%
Forks count: 43.7%
Stargazers count: 52.8%
Last synced: 7 months ago

Dependencies

.github/workflows/atomistics-compat.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/backwards.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/benchmarks.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/black.yml actions
  • actions/checkout v2 composite
  • psf/black stable composite
.github/workflows/codeql-analysis.yml actions
  • actions/checkout v2 composite
  • github/codeql-action/analyze v1 composite
  • github/codeql-action/init v1 composite
.github/workflows/contrib-compat.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/deploy.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
  • pypa/gh-action-pypi-publish master composite
.github/workflows/docs.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/format_black.yml actions
  • actions/checkout v2 composite
  • ad-m/github-push-action master composite
  • psf/black stable composite
.github/workflows/notebooks.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/pypicheck.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
.github/workflows/unittests.yml actions
  • actions/cache v2 composite
  • actions/checkout v2 composite
  • conda-incubator/setup-miniconda v2 composite
setup.py pypi
  • dill ==0.3.6
  • future ==0.18.3
  • gitpython ==3.1.30
  • h5io ==0.1.7
  • h5py ==3.8.0
  • numpy ==1.24.2
  • pandas ==1.5.3
  • pathlib2 ==2.3.7.post1
  • pint ==0.20.1
  • psutil ==5.9.4
  • pyfileindex ==0.0.7
  • pysqa ==0.0.18
  • sqlalchemy ==2.0.3
  • tables ==3.7.0
  • tqdm ==4.64.1
  • traitlets ==5.9.0
.github/workflows/dependabot.yml actions
  • actions/checkout v4 composite
  • ad-m/github-push-action master composite
.github/workflows/unittests_old.yml actions
  • actions/checkout v4 composite
  • conda-incubator/setup-miniconda v2 composite
.ci_support/environment.yml pypi
binder/environment.yml pypi
pyproject.toml pypi
  • cloudpickle ==3.0.0
  • gitpython ==3.1.40
  • h5io ==0.1.10
  • h5py ==3.10.0
  • jinja2 ==3.1.2
  • numpy ==1.26.2
  • pandas ==2.1.4
  • pint ==0.23
  • psutil ==5.9.7
  • pyfileindex ==0.0.19
  • pysqa ==0.1.8
  • sqlalchemy ==2.0.23
  • tables ==3.9.2
  • tqdm ==4.66.1
  • traitlets ==5.14.0