Crystal Toolkit is an academic project. A manuscript is in preparation to detail the design goals of Crystal Toolkit and achievements to date.
If you are interested in getting involved in Crystal Toolkit and are not already, it is not too late to be included in this manuscript, but please get in touch with [email protected] ASAP. Include information on the specific contributions that you would like to make (e.g. this may include adding features, addressing bugs, writing documentation, manuscript preparation, community engagement, writing tests, and the like), and if these align with the project we can formally add you to the development team.
Following a discussion with a potential contributor, "new contributor" issues are assigned. A current list of new contributor issues can be seen here.
pip install crystal-toolkit
Documentation can be found at docs.crystaltoolkit.org
Description | |
---|---|
bandstructure.py Demonstrates capabilities of the BandstructureAndDosComponent component |
|
basic_hello_structure.py Uses StructureMoleculeComponent to show a simple pymatgen structure |
|
basic_hello_structure_interactive.py Adds a button to the basic_hello_structure.py to toggle between two structures interactively |
|
basic_hello_world.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 |
|
matbench_dielectric_structure_on_hover.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. |
|
matbench_dielectric_datatable_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 |
|
write_structure_screenshot_to_file.py Shows to save interactive structure views as image files |
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
- 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
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.
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.
Cross-browser Testing Platform and Open Source <3 generously provided by Sauce Labs
Please contact @mkhorton with any queries or add an issue on the GitHub Issues page.