Materials Project Infrastructure


FireWorks is a free, open-source code for defining, managing, and executing scientific workflows. It can be used to automate calculations over arbitrary computing resources, including those that have a queueing system.

Some features that distinguish FireWorks are dynamic workflows, failure-detection routines, and built-in tools and execution modes for running high-throughput computations at large computing centers.

FireWorks is intended to be a friendly workflow software that is easy to get started with, but flexible enough to handle complicated use cases.

Some (but not all) of its features include:

  • A clean and flexible Python API, a powerful command-line interface, and a built-in web service for monitoring workflows.
  • A database backend (MongoDB) lets you add, remove, and search the status of workflows.
  • Detect failed jobs (both soft and hard failures), and rerun them as needed.
  • Multiple execution modes - directly on a multicore machines or through a queue, on a single machine or multiple machines. Assign priorities and where jobs run.
  • Support for dynamic workflows - workflows that modify themselves or create new ones based on what happens during execution.
  • Automatic duplicate handling at the sub-workflow level - skip duplicated portions between two workflows while still running unique sections
  • Built-in tasks for creating templated inputs, running scripts, and copying files to remote machines
  • Remotely track the status of output files during execution.
  • Package many small jobs into a single large job (e.g., automatically run 100 serial workflows in parallel over 100 cores)
  • Support for several queueing systems such as PBS/Torque, Sun Grid Engine, SLURM, and IBM LoadLeveler.

For further information, please visit the the official FireWorks documentation.


The Python Materials Genomics (pymatgen) package is a robust, open source Python library for materials analysis. It currently powers the Materials Project. It includes:

  1. Highly flexible classes for the representation of Element, Site, Molecule, Structure and other objects used in typical materials analyses.
  2. Extensive io capabilities to manipulate many input and output files formats, including VASP and the crystallographic information file format.
  3. Analytical tools such as phase diagram generation, reaction balancing and calculation, electronic structure (DOS and Bandstructure) analyses, etc.
  4. Simple yet powerful routines for accessing the Materials API to get materials data.
Using pymatgen and the Materials API, you can perform sophisticated analyses on large materails data sets obtained from the Materials Project.

Getting pymatgen

The pymatgen library can be obtained via the Python Package Index (PyPI) or the pymatgen repository on Github.


For example scripts, you can check our our Github scripts directory. Some of our developers have also written user-friendly scripts demonstrating the power of combining the the Materials API and pymatgen. These scripts are available as Github Gists.

More information

For more information on the pymatgen library, please visit the official page or check out the pymatgen publication.

Questions or Feedback?