Skip to main content

Crystal Toolkit is a web app framework from the Materials Project allowing Python

Project description

Crystal Toolkit


You can read more about Crystal Toolkit in our preprint, available here.

A citation.cff file is available or a BibTeX citation is as follows:

  title={Crystal Toolkit: A Web App Framework to Improve Usability and Accessibility of Materials Science Research Algorithms},
  author={Horton, Matthew and Shen, Jimmy-Xuan and Burns, Jordan and Cohen, Orion and Chabbey, Fran{\c{c}}ois and Ganose, Alex M and Guha, Rishabh and Huck, Patrick and Li, Hamming Howard and McDermott, Matthew and others},
  journal={arXiv preprint arXiv:2302.06147},

If you use Crystal Toolkit, either for your own web apps, or by incorporating images generated by Crystal Toolkit in your work, please make sure to cite it appropriately! Citations are a good way to recognize the contributions of the Crystal Toolkit developers, and allow us to see how it has been used by the community.

Interested in contributing?

A current list of new contributor issues can be seen here. If you would like a new-contributor issue assigned, get in touch with project maintainers!


Tests Visual Regression Test Status Docker Build Status Release status arXiv link


pip install crystal-toolkit


Documentation can be found at

Example Apps

Demonstrates capabilities of the BandstructureAndDosComponent component
Launch Codespace
Uses StructureMoleculeComponent to show a simple pymatgen structure
Launch Codespace
Adds a button to the to toggle between two structures interactively
Launch Codespace
Bare-bones example showing how to render the text "Hello scientist!" in Dash app
Launch Codespace
Demonstrates capabilities of the XRayDiffractionComponent component
Launch Codespace
Adds a button to to load a new structure on the fly
Launch Codespace
Shows XRayDiffractionComponent can be mounted without a passing structure
Launch Codespace
Shows off boolean input (aka toggle), matrix input and slider input components
Launch Codespace
Combines MPRester.get_entries_in_chemsys() and the PhaseDiagram component to plot the Li-O-Co convex hull
Launch Codespace
Combines MPRester.get_pourbaix_entries() and the PourbaixDiagramComponent to plot the Fe-CO Pourbaix diagram
Launch Codespace
Show cases multiple layout options for the StructureMoleculeComponent
Launch Codespace
Plots a structure with magnetic moments
Launch Codespace
Creates a scatter plot hooked up to a StructureMoleculeComponent and DataTable that show the structure and highlight the table row corresponding to the hovered scatter point.
Launch Codespace
Renders a DataTable hooked up to a StructureMoleculeComponent and XRayDiffractionComponent so that hovering a table row will show the corresponding structure and its XRD pattern.
Launch Codespace
Combines StructureMoleculeComponent and AllTransformationsComponent to apply interactive structure transformations
Launch Codespace
Shows how to restrict the types of allowed transformations
Launch Codespace
Shows to save interactive structure views as image files
Launch Codespace

Team and Contribution Policy

The Crystal Toolkit Development Team includes:

New contributors are welcome, please see our Code of Conduct. If you are a new contributor please modify this README in your Pull Request to add your name to the list.

Future of This Repository

The Crystal Toolkit repository is home of an object-oriented Python framework for rendering materials science data based on the schema employed by the Materials Project.

The custom Plotly Dash components that power Crystal Toolkit are now maintained in a separate repository for ease of development, as well as the custom React components. These components were formerly included in the Crystal Toolkit repo, and are still considered part of Crystal Toolkit in spirit.

There are some important issues still to be resolved, as well as general improvements to documentation and test suite planned. Some currently-private code is also planned to be re-incorporated into the public Crystal Toolkit repo.


Thank you to all the authors and maintainers of the libraries Crystal Toolkit depends upon, and in particular pymatgen for crystallographic analysis and Dash from Plotly for their web app framework.

Thank you to the NERSC Spin service for hosting the app and for their technical support.


Please contact @mkhorton with any queries or add an issue on the GitHub Issues page.

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

crystal_toolkit-2023.8.9.tar.gz (15.5 MB view hashes)

Uploaded source

Built Distribution

crystal_toolkit-2023.8.9-py3-none-any.whl (15.9 MB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page