1307823Add organization profile README indexing concept-collection reposmagland 1# Concept Collection
d25ae50Polish profile README featured sectionsJeremy Magland 3This is a collection of random small projects and demos, most of which can be run entirely in the web browser (client side). Many of them are centered around the [numbl project](https://numbl.org).
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 5## Interactive numerical methods
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 7Methods from the numerical literature that you can watch run and adjust, computed client side by numbl (MATLAB syntax in the browser).
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 9- **[hitandrun-interactive](https://github.com/concept-collection/hitandrun-interactive)** · [live](https://concept-collection.github.io/hitandrun-interactive/#figure/sampler) · the hit-and-run MCMC sampler
10- **[walnuts-interactive](https://github.com/concept-collection/walnuts-interactive)** · [live](https://concept-collection.github.io/walnuts-interactive/#figure/sampler) · the WALNUTS sampler, running the paper's own companion MATLAB code
11- **[barycentric-rational](https://github.com/concept-collection/barycentric-rational)** · [live](https://concept-collection.github.io/barycentric-rational/) · Floater-Hormann rational interpolation, pole-free on any nodes; the method is a MATLAB script you edit in the page
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 13## numbl tooling: Jupyter, embedding, IDEs
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 15Ways to write, run, and share MATLAB-syntax code in the browser, all client side (plus a Stan variant of the IDE).
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 17- **[jupyterlite-numbl-kernel](https://github.com/concept-collection/jupyterlite-numbl-kernel)** · [live](https://concept-collection.github.io/jupyterlite-numbl-kernel/) · MATLAB syntax in Jupyter, no kernel server
18- **[numbl-embed-example](https://github.com/concept-collection/numbl-embed-example)** · [live](https://concept-collection.github.io/numbl-embed-example/) · embed numbl in your own page
19- **[numbl-project-example](https://github.com/concept-collection/numbl-project-example)** · [live](https://concept-collection.github.io/numbl-project-example/) · host a numbl project as a static site
20- **[numbl-web-ide](https://github.com/concept-collection/numbl-web-ide)** · [live](https://concept-collection.github.io/numbl-web-ide/) · a VS Code–style IDE for MATLAB syntax
21- **[stan-web-ide](https://github.com/concept-collection/stan-web-ide)** · [live](https://concept-collection.github.io/stan-web-ide/) · the same IDE for Stan
22- **[numbl-figure-viewer](https://github.com/concept-collection/numbl-figure-viewer)** · [live](https://concept-collection.github.io/numbl-figure-viewer/) · open a figure exported from numbl, underlying data included
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 24## surfacefun & chunkie examples
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 26[Surfacefun](https://surfacefun.readthedocs.io/en/latest/) (functions and PDEs on surfaces) and [chunkie](https://chunkie.readthedocs.io/en/latest/) (boundary integral equations in 2D) are MATLAB packages; these examples run them in the browser via numbl.
28- **[numbl-surfacefun-intro](https://github.com/concept-collection/numbl-surfacefun-intro)** · [live](https://concept-collection.github.io/numbl-surfacefun-intro/)
29- **[surfacefun-interactive](https://github.com/concept-collection/surfacefun-interactive)** · [live](https://concept-collection.github.io/surfacefun-interactive/)
30- **[mesh-pde-solver](https://github.com/concept-collection/mesh-pde-solver)** · [live](https://concept-collection.github.io/mesh-pde-solver/)
31- **[numbl-chunkie](https://github.com/concept-collection/numbl-chunkie)** · [live](https://concept-collection.github.io/numbl-chunkie/)
4034420Add mri-scanner (Bloch simulation in the browser)Jeremy Magland 35[Pulseq](https://pulseq.github.io/) is an open framework for defining MRI pulse sequences. Here you can write pulseq sequences in MATLAB syntax and run them in the browser via numbl to generate a `.seq` file, upload and interactively explore an existing one, or simulate one on a digital phantom to see the raw k-space it acquires.
65662b6Add seqlab (pulseq sequences in the browser)Jeremy Magland 36
37- **[seqlab](https://github.com/concept-collection/seqlab)** · [live](https://concept-collection.github.io/seqlab/)
4034420Add mri-scanner (Bloch simulation in the browser)Jeremy Magland 38- **[mri-scanner](https://github.com/concept-collection/mri-scanner)** · [live](https://concept-collection.github.io/mri-scanner/)
65662b6Add seqlab (pulseq sequences in the browser)Jeremy Magland 39
96fd5ceAdd shtns-webgpu and turing-sphere (spherical harmonics on the GPU)Jeremy Magland 40## Spherical harmonics on the GPU
f79608cAdd turing-surface and turing-surface-cache to the indexJeremy Magland 42Here are spherical harmonic transforms reimplemented from scratch as WebGPU compute shaders, modeled on [SHTNS](https://nschaeff.bitbucket.io/shtns/), together with a live reaction-diffusion solver built on them: Turing patterns forming on a sphere, with diffusion handled implicitly in spectral space where the Laplace-Beltrami operator is diagonal. turing-surface extends the solver from the round sphere to closed surfaces given by spherical-harmonic embeddings, and turing-surface-cache narrows it to a discrete menu of parameter choices whose solutions at a chosen end time are shared between all visitors through a cloud cache.
44- **[shtns-webgpu](https://github.com/concept-collection/shtns-webgpu)** · [live](https://concept-collection.github.io/shtns-webgpu/)
45- **[turing-sphere](https://github.com/concept-collection/turing-sphere)** · [live](https://concept-collection.github.io/turing-sphere/)
f79608cAdd turing-surface and turing-surface-cache to the indexJeremy Magland 46- **[turing-surface](https://github.com/concept-collection/turing-surface)** · [live](https://concept-collection.github.io/turing-surface/)
47- **[turing-surface-cache](https://github.com/concept-collection/turing-surface-cache)** · [live](https://concept-collection.github.io/turing-surface-cache/)
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 49## Browser compute benchmarks
512ba54Add math-webgpu-sandbox (MATLAB scripts on WebGPU)Jeremy Magland 50
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 51How fast the browser can crunch numbers.
eef29a9Condense the project index: merge related categories, shorten descriptionsJeremy Magland 53- **[math-webgpu-sandbox](https://github.com/concept-collection/math-webgpu-sandbox)** · [live](https://concept-collection.github.io/math-webgpu-sandbox/) · MATLAB-syntax scripts compiled to fused WebGPU kernels, timed with the script's own `tic`/`toc`; paste the same script into real MATLAB to compare
54- **[matmul-bench](https://github.com/concept-collection/matmul-bench)** · [live](https://concept-collection.github.io/matmul-bench/) · GEMM in plain JavaScript, WebGPU, SIMD and threaded WASM, and a WASM BLAS, with a native reference
56## Lazy reading of remote HDF5 files
58Here's a demo of reading large remote HDF5 files, such as [NWB](https://www.nwb.org/) neurophysiology files, directly in the browser using HTTP range requests, with no full download and no backend. It shows the approach that [neurosift](https://neurosift.app/) uses to browse these files.
60- **[remote-hdf5-lazy-read](https://github.com/concept-collection/remote-hdf5-lazy-read)** · [live](https://concept-collection.github.io/remote-hdf5-lazy-read/)
62## Scientific data compression
8f1fba9Add timeseries-compressibility to the indexJeremy Magland 64Here are a few projects on compressing scientific data: a step-by-step visualizer for the [Asymmetric Numeral Systems (ANS)](https://ieeexplore.ieee.org/abstract/document/7170048) entropy-coding algorithm, an interactive study of how compressible quantized noisy time series are, a framework for benchmarking compression algorithms on scientific data arrays, and compression benchmarks for electrophysiology recordings.
d25ae50Polish profile README featured sectionsJeremy Magland 65
66- **[ans-visualizer](https://github.com/concept-collection/ans-visualizer)** · [live](https://concept-collection.github.io/ans-visualizer/)
8f1fba9Add timeseries-compressibility to the indexJeremy Magland 67- **[timeseries-compressibility](https://github.com/concept-collection/timeseries-compressibility)** · [live](https://concept-collection.github.io/timeseries-compressibility/)
d25ae50Polish profile README featured sectionsJeremy Magland 68- **[benchcompress](https://github.com/concept-collection/benchcompress)** · [results](https://concept-collection.github.io/benchcompress/) · [paper (WIP)](https://concept-collection.github.io/benchcompress/paper)
69- **[ephys_compression_tests](https://github.com/concept-collection/ephys_compression_tests)** · [results](https://concept-collection.github.io/ephys_compression_tests/)
f70d7cbAdd voicenote (speech to text in the browser)Jeremy Magland 71## Speech to text in the browser
73Here's a dictation notepad that transcribes as you speak and never sends your audio anywhere: Whisper and Moonshine run locally via [transformers.js](https://github.com/huggingface/transformers.js), on WebGPU where it's available. The transcript accumulates into a document you can edit and copy.
75- **[voicenote](https://github.com/concept-collection/voicenote)** · [live](https://concept-collection.github.io/voicenote/)
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 77## Other projects
79### Peer-to-peer shared state
1fe65cdAdd commonroom to the project indexJeremy Magland 81- **[commonroom](https://github.com/concept-collection/commonroom)**
82 ([live](https://concept-collection.github.io/commonroom/)).
83 Serverless group video calls: pick a room name, share the link, and everyone
84 in the room is connected over a full WebRTC mesh (up to 8 people), with
85 room-wide shared settings.
cfe175fAdd commonroom-recorder to the project indexJeremy Magland 86- **[commonroom-recorder](https://github.com/concept-collection/commonroom-recorder)**
87 ([run with npx](https://concept-collection.github.io/commonroom-recorder/)).
88 Command-line bot that joins a commonroom call as a visible muted participant
89 and records each participant's audio (plus the chat) to files for
90 transcription.
401b3f6Add commoncall to the project indexJeremy Magland 91- **[commoncall](https://github.com/concept-collection/commoncall)**
92 ([live](https://concept-collection.github.io/commoncall/)).
93 Serverless video calls: enter an ID, see who else is on the page, and call
94 them — call setup rides over nostr relays, media flows peer-to-peer via WebRTC.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 95- **[hitandrun-commonview](https://github.com/concept-collection/hitandrun-commonview)**
96 ([live](https://concept-collection.github.io/hitandrun-commonview/)).
97 The hit-and-run figure with a single live view shared by all visitors over a
98 WebRTC mesh; one peer runs the sampler via numbl and broadcasts to the rest.
99- **[commonview](https://github.com/concept-collection/commonview)**
100 ([live](https://concept-collection.github.io/commonview/)).
101 A minimal peer-to-peer page where every visitor shares one state (a counter):
102 nostr discovery, a WebRTC mesh, and a central-peer authority. The basis for
103 hitandrun-commonview.
7978becReorganize profile README by application areaJeremy Magland 104
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 105### Geometry, meshing & PDE solvers
7978becReorganize profile README by application areaJeremy Magland 106
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 107- **[mesh-studio](https://github.com/concept-collection/mesh-studio)**
108 ([live](https://concept-collection.github.io/mesh-studio/)).
109 Build CAD primitives or import STEP/IGES with
110 [OpenCASCADE.js](https://ocjs.org/), then inspect them in 3D — including each
111 face's true NURBS surface (polynomials on faces), not just its triangulation.
1329762Add mesh-converter to the project indexJeremy Magland 112- **[mesh-converter](https://github.com/concept-collection/mesh-converter)**
113 ([live](https://concept-collection.github.io/mesh-converter/)).
114 Convert meshes between 19 formats (PLY, OBJ, STL, VTK, Gmsh, XDMF, …) with
115 [meshio](https://github.com/nschloe/meshio) running in-browser on Pyodide;
116 inspect meshes in 3D and see what a lossy export would drop.
7978becReorganize profile README by application areaJeremy Magland 117- **[qhull-wasm-demo](https://github.com/concept-collection/qhull-wasm-demo)**
118 ([live](https://concept-collection.github.io/qhull-wasm-demo/)).
119 Demos and benchmarks for [qhull-wasm](https://github.com/magland/qhull-wasm),
120 which compiles [Qhull](http://www.qhull.org) to WebAssembly. Includes 2-D
121 Delaunay triangulation, 3-D convex hull, and a Delaunay benchmark with
122 matching scripts for MATLAB, Octave, and numbl.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 123- **[numbl-distmesh](https://github.com/concept-collection/numbl-distmesh)**
124 ([live](https://concept-collection.github.io/numbl-distmesh/)).
125 Every example from Persson and Strang's
126 [DistMesh](https://github.com/popersson/DistMesh), meshing 2-D regions and
127 surfaces from signed distance functions.
128- **[abc-step-1000](https://github.com/concept-collection/abc-step-1000)**
129 ([live](https://concept-collection.github.io/abc-step-1000/)).
130 The first 1000 STEP files from the
131 [ABC dataset](https://deep-geometry.github.io/abc-dataset/) of CAD models
132 (Koch et al., CVPR 2019), served gzip-compressed with a JSON manifest for
133 direct download.
7978becReorganize profile README by application areaJeremy Magland 134
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 135### Neurophysiology data & remote access
51745afAdd matmul-bench to profileJeremy Magland 136
1307823Add organization profile README indexing concept-collection reposmagland 137- **[dandiset_000986](https://github.com/concept-collection/dandiset_000986)**
138 ([visualizations](https://concept-collection.github.io/dandiset_000986/)).
139 Reproducible figures and visualizations for
e987b68Refine org profile README wordingJeremy Magland 140 [DANDI Dandiset 000986](https://dandiarchive.org/dandiset/000986), a set of
141 mouse auditory cortex recordings.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 143### Physics & quantum systems
443d470Add mri-spinsJeremy Magland 145- **[mri-spins](https://github.com/concept-collection/mri-spins)**
146 ([live](https://concept-collection.github.io/mri-spins/)).
147 Interactive MRI physics: a 3D sample of spins evolving under the Bloch
148 equations, with RF pulses, gradients, relaxation, a live signal trace, and a
149 spoiled gradient echo sequence with scanner-like gradient sounds.
ab443ecAdd acoustic-scattering-2d entryJeremy Magland 150- **[acoustic-scattering-2d](https://github.com/concept-collection/acoustic-scattering-2d)**.
151 2D acoustic wave scattering off a room, a disk, slits, or a lens, in real
152 physical units: a MATLAB time-stepper compiled through numbl to WebGPU
153 compute kernels. Drop a microphone anywhere in the field and listen back in
154 real time, at the pitch a microphone there would actually have heard.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 155- **[numbl-quantum-optics](https://github.com/concept-collection/numbl-quantum-optics)**
156 ([live](https://concept-collection.github.io/numbl-quantum-optics/)).
157 Runnable scripts accompanying the article "Quantum optics in MATLAB"
158 ([arXiv:2309.14354](https://arxiv.org/abs/2309.14354)), covering quantum
159 states, operators, and dynamics.
160- **[numbl-open-quantum-systems](https://github.com/concept-collection/numbl-open-quantum-systems)**
161 ([live](https://concept-collection.github.io/numbl-open-quantum-systems/)).
162 Code from "Coding closed and open quantum systems in MATLAB"
163 ([arXiv:1911.04906](https://arxiv.org/abs/1911.04906)), including Ising
164 dynamics, cavity-QED phase transitions, and Lindblad and non-Markovian
165 evolution.
9fd8371Add qhull-wasm-demo to the indexJeremy Magland 166
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 167### Image processing
9fd8371Add qhull-wasm-demo to the indexJeremy Magland 168
7978becReorganize profile README by application areaJeremy Magland 169- **[numbl-image-filter](https://github.com/concept-collection/numbl-image-filter)**
170 ([live](https://concept-collection.github.io/numbl-image-filter/)).
171 Upload an image, write a MATLAB-syntax filter, and run it on the image in the
172 browser.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 174### Number theory & visual math
7978becReorganize profile README by application areaJeremy Magland 175
48b19b2Reorder profile sections: numbl platform first, visual math lastJeremy Magland 176- **[finite-field-visualizer](https://github.com/concept-collection/finite-field-visualizer)**
177 ([live](https://concept-collection.github.io/finite-field-visualizer/)).
178 Color-coded multiplication tables over finite (prime) fields. Step through the
179 primes to watch the structure change.
180- **[gcd-visualizer](https://github.com/concept-collection/gcd-visualizer)**
181 ([live](https://concept-collection.github.io/gcd-visualizer/)).
182 A heatmap of the greatest common divisor of every pair (i, j), laid out as a
183 color-coded table.
cc4a096Add random-points-in-diskJeremy Magland 184- **[random-points-in-disk](https://github.com/concept-collection/random-points-in-disk)**
185 ([live](https://concept-collection.github.io/random-points-in-disk/)).
186 How many random points does it take before a disk looks like a disk? Voxel-density
187 heatmaps of uniform random sampling, next to the 1/√μ noise prediction.