crystal-toolkit

Crystal Toolkit is a framework for building web apps for materials science and is currently powering the new Materials Project website.

https://github.com/materialsproject/crystaltoolkit

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

spacy-extension materials-science physics mesh data-profiling workflows computational-chemistry dynamics deeplearning cryptocurrencies
Last synced: 6 months ago · JSON representation ·

Repository

Crystal Toolkit is a framework for building web apps for materials science and is currently powering the new Materials Project website.

Basic Info
Statistics
  • Stars: 181
  • Watchers: 8
  • Forks: 64
  • Open Issues: 83
  • Releases: 26
Created over 8 years ago · Last pushed 6 months ago
Metadata Files
Readme License Code of conduct Citation Security

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

Tests Visual Regression Test Status Docker Build Status Release pre-commit.ci status arXiv link

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 | Launch Codespace | | basichellostructure.py
Uses StructureMoleculeComponent to show a simple pymatgen structure | Launch Codespace | | basichellostructure_interactive.py
Adds a button to the basic_hello_structure.py to toggle between two structures interactively | Launch Codespace | | basichelloworld.py
Bare-bones example showing how to render the text "Hello scientist!" in Dash app | Launch Codespace | | diffraction.py
Demonstrates capabilities of the XRayDiffractionComponent component | Launch Codespace | | diffraction_dynamic.py
Adds a button to diffraction.py to load a new structure on the fly | Launch Codespace | | diffraction_empty.py
Shows XRayDiffractionComponent can be mounted without a passing structure | Launch Codespace | | kwarg_inputs.py
Shows off boolean input (aka toggle), matrix input and slider input components | Launch Codespace | | phase_diagram.py
Combines MPRester.get_entries_in_chemsys() and the PhaseDiagram component to plot the Li-O-Co convex hull | Launch Codespace | | pourbaix.py
Combines MPRester.get_pourbaix_entries() and the PourbaixDiagramComponent to plot the Fe-CO Pourbaix diagram | Launch Codespace | | structure.py
Show cases multiple layout options for the StructureMoleculeComponent | Launch Codespace | | structure_magnetic.py
Plots a structure with magnetic moments | Launch Codespace | | 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. | Launch Codespace | | 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. | Launch Codespace | | transformations.py
Combines StructureMoleculeComponent and AllTransformationsComponent to apply interactive structure transformations | Launch Codespace | | transformations_minimal.py
Shows how to restrict the types of allowed transformations | Launch Codespace | | writestructurescreenshottofile.py
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.

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

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

All Time
  • Total Commits: 2,833
  • Total Committers: 30
  • Avg Commits per committer: 94.433
  • Development Distribution Score (DDS): 0.321
Past Year
  • Commits: 42
  • Committers: 9
  • Avg Commits per committer: 4.667
  • Development Distribution Score (DDS): 0.476
Top Committers
Name Email 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
bug (17) enhancement (9) UI (6) docs (6) new-contributor (6) new-component (5) usability (3) question (3) feature request (3) design-proposal (2) housekeeping (1) testing (1) help wanted (1) javascript (1) interactivity (1) ux (1)
Pull Request Labels
dependencies (63) python (25) enhancement (6) javascript (5) fix (4) docs (2) housekeeping (2) security (2) usability (2) UI (1) testing (1) qa (1) pkg (1)

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
  • Versions: 63
  • Dependent Packages: 4
  • Dependent Repositories: 10
  • Downloads: 8,650 Last month
  • Docker Downloads: 30
Rankings
Dependent packages count: 1.9%
Average: 4.1%
Dependent repos count: 4.6%
Docker downloads count: 4.6%
Downloads: 5.1%
Maintainers (2)
Last synced: 6 months ago
pypi.org: crystaltoolkit-extension

A JupyterLab extension for rendering Crystal Toolkit Scene JSON files.

  • Versions: 4
  • Dependent Packages: 2
  • Dependent Repositories: 4
  • Downloads: 831,541 Last month
  • Docker Downloads: 30
Rankings
Dependent packages count: 3.1%
Docker downloads count: 4.6%
Average: 5.6%
Forks count: 5.7%
Downloads: 5.9%
Stargazers count: 6.6%
Dependent repos count: 7.5%
Maintainers (2)
Last synced: 6 months ago
proxy.golang.org: github.com/materialsproject/crystaltoolkit
  • Versions: 3
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 5.5%
Average: 5.6%
Dependent repos count: 5.8%
Last synced: 6 months ago