diff --git a/assets/conv2d/conv2d-hd.png b/assets/2d-convolution/2d-convolution-hd.png similarity index 100% rename from assets/conv2d/conv2d-hd.png rename to assets/2d-convolution/2d-convolution-hd.png diff --git a/assets/conv2d/conv2d.pdf b/assets/2d-convolution/2d-convolution.pdf similarity index 100% rename from assets/conv2d/conv2d.pdf rename to assets/2d-convolution/2d-convolution.pdf diff --git a/assets/conv2d/conv2d.png b/assets/2d-convolution/2d-convolution.png similarity index 100% rename from assets/conv2d/conv2d.png rename to assets/2d-convolution/2d-convolution.png diff --git a/assets/conv2d/conv2d.svg b/assets/2d-convolution/2d-convolution.svg similarity index 100% rename from assets/conv2d/conv2d.svg rename to assets/2d-convolution/2d-convolution.svg diff --git a/assets/conv2d/conv2d.tex b/assets/2d-convolution/2d-convolution.tex similarity index 100% rename from assets/conv2d/conv2d.tex rename to assets/2d-convolution/2d-convolution.tex diff --git a/assets/conv2d/conv2d.typ b/assets/2d-convolution/2d-convolution.typ similarity index 100% rename from assets/conv2d/conv2d.typ rename to assets/2d-convolution/2d-convolution.typ diff --git a/assets/conv2d/conv2d.yml b/assets/2d-convolution/2d-convolution.yml similarity index 100% rename from assets/conv2d/conv2d.yml rename to assets/2d-convolution/2d-convolution.yml diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation-hd.png b/assets/gnn-node-aggregation/gnn-node-aggregation-hd.png new file mode 100644 index 00000000..f0ee2a23 Binary files /dev/null and b/assets/gnn-node-aggregation/gnn-node-aggregation-hd.png differ diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.pdf b/assets/gnn-node-aggregation/gnn-node-aggregation.pdf new file mode 100644 index 00000000..a0d45947 Binary files /dev/null and b/assets/gnn-node-aggregation/gnn-node-aggregation.pdf differ diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.png b/assets/gnn-node-aggregation/gnn-node-aggregation.png new file mode 100644 index 00000000..6a83ba46 Binary files /dev/null and b/assets/gnn-node-aggregation/gnn-node-aggregation.png differ diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.svg b/assets/gnn-node-aggregation/gnn-node-aggregation.svg new file mode 100644 index 00000000..f41c18db --- /dev/null +++ b/assets/gnn-node-aggregation/gnn-node-aggregation.svg @@ -0,0 +1,308 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.typ b/assets/gnn-node-aggregation/gnn-node-aggregation.typ new file mode 100644 index 00000000..adc535bc --- /dev/null +++ b/assets/gnn-node-aggregation/gnn-node-aggregation.typ @@ -0,0 +1,137 @@ +#import "@preview/cetz:0.3.1": canvas, draw + +#set page(width: auto, height: auto, margin: 8pt) + +#canvas({ + import draw: line, content, circle, rect + + // Styles + let arrow-style = (mark: (end: "stealth", fill: black, scale: 0.5, offset: 2pt), stroke: 0.5pt) + let edge-style = (stroke: 0.4pt) + let node-radius = 0.3 + let graph-sep = 4.5 // separation between input graph and aggregation + + // Node colors - ensure consistency + let colors = ( + A: rgb("#ffd700"), // Gold + B: rgb("#ff4d4d"), // Red + C: rgb("#90ee90"), // Light green + D: rgb("#4d94ff"), // Blue + E: rgb("#9370db"), // Purple + F: rgb("#ff69b4"), // Pink + ) + + // Helper to draw a node with label + let draw-node(pos, label, name) = { + circle( + pos, + radius: node-radius, + fill: colors.at(label), + stroke: black + 0.5pt, + name: name, + ) + content(pos, label, anchor: "center") + } + + // Input Graph (left side) + // Define node positions + let target-pos = (-1.5, 1.2) + let b-pos = (0.5, 2) + let c-pos = (1, 1) + let d-pos = (-2.5, -.7) + let e-pos = (-0.25, -1.25) + let f-pos = (1.5, 0) + + // Draw nodes + draw-node(target-pos, "A", "target") + draw-node(b-pos, "B", "b") + draw-node(c-pos, "C", "c") + draw-node(d-pos, "D", "d") + draw-node(e-pos, "E", "e") + draw-node(f-pos, "F", "f") + + // Add target node label + content((rel: (0, 1.5), to: "target"), "Target Node", name: "target-label") + line("target-label.south", "target", ..arrow-style) + + // Draw edges + for (start, end) in ( + ("target", "b"), + ("target", "c"), + ("b", "c"), + ("target", "d"), + ("c", "e"), + ("c", "f"), + ("e", "f"), + ) { + line(start, end, ..edge-style) + } + + // Add "Input Graph" label + content((0.25, -1.8), [Input Graph]) + + // Main aggregation box + let box-pos = (graph-sep, 0.5) + content( + box-pos, + [Aggregation\ for Node A], + name: "agg-box", + fill: rgb("ddd"), + frame: "rect", + stroke: 0.2pt, + padding: (3pt, 7pt), + ) + + // First layer nodes - renamed to show they're neighbors of A + let first-layer = ( + (2, 2, "B", "a-to-b"), + (2, 0, "C", "a-to-c"), + (2, -2, "D", "a-to-d"), + ) + + // Draw first layer nodes and arrows + for (dx, dy, label, name) in first-layer { + draw-node((rel: (dx, dy), to: "agg-box.east"), label, name) + line(name, "agg-box.east", ..arrow-style) + } + + content((rel: (0, .7), to: "a-to-b"), "Hop 1") + + // Draw aggregation boxes for each first layer node + for node in ("a-to-b", "a-to-c", "a-to-d") { + let letter = node.split("-").at(-1) + content( + (rel: (2, 0), to: node), + [Aggr(#upper(letter))], + fill: rgb("ddd"), + frame: "rect", + stroke: 0.2pt, + padding: (2pt, 4pt), + name: "aggr-" + letter, + ) + line("aggr-" + letter, node, ..arrow-style) + } + + + // Second layer nodes and connections - renamed to show full path + let second-layer = ( + // From B-aggregation (B's neighbors) + ((2, 1), "A", "aggr-b", "b-to-a"), + ((2, 0), "C", "aggr-b", "b-to-c"), + // From C-aggregation (C's neighbors) + ((2, 1), "A", "aggr-c", "c-to-a"), + ((2, 0.25), "B", "aggr-c", "c-to-b"), + ((2, -0.5), "E", "aggr-c", "c-to-e"), + ((2, -1.25), "F", "aggr-c", "c-to-f"), + // From D-aggregation (D's neighbors) + ((2, 0), "A", "aggr-d", "d-to-a"), + ) + + // Draw second layer nodes and arrows + for ((dx, dy), label, parent, name) in second-layer { + draw-node((rel: (dx, dy), to: parent), label, name) + line(name, parent + ".east", ..arrow-style) + } + + content((rel: (0, .7), to: "b-to-a"), "Hop 2") +}) diff --git a/assets/gnn-node-aggregation/gnn-node-aggregation.yml b/assets/gnn-node-aggregation/gnn-node-aggregation.yml new file mode 100644 index 00000000..b52947da --- /dev/null +++ b/assets/gnn-node-aggregation/gnn-node-aggregation.yml @@ -0,0 +1,37 @@ +title: GNN Node Aggregation Process +description: > + Diagram illustrating the message-passing process in graph neural networks (GNNs). + Shows how information flows from neighboring nodes to a target node A through + multiple layers of aggregation. The first layer combines information from direct + neighbors (B, C, D) while the second layer incorporates information from nodes + two hops away (E, F), demonstrating how a node's receptive field grows with + network depth. + +authors: + - Janosh Riebesell + - William L. Hamilton + +references: + - hamilton_graph_2020: + title: Graph Representation Learning + authors: William L. Hamilton + year: 2020 + page: 55 + publisher: Morgan & Claypool Publishers + doi: 10.2200/S01045ED1V01Y202009AIM046 + +tags: + - graph-neural-networks + - message-passing + - node-aggregation + - neural-networks + - deep-learning + - information-flow + - receptive-field + +components: + - input-graph + - target-node + - aggregation-layers + - message-passing + - node-states diff --git a/assets/kohn-sham-cycle/kohn-sham-cycle.typ b/assets/kohn-sham-cycle/kohn-sham-cycle.typ index bbf58d8c..69046040 100644 --- a/assets/kohn-sham-cycle/kohn-sham-cycle.typ +++ b/assets/kohn-sham-cycle/kohn-sham-cycle.typ @@ -15,6 +15,7 @@ width: 22em, height: 12em, name: "enclosure", + radius: 5pt, ) // Enclosure label @@ -52,6 +53,7 @@ width: 20em, name: "initial", padding: (3pt, 2em, 0), + radius: 1em, ) // Potential box diff --git a/assets/made/made.typ b/assets/made/made.typ new file mode 100644 index 00000000..b2811331 --- /dev/null +++ b/assets/made/made.typ @@ -0,0 +1,214 @@ +#import "@preview/cetz:0.3.1": canvas, draw + +#set page(width: auto, height: auto, margin: 8pt) + +#canvas({ + import draw: line, content, circle, rect + + // Styles + let arrow-style = (mark: (end: "stealth", fill: black, scale: 0.5, offset: 1pt), stroke: .5pt) + let node-style = (stroke: black + 0.7pt) + let layer-sep = 2 // now vertical separation + let horiz-sep = 1.3 // horizontal separation between nodes in a layer + + // Helper to draw a vertical layer of nodes + let draw-layer(y, nodes, prefix: "", masks: none, x-offset: 0) = { + for i in range(nodes) { + let x = (nodes - 1) * horiz-sep / 2 - i * horiz-sep + x-offset + circle( + (x, y), + radius: 0.3, + name: prefix + str(i), + ..node-style, + ) + if masks != none { + content((x, y), str(masks.at(i))) + } + } + } + + // Helper to connect all nodes between layers + let connect-layers(from-prefix, to-prefix, from-nodes, to-nodes) = { + for i in range(from-nodes) { + for j in range(to-nodes) { + line( + from-prefix + str(i), + to-prefix + str(j), + ..arrow-style, + ) + } + } + } + + // Adjust x-positions for the three components + let fcnn-x = -5 // Autoencoder on the left + let mask-x = 0 // Masks in the middle + let made-x = 5 // MADE network on the right + + // Draw autoencoder (left side) + // Draw all layers from bottom to top + for (idx, (y, nodes)) in ( + (0, 3), + (layer-sep, 4), + (2 * layer-sep, 4), + (3 * layer-sep, 3), + ).enumerate() { + draw-layer(y, nodes, prefix: "fcnn" + str(idx) + "-", x-offset: fcnn-x) + } + + // Connect autoencoder layers + connect-layers("fcnn0-", "fcnn1-", 3, 4) + connect-layers("fcnn1-", "fcnn2-", 4, 4) + connect-layers("fcnn2-", "fcnn3-", 4, 3) + + // Add weight labels along autoencoder edges + let weight-offset = 0.3 + content( + (fcnn-x + weight-offset + 1.35, layer-sep / 2), + $W_1$, + anchor: "west", + ) + content( + (fcnn-x + weight-offset + 1.55, 1.5 * layer-sep), + $W_2$, + anchor: "west", + ) + content( + (fcnn-x + weight-offset + 1.4, 2.5 * layer-sep), + $V$, + anchor: "west", + ) + + // Draw mask matrices in the middle + let mask-base-size = 1.25 + let mask-sep = 2.5 + let mask-label-offset = 1.6 // Increased for left alignment + + // Helper to draw grid lines and filled cells + let draw-mask(x, y, rows, cols, filled-cells) = { + let width = mask-base-size * cols / 3 // normalize to make 3 cols = base size + let height = mask-base-size * rows / 3 // normalize to make 3 rows = base size + let cell-width = width / cols + let cell-height = height / rows + + // Draw grid lines + for i in range(cols + 1) { + let x-pos = x - width / 2 + i * cell-width + line( + (x-pos, y), + (x-pos, y + height), + stroke: .2pt, + ) + } + for i in range(rows + 1) { + let y-pos = y + i * cell-height + line( + (x - width / 2, y-pos), + (x + width / 2, y-pos), + stroke: .2pt, + ) + } + + // Fill cells + for (row, col) in filled-cells { + rect( + (x - width / 2 + col * cell-width, y + (rows - row - 1) * cell-height), + (x - width / 2 + (col + 1) * cell-width, y + (rows - row) * cell-height), + fill: black, + ) + } + } + + // Draw M_V mask (top, 2x4) + let mv-width = mask-base-size * 4 / 3 + let mv-height = mask-base-size * 2 / 3 + rect((mask-x - mv-width / 2, 2 * mask-sep), (mask-x + mv-width / 2, 2 * mask-sep + mv-height)) + content((mask-x - mask-label-offset, 2 * mask-sep + mv-height / 2), $M_V =$) + draw-mask( + mask-x, + 2 * mask-sep, + 2, + 4, + ((0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (1, 3)), + ) + + // Draw M_W2 mask (middle, 4x4) + let mw2-size = mask-base-size * 4 / 3 + rect((mask-x - mw2-size / 2, mask-sep), (mask-x + mw2-size / 2, mask-sep + mw2-size)) + content((mask-x - mask-label-offset, mask-sep + mw2-size / 2), $M_(W_2) =$) + draw-mask( + mask-x, + mask-sep, + 4, + 4, + ((0, 0), (0, 2), (0, 3), (3, 0), (3, 2), (3, 3)), + ) + + // Draw M_W1 mask (bottom, 4x3) + let mw1-width = mask-base-size + let mw1-height = mask-base-size * 4 / 3 + rect((mask-x - mw1-width / 2, 0), (mask-x + mw1-width / 2, mw1-height)) + content((mask-x - mask-label-offset, mw1-height / 2), $M_(W_1) =$) + draw-mask( + mask-x, + 0, + 4, + 3, + ((0, 0), (1, 0), (2, 0), (3, 0), (2, 2)), + ) + + // Draw MADE (right side) + // Draw MADE layers with masks + for (idx, (y, nodes, masks)) in ( + (0, 3, (3, 1, 2)), + (layer-sep, 4, (2, 1, 2, 2)), + (2 * layer-sep, 4, (1, 2, 2, 1)), + (3 * layer-sep, 3, (3, 1, 2)), + ).enumerate() { + draw-layer(y, nodes, prefix: "made" + str(idx) + "-", masks: masks, x-offset: made-x) + } + + // Connect MADE layers with masked connections + // Layer 1 -> 2 + for (from, tos) in ((0, ()), (1, (0, 1, 2, 3)), (2, (0, 2, 3))) { + let from-node = "made0-" + str(from) + for to in tos { + line("made0-" + str(from), "made1-" + str(to), ..arrow-style) + } + } + + // Layer 2 -> 3 + for (from, tos) in ((0, (1, 2)), (1, (0, 1, 2, 3)), (2, (1, 2)), (3, (1, 2))) { + for to in tos { + line("made1-" + str(from), "made2-" + str(to), ..arrow-style) + } + } + + // Layer 3 -> 4 + for (from, tos) in ((0, (0, 2)), (1, (0,)), (2, (0,)), (3, (0, 2))) { + for to in tos { + line("made2-" + str(from), "made3-" + str(to), ..arrow-style) + } + } + + // Add input and output labels + for i in range(3) { + content((rel: (0, -0.6), to: "fcnn0-" + str(i)), $x_#i$) + content((rel: (0, 0.6), to: "fcnn3-" + str(i)), $hat(x)_#i$) + content((rel: (0, -0.6), to: "made0-" + str(i)), $x_#i$) + } + + // Add MADE output labels + content((rel: (0, 0.6), to: "made3-0"), $p(x_3|x_2)$) + content((rel: (0, 0.6), to: "made3-1"), $p(x_2)$) + content((rel: (-.2, 0.6), to: "made3-2"), $p(x_1|x_2,x_3)$) + + // Add bottom labels with vertical alignment and larger font + let bottom-y = -2 + let label-size = 1.5em + content((fcnn-x, bottom-y), text(weight: "bold", size: label-size)[autoencoder]) + content((mask-x - 2, bottom-y), text(weight: "bold", size: label-size)[$times$]) + content((mask-x, bottom-y), text(weight: "bold", size: label-size)[masks]) + content((mask-x + 2, bottom-y), text(weight: "bold", size: label-size)[$arrow.r$]) + content((made-x, bottom-y), text(weight: "bold", size: label-size)[MADE]) +}) diff --git a/readme.md b/readme.md index f2cbb351..c29ac610 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@

- 111 Scientific Diagrams + 112 Scientific Diagrams

@@ -20,120 +20,120 @@ Have a TikZ/Cetz diagram you'd like to share? [Submit a PR](https://github.com/j ## Images -|                        |                        | -| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | -| [`autoencoder`](https://janosh.github.io/diagrams/autoencoder)  [![LaTeX][latex-logo]](assets/autoencoder/autoencoder.tex) [![Typst][typst-logo]](assets/autoencoder/autoencoder.typ) | [`basis-plus-lattice`](https://janosh.github.io/diagrams/basis-plus-lattice)  [![LaTeX][latex-logo]](assets/basis-plus-lattice/basis-plus-lattice.tex) [![Typst][typst-logo]](assets/basis-plus-lattice/basis-plus-lattice.typ) | -| ![`autoencoder.png`](assets/autoencoder/autoencoder.png) | ![`basis-plus-lattice.png`](assets/basis-plus-lattice/basis-plus-lattice.png) | -| [`bloch-sphere`](https://janosh.github.io/diagrams/bloch-sphere)  [![LaTeX][latex-logo]](assets/bloch-sphere/bloch-sphere.tex) [![Typst][typst-logo]](assets/bloch-sphere/bloch-sphere.typ) | [`bose-einstein-distribution-3d`](https://janosh.github.io/diagrams/bose-einstein-distribution-3d)  [![LaTeX][latex-logo]](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.tex) | -| ![`bloch-sphere.png`](assets/bloch-sphere/bloch-sphere.png) | ![`bose-einstein-distribution-3d.png`](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.png) | -| [`bose-einstein-distribution`](https://janosh.github.io/diagrams/bose-einstein-distribution)  [![LaTeX][latex-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.tex) [![Typst][typst-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.typ) | [`branch-and-bound`](https://janosh.github.io/diagrams/branch-and-bound)  [![LaTeX][latex-logo]](assets/branch-and-bound/branch-and-bound.tex) [![Typst][typst-logo]](assets/branch-and-bound/branch-and-bound.typ) | -| ![`bose-einstein-distribution.png`](assets/bose-einstein-distribution/bose-einstein-distribution.png) | ![`branch-and-bound.png`](assets/branch-and-bound/branch-and-bound.png) | -| [`branch-cuts-1`](https://janosh.github.io/diagrams/branch-cuts-1)  [![LaTeX][latex-logo]](assets/branch-cuts-1/branch-cuts-1.tex) [![Typst][typst-logo]](assets/branch-cuts-1/branch-cuts-1.typ) | [`branch-cuts-2`](https://janosh.github.io/diagrams/branch-cuts-2)  [![LaTeX][latex-logo]](assets/branch-cuts-2/branch-cuts-2.tex) | -| ![`branch-cuts-1.png`](assets/branch-cuts-1/branch-cuts-1.png) | ![`branch-cuts-2.png`](assets/branch-cuts-2/branch-cuts-2.png) | -| [`change-of-variables`](https://janosh.github.io/diagrams/change-of-variables)  [![LaTeX][latex-logo]](assets/change-of-variables/change-of-variables.tex) [![Typst][typst-logo]](assets/change-of-variables/change-of-variables.typ) | [`closed-string-topologies`](https://janosh.github.io/diagrams/closed-string-topologies)  [![LaTeX][latex-logo]](assets/closed-string-topologies/closed-string-topologies.tex) | -| ![`change-of-variables.png`](assets/change-of-variables/change-of-variables.png) | ![`closed-string-topologies.png`](assets/closed-string-topologies/closed-string-topologies.png) | -| [`complex-sign-function`](https://janosh.github.io/diagrams/complex-sign-function)  [![LaTeX][latex-logo]](assets/complex-sign-function/complex-sign-function.tex) | [`complex-sign-plane`](https://janosh.github.io/diagrams/complex-sign-plane)  [![LaTeX][latex-logo]](assets/complex-sign-plane/complex-sign-plane.tex) [![Typst][typst-logo]](assets/complex-sign-plane/complex-sign-plane.typ) | -| ![`complex-sign-function.png`](assets/complex-sign-function/complex-sign-function.png) | ![`complex-sign-plane.png`](assets/complex-sign-plane/complex-sign-plane.png) | -| [`concave-functions`](https://janosh.github.io/diagrams/concave-functions)  [![LaTeX][latex-logo]](assets/concave-functions/concave-functions.tex) [![Typst][typst-logo]](assets/concave-functions/concave-functions.typ) | [`conv2d`](https://janosh.github.io/diagrams/conv2d)  [![LaTeX][latex-logo]](assets/conv2d/conv2d.tex) [![Typst][typst-logo]](assets/conv2d/conv2d.typ) | -| ![`concave-functions.png`](assets/concave-functions/concave-functions.png) | ![`conv2d.png`](assets/conv2d/conv2d.png) | -| [`convex-functions`](https://janosh.github.io/diagrams/convex-functions)  [![LaTeX][latex-logo]](assets/convex-functions/convex-functions.tex) [![Typst][typst-logo]](assets/convex-functions/convex-functions.typ) | [`convex-hull-of-stability`](https://janosh.github.io/diagrams/convex-hull-of-stability)  [![LaTeX][latex-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.tex) [![Typst][typst-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.typ) | -| ![`convex-functions.png`](assets/convex-functions/convex-functions.png) | ![`convex-hull-of-stability.png`](assets/convex-hull-of-stability/convex-hull-of-stability.png) | -| [`critical-temperature`](https://janosh.github.io/diagrams/critical-temperature)  [![LaTeX][latex-logo]](assets/critical-temperature/critical-temperature.tex) | [`cylinder-to-plane`](https://janosh.github.io/diagrams/cylinder-to-plane)  [![LaTeX][latex-logo]](assets/cylinder-to-plane/cylinder-to-plane.tex) | -| ![`critical-temperature.png`](assets/critical-temperature/critical-temperature.png) | ![`cylinder-to-plane.png`](assets/cylinder-to-plane/cylinder-to-plane.png) | -| [`detailed-balance`](https://janosh.github.io/diagrams/detailed-balance)  [![LaTeX][latex-logo]](assets/detailed-balance/detailed-balance.tex) [![Typst][typst-logo]](assets/detailed-balance/detailed-balance.typ) | [`dft-choices`](https://janosh.github.io/diagrams/dft-choices)  [![LaTeX][latex-logo]](assets/dft-choices/dft-choices.tex) | -| ![`detailed-balance.png`](assets/detailed-balance/detailed-balance.png) | ![`dft-choices.png`](assets/dft-choices/dft-choices.png) | -| [`dft-mlff-cff-speed-accuracy-transfer`](https://janosh.github.io/diagrams/dft-mlff-cff-speed-accuracy-transfer)  [![LaTeX][latex-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.tex) [![Typst][typst-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.typ) | [`diagrams`](https://janosh.github.io/diagrams/diagrams)  [![LaTeX][latex-logo]](assets/diagrams/diagrams.tex) | -| ![`dft-mlff-cff-speed-accuracy-transfer.png`](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.png) | ![`diagrams.png`](assets/diagrams/diagrams.png) | -| [`disk-to-plane`](https://janosh.github.io/diagrams/disk-to-plane)  [![LaTeX][latex-logo]](assets/disk-to-plane/disk-to-plane.tex) | [`divergence`](https://janosh.github.io/diagrams/divergence)  [![LaTeX][latex-logo]](assets/divergence/divergence.tex) | -| ![`disk-to-plane.png`](assets/disk-to-plane/disk-to-plane.png) | ![`divergence.png`](assets/divergence/divergence.png) | -| [`dropout`](https://janosh.github.io/diagrams/dropout)  [![LaTeX][latex-logo]](assets/dropout/dropout.tex) [![Typst][typst-logo]](assets/dropout/dropout.typ) | [`energy-distribution-functions`](https://janosh.github.io/diagrams/energy-distribution-functions)  [![LaTeX][latex-logo]](assets/energy-distribution-functions/energy-distribution-functions.tex) [![Typst][typst-logo]](assets/energy-distribution-functions/energy-distribution-functions.typ) | -| ![`dropout.png`](assets/dropout/dropout.png) | ![`energy-distribution-functions.png`](assets/energy-distribution-functions/energy-distribution-functions.png) | -| [`ergodic`](https://janosh.github.io/diagrams/ergodic)  [![LaTeX][latex-logo]](assets/ergodic/ergodic.tex) [![Typst][typst-logo]](assets/ergodic/ergodic.typ) | [`euler-angles`](https://janosh.github.io/diagrams/euler-angles)  [![LaTeX][latex-logo]](assets/euler-angles/euler-angles.tex) | -| ![`ergodic.png`](assets/ergodic/ergodic.png) | ![`euler-angles.png`](assets/euler-angles/euler-angles.png) | -| [`fermi-dirac-vs-temp`](https://janosh.github.io/diagrams/fermi-dirac-vs-temp)  [![LaTeX][latex-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.tex) [![Typst][typst-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.typ) | [`ferroelectric-response`](https://janosh.github.io/diagrams/ferroelectric-response)  [![LaTeX][latex-logo]](assets/ferroelectric-response/ferroelectric-response.tex) [![Typst][typst-logo]](assets/ferroelectric-response/ferroelectric-response.typ) | -| ![`fermi-dirac-vs-temp.png`](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.png) | ![`ferroelectric-response.png`](assets/ferroelectric-response/ferroelectric-response.png) | -| [`feynman-1`](https://janosh.github.io/diagrams/feynman-1)  [![LaTeX][latex-logo]](assets/feynman-1/feynman-1.tex) | [`feynman-2`](https://janosh.github.io/diagrams/feynman-2)  [![LaTeX][latex-logo]](assets/feynman-2/feynman-2.tex) | -| ![`feynman-1.png`](assets/feynman-1/feynman-1.png) | ![`feynman-2.png`](assets/feynman-2/feynman-2.png) | -| [`feynman-3`](https://janosh.github.io/diagrams/feynman-3)  [![LaTeX][latex-logo]](assets/feynman-3/feynman-3.tex) | [`feynman-4`](https://janosh.github.io/diagrams/feynman-4)  [![LaTeX][latex-logo]](assets/feynman-4/feynman-4.tex) | -| ![`feynman-3.png`](assets/feynman-3/feynman-3.png) | ![`feynman-4.png`](assets/feynman-4/feynman-4.png) | -| [`feynman-diagram-loop`](https://janosh.github.io/diagrams/feynman-diagram-loop)  [![LaTeX][latex-logo]](assets/feynman-diagram-loop/feynman-diagram-loop.tex) | [`feynman-diagram-loops`](https://janosh.github.io/diagrams/feynman-diagram-loops)  [![LaTeX][latex-logo]](assets/feynman-diagram-loops/feynman-diagram-loops.tex) | -| ![`feynman-diagram-loop.png`](assets/feynman-diagram-loop/feynman-diagram-loop.png) | ![`feynman-diagram-loops.png`](assets/feynman-diagram-loops/feynman-diagram-loops.png) | -| [`feynman-diagram-one-point`](https://janosh.github.io/diagrams/feynman-diagram-one-point)  [![LaTeX][latex-logo]](assets/feynman-diagram-one-point/feynman-diagram-one-point.tex) | [`feynman-diagram-propagator-loop`](https://janosh.github.io/diagrams/feynman-diagram-propagator-loop)  [![LaTeX][latex-logo]](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.tex) | -| ![`feynman-diagram-one-point.png`](assets/feynman-diagram-one-point/feynman-diagram-one-point.png) | ![`feynman-diagram-propagator-loop.png`](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.png) | -| [`fluctuations`](https://janosh.github.io/diagrams/fluctuations)  [![LaTeX][latex-logo]](assets/fluctuations/fluctuations.tex) | [`four-vs-of-data`](https://janosh.github.io/diagrams/four-vs-of-data)  [![LaTeX][latex-logo]](assets/four-vs-of-data/four-vs-of-data.tex) [![Typst][typst-logo]](assets/four-vs-of-data/four-vs-of-data.typ) | -| ![`fluctuations.png`](assets/fluctuations/fluctuations.png) | ![`four-vs-of-data.png`](assets/four-vs-of-data/four-vs-of-data.png) | -| [`generative-adversarial-network`](https://janosh.github.io/diagrams/generative-adversarial-network)  [![LaTeX][latex-logo]](assets/generative-adversarial-network/generative-adversarial-network.tex) | [`geometric-bayes`](https://janosh.github.io/diagrams/geometric-bayes)  [![LaTeX][latex-logo]](assets/geometric-bayes/geometric-bayes.tex) [![Typst][typst-logo]](assets/geometric-bayes/geometric-bayes.typ) | -| ![`generative-adversarial-network.png`](assets/generative-adversarial-network/generative-adversarial-network.png) | ![`geometric-bayes.png`](assets/geometric-bayes/geometric-bayes.png) | -| [`graph-isomorphism`](https://janosh.github.io/diagrams/graph-isomorphism)  [![LaTeX][latex-logo]](assets/graph-isomorphism/graph-isomorphism.tex) [![Typst][typst-logo]](assets/graph-isomorphism/graph-isomorphism.typ) | [`gravitons`](https://janosh.github.io/diagrams/gravitons)  [![LaTeX][latex-logo]](assets/gravitons/gravitons.tex) | -| ![`graph-isomorphism.png`](assets/graph-isomorphism/graph-isomorphism.png) | ![`gravitons.png`](assets/gravitons/gravitons.png) | -| [`harmonic-oscillator-energy-vs-freq`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-freq)  [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.typ) | [`harmonic-oscillator-energy-vs-inv-temp`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-inv-temp)  [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.typ) | -| ![`harmonic-oscillator-energy-vs-freq.png`](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.png) | ![`harmonic-oscillator-energy-vs-inv-temp.png`](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.png) | -| [`heatmap`](https://janosh.github.io/diagrams/heatmap)  [![LaTeX][latex-logo]](assets/heatmap/heatmap.tex) [![Typst][typst-logo]](assets/heatmap/heatmap.typ) | [`higgs-potential`](https://janosh.github.io/diagrams/higgs-potential)  [![LaTeX][latex-logo]](assets/higgs-potential/higgs-potential.tex) | -| ![`heatmap.png`](assets/heatmap/heatmap.png) | ![`higgs-potential.png`](assets/higgs-potential/higgs-potential.png) | -| [`high-entropy-alloy`](https://janosh.github.io/diagrams/high-entropy-alloy)  [![LaTeX][latex-logo]](assets/high-entropy-alloy/high-entropy-alloy.tex) | [`isotherms`](https://janosh.github.io/diagrams/isotherms)  [![LaTeX][latex-logo]](assets/isotherms/isotherms.tex) [![Typst][typst-logo]](assets/isotherms/isotherms.typ) | -| ![`high-entropy-alloy.png`](assets/high-entropy-alloy/high-entropy-alloy.png) | ![`isotherms.png`](assets/isotherms/isotherms.png) | -| [`jensens-inequality`](https://janosh.github.io/diagrams/jensens-inequality)  [![LaTeX][latex-logo]](assets/jensens-inequality/jensens-inequality.tex) [![Typst][typst-logo]](assets/jensens-inequality/jensens-inequality.typ) | [`k-space`](https://janosh.github.io/diagrams/k-space)  [![LaTeX][latex-logo]](assets/k-space/k-space.tex) [![Typst][typst-logo]](assets/k-space/k-space.typ) | -| ![`jensens-inequality.png`](assets/jensens-inequality/jensens-inequality.png) | ![`k-space.png`](assets/k-space/k-space.png) | -| [`kohn-sham-cycle`](https://janosh.github.io/diagrams/kohn-sham-cycle)  [![LaTeX][latex-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.tex) [![Typst][typst-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.typ) | [`light`](https://janosh.github.io/diagrams/light)  [![Typst][typst-logo]](assets/light/light.typ) | -| ![`kohn-sham-cycle.png`](assets/kohn-sham-cycle/kohn-sham-cycle.png) | ![`light.png`](assets/light/light.png) | -| [`m-theory`](https://janosh.github.io/diagrams/m-theory)  [![LaTeX][latex-logo]](assets/m-theory/m-theory.tex) | [`made`](https://janosh.github.io/diagrams/made)  [![LaTeX][latex-logo]](assets/made/made.tex) | -| ![`m-theory.png`](assets/m-theory/m-theory.png) | ![`made.png`](assets/made/made.png) | -| [`maf`](https://janosh.github.io/diagrams/maf)  [![LaTeX][latex-logo]](assets/maf/maf.tex) | [`materials-informatics-challenges`](https://janosh.github.io/diagrams/materials-informatics-challenges)  [![LaTeX][latex-logo]](assets/materials-informatics-challenges/materials-informatics-challenges.tex) | -| ![`maf.png`](assets/maf/maf.png) | ![`materials-informatics-challenges.png`](assets/materials-informatics-challenges/materials-informatics-challenges.png) | -| [`materials-informatics`](https://janosh.github.io/diagrams/materials-informatics)  [![LaTeX][latex-logo]](assets/materials-informatics/materials-informatics.tex) | [`matsubara-contour-1`](https://janosh.github.io/diagrams/matsubara-contour-1)  [![LaTeX][latex-logo]](assets/matsubara-contour-1/matsubara-contour-1.tex) | -| ![`materials-informatics.png`](assets/materials-informatics/materials-informatics.png) | ![`matsubara-contour-1.png`](assets/matsubara-contour-1/matsubara-contour-1.png) | -| [`matsubara-contour-2`](https://janosh.github.io/diagrams/matsubara-contour-2)  [![LaTeX][latex-logo]](assets/matsubara-contour-2/matsubara-contour-2.tex) | [`matsubara-contour-3`](https://janosh.github.io/diagrams/matsubara-contour-3)  [![LaTeX][latex-logo]](assets/matsubara-contour-3/matsubara-contour-3.tex) | -| ![`matsubara-contour-2.png`](assets/matsubara-contour-2/matsubara-contour-2.png) | ![`matsubara-contour-3.png`](assets/matsubara-contour-3/matsubara-contour-3.png) | -| [`matsubara-contour-4`](https://janosh.github.io/diagrams/matsubara-contour-4)  [![LaTeX][latex-logo]](assets/matsubara-contour-4/matsubara-contour-4.tex) | [`matsubara-contour-5`](https://janosh.github.io/diagrams/matsubara-contour-5)  [![LaTeX][latex-logo]](assets/matsubara-contour-5/matsubara-contour-5.tex) | -| ![`matsubara-contour-4.png`](assets/matsubara-contour-4/matsubara-contour-4.png) | ![`matsubara-contour-5.png`](assets/matsubara-contour-5/matsubara-contour-5.png) | -| [`matsubara-contour-deformation`](https://janosh.github.io/diagrams/matsubara-contour-deformation)  [![LaTeX][latex-logo]](assets/matsubara-contour-deformation/matsubara-contour-deformation.tex) | [`maxwell-boltzmann-distribution`](https://janosh.github.io/diagrams/maxwell-boltzmann-distribution)  [![LaTeX][latex-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.tex) [![Typst][typst-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.typ) | -| ![`matsubara-contour-deformation.png`](assets/matsubara-contour-deformation/matsubara-contour-deformation.png) | ![`maxwell-boltzmann-distribution.png`](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.png) | -| [`mexican-hat`](https://janosh.github.io/diagrams/mexican-hat)  [![LaTeX][latex-logo]](assets/mexican-hat/mexican-hat.tex) | [`ml-activations`](https://janosh.github.io/diagrams/ml-activations)  [![Typst][typst-logo]](assets/ml-activations/ml-activations.typ) | -| ![`mexican-hat.png`](assets/mexican-hat/mexican-hat.png) | ![`ml-activations.png`](assets/ml-activations/ml-activations.png) | -| [`momentum-shell`](https://janosh.github.io/diagrams/momentum-shell)  [![LaTeX][latex-logo]](assets/momentum-shell/momentum-shell.tex) [![Typst][typst-logo]](assets/momentum-shell/momentum-shell.typ) | [`mosfet`](https://janosh.github.io/diagrams/mosfet)  [![LaTeX][latex-logo]](assets/mosfet/mosfet.tex) [![Typst][typst-logo]](assets/mosfet/mosfet.typ) | -| ![`momentum-shell.png`](assets/momentum-shell/momentum-shell.png) | ![`mosfet.png`](assets/mosfet/mosfet.png) | -| [`nf-coupling-layer`](https://janosh.github.io/diagrams/nf-coupling-layer)  [![LaTeX][latex-logo]](assets/nf-coupling-layer/nf-coupling-layer.tex) [![Typst][typst-logo]](assets/nf-coupling-layer/nf-coupling-layer.typ) | [`normalizing-flow`](https://janosh.github.io/diagrams/normalizing-flow)  [![LaTeX][latex-logo]](assets/normalizing-flow/normalizing-flow.tex) [![Typst][typst-logo]](assets/normalizing-flow/normalizing-flow.typ) | -| ![`nf-coupling-layer.png`](assets/nf-coupling-layer/nf-coupling-layer.png) | ![`normalizing-flow.png`](assets/normalizing-flow/normalizing-flow.png) | -| [`open-string-topologies`](https://janosh.github.io/diagrams/open-string-topologies)  [![LaTeX][latex-logo]](assets/open-string-topologies/open-string-topologies.tex) | [`operator-orderings`](https://janosh.github.io/diagrams/operator-orderings)  [![LaTeX][latex-logo]](assets/operator-orderings/operator-orderings.tex) | -| ![`open-string-topologies.png`](assets/open-string-topologies/open-string-topologies.png) | ![`operator-orderings.png`](assets/operator-orderings/operator-orderings.png) | -| [`organic-molecule`](https://janosh.github.io/diagrams/organic-molecule)  [![LaTeX][latex-logo]](assets/organic-molecule/organic-molecule.tex) | [`otto-cycle`](https://janosh.github.io/diagrams/otto-cycle)  [![LaTeX][latex-logo]](assets/otto-cycle/otto-cycle.tex) [![Typst][typst-logo]](assets/otto-cycle/otto-cycle.typ) | -| ![`organic-molecule.png`](assets/organic-molecule/organic-molecule.png) | ![`otto-cycle.png`](assets/otto-cycle/otto-cycle.png) | -| [`periodic-table`](https://janosh.github.io/diagrams/periodic-table)  [![LaTeX][latex-logo]](assets/periodic-table/periodic-table.tex) [![Typst][typst-logo]](assets/periodic-table/periodic-table.typ) | [`physics-mindmap`](https://janosh.github.io/diagrams/physics-mindmap)  [![LaTeX][latex-logo]](assets/physics-mindmap/physics-mindmap.tex) | -| ![`periodic-table.png`](assets/periodic-table/periodic-table.png) | ![`physics-mindmap.png`](assets/physics-mindmap/physics-mindmap.png) | -| [`plane-to-torus`](https://janosh.github.io/diagrams/plane-to-torus)  [![LaTeX][latex-logo]](assets/plane-to-torus/plane-to-torus.tex) | [`plate-capacitor`](https://janosh.github.io/diagrams/plate-capacitor)  [![LaTeX][latex-logo]](assets/plate-capacitor/plate-capacitor.tex) [![Typst][typst-logo]](assets/plate-capacitor/plate-capacitor.typ) | -| ![`plane-to-torus.png`](assets/plane-to-torus/plane-to-torus.png) | ![`plate-capacitor.png`](assets/plate-capacitor/plate-capacitor.png) | -| [`potential-triangle`](https://janosh.github.io/diagrams/potential-triangle)  [![LaTeX][latex-logo]](assets/potential-triangle/potential-triangle.tex) | [`propagator-fluctuations`](https://janosh.github.io/diagrams/propagator-fluctuations)  [![LaTeX][latex-logo]](assets/propagator-fluctuations/propagator-fluctuations.tex) | -| ![`potential-triangle.png`](assets/potential-triangle/potential-triangle.png) | ![`propagator-fluctuations.png`](assets/propagator-fluctuations/propagator-fluctuations.png) | -| [`propagators`](https://janosh.github.io/diagrams/propagators)  [![LaTeX][latex-logo]](assets/propagators/propagators.tex) | [`qft-propagator-poles`](https://janosh.github.io/diagrams/qft-propagator-poles)  [![LaTeX][latex-logo]](assets/qft-propagator-poles/qft-propagator-poles.tex) [![Typst][typst-logo]](assets/qft-propagator-poles/qft-propagator-poles.typ) | -| ![`propagators.png`](assets/propagators/propagators.png) | ![`qft-propagator-poles.png`](assets/qft-propagator-poles/qft-propagator-poles.png) | -| [`qm-cost-vs-acc`](https://janosh.github.io/diagrams/qm-cost-vs-acc)  [![LaTeX][latex-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.tex) [![Typst][typst-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.typ) | [`random-forest`](https://janosh.github.io/diagrams/random-forest)  [![LaTeX][latex-logo]](assets/random-forest/random-forest.tex) | -| ![`qm-cost-vs-acc.png`](assets/qm-cost-vs-acc/qm-cost-vs-acc.png) | ![`random-forest.png`](assets/random-forest/random-forest.png) | -| [`regular-vs-bayes-nn`](https://janosh.github.io/diagrams/regular-vs-bayes-nn)  [![LaTeX][latex-logo]](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.tex) | [`rnvp`](https://janosh.github.io/diagrams/rnvp)  [![LaTeX][latex-logo]](assets/rnvp/rnvp.tex) | -| ![`regular-vs-bayes-nn.png`](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.png) | ![`rnvp.png`](assets/rnvp/rnvp.png) | -| [`roost-update`](https://janosh.github.io/diagrams/roost-update)  [![LaTeX][latex-logo]](assets/roost-update/roost-update.tex) | [`sabatier-principle`](https://janosh.github.io/diagrams/sabatier-principle)  [![LaTeX][latex-logo]](assets/sabatier-principle/sabatier-principle.tex) [![Typst][typst-logo]](assets/sabatier-principle/sabatier-principle.typ) | -| ![`roost-update.png`](assets/roost-update/roost-update.png) | ![`sabatier-principle.png`](assets/sabatier-principle/sabatier-principle.png) | -| [`saddle-point`](https://janosh.github.io/diagrams/saddle-point)  [![LaTeX][latex-logo]](assets/saddle-point/saddle-point.tex) | [`seebeck-effect`](https://janosh.github.io/diagrams/seebeck-effect)  [![LaTeX][latex-logo]](assets/seebeck-effect/seebeck-effect.tex) | -| ![`saddle-point.png`](assets/saddle-point/saddle-point.png) | ![`seebeck-effect.png`](assets/seebeck-effect/seebeck-effect.png) | -| [`self-attention`](https://janosh.github.io/diagrams/self-attention)  [![LaTeX][latex-logo]](assets/self-attention/self-attention.tex) [![Typst][typst-logo]](assets/self-attention/self-attention.typ) | [`single-head-attention`](https://janosh.github.io/diagrams/single-head-attention)  [![LaTeX][latex-logo]](assets/single-head-attention/single-head-attention.tex) [![Typst][typst-logo]](assets/single-head-attention/single-head-attention.typ) | -| ![`self-attention.png`](assets/self-attention/self-attention.png) | ![`single-head-attention.png`](assets/single-head-attention/single-head-attention.png) | -| [`skip-connection`](https://janosh.github.io/diagrams/skip-connection)  [![LaTeX][latex-logo]](assets/skip-connection/skip-connection.tex) [![Typst][typst-logo]](assets/skip-connection/skip-connection.typ) | [`spontaneous-magnetization`](https://janosh.github.io/diagrams/spontaneous-magnetization)  [![LaTeX][latex-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.tex) [![Typst][typst-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.typ) | -| ![`skip-connection.png`](assets/skip-connection/skip-connection.png) | ![`spontaneous-magnetization.png`](assets/spontaneous-magnetization/spontaneous-magnetization.png) | -| [`tanh`](https://janosh.github.io/diagrams/tanh)  [![LaTeX][latex-logo]](assets/tanh/tanh.tex) | [`theory-space`](https://janosh.github.io/diagrams/theory-space)  [![LaTeX][latex-logo]](assets/theory-space/theory-space.tex) | -| ![`tanh.png`](assets/tanh/tanh.png) | ![`theory-space.png`](assets/theory-space/theory-space.png) | -| [`thermo-ensemble-trafos`](https://janosh.github.io/diagrams/thermo-ensemble-trafos)  [![LaTeX][latex-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.tex) [![Typst][typst-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.typ) | [`thomson-scattering`](https://janosh.github.io/diagrams/thomson-scattering)  [![LaTeX][latex-logo]](assets/thomson-scattering/thomson-scattering.tex) | -| ![`thermo-ensemble-trafos.png`](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.png) | ![`thomson-scattering.png`](assets/thomson-scattering/thomson-scattering.png) | -| [`tori`](https://janosh.github.io/diagrams/tori)  [![LaTeX][latex-logo]](assets/tori/tori.tex) | [`torus-fundamental-domain`](https://janosh.github.io/diagrams/torus-fundamental-domain)  [![LaTeX][latex-logo]](assets/torus-fundamental-domain/torus-fundamental-domain.tex) | -| ![`tori.png`](assets/tori/tori.png) | ![`torus-fundamental-domain.png`](assets/torus-fundamental-domain/torus-fundamental-domain.png) | -| [`torus`](https://janosh.github.io/diagrams/torus)  [![LaTeX][latex-logo]](assets/torus/torus.tex) | [`two-point-no-cutoff`](https://janosh.github.io/diagrams/two-point-no-cutoff)  [![LaTeX][latex-logo]](assets/two-point-no-cutoff/two-point-no-cutoff.tex) | -| ![`torus.png`](assets/torus/torus.png) | ![`two-point-no-cutoff.png`](assets/two-point-no-cutoff/two-point-no-cutoff.png) | -| [`two-point`](https://janosh.github.io/diagrams/two-point)  [![LaTeX][latex-logo]](assets/two-point/two-point.tex) | [`unregularized-propagator-diagrams`](https://janosh.github.io/diagrams/unregularized-propagator-diagrams)  [![LaTeX][latex-logo]](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.tex) | -| ![`two-point.png`](assets/two-point/two-point.png) | ![`unregularized-propagator-diagrams.png`](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.png) | -| [`variational-autoencoder`](https://janosh.github.io/diagrams/variational-autoencoder)  [![LaTeX][latex-logo]](assets/variational-autoencoder/variational-autoencoder.tex) [![Typst][typst-logo]](assets/variational-autoencoder/variational-autoencoder.typ) | [`wall`](https://janosh.github.io/diagrams/wall)  [![LaTeX][latex-logo]](assets/wall/wall.tex) | -| ![`variational-autoencoder.png`](assets/variational-autoencoder/variational-autoencoder.png) | ![`wall.png`](assets/wall/wall.png) | -| [`wetterich-equation`](https://janosh.github.io/diagrams/wetterich-equation)  [![LaTeX][latex-logo]](assets/wetterich-equation/wetterich-equation.tex) | [`wyckoff-positions`](https://janosh.github.io/diagrams/wyckoff-positions)  [![LaTeX][latex-logo]](assets/wyckoff-positions/wyckoff-positions.tex) [![Typst][typst-logo]](assets/wyckoff-positions/wyckoff-positions.typ) | -| ![`wetterich-equation.png`](assets/wetterich-equation/wetterich-equation.png) | ![`wyckoff-positions.png`](assets/wyckoff-positions/wyckoff-positions.png) | -| [`zt-vs-n`](https://janosh.github.io/diagrams/zt-vs-n)  [![LaTeX][latex-logo]](assets/zt-vs-n/zt-vs-n.tex) [![Typst][typst-logo]](assets/zt-vs-n/zt-vs-n.typ) | | -| ![`zt-vs-n.png`](assets/zt-vs-n/zt-vs-n.png) | | +|                        |                        | +| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | +| [`2d-convolution`](https://janosh.github.io/diagrams/2d-convolution)  [![LaTeX][latex-logo]](assets/2d-convolution/2d-convolution.tex) [![Typst][typst-logo]](assets/2d-convolution/2d-convolution.typ) | [`autoencoder`](https://janosh.github.io/diagrams/autoencoder)  [![LaTeX][latex-logo]](assets/autoencoder/autoencoder.tex) [![Typst][typst-logo]](assets/autoencoder/autoencoder.typ) | +| ![`2d-convolution.png`](assets/2d-convolution/2d-convolution.png) | ![`autoencoder.png`](assets/autoencoder/autoencoder.png) | +| [`basis-plus-lattice`](https://janosh.github.io/diagrams/basis-plus-lattice)  [![LaTeX][latex-logo]](assets/basis-plus-lattice/basis-plus-lattice.tex) [![Typst][typst-logo]](assets/basis-plus-lattice/basis-plus-lattice.typ) | [`bloch-sphere`](https://janosh.github.io/diagrams/bloch-sphere)  [![LaTeX][latex-logo]](assets/bloch-sphere/bloch-sphere.tex) [![Typst][typst-logo]](assets/bloch-sphere/bloch-sphere.typ) | +| ![`basis-plus-lattice.png`](assets/basis-plus-lattice/basis-plus-lattice.png) | ![`bloch-sphere.png`](assets/bloch-sphere/bloch-sphere.png) | +| [`bose-einstein-distribution-3d`](https://janosh.github.io/diagrams/bose-einstein-distribution-3d)  [![LaTeX][latex-logo]](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.tex) | [`bose-einstein-distribution`](https://janosh.github.io/diagrams/bose-einstein-distribution)  [![LaTeX][latex-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.tex) [![Typst][typst-logo]](assets/bose-einstein-distribution/bose-einstein-distribution.typ) | +| ![`bose-einstein-distribution-3d.png`](assets/bose-einstein-distribution-3d/bose-einstein-distribution-3d.png) | ![`bose-einstein-distribution.png`](assets/bose-einstein-distribution/bose-einstein-distribution.png) | +| [`branch-and-bound`](https://janosh.github.io/diagrams/branch-and-bound)  [![LaTeX][latex-logo]](assets/branch-and-bound/branch-and-bound.tex) [![Typst][typst-logo]](assets/branch-and-bound/branch-and-bound.typ) | [`branch-cuts-1`](https://janosh.github.io/diagrams/branch-cuts-1)  [![LaTeX][latex-logo]](assets/branch-cuts-1/branch-cuts-1.tex) [![Typst][typst-logo]](assets/branch-cuts-1/branch-cuts-1.typ) | +| ![`branch-and-bound.png`](assets/branch-and-bound/branch-and-bound.png) | ![`branch-cuts-1.png`](assets/branch-cuts-1/branch-cuts-1.png) | +| [`branch-cuts-2`](https://janosh.github.io/diagrams/branch-cuts-2)  [![LaTeX][latex-logo]](assets/branch-cuts-2/branch-cuts-2.tex) | [`change-of-variables`](https://janosh.github.io/diagrams/change-of-variables)  [![LaTeX][latex-logo]](assets/change-of-variables/change-of-variables.tex) [![Typst][typst-logo]](assets/change-of-variables/change-of-variables.typ) | +| ![`branch-cuts-2.png`](assets/branch-cuts-2/branch-cuts-2.png) | ![`change-of-variables.png`](assets/change-of-variables/change-of-variables.png) | +| [`closed-string-topologies`](https://janosh.github.io/diagrams/closed-string-topologies)  [![LaTeX][latex-logo]](assets/closed-string-topologies/closed-string-topologies.tex) | [`complex-sign-function`](https://janosh.github.io/diagrams/complex-sign-function)  [![LaTeX][latex-logo]](assets/complex-sign-function/complex-sign-function.tex) | +| ![`closed-string-topologies.png`](assets/closed-string-topologies/closed-string-topologies.png) | ![`complex-sign-function.png`](assets/complex-sign-function/complex-sign-function.png) | +| [`complex-sign-plane`](https://janosh.github.io/diagrams/complex-sign-plane)  [![LaTeX][latex-logo]](assets/complex-sign-plane/complex-sign-plane.tex) [![Typst][typst-logo]](assets/complex-sign-plane/complex-sign-plane.typ) | [`concave-functions`](https://janosh.github.io/diagrams/concave-functions)  [![LaTeX][latex-logo]](assets/concave-functions/concave-functions.tex) [![Typst][typst-logo]](assets/concave-functions/concave-functions.typ) | +| ![`complex-sign-plane.png`](assets/complex-sign-plane/complex-sign-plane.png) | ![`concave-functions.png`](assets/concave-functions/concave-functions.png) | +| [`convex-functions`](https://janosh.github.io/diagrams/convex-functions)  [![LaTeX][latex-logo]](assets/convex-functions/convex-functions.tex) [![Typst][typst-logo]](assets/convex-functions/convex-functions.typ) | [`convex-hull-of-stability`](https://janosh.github.io/diagrams/convex-hull-of-stability)  [![LaTeX][latex-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.tex) [![Typst][typst-logo]](assets/convex-hull-of-stability/convex-hull-of-stability.typ) | +| ![`convex-functions.png`](assets/convex-functions/convex-functions.png) | ![`convex-hull-of-stability.png`](assets/convex-hull-of-stability/convex-hull-of-stability.png) | +| [`critical-temperature`](https://janosh.github.io/diagrams/critical-temperature)  [![LaTeX][latex-logo]](assets/critical-temperature/critical-temperature.tex) | [`cylinder-to-plane`](https://janosh.github.io/diagrams/cylinder-to-plane)  [![LaTeX][latex-logo]](assets/cylinder-to-plane/cylinder-to-plane.tex) | +| ![`critical-temperature.png`](assets/critical-temperature/critical-temperature.png) | ![`cylinder-to-plane.png`](assets/cylinder-to-plane/cylinder-to-plane.png) | +| [`detailed-balance`](https://janosh.github.io/diagrams/detailed-balance)  [![LaTeX][latex-logo]](assets/detailed-balance/detailed-balance.tex) [![Typst][typst-logo]](assets/detailed-balance/detailed-balance.typ) | [`dft-choices`](https://janosh.github.io/diagrams/dft-choices)  [![LaTeX][latex-logo]](assets/dft-choices/dft-choices.tex) | +| ![`detailed-balance.png`](assets/detailed-balance/detailed-balance.png) | ![`dft-choices.png`](assets/dft-choices/dft-choices.png) | +| [`dft-mlff-cff-speed-accuracy-transfer`](https://janosh.github.io/diagrams/dft-mlff-cff-speed-accuracy-transfer)  [![LaTeX][latex-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.tex) [![Typst][typst-logo]](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.typ) | [`diagrams`](https://janosh.github.io/diagrams/diagrams)  [![LaTeX][latex-logo]](assets/diagrams/diagrams.tex) | +| ![`dft-mlff-cff-speed-accuracy-transfer.png`](assets/dft-mlff-cff-speed-accuracy-transfer/dft-mlff-cff-speed-accuracy-transfer.png) | ![`diagrams.png`](assets/diagrams/diagrams.png) | +| [`disk-to-plane`](https://janosh.github.io/diagrams/disk-to-plane)  [![LaTeX][latex-logo]](assets/disk-to-plane/disk-to-plane.tex) | [`divergence`](https://janosh.github.io/diagrams/divergence)  [![LaTeX][latex-logo]](assets/divergence/divergence.tex) | +| ![`disk-to-plane.png`](assets/disk-to-plane/disk-to-plane.png) | ![`divergence.png`](assets/divergence/divergence.png) | +| [`dropout`](https://janosh.github.io/diagrams/dropout)  [![LaTeX][latex-logo]](assets/dropout/dropout.tex) [![Typst][typst-logo]](assets/dropout/dropout.typ) | [`energy-distribution-functions`](https://janosh.github.io/diagrams/energy-distribution-functions)  [![LaTeX][latex-logo]](assets/energy-distribution-functions/energy-distribution-functions.tex) [![Typst][typst-logo]](assets/energy-distribution-functions/energy-distribution-functions.typ) | +| ![`dropout.png`](assets/dropout/dropout.png) | ![`energy-distribution-functions.png`](assets/energy-distribution-functions/energy-distribution-functions.png) | +| [`ergodic`](https://janosh.github.io/diagrams/ergodic)  [![LaTeX][latex-logo]](assets/ergodic/ergodic.tex) [![Typst][typst-logo]](assets/ergodic/ergodic.typ) | [`euler-angles`](https://janosh.github.io/diagrams/euler-angles)  [![LaTeX][latex-logo]](assets/euler-angles/euler-angles.tex) | +| ![`ergodic.png`](assets/ergodic/ergodic.png) | ![`euler-angles.png`](assets/euler-angles/euler-angles.png) | +| [`fermi-dirac-vs-temp`](https://janosh.github.io/diagrams/fermi-dirac-vs-temp)  [![LaTeX][latex-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.tex) [![Typst][typst-logo]](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.typ) | [`ferroelectric-response`](https://janosh.github.io/diagrams/ferroelectric-response)  [![LaTeX][latex-logo]](assets/ferroelectric-response/ferroelectric-response.tex) [![Typst][typst-logo]](assets/ferroelectric-response/ferroelectric-response.typ) | +| ![`fermi-dirac-vs-temp.png`](assets/fermi-dirac-vs-temp/fermi-dirac-vs-temp.png) | ![`ferroelectric-response.png`](assets/ferroelectric-response/ferroelectric-response.png) | +| [`feynman-1`](https://janosh.github.io/diagrams/feynman-1)  [![LaTeX][latex-logo]](assets/feynman-1/feynman-1.tex) | [`feynman-2`](https://janosh.github.io/diagrams/feynman-2)  [![LaTeX][latex-logo]](assets/feynman-2/feynman-2.tex) | +| ![`feynman-1.png`](assets/feynman-1/feynman-1.png) | ![`feynman-2.png`](assets/feynman-2/feynman-2.png) | +| [`feynman-3`](https://janosh.github.io/diagrams/feynman-3)  [![LaTeX][latex-logo]](assets/feynman-3/feynman-3.tex) | [`feynman-4`](https://janosh.github.io/diagrams/feynman-4)  [![LaTeX][latex-logo]](assets/feynman-4/feynman-4.tex) | +| ![`feynman-3.png`](assets/feynman-3/feynman-3.png) | ![`feynman-4.png`](assets/feynman-4/feynman-4.png) | +| [`feynman-diagram-loop`](https://janosh.github.io/diagrams/feynman-diagram-loop)  [![LaTeX][latex-logo]](assets/feynman-diagram-loop/feynman-diagram-loop.tex) | [`feynman-diagram-loops`](https://janosh.github.io/diagrams/feynman-diagram-loops)  [![LaTeX][latex-logo]](assets/feynman-diagram-loops/feynman-diagram-loops.tex) | +| ![`feynman-diagram-loop.png`](assets/feynman-diagram-loop/feynman-diagram-loop.png) | ![`feynman-diagram-loops.png`](assets/feynman-diagram-loops/feynman-diagram-loops.png) | +| [`feynman-diagram-one-point`](https://janosh.github.io/diagrams/feynman-diagram-one-point)  [![LaTeX][latex-logo]](assets/feynman-diagram-one-point/feynman-diagram-one-point.tex) | [`feynman-diagram-propagator-loop`](https://janosh.github.io/diagrams/feynman-diagram-propagator-loop)  [![LaTeX][latex-logo]](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.tex) | +| ![`feynman-diagram-one-point.png`](assets/feynman-diagram-one-point/feynman-diagram-one-point.png) | ![`feynman-diagram-propagator-loop.png`](assets/feynman-diagram-propagator-loop/feynman-diagram-propagator-loop.png) | +| [`four-vs-of-data`](https://janosh.github.io/diagrams/four-vs-of-data)  [![LaTeX][latex-logo]](assets/four-vs-of-data/four-vs-of-data.tex) [![Typst][typst-logo]](assets/four-vs-of-data/four-vs-of-data.typ) | [`generative-adversarial-network`](https://janosh.github.io/diagrams/generative-adversarial-network)  [![LaTeX][latex-logo]](assets/generative-adversarial-network/generative-adversarial-network.tex) | +| ![`four-vs-of-data.png`](assets/four-vs-of-data/four-vs-of-data.png) | ![`generative-adversarial-network.png`](assets/generative-adversarial-network/generative-adversarial-network.png) | +| [`geometric-bayes`](https://janosh.github.io/diagrams/geometric-bayes)  [![LaTeX][latex-logo]](assets/geometric-bayes/geometric-bayes.tex) [![Typst][typst-logo]](assets/geometric-bayes/geometric-bayes.typ) | [`gnn-node-aggregation`](https://janosh.github.io/diagrams/gnn-node-aggregation)  [![Typst][typst-logo]](assets/gnn-node-aggregation/gnn-node-aggregation.typ) | +| ![`geometric-bayes.png`](assets/geometric-bayes/geometric-bayes.png) | ![`gnn-node-aggregation.png`](assets/gnn-node-aggregation/gnn-node-aggregation.png) | +| [`grand-canonical-occupation-fluctuations`](https://janosh.github.io/diagrams/grand-canonical-occupation-fluctuations)  [![LaTeX][latex-logo]](assets/grand-canonical-occupation-fluctuations/grand-canonical-occupation-fluctuations.tex) [![Typst][typst-logo]](assets/grand-canonical-occupation-fluctuations/grand-canonical-occupation-fluctuations.typ) | [`graph-isomorphism`](https://janosh.github.io/diagrams/graph-isomorphism)  [![LaTeX][latex-logo]](assets/graph-isomorphism/graph-isomorphism.tex) [![Typst][typst-logo]](assets/graph-isomorphism/graph-isomorphism.typ) | +| ![`grand-canonical-occupation-fluctuations.png`](assets/grand-canonical-occupation-fluctuations/grand-canonical-occupation-fluctuations.png) | ![`graph-isomorphism.png`](assets/graph-isomorphism/graph-isomorphism.png) | +| [`gravitons`](https://janosh.github.io/diagrams/gravitons)  [![LaTeX][latex-logo]](assets/gravitons/gravitons.tex) | [`harmonic-oscillator-energy-vs-freq`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-freq)  [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.typ) | +| ![`gravitons.png`](assets/gravitons/gravitons.png) | ![`harmonic-oscillator-energy-vs-freq.png`](assets/harmonic-oscillator-energy-vs-freq/harmonic-oscillator-energy-vs-freq.png) | +| [`harmonic-oscillator-energy-vs-inv-temp`](https://janosh.github.io/diagrams/harmonic-oscillator-energy-vs-inv-temp)  [![LaTeX][latex-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.tex) [![Typst][typst-logo]](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.typ) | [`heatmap`](https://janosh.github.io/diagrams/heatmap)  [![LaTeX][latex-logo]](assets/heatmap/heatmap.tex) [![Typst][typst-logo]](assets/heatmap/heatmap.typ) | +| ![`harmonic-oscillator-energy-vs-inv-temp.png`](assets/harmonic-oscillator-energy-vs-inv-temp/harmonic-oscillator-energy-vs-inv-temp.png) | ![`heatmap.png`](assets/heatmap/heatmap.png) | +| [`higgs-potential`](https://janosh.github.io/diagrams/higgs-potential)  [![LaTeX][latex-logo]](assets/higgs-potential/higgs-potential.tex) | [`high-entropy-alloy`](https://janosh.github.io/diagrams/high-entropy-alloy)  [![LaTeX][latex-logo]](assets/high-entropy-alloy/high-entropy-alloy.tex) | +| ![`higgs-potential.png`](assets/higgs-potential/higgs-potential.png) | ![`high-entropy-alloy.png`](assets/high-entropy-alloy/high-entropy-alloy.png) | +| [`isotherms`](https://janosh.github.io/diagrams/isotherms)  [![LaTeX][latex-logo]](assets/isotherms/isotherms.tex) [![Typst][typst-logo]](assets/isotherms/isotherms.typ) | [`jensens-inequality`](https://janosh.github.io/diagrams/jensens-inequality)  [![LaTeX][latex-logo]](assets/jensens-inequality/jensens-inequality.tex) [![Typst][typst-logo]](assets/jensens-inequality/jensens-inequality.typ) | +| ![`isotherms.png`](assets/isotherms/isotherms.png) | ![`jensens-inequality.png`](assets/jensens-inequality/jensens-inequality.png) | +| [`k-space`](https://janosh.github.io/diagrams/k-space)  [![LaTeX][latex-logo]](assets/k-space/k-space.tex) [![Typst][typst-logo]](assets/k-space/k-space.typ) | [`kohn-sham-cycle`](https://janosh.github.io/diagrams/kohn-sham-cycle)  [![LaTeX][latex-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.tex) [![Typst][typst-logo]](assets/kohn-sham-cycle/kohn-sham-cycle.typ) | +| ![`k-space.png`](assets/k-space/k-space.png) | ![`kohn-sham-cycle.png`](assets/kohn-sham-cycle/kohn-sham-cycle.png) | +| [`light`](https://janosh.github.io/diagrams/light)  [![Typst][typst-logo]](assets/light/light.typ) | [`m-theory`](https://janosh.github.io/diagrams/m-theory)  [![LaTeX][latex-logo]](assets/m-theory/m-theory.tex) | +| ![`light.png`](assets/light/light.png) | ![`m-theory.png`](assets/m-theory/m-theory.png) | +| [`made`](https://janosh.github.io/diagrams/made)  [![LaTeX][latex-logo]](assets/made/made.tex) [![Typst][typst-logo]](assets/made/made.typ) | [`maf`](https://janosh.github.io/diagrams/maf)  [![LaTeX][latex-logo]](assets/maf/maf.tex) | +| ![`made.png`](assets/made/made.png) | ![`maf.png`](assets/maf/maf.png) | +| [`materials-informatics-challenges`](https://janosh.github.io/diagrams/materials-informatics-challenges)  [![LaTeX][latex-logo]](assets/materials-informatics-challenges/materials-informatics-challenges.tex) | [`materials-informatics`](https://janosh.github.io/diagrams/materials-informatics)  [![LaTeX][latex-logo]](assets/materials-informatics/materials-informatics.tex) | +| ![`materials-informatics-challenges.png`](assets/materials-informatics-challenges/materials-informatics-challenges.png) | ![`materials-informatics.png`](assets/materials-informatics/materials-informatics.png) | +| [`matsubara-contour-1`](https://janosh.github.io/diagrams/matsubara-contour-1)  [![LaTeX][latex-logo]](assets/matsubara-contour-1/matsubara-contour-1.tex) | [`matsubara-contour-2`](https://janosh.github.io/diagrams/matsubara-contour-2)  [![LaTeX][latex-logo]](assets/matsubara-contour-2/matsubara-contour-2.tex) | +| ![`matsubara-contour-1.png`](assets/matsubara-contour-1/matsubara-contour-1.png) | ![`matsubara-contour-2.png`](assets/matsubara-contour-2/matsubara-contour-2.png) | +| [`matsubara-contour-3`](https://janosh.github.io/diagrams/matsubara-contour-3)  [![LaTeX][latex-logo]](assets/matsubara-contour-3/matsubara-contour-3.tex) | [`matsubara-contour-4`](https://janosh.github.io/diagrams/matsubara-contour-4)  [![LaTeX][latex-logo]](assets/matsubara-contour-4/matsubara-contour-4.tex) | +| ![`matsubara-contour-3.png`](assets/matsubara-contour-3/matsubara-contour-3.png) | ![`matsubara-contour-4.png`](assets/matsubara-contour-4/matsubara-contour-4.png) | +| [`matsubara-contour-5`](https://janosh.github.io/diagrams/matsubara-contour-5)  [![LaTeX][latex-logo]](assets/matsubara-contour-5/matsubara-contour-5.tex) | [`matsubara-contour-deformation`](https://janosh.github.io/diagrams/matsubara-contour-deformation)  [![LaTeX][latex-logo]](assets/matsubara-contour-deformation/matsubara-contour-deformation.tex) | +| ![`matsubara-contour-5.png`](assets/matsubara-contour-5/matsubara-contour-5.png) | ![`matsubara-contour-deformation.png`](assets/matsubara-contour-deformation/matsubara-contour-deformation.png) | +| [`maxwell-boltzmann-distribution`](https://janosh.github.io/diagrams/maxwell-boltzmann-distribution)  [![LaTeX][latex-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.tex) [![Typst][typst-logo]](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.typ) | [`mexican-hat`](https://janosh.github.io/diagrams/mexican-hat)  [![LaTeX][latex-logo]](assets/mexican-hat/mexican-hat.tex) | +| ![`maxwell-boltzmann-distribution.png`](assets/maxwell-boltzmann-distribution/maxwell-boltzmann-distribution.png) | ![`mexican-hat.png`](assets/mexican-hat/mexican-hat.png) | +| [`ml-activations`](https://janosh.github.io/diagrams/ml-activations)  [![Typst][typst-logo]](assets/ml-activations/ml-activations.typ) | [`momentum-shell`](https://janosh.github.io/diagrams/momentum-shell)  [![LaTeX][latex-logo]](assets/momentum-shell/momentum-shell.tex) [![Typst][typst-logo]](assets/momentum-shell/momentum-shell.typ) | +| ![`ml-activations.png`](assets/ml-activations/ml-activations.png) | ![`momentum-shell.png`](assets/momentum-shell/momentum-shell.png) | +| [`mosfet`](https://janosh.github.io/diagrams/mosfet)  [![LaTeX][latex-logo]](assets/mosfet/mosfet.tex) [![Typst][typst-logo]](assets/mosfet/mosfet.typ) | [`nf-coupling-layer`](https://janosh.github.io/diagrams/nf-coupling-layer)  [![LaTeX][latex-logo]](assets/nf-coupling-layer/nf-coupling-layer.tex) [![Typst][typst-logo]](assets/nf-coupling-layer/nf-coupling-layer.typ) | +| ![`mosfet.png`](assets/mosfet/mosfet.png) | ![`nf-coupling-layer.png`](assets/nf-coupling-layer/nf-coupling-layer.png) | +| [`normalizing-flow`](https://janosh.github.io/diagrams/normalizing-flow)  [![LaTeX][latex-logo]](assets/normalizing-flow/normalizing-flow.tex) [![Typst][typst-logo]](assets/normalizing-flow/normalizing-flow.typ) | [`open-string-topologies`](https://janosh.github.io/diagrams/open-string-topologies)  [![LaTeX][latex-logo]](assets/open-string-topologies/open-string-topologies.tex) | +| ![`normalizing-flow.png`](assets/normalizing-flow/normalizing-flow.png) | ![`open-string-topologies.png`](assets/open-string-topologies/open-string-topologies.png) | +| [`operator-orderings`](https://janosh.github.io/diagrams/operator-orderings)  [![LaTeX][latex-logo]](assets/operator-orderings/operator-orderings.tex) | [`organic-molecule`](https://janosh.github.io/diagrams/organic-molecule)  [![LaTeX][latex-logo]](assets/organic-molecule/organic-molecule.tex) | +| ![`operator-orderings.png`](assets/operator-orderings/operator-orderings.png) | ![`organic-molecule.png`](assets/organic-molecule/organic-molecule.png) | +| [`otto-cycle`](https://janosh.github.io/diagrams/otto-cycle)  [![LaTeX][latex-logo]](assets/otto-cycle/otto-cycle.tex) [![Typst][typst-logo]](assets/otto-cycle/otto-cycle.typ) | [`periodic-table`](https://janosh.github.io/diagrams/periodic-table)  [![LaTeX][latex-logo]](assets/periodic-table/periodic-table.tex) [![Typst][typst-logo]](assets/periodic-table/periodic-table.typ) | +| ![`otto-cycle.png`](assets/otto-cycle/otto-cycle.png) | ![`periodic-table.png`](assets/periodic-table/periodic-table.png) | +| [`physics-mindmap`](https://janosh.github.io/diagrams/physics-mindmap)  [![LaTeX][latex-logo]](assets/physics-mindmap/physics-mindmap.tex) | [`plane-to-torus`](https://janosh.github.io/diagrams/plane-to-torus)  [![LaTeX][latex-logo]](assets/plane-to-torus/plane-to-torus.tex) | +| ![`physics-mindmap.png`](assets/physics-mindmap/physics-mindmap.png) | ![`plane-to-torus.png`](assets/plane-to-torus/plane-to-torus.png) | +| [`plate-capacitor`](https://janosh.github.io/diagrams/plate-capacitor)  [![LaTeX][latex-logo]](assets/plate-capacitor/plate-capacitor.tex) [![Typst][typst-logo]](assets/plate-capacitor/plate-capacitor.typ) | [`potential-triangle`](https://janosh.github.io/diagrams/potential-triangle)  [![LaTeX][latex-logo]](assets/potential-triangle/potential-triangle.tex) | +| ![`plate-capacitor.png`](assets/plate-capacitor/plate-capacitor.png) | ![`potential-triangle.png`](assets/potential-triangle/potential-triangle.png) | +| [`propagator-fluctuations`](https://janosh.github.io/diagrams/propagator-fluctuations)  [![LaTeX][latex-logo]](assets/propagator-fluctuations/propagator-fluctuations.tex) | [`propagators`](https://janosh.github.io/diagrams/propagators)  [![LaTeX][latex-logo]](assets/propagators/propagators.tex) | +| ![`propagator-fluctuations.png`](assets/propagator-fluctuations/propagator-fluctuations.png) | ![`propagators.png`](assets/propagators/propagators.png) | +| [`qft-propagator-poles`](https://janosh.github.io/diagrams/qft-propagator-poles)  [![LaTeX][latex-logo]](assets/qft-propagator-poles/qft-propagator-poles.tex) [![Typst][typst-logo]](assets/qft-propagator-poles/qft-propagator-poles.typ) | [`qm-cost-vs-acc`](https://janosh.github.io/diagrams/qm-cost-vs-acc)  [![LaTeX][latex-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.tex) [![Typst][typst-logo]](assets/qm-cost-vs-acc/qm-cost-vs-acc.typ) | +| ![`qft-propagator-poles.png`](assets/qft-propagator-poles/qft-propagator-poles.png) | ![`qm-cost-vs-acc.png`](assets/qm-cost-vs-acc/qm-cost-vs-acc.png) | +| [`random-forest`](https://janosh.github.io/diagrams/random-forest)  [![LaTeX][latex-logo]](assets/random-forest/random-forest.tex) | [`regular-vs-bayes-nn`](https://janosh.github.io/diagrams/regular-vs-bayes-nn)  [![LaTeX][latex-logo]](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.tex) | +| ![`random-forest.png`](assets/random-forest/random-forest.png) | ![`regular-vs-bayes-nn.png`](assets/regular-vs-bayes-nn/regular-vs-bayes-nn.png) | +| [`rnvp`](https://janosh.github.io/diagrams/rnvp)  [![LaTeX][latex-logo]](assets/rnvp/rnvp.tex) | [`roost-update`](https://janosh.github.io/diagrams/roost-update)  [![LaTeX][latex-logo]](assets/roost-update/roost-update.tex) | +| ![`rnvp.png`](assets/rnvp/rnvp.png) | ![`roost-update.png`](assets/roost-update/roost-update.png) | +| [`sabatier-principle`](https://janosh.github.io/diagrams/sabatier-principle)  [![LaTeX][latex-logo]](assets/sabatier-principle/sabatier-principle.tex) [![Typst][typst-logo]](assets/sabatier-principle/sabatier-principle.typ) | [`saddle-point`](https://janosh.github.io/diagrams/saddle-point)  [![LaTeX][latex-logo]](assets/saddle-point/saddle-point.tex) | +| ![`sabatier-principle.png`](assets/sabatier-principle/sabatier-principle.png) | ![`saddle-point.png`](assets/saddle-point/saddle-point.png) | +| [`seebeck-effect`](https://janosh.github.io/diagrams/seebeck-effect)  [![LaTeX][latex-logo]](assets/seebeck-effect/seebeck-effect.tex) | [`self-attention`](https://janosh.github.io/diagrams/self-attention)  [![LaTeX][latex-logo]](assets/self-attention/self-attention.tex) [![Typst][typst-logo]](assets/self-attention/self-attention.typ) | +| ![`seebeck-effect.png`](assets/seebeck-effect/seebeck-effect.png) | ![`self-attention.png`](assets/self-attention/self-attention.png) | +| [`single-head-attention`](https://janosh.github.io/diagrams/single-head-attention)  [![LaTeX][latex-logo]](assets/single-head-attention/single-head-attention.tex) | [`skip-connection`](https://janosh.github.io/diagrams/skip-connection)  [![LaTeX][latex-logo]](assets/skip-connection/skip-connection.tex) [![Typst][typst-logo]](assets/skip-connection/skip-connection.typ) | +| ![`single-head-attention.png`](assets/single-head-attention/single-head-attention.png) | ![`skip-connection.png`](assets/skip-connection/skip-connection.png) | +| [`spontaneous-magnetization`](https://janosh.github.io/diagrams/spontaneous-magnetization)  [![LaTeX][latex-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.tex) [![Typst][typst-logo]](assets/spontaneous-magnetization/spontaneous-magnetization.typ) | [`tanh`](https://janosh.github.io/diagrams/tanh)  [![LaTeX][latex-logo]](assets/tanh/tanh.tex) | +| ![`spontaneous-magnetization.png`](assets/spontaneous-magnetization/spontaneous-magnetization.png) | ![`tanh.png`](assets/tanh/tanh.png) | +| [`theory-space`](https://janosh.github.io/diagrams/theory-space)  [![LaTeX][latex-logo]](assets/theory-space/theory-space.tex) | [`thermo-ensemble-trafos`](https://janosh.github.io/diagrams/thermo-ensemble-trafos)  [![LaTeX][latex-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.tex) [![Typst][typst-logo]](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.typ) | +| ![`theory-space.png`](assets/theory-space/theory-space.png) | ![`thermo-ensemble-trafos.png`](assets/thermo-ensemble-trafos/thermo-ensemble-trafos.png) | +| [`thomson-scattering`](https://janosh.github.io/diagrams/thomson-scattering)  [![LaTeX][latex-logo]](assets/thomson-scattering/thomson-scattering.tex) | [`tori`](https://janosh.github.io/diagrams/tori)  [![LaTeX][latex-logo]](assets/tori/tori.tex) | +| ![`thomson-scattering.png`](assets/thomson-scattering/thomson-scattering.png) | ![`tori.png`](assets/tori/tori.png) | +| [`torus-fundamental-domain`](https://janosh.github.io/diagrams/torus-fundamental-domain)  [![LaTeX][latex-logo]](assets/torus-fundamental-domain/torus-fundamental-domain.tex) | [`torus`](https://janosh.github.io/diagrams/torus)  [![LaTeX][latex-logo]](assets/torus/torus.tex) | +| ![`torus-fundamental-domain.png`](assets/torus-fundamental-domain/torus-fundamental-domain.png) | ![`torus.png`](assets/torus/torus.png) | +| [`two-point-no-cutoff`](https://janosh.github.io/diagrams/two-point-no-cutoff)  [![LaTeX][latex-logo]](assets/two-point-no-cutoff/two-point-no-cutoff.tex) | [`two-point`](https://janosh.github.io/diagrams/two-point)  [![LaTeX][latex-logo]](assets/two-point/two-point.tex) | +| ![`two-point-no-cutoff.png`](assets/two-point-no-cutoff/two-point-no-cutoff.png) | ![`two-point.png`](assets/two-point/two-point.png) | +| [`unregularized-propagator-diagrams`](https://janosh.github.io/diagrams/unregularized-propagator-diagrams)  [![LaTeX][latex-logo]](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.tex) | [`variational-autoencoder`](https://janosh.github.io/diagrams/variational-autoencoder)  [![LaTeX][latex-logo]](assets/variational-autoencoder/variational-autoencoder.tex) [![Typst][typst-logo]](assets/variational-autoencoder/variational-autoencoder.typ) | +| ![`unregularized-propagator-diagrams.png`](assets/unregularized-propagator-diagrams/unregularized-propagator-diagrams.png) | ![`variational-autoencoder.png`](assets/variational-autoencoder/variational-autoencoder.png) | +| [`wall`](https://janosh.github.io/diagrams/wall)  [![LaTeX][latex-logo]](assets/wall/wall.tex) | [`wetterich-equation`](https://janosh.github.io/diagrams/wetterich-equation)  [![LaTeX][latex-logo]](assets/wetterich-equation/wetterich-equation.tex) | +| ![`wall.png`](assets/wall/wall.png) | ![`wetterich-equation.png`](assets/wetterich-equation/wetterich-equation.png) | +| [`wyckoff-positions`](https://janosh.github.io/diagrams/wyckoff-positions)  [![LaTeX][latex-logo]](assets/wyckoff-positions/wyckoff-positions.tex) | [`zt-vs-n`](https://janosh.github.io/diagrams/zt-vs-n)  [![LaTeX][latex-logo]](assets/zt-vs-n/zt-vs-n.tex) [![Typst][typst-logo]](assets/zt-vs-n/zt-vs-n.typ) | +| ![`wyckoff-positions.png`](assets/wyckoff-positions/wyckoff-positions.png) | ![`zt-vs-n.png`](assets/zt-vs-n/zt-vs-n.png) | ## Scripts