This page provides an overview of the software our group uses. Detailed descriptions of simulation codes and other python codes (i.e., fireworks, atomate) are on following pages in this section.

Our software stack

A brief summary of our software stack includes:
  • pymatgen - for representing and analyzing crystal structures, as well as setting up/performing manual calculations
  • FireWorks - for executing and managing calculation workflows at supercomputing centers
  • custodian - instead of directly running an executable like VASP, one can wrap the executable in custodian to detect and fix errors
  • atomate - for quickly defining multiple types of materials science workflows. (Note: atomate2 is in development as an easier-to-use successor to atomate. If you need to develop a workflow that is not already in atomate, consider doing so in atomate2).
  • maggma - for building modular, scalable data pipelines
  • matminer - for large data analysis and visualization
We also heavily use the Materials Project database.
Additional software used by many members of our group include:
  • VESTA - Molecular visualization software especially good for crystals
  • Ovito - Molecular visualization software especially good for molecular dynamics trajectories. We have a group license for the pro version. If you feel you'll be actively using OVITO Pro, please contact Qian Chen for the group license key.
  • IQMol - graphical molecule builder and viewer that integrates tightly with Q-Chem
  • Avogadro - graphical molecule builder and viewre
  • VMD -
  • Studio 3T - You can obtain a free academic license here. There is also a free version Robo3T with more limited capabilities, but it works fine for simple use cases.
  • Visual Studio Code - Modern, flexible and extensible text editor
  • PyCharm -
  • iTerm2 -
If you are a Windows user, consider making use of the following:
To learn how to use the software stack, you can consult the documentation of the individual codebases as well as review the following resources:
If you have a specific question, sometimes the easiest solution is to post it to the Slack group and crowdsource the answer (or just ask Shyam).

Software help groups

If you have problems with software, and in particular the software maintained by our group and our collaborators, you should contact the appropriate help group. The documentation for the software will list what that channel is; if not, try the Github Issues page. If you are reaching out for help, try to provide everything needed to quickly reproduce and debug the problem (files, test code, etc).
Two other ways to get software help that are more self-guided are:
  • If you are having trouble using a particular class or function, look for unit tests within the code, which often demonstrate how to use the class or function
  • If the class or function has a unique name (e.g., MaterialsProjectCompatibility), another option is to both Google and search on for the particular class/function. The search will often reveal code snippets from users all around the world.
Special thanks to the original authors of this page: John Dagdelen and Eric Sivonxay