crystal-toolkit
Crystal Toolkit is a framework for building web apps for materials science and is currently powering the new Materials Project website.
Science Score: 64.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
Links to: arxiv.org -
✓Committers with academic emails
12 of 30 committers (40.0%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (14.6%) to scientific vocabulary
Keywords from Contributors
Repository
Crystal Toolkit is a framework for building web apps for materials science and is currently powering the new Materials Project website.
Basic Info
- Host: GitHub
- Owner: materialsproject
- License: other
- Language: Python
- Default Branch: main
- Homepage: https://docs.crystaltoolkit.org
- Size: 37 MB
Statistics
- Stars: 181
- Watchers: 8
- Forks: 64
- Open Issues: 83
- Releases: 26
Metadata Files
README.md
Crystal Toolkit
Citations
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:
bibtex
@article{horton2023crystal,
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},
year={2023}
}
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!
Status
Installation
sh
pip install crystal-toolkit
Documentation
Documentation can be found at docs.crystaltoolkit.org.
Example Apps
| Description | |
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------ |
| bandstructure.py
Demonstrates capabilities of the BandstructureAndDosComponent component | |
| basichellostructure.py
Uses StructureMoleculeComponent to show a simple pymatgen structure | |
| basichellostructure_interactive.py
Adds a button to the basic_hello_structure.py to toggle between two structures interactively | |
| basichelloworld.py
Bare-bones example showing how to render the text "Hello scientist!" in Dash app | |
| diffraction.py
Demonstrates capabilities of the XRayDiffractionComponent component | |
| diffraction_dynamic.py
Adds a button to diffraction.py to load a new structure on the fly | |
| diffraction_empty.py
Shows XRayDiffractionComponent can be mounted without a passing structure | |
| kwarg_inputs.py
Shows off boolean input (aka toggle), matrix input and slider input components | |
| phase_diagram.py
Combines MPRester.get_entries_in_chemsys() and the PhaseDiagram component to plot the Li-O-Co convex hull | |
| pourbaix.py
Combines MPRester.get_pourbaix_entries() and the PourbaixDiagramComponent to plot the Fe-CO Pourbaix diagram | |
| structure.py
Show cases multiple layout options for the StructureMoleculeComponent | |
| structure_magnetic.py
Plots a structure with magnetic moments | |
| matbenchdielectricstructureonhover.py
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. | |
| matbenchdielectricdatatable_xrd.py
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. | |
| transformations.py
Combines StructureMoleculeComponent and AllTransformationsComponent to apply interactive structure transformations | |
| transformations_minimal.py
Shows how to restrict the types of allowed transformations | |
| writestructurescreenshottofile.py
Shows to save interactive structure views as image files | |
Team and Contribution Policy
The Crystal Toolkit Development Team includes:
- Matthew Horton, lead
- François Chabbey for React components
- Jimmy Shen contributed pythreejs support, surface plotting, initial arrows/axes support, and various bug fixes
- Joey Montoya contributed Pourbaix component
- Shyam Dwaraknath for planned contributions for ellipsoid support and architectural design
- Donny Winston, assisted by Tyler Huntington, for helping embed Crystal Toolkit in a Django app
- Matt McDermott contributed phase diagram, X-ray Diffraction, X-ray Absorption Spectrum components
- Jason Munro contributed band structure component
- Janosh Riebesell contributed Phonon band structure component, 3 example apps, tests
- Stephen Weitzner contributed POV-Ray integration (in progress)
- Richard Tran for contributing plotly-powered Wulff shapes to pymatgen, which Crystal Toolkit uses
- Guy Moore for contributing magnetic moment visualization
- Steve Zeltmann for contributing electron diffraction
- Patrick Huck, releases, operations, bugfixes and POC for MP / MPContribs
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.
Acknowledgements
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.
Contact
Please contact @mkhorton with any queries or add an issue on the GitHub Issues page.
Owner
- Name: Materials Project
- Login: materialsproject
- Kind: organization
- Email: feedback@materialsproject.org
- Location: 1 Cyclotron Rd, Berkeley CA 94720
- Website: https://www.materialsproject.org
- Repositories: 51
- Profile: https://github.com/materialsproject
Citation (CITATION.cff)
cff-version: 1.2.0
title: Crystal Toolkit - A Web App Framework to Improve Usability and Accessibility of Materials Science Research Algorithms
message: If you use this software, please cite it as below.
authors:
- family-names: Horton
given-names: Matthew
affiliation: Lawrence Berkeley National Laboratory
orcid: 0000-0001-7777-8871
- family-names: Shen
given-names: Jimmy-Xuan
affiliation: UC Berkeley, LBL
orcid: 0000-0002-2743-7531
- family-names: Burns
given-names: Jordan
- family-names: Cohen
given-names: Orion
affiliation: UC Berkeley, Lawrence Berkeley National Laboratory
- family-names: Chabbey
given-names: François
- family-names: Ganose
given-names: Alex
affiliation: Lawrence Berkeley National Laboratory
orcid: 0000-0002-4486-3321
- family-names: Guha
given-names: Rishabh
- family-names: Huck
given-names: Patrick
affiliation: Lawrence Berkeley National Laboratory
- family-names: Li
given-names: Hamming Howard
- family-names: McDermott
given-names: Matthew
affiliation: Lawrence Berkeley National Laboratory, University of California Berkeley
- family-names: Montoya
given-names: Joseph
affiliation: Toyota Research Institute
orcid: 0000-0001-5760-2860
- family-names: Moore
given-names: Guy
affiliation: Lawrence Berkeley National Laboratory, University of California Berkeley
- family-names: Munro
given-names: Jason
affiliation: Lawrence Berkeley National Laboratory
- family-names: O'Donnell
given-names: Cody
- family-names: Ophus
given-names: Colin
- family-names: Petretto
given-names: Guido
affiliation: Université catholique de Louvain
- family-names: Riebesell
given-names: Janosh
affiliation: University of Cambridge, Lawrence Berkeley National Laboratory
orcid: 0000-0001-5233-3462
- family-names: Wetizner
given-names: Steven
- family-names: Wander
given-names: Brook
- family-names: Winston
given-names: Donny
affiliation: Consulting at donnywinston.com
orcid: 0000-0002-8424-0604
- family-names: Yang
given-names: Ruoxi
affiliation: Lawrence Berkeley National Laboratory
orcid: 0000-0001-8225-5856
- family-names: Zeltmann
given-names: Steven
- family-names: Jain
given-names: Anubhav
affiliation: Lawrence Berkeley National Laboratory
orcid: 0000-0001-5893-9967
- family-names: Persson
given-names: Kristin A.
affiliation: Lawrence Berkeley National Laboratory
orcid: 0000-0003-2495-5509
license: MIT
license-url: https://github.com/materialsproject/crystaltoolkit/blob/main/LICENSE
repository-code: https://github.com/materialsproject/crystaltoolkit
type: software
url: https://docs.crystaltoolkit.org
arxiv: https://arxiv.org/abs/2302.06147
doi: 10.48550/arXiv.2302.06147
version: 2023.02.01 # replace with whatever version you use
date-released: 2023-02-13
GitHub Events
Total
- Create event: 43
- Issues event: 29
- Release event: 4
- Watch event: 29
- Delete event: 50
- Issue comment event: 35
- Push event: 42
- Pull request event: 39
- Fork event: 6
Last Year
- Create event: 43
- Issues event: 29
- Release event: 4
- Watch event: 29
- Delete event: 50
- Issue comment event: 35
- Push event: 42
- Pull request event: 39
- Fork event: 6
Committers
Last synced: 10 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Matthew Horton | m****n@l****v | 1,923 |
| JSX | j****n@g****m | 219 |
| Janosh Riebesell | j****l@g****m | 170 |
| Patrick Huck | p****k@l****v | 89 |
| Cody O'Donnell | c****l@l****v | 58 |
| Joseph Montoya | j****a@t****l | 50 |
| pyup-bot | g****t@p****o | 42 |
| pre-commit-ci[bot] | 6****] | 38 |
| github-actions | g****s@g****m | 37 |
| Shyam Dwaraknath | s****d@l****v | 36 |
| munrojm | j****o@l****v | 35 |
| Donny Winston | d****n@a****u | 22 |
| Brook Wander | b****r@g****m | 19 |
| Alex Ganose | u****f | 14 |
| ruoxi | r****e@l****n | 12 |
| mattmcdermott | m****t@b****u | 12 |
| rdguha | r****a@l****v | 8 |
| dependabot[bot] | 4****] | 8 |
| Guido Petretto | g****o@g****m | 8 |
| Anubhav Jain | a****r@g****m | 6 |
| Francois Chabbey | f****s@s****m | 4 |
| orioncohen | o****n@l****v | 4 |
| Stephen Weitzner | s****r@g****m | 4 |
| Guy Moore | g****e@l****v | 4 |
| Steve Zeltmann | 3****t | 3 |
| J. George | J****o | 2 |
| Jimmy Shen | v****n@m****m | 2 |
| Tyler | t****2@l****v | 2 |
| JoshuaNgXY | j****g@g****u | 1 |
| Kazuhiro Suzuki | k****g@g****m | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 78
- Total pull requests: 173
- Average time to close issues: 3 months
- Average time to close pull requests: 2 months
- Total issue authors: 33
- Total pull request authors: 22
- Average comments per issue: 1.0
- Average comments per pull request: 1.21
- Merged pull requests: 108
- Bot issues: 14
- Bot pull requests: 51
Past Year
- Issues: 24
- Pull requests: 56
- Average time to close issues: 1 day
- Average time to close pull requests: 2 months
- Issue authors: 13
- Pull request authors: 9
- Average comments per issue: 0.25
- Average comments per pull request: 0.54
- Merged pull requests: 13
- Bot issues: 10
- Bot pull requests: 31
Top Authors
Issue Authors
- janosh (15)
- github-actions[bot] (14)
- mkhorton (14)
- maurov (3)
- computron (2)
- CompRhys (2)
- exenGT (2)
- cedricrocha (1)
- yang-ruoxi (1)
- gpetretto (1)
- n2018k (1)
- tsmathis (1)
- adigasuhas (1)
- DanielYang59 (1)
- Charlie0450 (1)
Pull Request Authors
- dependabot[bot] (48)
- janosh (40)
- tschaume (32)
- jmmshn (24)
- yang-ruoxi (16)
- dependabot-preview[bot] (13)
- pre-commit-ci[bot] (9)
- gpetretto (5)
- mkhorton (4)
- sezelt (3)
- JoshuaNgXY (2)
- brookwander (2)
- franflame (2)
- utf (1)
- dwinston (1)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 3
-
Total downloads:
- pypi 840,191 last-month
- Total docker downloads: 60
-
Total dependent packages: 6
(may contain duplicates) -
Total dependent repositories: 14
(may contain duplicates) - Total versions: 70
- Total maintainers: 2
pypi.org: crystal-toolkit
Crystal Toolkit is a web app framework from the Materials Project allowing Python
- Documentation: https://crystal-toolkit.readthedocs.io/
- License: Crystal Toolkit Copyright (c) 2017, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy). All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: (1) Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. (2) 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. (3) Neither the name of the University of California, Lawrence Berkeley National Laboratory, U.S. Dept. of Energy 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 OWNER 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. You are under no obligation whatsoever to provide any bug fixes, patches, or upgrades to the features, functionality or performance of the source code ("Enhancements") to anyone; however, if you choose to make your Enhancements available either publicly, or directly to Lawrence Berkeley National Laboratory or its contributors, without imposing a separate written license agreement for such Enhancements, then you hereby grant the following license: a non-exclusive, royalty-free perpetual license to install, use, modify, prepare derivative works, incorporate into other computer software, distribute, and sublicense such enhancements or derivative works thereof, in binary and source code form.
-
Latest release: 2025.7.31
published 7 months ago
Rankings
Maintainers (2)
pypi.org: crystaltoolkit-extension
A JupyterLab extension for rendering Crystal Toolkit Scene JSON files.
- Homepage: https://github.com/materialsproject/crystaltoolkit
- Documentation: https://crystaltoolkit-extension.readthedocs.io/
- License: BSD-3-Clause
-
Latest release: 0.6.0
published about 4 years ago
Rankings
Maintainers (2)
proxy.golang.org: github.com/materialsproject/crystaltoolkit
- Documentation: https://pkg.go.dev/github.com/materialsproject/crystaltoolkit#section-documentation
- License: other
-
Latest release: v2025.7.31+incompatible
published 7 months ago