Skip to content
Snippets Groups Projects
user avatar
Liam Huber authored
* Refactor structure generator methods to class

* Hide structure methods in attribute and deprecate direct access

* Migrate atom and element creation and deprecate original methods

* Patch random test

* Bind ASE's generic Atoms reading method

* Add another layer of abstraction, create, for the project interface

* Call it factory

* Synchronize with pending pyiron_base changes

* Fix deprecation warnings

* Don't deprecate yet

Let the users live in blissful ignorance until the next version increment

* Remove bleedover changes from wrong branch

* Update for pyiron_base changes, creator already exists

* Inherit from pyiron_base creator

* Make Codacy happy, but preserve in anticipation of unlocking deprecation warnings

* Better test variable name

* Remove dead code

* Remove duplicate code

* Assign local creator instance

Without this the Project.__init__ super() call instantiates the pyiron_base Creator object, which doesn't know about StructureFactory. I find it very ugly to reinstantiate the attribute here, but it's a fast and clear fix until such time as the Creator object is automatically updated with factories in a similar way that the JobFactory is updated with job classes. As a temporary patch I'll live with this.

* Rename method

* rename hkl_surface surface_hkl

Co-authored-by: default avatarJan Janssen <jan-janssen@users.noreply.github.com>

* Revert "Remove duplicate code"

This reverts commit ee61df1022c6c6801ea21c9022e751e0f879c67a.

* Expand docstring

And circumvent codacy complaint about one-liner

* Don't encourage users to instantiate their own factories

* Enforce working pyscal version

* Maintain documentation notebook compatibility

At least until we properly deprecate the old functions and formally introduce the new Creators and Factories.

* PEP8

Co-authored-by: default avatarJan Janssen <jan-janssen@users.noreply.github.com>
255d0b8e
History

pyiron

Coverage Status Codacy Badge Release_Date Build Status Downloads Documentation Status Screenshot of pyiron running inside jupyterlab.

pyiron - an integrated development environment (IDE) for computational materials science. It combines several tools in a common platform:

  • Atomic structure objects – compatible to the Atomic Simulation Environment (ASE).
  • Atomistic simulation codes – like LAMMPS and VASP.
  • Feedback Loops – to construct dynamic simulation life cycles.
  • Hierarchical data management – interfacing with storage resources like SQL and HDF5.
  • Integrated visualization – based on NGLview.
  • Interactive simulation protocols - based on Jupyter notebooks.
  • Object oriented job management – for scaling complex simulation protocols from single jobs to high-throughput simulations.

pyiron (called pyron) is developed in the Computational Materials Design department of Joerg Neugebauer at the Max Planck Institut für Eisenforschung (Max Planck Institute for iron research). While its original focus was to provide a framework to develop and run complex simulation protocols as needed for ab initio thermodynamics it quickly evolved into a versatile tool to manage a wide variety of simulation tasks. In 2016 the Interdisciplinary Centre for Advanced Materials Simulation (ICAMS) joined the development of the framework with a specific focus on high throughput applications. In 2018 pyiron was released as open-source project. See the Documentation page for more details.

Installation

You can test pyiron on Mybinder.org (beta). For a local installation we recommend to install pyiron inside an anaconda environment:

conda install -c conda-forge pyiron

After the installation of pyiron you need to configure pyiron. The default configuration can be generated automatically. Start a new Python session and import pyiron:

> import pyiron
> pyiron.install()
>>> It appears that pyiron is not yet configured, do you want to create a default start configuration (recommended: yes). [yes/no]:
> yes
> exit()

See the Documentation-Installation page for more details.

Example

After the successful configuration you can start your first pyiron calculation. Navigate to the the projects directory and start a jupyter notebook or jupyter lab session correspondingly:

cd ~/pyiron/projects
jupyter notebook

Open a new jupyter notebook and inside the notebook you can now validate your pyiron calculation by creating a test project, setting up an initial structure of bcc Fe and visualize it using NGLview:

from pyiron import Project
pr = Project('test')
structure = pr.create_structure('Fe', 'bcc', 2.78)
structure.plot3d()

Finally a first lammps calculation can be executed by:

job = pr.create_job(job_type=pr.job_type.Lammps, job_name='lammpstestjob')
job.structure = structure
job.potential = job.list_potentials()[0]
job.run()

Getting started:

Test pyiron with mybinder:

mybinder

License and Acknowledgments

pyiron is licensed under the BSD license.

If you use pyiron in your scientific work, please consider citing

@article{pyiron-paper,
  title = {pyiron: An integrated development environment for computational materials science},
  journal = {Computational Materials Science},
  volume = {163},
  pages = {24 - 36},
  year = {2019},
  issn = {0927-0256},
  doi = {https://doi.org/10.1016/j.commatsci.2018.07.043},
  url = {http://www.sciencedirect.com/science/article/pii/S0927025618304786},
  author = {Jan Janssen and Sudarsan Surendralal and Yury Lysogorskiy and Mira Todorova and Tilmann Hickel and Ralf Drautz and Jörg Neugebauer},
  keywords = {Modelling workflow, Integrated development environment, Complex simulation protocols},
}