{"id":13699105,"url":"https://github.com/janosh/pymatviz","last_synced_at":"2026-05-02T22:03:59.488Z","repository":{"id":37901295,"uuid":"340898532","full_name":"janosh/pymatviz","owner":"janosh","description":"A toolkit for visualizations in materials informatics.","archived":false,"fork":false,"pushed_at":"2026-04-29T17:44:50.000Z","size":17730,"stargazers_count":312,"open_issues_count":2,"forks_count":38,"subscribers_count":5,"default_branch":"main","last_synced_at":"2026-04-29T18:09:45.229Z","etag":null,"topics":["data-visualization","machine-learning","materials-informatics","materials-science","matplotlib","plotly","plots","python","uncertainty","uncertainty-calibration"],"latest_commit_sha":null,"homepage":"https://janosh.github.io/pymatviz","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/janosh.png","metadata":{"files":{"readme":"readme.md","changelog":"changelog.md","contributing":"contributing.md","funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"citation.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-21T12:40:34.000Z","updated_at":"2026-04-25T07:24:08.000Z","dependencies_parsed_at":"2026-01-06T09:12:24.110Z","dependency_job_id":null,"html_url":"https://github.com/janosh/pymatviz","commit_stats":{"total_commits":251,"total_committers":7,"mean_commits":"35.857142857142854","dds":0.06374501992031878,"last_synced_commit":"efff8f5d653ec9f58817ca797cd037d5751765ad"},"previous_names":["janosh/ml-matrics"],"tags_count":61,"template":false,"template_full_name":null,"purl":"pkg:github/janosh/pymatviz","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janosh%2Fpymatviz","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janosh%2Fpymatviz/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janosh%2Fpymatviz/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janosh%2Fpymatviz/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/janosh","download_url":"https://codeload.github.com/janosh/pymatviz/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/janosh%2Fpymatviz/sbom","scorecard":{"id":505502,"data":{"date":"2025-08-11","repo":{"name":"github.com/janosh/pymatviz","commit":"b2a63d42204cd0a73d34604c5b0048152088bf93"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.4,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 10 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 2/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/gh-pages.yml:1","Warn: no topLevel permission defined: .github/workflows/link-check.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-widget-assets.yml:14","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/svgo.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: license:0","Info: FSF or OSI recognized license: MIT License: license:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: third-party GitHubAction not pinned by hash: .github/workflows/gh-pages.yml:12: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/gh-pages.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/link-check.yml:14: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/link-check.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/link-check.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/link-check.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release-widget-assets.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/release-widget-assets.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release-widget-assets.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/release-widget-assets.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:19: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/release.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/release.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/svgo.yml:15: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/svgo.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/svgo.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/svgo.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:47: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/test.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:67: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/test.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/test.yml:72: update your workflow using https://app.stepsecurity.io/secureworkflow/janosh/pymatviz/test.yml/main?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/svgo.yml:25","Info:   0 out of   8 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   6 third-party GitHubAction dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v0.17.2 not signed: https://api.github.com/repos/janosh/pymatviz/releases/239923776","Warn: release artifact v0.17.1 not signed: https://api.github.com/repos/janosh/pymatviz/releases/235867649","Warn: release artifact v0.17.0 not signed: https://api.github.com/repos/janosh/pymatviz/releases/234226469","Warn: release artifact v0.17.2 does not have provenance: https://api.github.com/repos/janosh/pymatviz/releases/239923776","Warn: release artifact v0.17.1 does not have provenance: https://api.github.com/repos/janosh/pymatviz/releases/235867649","Warn: release artifact v0.17.0 does not have provenance: https://api.github.com/repos/janosh/pymatviz/releases/234226469"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 18 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-19T23:10:12.330Z","repository_id":37901295,"created_at":"2025-08-19T23:10:12.331Z","updated_at":"2025-08-19T23:10:12.331Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32550918,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-02T21:31:48.061Z","status":"ssl_error","status_checked_at":"2026-05-02T21:31:46.574Z","response_time":132,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["data-visualization","machine-learning","materials-informatics","materials-science","matplotlib","plotly","plots","python","uncertainty","uncertainty-calibration"],"created_at":"2024-08-02T19:00:58.390Z","updated_at":"2026-05-02T22:03:59.480Z","avatar_url":"https://github.com/janosh.png","language":"Python","funding_links":[],"categories":["Python","Software and products","Visualization","General Chemistry"],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\u003cimg src=\"https://github.com/janosh/pymatviz/raw/main/site/static/favicon.svg\" alt=\"Logo\" height=\"60px\"\u003e\n\u003cbr class=\"hide-in-docs\"\u003e\npymatviz\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\" class=\"toc-exclude\"\u003e\n\nA toolkit for visualizations in materials informatics.\n\n[![Tests](https://github.com/janosh/pymatviz/actions/workflows/test.yml/badge.svg)](https://github.com/janosh/pymatviz/actions/workflows/test.yml)\n[![This project supports Python 3.11+](https://img.shields.io/badge/Python-3.11+-blue.svg?logo=python\u0026logoColor=white)](https://python.org/downloads)\n[![PyPI](https://img.shields.io/pypi/v/pymatviz?logo=pypi\u0026logoColor=white)](https://pypi.org/project/pymatviz)\n[![codecov](https://codecov.io/gh/janosh/pymatviz/graph/badge.svg?token=7BG2TZVOBH)](https://codecov.io/gh/janosh/pymatviz)\n[![PyPI Downloads](https://img.shields.io/pypi/dm/pymatviz?logo=icloud\u0026logoColor=white)](https://pypistats.org/packages/pymatviz)\n[![Zenodo](https://img.shields.io/badge/DOI-10.5281/zenodo.10456384-blue?logo=Zenodo\u0026logoColor=white)](https://zenodo.org/records/10456384)\n\n\u003c/h4\u003e\n\n[fig-icon]: https://api.iconify.design/lsicon:scatter-diagram-outline.svg?color=%234c8bf5\u0026height=16 \"View example code\"\n\n\u003cslot name=\"how-to-cite\"\u003e\n\n\u003e If you use `pymatviz` in your research, [see how to cite](#how-to-cite-pymatviz). Check out [41 existing papers using `pymatviz`](#papers-using-pymatviz) for inspiration!\n\n\u003c/slot\u003e\n\n## Installation\n\n```sh\npip install pymatviz\n```\n\nSee `pyproject.toml` for available extras like `pip install 'pymatviz[brillouin]'` to render 3d Brillouin zones.\n\n## API Docs\n\nSee the [/api][/api] page.\n\n[/api]: https://janosh.github.io/pymatviz/api\n\n## Usage\n\nSee the Jupyter notebooks under [`examples/`](examples) for how to use `pymatviz`. PRs with additional examples are welcome! 🙏\n\n|                                                                           |                                                                                                                                                             |                                   |\n| ------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- |\n| [matbench_dielectric_eda.ipynb](examples/matbench_dielectric_eda.ipynb)   | [![Open in Google Colab][Open in Google Colab]](https://colab.research.google.com/github/janosh/pymatviz/blob/main/examples/matbench_dielectric_eda.ipynb)  | [Launch Codespace][codespace url] |\n| [mp_bimodal_e_form.ipynb](examples/mp_bimodal_e_form.ipynb)               | [![Open in Google Colab][Open in Google Colab]](https://colab.research.google.com/github/janosh/pymatviz/blob/main/examples/mp_bimodal_e_form.ipynb)        | [Launch Codespace][codespace url] |\n| [matbench_perovskites_eda.ipynb](examples/matbench_perovskites_eda.ipynb) | [![Open in Google Colab][Open in Google Colab]](https://colab.research.google.com/github/janosh/pymatviz/blob/main/examples/matbench_perovskites_eda.ipynb) | [Launch Codespace][codespace url] |\n| [mprester_ptable.ipynb](examples/mprester_ptable.ipynb)                   | [![Open in Google Colab][Open in Google Colab]](https://colab.research.google.com/github/janosh/pymatviz/blob/main/examples/mprester_ptable.ipynb)          | [Launch Codespace][codespace url] |\n\n[Open in Google Colab]: https://colab.research.google.com/assets/colab-badge.svg\n[codespace url]: https://github.com/codespaces/new?hide_repo_select=true\u0026ref=main\u0026repo=340898532\n\n## Periodic Table\n\nSee [`pymatviz/ptable/figures.py`](pymatviz/ptable/figures.py). The module supports heatmaps, heatmap splits (multiple values per element), histograms, scatter plots and line plots. All visualizations are interactive through [Plotly](https://plotly.com) and support displaying additional data on hover.\n\n|                                        [`ptable_heatmap_plotly(atomic_masses)`](pymatviz/ptable/figures.py#L54)                                         | [`ptable_heatmap_plotly(compositions, log=True)`](pymatviz/ptable/figures.py#L54) [![fig-icon]](assets/scripts/ptable/ptable_heatmap_plotly.py) |\n| :-----------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: |\n|                                                        ![ptable-heatmap-plotly-more-hover-data]                                                         |                                                          ![ptable-heatmap-plotly-log]                                                           |\n|               [`ptable_hists_plotly(data)`](pymatviz/ptable/figures.py#L441) [![fig-icon]](assets/scripts/ptable/ptable_hists_plotly.py)                | [`ptable_scatter_plotly(data, mode=\"markers\")`](pymatviz/ptable/figures.py#L1595) [![fig-icon]](assets/scripts/ptable/ptable_scatter_plotly.py) |\n|                                                                 ![ptable-hists-plotly]                                                                  |                                                        ![ptable-scatter-plotly-markers]                                                         |\n| [`ptable_heatmap_splits_plotly(2_vals_per_elem)`](pymatviz/ptable/figures.py#L857) [![fig-icon]](assets/scripts/ptable/ptable_heatmap_splits_plotly.py) |                               [`ptable_heatmap_splits_plotly(3_vals_per_elem)`](pymatviz/ptable/figures.py#L857)                                |\n|                                                            ![ptable-heatmap-splits-plotly-2]                                                            |                                                        ![ptable-heatmap-splits-plotly-3]                                                        |\n\n[ptable-heatmap-plotly-log]: assets/svg/ptable-heatmap-plotly-log.svg\n[ptable-heatmap-plotly-more-hover-data]: assets/svg/ptable-heatmap-plotly-more-hover-data.svg\n[ptable-heatmap-splits-plotly-2]: assets/svg/ptable-heatmap-splits-plotly-2.svg\n[ptable-heatmap-splits-plotly-3]: assets/svg/ptable-heatmap-splits-plotly-3.svg\n[ptable-hists-plotly]: assets/svg/ptable-hists-plotly.svg\n[ptable-scatter-plotly-markers]: assets/svg/ptable-scatter-plotly-markers.svg\n\n### Dash app using `ptable_heatmap_plotly()`\n\nSee [`examples/mprester_ptable.ipynb`](examples/mprester_ptable.ipynb).\n\n[https://user-images.githubusercontent.com/30958850/181644052-b330f0a2-70fc-451c-8230-20d45d3af72f.mp4](https://user-images.githubusercontent.com/30958850/181644052-b330f0a2-70fc-451c-8230-20d45d3af72f.mp4)\n\n## Phonons\n\n| [`phonon_bands(bands_dict)`](pymatviz/phonons/figures.py#L43) [![fig-icon]](assets/scripts/phonons/phonon_bands.py) |                  [`phonon_dos(doses_dict)`](pymatviz/phonons/figures.py#L366) [![fig-icon]](assets/scripts/phonons/phonon_dos.py)                  |\n| :-----------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|                                                   ![phonon-bands]                                                   |                                                                   ![phonon-dos]                                                                    |\n|                 [`phonon_bands_and_dos(bands_dict, doses_dict)`](pymatviz/phonons/figures.py#L606)                  | [`phonon_bands_and_dos(single_bands, single_dos)`](pymatviz/phonons/figures.py#L606) [![fig-icon]](assets/scripts/phonons/phonon_bands_and_dos.py) |\n|                                           ![phonon-bands-and-dos-mp-2758]                                           |                                                          ![phonon-bands-and-dos-mp-23907]                                                          |\n\n[phonon-bands]: assets/svg/phonon-bands-mp-2758.svg\n[phonon-dos]: assets/svg/phonon-dos-mp-2758.svg\n[phonon-bands-and-dos-mp-2758]: assets/svg/phonon-bands-and-dos-mp-2758.svg\n[phonon-bands-and-dos-mp-23907]: assets/svg/phonon-bands-and-dos-mp-23907.svg\n\n### Composition Clustering\n\n| [`cluster_compositions(compositions, properties, embedding_method, projection_method, n_components=2)`](pymatviz/cluster/composition/plot.py#L363) [![fig-icon]](assets/scripts/cluster/composition/cluster_compositions_matbench.py) | [`cluster_compositions(compositions, properties, embedding_method, projection_method, n_components=3)`](pymatviz/cluster/composition/plot.py#L363) |\n| :-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------: |\n|                                                                                                 ![matbench-perovskites-magpie-pca-2d]                                                                                                 |                                                       ![matbench-perovskites-magpie-tsne-3d]                                                       |\n\n[matbench-perovskites-magpie-pca-2d]: assets/svg/matbench-perovskites-magpie-pca-2d.svg\n[matbench-perovskites-magpie-tsne-3d]: assets/svg/matbench-perovskites-magpie-tsne-3d.svg\n\nVisualize 2D or 3D relationships between compositions and properties using multiple embedding and dimensionality reduction techniques:\n\nEmbedding methods: **One-hot** encoding of element fractions, **Magpie** features (elemental properties), **Matscholar** element embeddings, **MEGNet** element embeddings\n\nDimensionality reduction methods: **PCA** (linear), **t-SNE** (non-linear), **UMAP** (non-linear), **Isomap** (non-linear), **Kernel PCA** (non-linear)\n\nExample usage:\n\n```py\nimport pymatviz as pmv\nfrom pymatgen.core import Composition\n\ncompositions = (\"Fe2O3\", \"Al2O3\", \"SiO2\", \"TiO2\")\n\n# Create embeddings\nembeddings = pmv.cluster.composition.one_hot_encode(compositions)\ncomp_emb_map = dict(zip(compositions, embeddings, strict=True))\n\n# Plot with optional property coloring\nfig = pmv.cluster_compositions(\n    compositions=comp_emb_map,\n    properties=[1.0, 2.0, 3.0, 4.0],  # Optional property values\n    prop_name=\"Property\",  # Optional property label\n    embedding_method=\"one-hot\",  # or \"magpie\", \"matscholar_el\", \"megnet_el\", etc.\n    projection_method=\"pca\",  # or \"tsne\", \"umap\", \"isomap\", \"kernel_pca\", etc.\n    show_chem_sys=\"shape\",  # works best for small number of compositions; \"color\" | \"shape\" | \"color+shape\" | None\n    n_components=2,  # or 3 for 3D plots\n)\nfig.show()\n```\n\n## Structure Clustering\n\nOn the roadmap but no ETA yet.\n\n## Structure\n\nSee [`pymatviz/structure/figures.py`](pymatviz/structure/figures.py).\n\n|                            [`structure_3d(hea_structure)`](pymatviz/structure/figures.py)                            | [`structure_3d(lco_supercell)`](pymatviz/structure/figures.py) [![fig-icon]](assets/scripts/structure/structure_3d.py) |\n| :------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------------------: |\n|                                                 ![hea-structure-3d]                                                  |                                                  ![lco-structure-3d]                                                   |\n| [`structure_2d(six_structs)`](pymatviz/structure/figures.py) [![fig-icon]](assets/scripts/structure/structure_2d.py) |  [`structure_3d(six_structs)`](pymatviz/structure/figures.py) [![fig-icon]](assets/scripts/structure/structure_3d.py)  |\n|                                          ![matbench-phonons-structures-2d]                                           |                                           ![matbench-phonons-structures-3d]                                            |\n\n[matbench-phonons-structures-2d]: assets/svg/matbench-phonons-structures-2d.svg\n[matbench-phonons-structures-3d]: assets/svg/matbench-phonons-structures-3d.svg\n[hea-structure-3d]: assets/svg/hea-structure-3d.svg\n[lco-structure-3d]: assets/svg/lco-structure-3d.svg\n\n## Interactive Widgets\n\nSee [`pymatviz/widgets`](pymatviz/widgets). Interactive 3D structure, molecular dynamics trajectory and composition visualization widgets for [Jupyter](https://jupyter.org), [Marimo](https://marimo.io), and VSCode notebooks, powered by [anywidget](https://anywidget.dev) and [MatterViz](https://matterviz.janosh.dev) (\u003chttps://github.com/janosh/matterviz\u003e). Supports pymatgen `Structure`, ASE `Atoms`, and `PhonopyAtoms`, as well as ASE, `pymatgen` and plain Python trajectory formats.\n\n```py\nfrom pymatviz import StructureWidget, CompositionWidget, TrajectoryWidget\nfrom pymatgen.core import Structure, Composition\n\n# Interactive 3D structure visualization\nstructure = Structure.from_file(\"structure.cif\")\nstruct_widget = StructureWidget(structure=structure)\n\n# Interactive composition visualization\ncomposition = Composition(\"Fe2O3\")\ncomp_widget = CompositionWidget(composition=composition)\n\n# Interactive trajectory visualization\ntrajectory1 = [struct1, struct2, struct3]  # List of structures\ntraj_widget1 = TrajectoryWidget(trajectory=trajectory1)\n\ntrajectory2 = [{\"structure\": struct1, \"energy\": 1.0}, {\"structure\": struct2, \"energy\": 2.0}, {\"structure\": struct3, \"energy\": 3.0}]  # dicts with \"structure\" and property values\ntraj_widget2 = TrajectoryWidget(trajectory=trajectory2)\n```\n\n**Examples:**\n\n- [Jupyter notebook demo](examples/widgets/jupyter_demo.ipynb)\n- [Marimo demo](examples/widgets/marimo_demo.py)\n- [VSCode interactive demo](examples/widgets/vscode_interactive_demo.py)\n\n\u003e [!TIP]\n\u003e Checkout the **✅ MatterViz VSCode extension** for using the same viewers directly in VSCode/Cursor editor tabs for rendering local and remote files: [marketplace.visualstudio.com/items?itemName=janosh.matterviz](https://marketplace.visualstudio.com/items?itemName=janosh.matterviz)\n\nImporting `pymatviz` auto-registers all widgets for their respective sets of supported objects via [`register_matterviz_widgets()`](pymatviz/widgets/mime.py).\n\n## Brillouin Zone\n\nSee [`pymatviz/brillouin.py`](pymatviz/brillouin.py).\n\n|   [`brillouin_zone_3d(cubic_struct)`](pymatviz/brillouin.py#L16) [![fig-icon]](assets/scripts/brillouin/brillouin_zone_3d.py)    |  [`brillouin_zone_3d(hexagonal_struct)`](pymatviz/brillouin.py#L16)   |\n| :------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------: |\n|                                                   ![brillouin-cubic-mp-10018]                                                    |                   ![brillouin-hexagonal-mp-862690]                    |\n| [`brillouin_zone_3d(monoclinic_struct)`](pymatviz/brillouin.py#L16) [![fig-icon]](assets/scripts/brillouin/brillouin_zone_3d.py) | [`brillouin_zone_3d(orthorhombic_struct)`](pymatviz/brillouin.py#L16) |\n|                                                ![brillouin-monoclinic-mp-1183089]                                                |                      ![brillouin-volumes-3-cols]                      |\n\n[brillouin-cubic-mp-10018]: assets/svg/brillouin-cubic-mp-10018.svg\n[brillouin-hexagonal-mp-862690]: assets/svg/brillouin-hexagonal-mp-862690.svg\n[brillouin-monoclinic-mp-1183089]: assets/svg/brillouin-monoclinic-mp-1183089.svg\n[brillouin-orthorhombic-mp-1183085]: assets/svg/brillouin-orthorhombic-mp-1183085.svg\n[brillouin-volumes-3-cols]: assets/svg/brillouin-volumes-3-cols.svg\n\n## X-Ray Diffraction\n\nSee [`pymatviz/xrd.py`](pymatviz/xrd.py).\n\n|             [`xrd_pattern(pattern)`](pymatviz/xrd.py#L45) [![fig-icon]](assets/scripts/xrd/xrd_pattern.py)             |  [`xrd_pattern({key1: patt1, key2: patt2})`](pymatviz/xrd.py#L45)   |\n| :--------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------: |\n|                                                     ![xrd-pattern]                                                     |                       ![xrd-pattern-multiple]                       |\n| [`xrd_pattern(struct_dict, stack=\"horizontal\")`](pymatviz/xrd.py#L45) [![fig-icon]](assets/scripts/xrd/xrd_pattern.py) | [`xrd_pattern(struct_dict, stack=\"vertical\")`](pymatviz/xrd.py#L45) |\n|                                            ![xrd-pattern-horizontal-stack]                                             |                    ![xrd-pattern-vertical-stack]                    |\n\n[xrd-pattern]: assets/svg/xrd-pattern.svg\n[xrd-pattern-multiple]: assets/svg/xrd-pattern-multiple.svg\n[xrd-pattern-horizontal-stack]: assets/svg/xrd-pattern-horizontal-stack.svg\n[xrd-pattern-vertical-stack]: assets/svg/xrd-pattern-vertical-stack.svg\n\n## Radial Distribution Functions\n\nSee [`pymatviz/rdf/figures.py`](pymatviz/rdf/figures.py).\n\n| [`element_pair_rdfs(pmg_struct)`](pymatviz/rdf/figures.py#L34) | [`element_pair_rdfs({\"A\": struct1, \"B\": struct2})`](pymatviz/rdf/figures.py#L34) [![fig-icon]](assets/scripts/rdf/element_pair_rdfs.py) |\n| :------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------------: |\n|                 ![element-pair-rdfs-Na8Nb8O24]                 |                                                ![element-pair-rdfs-crystal-vs-amorphous]                                                |\n\n[element-pair-rdfs-Na8Nb8O24]: assets/svg/element-pair-rdfs-Na8Nb8O24.svg\n[element-pair-rdfs-crystal-vs-amorphous]: assets/svg/element-pair-rdfs-crystal-vs-amorphous.svg\n\n## Coordination\n\nSee [`pymatviz/coordination/figures.py`](pymatviz/coordination/figures.py).\n\n|              [`coordination_hist(struct_dict)`](pymatviz/coordination/figures.py#L35)              |            [`coordination_hist(struct_dict, by_element=True)`](pymatviz/coordination/figures.py#L35) [![fig-icon]](assets/scripts/coordination/coordination_hist.py)             |\n| :------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|                                    ![coordination-hist-single]                                     |                                                                  ![coordination-hist-by-structure-and-element]                                                                   |\n| [`coordination_vs_cutoff_line(struct_dict, strategy=None)`](pymatviz/coordination/figures.py#L366) | [`coordination_vs_cutoff_line(struct_dict, strategy=None)`](pymatviz/coordination/figures.py#L366) [![fig-icon]](assets/scripts/coordination/coordination_vs_cutoff_line.py#L52) |\n|                                  ![coordination-vs-cutoff-single]                                  |                                                                        ![coordination-vs-cutoff-multiple]                                                                        |\n\n[coordination-hist-single]: assets/svg/coordination-hist-single.svg\n[coordination-hist-by-structure-and-element]: assets/svg/coordination-hist-by-structure-and-element.svg\n[coordination-vs-cutoff-single]: assets/svg/coordination-vs-cutoff-single.svg\n[coordination-vs-cutoff-multiple]: assets/svg/coordination-vs-cutoff-multiple.svg\n\n## Sunburst\n\nSee [`pymatviz/sunburst.py`](pymatviz/sunburst).\n\n| [`spacegroup_sunburst([65, 134, 225, ...])`](pymatviz/sunburst/spacegroup.py) [![fig-icon]](assets/scripts/sunburst/spacegroup_sunburst.py) | [`chem_sys_sunburst([\"FeO\", \"Fe2O3\", \"LiPO4\", ...])`](pymatviz/sunburst/chem_sys.py) [![fig-icon]](assets/scripts/sunburst/chem_sys_sunburst.py) |\n| :-----------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------: |\n|                                                             ![spg-num-sunburst]                                                             |                                                          ![chem-sys-sunburst-ward-bmg]                                                           |\n|                                     [`chem_env_sunburst(single_struct)`](pymatviz/sunburst/chem_env.py)                                     |                                      [`chem_env_sunburst(multiple_structs)`](pymatviz/sunburst/chem_env.py)                                      |\n|                                                         ![chem-env-sunburst-basic]                                                          |                                                          ![chem-env-sunburst-mp-carbon]                                                          |\n\n[spg-num-sunburst]: assets/svg/spg-num-sunburst.svg\n[chem-sys-sunburst-ward-bmg]: assets/svg/chem-sys-sunburst-ward-bmg.svg\n[chem-env-sunburst-basic]: assets/svg/chem-env-sunburst-basic.svg\n[chem-env-sunburst-mp-carbon]: assets/svg/chem-env-sunburst-mp-carbon.svg\n\n## Treemap\n\nSee [`pymatviz/treemap/chem_sys.py`](pymatviz/treemap/chem_sys.py).\n\n| [`chem_sys_treemap([\"FeO\", \"Fe2O3\", \"LiPO4\", ...])`](pymatviz/treemap/chem_sys.py#L36) [![fig-icon]](assets/scripts/treemap/chem_sys_treemap.py) | [`chem_sys_treemap([\"FeO\", \"Fe2O3\", \"LiPO4\", ...], group_by=\"formula\")`](pymatviz/treemap/chem_sys.py#L36) |\n| :----------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------: |\n|                                                           ![chem-sys-treemap-formula]                                                            |                                        ![chem-sys-treemap-ward-bmg]                                        |\n|           [`chem_env_treemap(structures)`](pymatviz/treemap/chem_env.py#L50) [![fig-icon]](assets/scripts/treemap/chem_env_treemap.py)           |     [`chem_env_treemap(structures, max_cells_cn=3, max_cells_ce=4)`](pymatviz/treemap/chem_env.py#L50)     |\n|                                                            ![chem-env-treemap-basic]                                                             |                                     ![chem-env-treemap-large-dataset]                                      |\n|             [`py_pkg_treemap(\"pymatviz\")`](pymatviz/treemap/py_pkg.py#L705) [![fig-icon]](assets/scripts/treemap/py_pkg_treemap.py)              |           [`py_pkg_treemap([\"pymatviz\", \"flame\", \"pymatgen\"])`](pymatviz/treemap/py_pkg.py#L36)            |\n|                                                            ![py-pkg-treemap-pymatviz]                                                            |                                         ![py-pkg-treemap-multiple]                                         |\n|   [`py_pkg_treemap(\"pymatviz\", color_by=\"coverage\")`](pymatviz/treemap/py_pkg.py#L705) [![fig-icon]](assets/scripts/treemap/py_pkg_treemap.py)   | [`py_pkg_treemap(\"pymatgen\", color_by=\"coverage\", color_range=(0, 100))`](pymatviz/treemap/py_pkg.py#L705) |\n|                                                       ![py-pkg-treemap-pymatviz-coverage]                                                        |                                    ![py-pkg-treemap-pymatgen-coverage]                                     |\n\n\u003e **Note:** For `color_by=\"coverage\"` the package must have coverage data (e.g. run `pytest --cov=\u003cpkg\u003e --cov-report=xml` and pass the resulting `.coverage` file to `coverage_data_file`).\n\n[chem-sys-treemap-formula]: assets/svg/chem-sys-treemap-formula.svg\n[chem-sys-treemap-ward-bmg]: assets/svg/chem-sys-treemap-ward-bmg.svg\n[py-pkg-treemap-pymatviz]: assets/svg/py-pkg-treemap-pymatviz.svg\n[py-pkg-treemap-multiple]: assets/svg/py-pkg-treemap-multiple.svg\n[py-pkg-treemap-pymatgen-coverage]: assets/svg/py-pkg-treemap-pymatgen-coverage.svg\n[py-pkg-treemap-pymatviz-coverage]: assets/svg/py-pkg-treemap-pymatviz-coverage.svg\n[chem-env-treemap-large-dataset]: assets/svg/chem-env-treemap-large-dataset.svg\n[chem-env-treemap-basic]: assets/svg/chem-env-treemap-basic.svg\n\n## Rainclouds\n\nSee [`pymatviz/rainclouds.py`](pymatviz/rainclouds.py).\n\n| [`rainclouds(two_key_dict)`](pymatviz/rainclouds.py#L22) [![fig-icon]](assets/scripts/rainclouds/rainclouds.py) | [`rainclouds(three_key_dict)`](pymatviz/rainclouds.py#L22) |\n| :-------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------: |\n|                                              ![rainclouds-bimodal]                                              |                   ![rainclouds-trimodal]                   |\n\n[rainclouds-bimodal]: assets/svg/rainclouds-bimodal.svg\n[rainclouds-trimodal]: assets/svg/rainclouds-trimodal.svg\n\n## Sankey\n\nSee [`pymatviz/sankey.py`](pymatviz/sankey.py).\n\n| [`sankey_from_2_df_cols(df_perovskites)`](pymatviz/sankey.py#L18) [![fig-icon]](assets/scripts/sankey/sankey_from_2_df_cols.py) | [`sankey_from_2_df_cols(df_space_groups)`](pymatviz/sankey.py#L18) |\n| :-----------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------: |\n|                                              ![sankey-spglib-vs-aflow-spacegroups]                                              |                ![sankey-crystal-sys-to-spg-symbol]                 |\n\n[sankey-spglib-vs-aflow-spacegroups]: assets/svg/sankey-spglib-vs-aflow-spacegroups.svg\n[sankey-crystal-sys-to-spg-symbol]: assets/svg/sankey-crystal-sys-to-spg-symbol.svg\n\n## Bar Plots\n\nSee [`pymatviz/bar.py`](pymatviz/bar.py).\n\n| [`spacegroup_bar([65, 134, 225, ...])`](pymatviz/bar.py#L29) [![fig-icon]](assets/scripts/bar/spacegroup_bar.py) | [`spacegroup_bar([\"C2/m\", \"P-43m\", \"Fm-3m\", ...])`](pymatviz/bar.py#L29) |\n| :--------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------: |\n|                                              ![spg-num-hist-plotly]                                              |                        ![spg-symbol-hist-plotly]                         |\n\n[spg-symbol-hist-plotly]: assets/svg/spg-symbol-hist-plotly.svg\n[spg-num-hist-plotly]: assets/svg/spg-num-hist-plotly.svg\n\n## Histograms\n\nSee [`pymatviz/histogram.py`](pymatviz/histogram.py).\n\n| [`elements_hist(compositions, log=True, bar_values='count')`](pymatviz/histogram.py#L21) [![fig-icon]](assets/scripts/histogram/elements_hist.py) | [`histogram({'key1': values1, 'key2': values2})`](pymatviz/histogram.py#L89) [![fig-icon]](assets/scripts/histogram/histogram.py) |\n| :-----------------------------------------------------------------------------------------------------------------------------------------------: | :-------------------------------------------------------------------------------------------------------------------------------: |\n|                                                                 ![elements-hist]                                                                  |                                                         ![histogram-ecdf]                                                         |\n\n[histogram-ecdf]: assets/svg/histogram-ecdf.svg\n\n## Scatter Plots\n\nSee [`pymatviz/scatter.py`](pymatviz/scatter.py).\n\n| [`density_scatter(xs, ys, ...)`](pymatviz/scatter.py) [![fig-icon]](assets/scripts/scatter/density_scatter.py) | [`density_scatter_with_hist(xs, ys, ...)`](pymatviz/scatter.py) [![fig-icon]](assets/scripts/scatter/density_scatter.py) |\n| :------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------: |\n|                                               ![density-scatter]                                               |                                               ![density-scatter-with-hist]                                               |\n|  [`density_hexbin(xs, ys, ...)`](pymatviz/scatter.py) [![fig-icon]](assets/scripts/scatter/density_hexbin.py)  |  [`density_hexbin_with_hist(xs, ys, ...)`](pymatviz/scatter.py) [![fig-icon]](assets/scripts/scatter/density_hexbin.py)  |\n|                                               ![density-hexbin]                                                |                                               ![density-hexbin-with-hist]                                                |\n\n[density-hexbin-with-hist]: assets/svg/density-hexbin-with-hist.svg\n[density-hexbin]: assets/svg/density-hexbin.svg\n[density-scatter-with-hist]: assets/svg/density-scatter-with-hist.svg\n[density-scatter]: assets/svg/density-scatter.svg\n\n## Uncertainty\n\nSee [`pymatviz/uncertainty.py`](pymatviz/uncertainty.py).\n\n|             [`qq_gaussian(y_true, y_pred, y_std)`](pymatviz/uncertainty.py#L22) [![fig-icon]](assets/scripts/uncertainty/qq_gaussian.py)              |       [`qq_gaussian(y_true, y_pred, y_std: dict)`](pymatviz/uncertainty.py#L22)        |\n| :---------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------: |\n|                                                                    ![qq-gaussian]                                                                     |                                ![qq-gaussian-multiple]                                 |\n| [`error_decay_with_uncert(y_true, y_pred, y_std)`](pymatviz/uncertainty.py#L119) [![fig-icon]](assets/scripts/uncertainty/error_decay_with_uncert.py) | [`error_decay_with_uncert(y_true, y_pred, y_std: dict)`](pymatviz/uncertainty.py#L119) |\n|                                                              ![error-decay-with-uncert]                                                               |                          ![error-decay-with-uncert-multiple]                           |\n\n## Classification\n\nSee [`pymatviz/classify/confusion_matrix.py`](pymatviz/classify/confusion_matrix.py).\n\n| [`confusion_matrix(conf_mat, ...)`](pymatviz/classify/confusion_matrix.py#L14) | [`confusion_matrix(y_true, y_pred, ...)`](pymatviz/classify/confusion_matrix.py#L14) [![fig-icon]](assets/scripts/classify/confusion_matrix.py) |\n| :----------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------: |\n|                         ![stability-confusion-matrix]                          |                                                       ![crystal-system-confusion-matrix]                                                        |\n\nSee [`pymatviz/classify/curves.py`](pymatviz/classify/curves.py).\n\n| [`roc_curve_plotly(targets, probs_positive)`](pymatviz/classify/curves.py#L83) [![fig-icon]](assets/scripts/classify/roc_curve.py) | [`precision_recall_curve_plotly(targets, probs_positive)`](pymatviz/classify/curves.py#L183) [![fig-icon]](assets/scripts/classify/precision_recall_curve.py) |\n| :--------------------------------------------------------------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------------------------: |\n|                                                    ![roc-curve-plotly-multiple]                                                    |                                                           ![precision-recall-curve-plotly-multiple]                                                           |\n\n[roc-curve-plotly-multiple]: assets/svg/roc-curve-plotly-multiple.svg\n[precision-recall-curve-plotly-multiple]: assets/svg/precision-recall-curve-plotly-multiple.svg\n[stability-confusion-matrix]: assets/svg/stability-confusion-matrix.svg\n[crystal-system-confusion-matrix]: assets/svg/crystal-system-confusion-matrix.svg\n[error-decay-with-uncert-multiple]: assets/svg/error-decay-with-uncert-multiple.svg\n[error-decay-with-uncert]: assets/svg/error-decay-with-uncert.svg\n[elements-hist]: assets/svg/elements-hist.svg\n[qq-gaussian-multiple]: assets/svg/qq-gaussian-multiple.svg\n[qq-gaussian]: assets/svg/qq-gaussian.svg\n\n## How to cite `pymatviz`\n\nSee [`citation.cff`](citation.cff) or cite the [Zenodo record](https://zenodo.org/badge/latestdoi/340898532) using the following BibTeX entry:\n\n```bib\n@software{riebesell_pymatviz_2022,\n  title = {Pymatviz: visualization toolkit for materials informatics},\n  author = {Riebesell, Janosh and Yang, Haoyu and Goodall, Rhys and Baird, Sterling G.},\n  date = {2022-10-01},\n  year = {2022},\n  doi = {10.5281/zenodo.7486816},\n  url = {https://github.com/janosh/pymatviz},\n  note = {10.5281/zenodo.7486816 - https://github.com/janosh/pymatviz},\n  urldate = {2023-01-01}, % optional, replace with your date of access\n  version = {0.8.2}, % replace with the version you use\n}\n```\n\n## Papers using `pymatviz`\n\nSorted by number of citations, then year. Last updated 2026-02-25. Auto-generated [from Google Scholar](https://scholar.google.com/scholar?q=pymatviz). Manual additions [via PR](https://github.com/janosh/pymatviz/edit/main/readme.md) welcome.\n\n1. L Barroso-Luque, M Shuaibi, X Fu et al. (2024). [Open materials 2024 (omat24) inorganic materials dataset and models](https://arxiv.org/abs/2410.12771) (cited by 230)\n1. C Zeni, R Pinsler, D Zügner et al. (2023). [Mattergen: a generative model for inorganic materials design](https://arxiv.org/abs/2312.03687) (cited by 166)\n1. C Chen, DT Nguyen, SJ Lee et al. (2024). [Accelerating computational materials discovery with machine learning and cloud high-performance computing: from large-scale screening to experimental validation](https://pubs.acs.org/doi/abs/10.1021/jacs.4c03849) (cited by 131)\n1. J Riebesell, REA Goodall, P Benner et al. (2023). [Matbench Discovery--A framework to evaluate machine learning crystal stability predictions](https://arxiv.org/abs/2308.14920) (cited by 106)\n1. H Yu, M Giantomassi, G Materzanini (2024). [Systematic assessment of various universal machine‐learning interatomic potentials](https://onlinelibrary.wiley.com/doi/abs/10.1002/mgea.58) (cited by 69)\n1. M Gibaldi, A Kapeliukha, A White et al. (2025). [MOSAEC-DB: a comprehensive database of experimental metal–organic frameworks with verified chemical accuracy suitable for molecular simulations](https://pubs.rsc.org/en/content/articlehtml/2025/sc/d4sc07438f) (cited by 34)\n1. AA Naik, C Ertural, N Dhamrait et al. (2023). [A quantum-chemical bonding database for solid-state materials](https://www.nature.com/articles/s41597-023-02477-5) (cited by 28)\n1. F Therrien, J Abou Haibeh, D Sharma et al. (2026). [OBELiX: A curated dataset of crystal structures and experimentally measured ionic conductivities for lithium solid-state electrolytes](https://pubs.rsc.org/en/content/articlehtml/2026/dd/d5dd00441a) (cited by 9)\n1. K Li, AN Rubungo, X Lei et al. (2024). [Probing out-of-distribution generalization in machine learning for materials](https://arxiv.org/abs/2406.06489) (cited by 9)\n1. Y Zhou, X He, Z Li (2025). [Scientists' First Exam: Probing Cognitive Abilities of MLLM via Perception, Understanding, and Reasoning](https://arxiv.org/abs/2506.10521) (cited by 6)\n1. HH Li, Q Chen, G Ceder (2024). [Voltage Mining for (De) lithiation-Stabilized Cathodes and a Machine Learning Model for Li-Ion Cathode Voltage](https://pubs.acs.org/doi/abs/10.1021/acsami.4c15742) (cited by 5)\n1. A Peng, X Liu, MY Guo et al. (2025). [The openlam challenges](https://arxiv.org/abs/2501.16358) (cited by 3)\n1. J Nam, S Liu, G Winter et al. (2025). [Flow matching for accelerated simulation of atomic transport in crystalline materials](https://www.nature.com/articles/s42256-025-01125-4) (cited by 3)\n1. A Onwuli, KT Butler, A Walsh (2024). [Ionic species representations for materials informatics](https://pubs.aip.org/aip/aml/article/2/3/036112/3313198) (cited by 3)\n1. N Tuchinda, CA Schuh (2025). [Grain Boundary Segregation and Embrittlement of Aluminum Binary Alloys from First Principles](https://arxiv.org/abs/2502.01579) (cited by 2)\n1. R Nduma, H Park, A Walsh (2025). [Crystalyse: a multi-tool agent for materials design](https://arxiv.org/abs/2512.00977) (cited by 2)\n1. N Tuchinda, CA Schuh (2025). [A grain boundary embrittlement genome for substitutional cubic alloys](https://pubs.aip.org/aip/apl/article/126/17/171602/3345390) (cited by 1)\n1. A Giunto, Y Fei, P Nevatia et al. (2025). [Harnessing Automated SEM-EDS and Machine Learning to Unlock High-Throughput Compositional Characterization of Powder Materials](https://www.researchsquare.com/article/rs-7837297/latest) (cited by 1)\n1. T Cavignac, J Schmidt, PP De Breuck et al. (2025). [AI-Driven Expansion and Application of the Alexandria Database](https://arxiv.org/abs/2512.09169) (cited by 1)\n1. J Riebesell, H Yang, R Goodall et al. (2024). [janosh/pymatviz: v0. 11.0](https://ui.adsabs.harvard.edu/abs/2024zndo..13624216R/abstract) (cited by 1)\n1. T Warford, FL Thiemann, GĂĄ CsĂĄnyi (2026). [Better without U: Impact of Selective Hubbard U Correction on Foundational MLIPs](https://arxiv.org/abs/2601.21056)\n1. Mohammed Al-Fahdi, Riccardo Rurali, Jianjun Hu et al. (2025). [Accelerated discovery of extreme lattice thermal conductivity by crystal graph attention networks and chemical bonding](https://www.nature.com/articles/s41524-025-01871-4)\n1. Omar Allam, Brook Wander, SungYeon Kim et al. (2025). [AQCat25: Unlocking spin-aware, high-fidelity machine learning potentials for heterogeneous catalysis](http://arxiv.org/abs/2510.22938)\n1. Giulio Benedini, Antoine Loew, Matti Hellstrom et al. (2025). [Universal Machine Learning Potential for Systems with Reduced Dimensionality](https://arxiv.org/abs/2508.15614v1)\n1. Yuan Chiang, Tobias Kreiman, Elizabeth Weaver et al. (2025). [MLIP Arena: Advancing Fairness and Transparency in Machine Learning Interatomic Potentials through an Open and Accessible Benchmark Platform](https://openreview.net/forum?id=ysKfIavYQE)\n1. Orion Archer Cohen, Janosh Riebesell, Rhys Goodall et al. (2025). [TorchSim: An efficient atomistic simulation engine in PyTorch](http://iopscience.iop.org/article/10.1088/3050-287X/ae1799)\n1. Alin Marin Elena, Prathami Divakar Kamath, Théo Jaffrelot Inizan et al. (2025). [Machine learned potential for high-throughput phonon calculations of metal—organic frameworks](https://www.nature.com/articles/s41524-025-01611-8)\n1. Matthew K. Horton, Patrick Huck, Ruo Xi Yang et al. (2025). [Accelerated data-driven materials science with the Materials Project](https://www.nature.com/articles/s41563-025-02272-0)\n1. Aaron D. Kaplan, Runze Liu, Ji Qi et al. (2025). [A Foundational Potential Energy Surface Dataset for Materials](http://arxiv.org/abs/2503.04070)\n1. Matthew C. Kuner, Aaron D. Kaplan, Kristin A. Persson et al. (2025). [MP-ALOE: An r2SCAN dataset for universal machine learning interatomic potentials](http://arxiv.org/abs/2507.05559)\n1. Anyang Peng, Xinzijian Liu, Ming-Yu Guo et al. (2025). [The OpenLAM Challenges: LAM Crystal Philately competition](https://doi.org/10.1088/2632-2153/add3bf)\n1. Ali Ramlaoui, Martin Siron, Inel Djafar et al. (2025). [LeMat-Traj: A Scalable and Unified Dataset of Materials Trajectories for Atomistic Modeling](http://arxiv.org/abs/2508.20875)\n1. Fei Shuang, Zixiong Wei, Kai Liu et al. (2025). [Universal machine learning interatomic potentials poised to supplant DFT in modeling general defects in metals and random alloys](http://arxiv.org/abs/2502.03578)\n1. Yingheng Tang, Wenbin Xu, Jie Cao et al. (2025). [MatterChat: A Multi-Modal LLM for Material Science](http://arxiv.org/abs/2502.13107)\n1. Liming Wu, Wenbing Huang, Rui Jiao et al. (2025). [Siamese Foundation Models for Crystal Structure Prediction](http://arxiv.org/abs/2503.10471)\n1. K Yan, M Bohde, A Kryvenko (2025). [A Materials Foundation Model via Hybrid Invariant-Equivariant Architectures](https://arxiv.org/abs/2503.05771)\n1. M Gibaldi, J Luo, AJ White et al. (2025). [Generalizable classification of crystal structure error types using graph attention networks](https://pubs.rsc.org/en/content/articlehtml/2025/ta/d5ta05426e)\n1. Daniel W. Davies, Keith T. Butler, Adam J. Jackson et al. (2024). [SMACT: Semiconducting Materials by Analogy and Chemical Theory](https://github.com/WMD-group/SMACT)\n1. Hui Zheng, Eric Sivonxay, Rasmus Christensen et al. (2024). [The ab initio non-crystalline structure database: empowering machine learning to decode diffusivity](https://www.nature.com/articles/s41524-024-01469-2)\n1. Ilyes Batatia, Philipp Benner, Yuan Chiang et al. (2023). [A foundation model for atomistic materials chemistry](https://arxiv.org/abs/2401.00096v1)\n1. Jack Douglas Sundberg (2022). [A New Framework for Material Informatics and Its Application Toward Electride-Halide Material Systems](https://cdr.lib.unc.edu/concern/dissertations/r494vw405)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanosh%2Fpymatviz","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjanosh%2Fpymatviz","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjanosh%2Fpymatviz/lists"}