• Stars
    star
    102
  • Rank 334,270 (Top 7 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 2 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Interactive visualizations for materials science: periodic tables, 3d crystal structures, Bohr atoms, nuclei, heatmaps, scatter plots.

Logo
Elementari

Tests GH Pages pre-commit.ci status Open in StackBlitz

elementari is a toolkit for building interactive web UIs for materials science: periodic tables, 3d crystal structures (and molecules, though needs some improvements!), Bohr atoms, nuclei, heatmaps, scatter plots. It's under active development and not yet ready for production use but we appreciate any feedback from beta testers! πŸ™

Screenshot of landing page

πŸ“¦   Heatmap

This screenshot demonstrates the periodicity of elemental properties (i.e. why it's called periodic table). In this case, you're seeing recurring bumps and valleys in the first ionization energy as a function of atomic number.

Screenshot of periodic table heatmap

βš›οΈ   3D Structure Viewer

3D Structure Viewer

βš›οΈ   Element Details Pages

The details page for gold.

2022-08-26-element-detail-page-screen-recording.mp4

πŸ”¨   Installation

npm install --dev elementari

πŸ“™   Usage

Import the PeriodicTable component and pass it some heatmap values:

<script>
  import PeriodicTable from 'elementari'

  const heatmap_values = { H: 10, He: 4, Li: 8, Fe: 3, O: 24 }
</script>

<PeriodicTable {heatmap_values} />

🎬   Events

PeriodicTable.svelte forwards the following events from each ElementTile:

  1. click
  2. mouseenter
  3. mouseleave
  4. keyup
  5. keydown

Each event is a Svelte dispatch event with the following detail payload:

detail: {
  element: ChemicalElement
  active: boolean // whether the event target tile is currently active
  dom_event: Event // the DOM event that triggered the Svelte dispatch
}

See DispatchPayload and PeriodicTableEvents in src/lib/index.ts

πŸ§ͺ   Coverage

Statements Branches Lines
Statements Branches Lines

πŸ™   Acknowledgements

This project would not have been possible as a one-person side project without many fine open-source projects. πŸ™ To name just a few:

3D graphics 2D graphics Docs Bundler Testing
three.js d3 mdsvex vite playwright
threlte sharp rehype sveltekit vitest

More Repositories

1

awesome-normalizing-flows

Awesome resources on normalizing flows.
Python
1,378
star
2

awesome-sveltekit

Awesome examples of SvelteKit in the wild
Svelte
814
star
3

svelte-multiselect

Keyboard-friendly, accessible and highly customizable multi-select component
TypeScript
240
star
4

tikz

Random collection of standalone TikZ images
TeX
165
star
5

pymatviz

A toolkit for visualizations in materials informatics.
Python
152
star
6

blog

My blog.
Svelte
119
star
7

svelte-toc

Sticky responsive table of contents component
Svelte
89
star
8

matbench-discovery

An evaluation framework for machine learning models simulating high-throughput materials discovery.
Python
86
star
9

svelte-bricks

Naive Svelte Masonry component without column balancing (ragged columns at the bottom)
Svelte
75
star
10

tensorboard-reducer

Reduce multiple PyTorch TensorBoard runs to new event (or CSV) files.
Python
58
star
11

svelte-algolia

Svelte plugin for keeping Algolia indices in sync with custom data fetching functions.
TypeScript
33
star
12

pdf-compressor

CLI + Python API for batch compressing PDFs
Python
27
star
13

torch-mnf

Multiplicative Normalizing Flows in PyTorch.
Python
19
star
14

svicons

35 SVG Icon Packs as Svelte Components
Svelte
13
star
15

thermo

Data-driven risk-conscious thermoelectric materials discovery
Python
11
star
16

geometric-bayes

Interactive geometric illustration of Bayes theorem
Svelte
11
star
17

ffonons

Phonons from ML force fields
Python
11
star
18

gatsby-source-google-scholar

Gatsby source plugin that pulls metadata for scientific publications from Google Scholar
JavaScript
10
star
19

numeric-simulations

Exercise solutions for Prof. Springel's lecture "Fundamentals of Simulation Methods" (fall 2015, Heidelberg University)
C
7
star
20

dielectrics

Pushing the Pareto front of band gap and permittivity with ML-guided dielectric materials discovery incl. experimental synthesis and characterization.
HTML
6
star
21

tutorific-frontend

React + Redux frontend for 6-day Codeworks solo project 'Tutorific'.
JavaScript
6
star
22

svelte-zoo

Random assortment of docs-related Svelte components
Svelte
3
star
23

ocean-artup

Homepage of the ERC Advanced Grant research project Ocean artUp
Svelte
3
star
24

dark-mode-minimal

SSR compatible, flicker-free dark mode MVP in Gatsby
JavaScript
2
star
25

afara

Homepage of the German student-run non-profit Afara e.V. built Svelte and Contentful.
Svelte
2
star
26

tf-mnf

Multiplicative normalizing flow: variational Bayesian neural networks with increased posterior flexibility thanks to normalizing flows
Python
2
star
27

joggle-atoms-as-data-aug

Experiments with CGCNN + Atom Joggling for data augmentation
Python
1
star
28

macos-setup

Ain't no place like ~. Scripts and config files to setup macOS from scratch.
Shell
1
star