Package: crystal-toolkit
Crystal ToolkitCitationsYou can read more about Crystal Toolkit in our preprint, availablehere.Acitation.cfffile is available or a BibTeX citation is as follows:@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 seenhere.
If you would like a new-contributor issue assigned, get in touch with project maintainers!StatusInstallationpipinstallcrystal-toolkitDocumentationDocumentation can be found atdocs.crystaltoolkit.org.Example AppsDescriptionbandstructure.pyDemonstrates capabilities of theBandstructureAndDosComponentcomponentbasic_hello_structure.pyUsesStructureMoleculeComponentto show a simplepymatgenstructurebasic_hello_structure_interactive.pyAdds a button to thebasic_hello_structure.pyto toggle between two structures interactivelybasic_hello_world.pyBare-bones example showing how to render the text "Hello scientist!" in Dash appdiffraction.pyDemonstrates capabilities of theXRayDiffractionComponentcomponentdiffraction_dynamic.pyAdds a button todiffraction.pyto load a new structure on the flydiffraction_empty.pyShowsXRayDiffractionComponentcan be mounted without a passing structurekwarg_inputs.pyShows off boolean input (aka toggle), matrix input and slider input componentsphase_diagram.pyCombinesMPRester.get_entries_in_chemsys()and thePhaseDiagramcomponent to plot the Li-O-Co convex hullpourbaix.pyCombinesMPRester.get_pourbaix_entries()and thePourbaixDiagramComponentto plot the Fe-CO Pourbaix diagramstructure.pyShow cases multiple layout options for theStructureMoleculeComponentstructure_magnetic.pyPlots a structure with magnetic momentsmatbench_dielectric_structure_on_hover.pyCreates a scatter plot hooked up to aStructureMoleculeComponentandDataTablethat show the structure and highlight the table row corresponding to the hovered scatter point.matbench_dielectric_datatable_xrd.pyRenders aDataTablehooked up to aStructureMoleculeComponentandXRayDiffractionComponentso that hovering a table row will show the corresponding structure and its XRD pattern.transformations.pyCombinesStructureMoleculeComponentandAllTransformationsComponentto apply interactive structure transformationstransformations_minimal.pyShows how to restrict the types of allowed transformationswrite_structure_screenshot_to_file.pyShows to save interactive structure views as image filesTeam and Contribution PolicyTheCrystal Toolkit Development Teamincludes:Matthew Horton, leadFrançois Chabbeyfor React componentsJimmy Shencontributed pythreejs support, surface plotting, initial arrows/axes support, and various bug fixesJoey Montoyacontributed Pourbaix componentShyam Dwaraknathfor planned contributions for ellipsoid support and architectural designDonny Winston, assisted byTyler Huntington, for helping embed Crystal Toolkit in a Django appMatt McDermottcontributed phase diagram, X-ray Diffraction, X-ray Absorption Spectrum componentsJason Munrocontributed band structure componentJanosh Riebesellcontributed Phonon band structure component,3 example apps, testsStephen Weitznercontributed POV-Ray integration (in progress)Richard Tranfor contributing plotly-powered Wulff shapes to pymatgen, which Crystal Toolkit usesGuy Moorefor contributing magnetic moment visualizationSteve Zeltmannfor contributing electron diffractionPatrick Huck, releases, operations, bugfixes and POC for MP / MPContribsNew contributors are welcome, please see ourCode 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 RepositoryThe 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 aseparate repositoryfor ease of development, as well as thecustom React components. These components were formerly included in the Crystal Toolkit repo, and are still considered part of Crystal Toolkit in spirit.There are someimportant issuesstill to be resolved, as well as general improvements to documentation and test suite planned. Somecurrently-private codeis also planned to be re-incorporated into the public Crystal Toolkit repo.AcknowledgementsThank you to all the authors and maintainers of the libraries Crystal Toolkit
depends upon, and in particularpymatgenfor crystallographic
analysis andDash from Plotlyfor their web app framework.Thank you to theNERSC Spinservice for
hosting the app and for their technical support.ContactPlease contact @mkhorton with any queries or add an issue on theGitHub Issuespage.