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).
d25ae50Polish profile README featured sectionsJeremy Magland 5## MATLAB syntax in Jupyter, all in the browser
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 7Here's a proof of concept for running MATLAB syntax in Jupyter entirely client side (no kernel, no server). It uses numbl and JupyterLite.
d25ae50Polish profile README featured sectionsJeremy Magland 9- **[jupyterlite-numbl-kernel](https://github.com/concept-collection/jupyterlite-numbl-kernel)** · [live](https://concept-collection.github.io/jupyterlite-numbl-kernel/)
11## Interactive MCMC samplers
13Here are a couple of demonstrations of MCMC samplers that you can watch run. They use numbl (MATLAB syntax in the browser) to do the sampling client-side in the browser. In the case of WALNUTS (the within-orbit adaptive leapfrog No-U-Turn Sampler), we use the exact MATLAB code that is a companion to the paper.
15- **[hitandrun-interactive](https://github.com/concept-collection/hitandrun-interactive)** · [live](https://concept-collection.github.io/hitandrun-interactive/#figure/sampler)
16- **[walnuts-interactive](https://github.com/concept-collection/walnuts-interactive)** · [live](https://concept-collection.github.io/walnuts-interactive/#figure/sampler)
18## Embedding & hosting numbl projects
20Here are a couple of projects that let you embed or host your own numbl/MATLAB projects entirely client side.
22- **[numbl-embed-example](https://github.com/concept-collection/numbl-embed-example)** · [live](https://concept-collection.github.io/numbl-embed-example/)
23- **[numbl-project-example](https://github.com/concept-collection/numbl-project-example)** · [live](https://concept-collection.github.io/numbl-project-example/)
25## VS Code–style IDEs
d25ae50Polish profile README featured sectionsJeremy Magland 27Here are a couple of VS Code–style IDEs that run entirely in the browser: one for MATLAB syntax (via numbl), one for Stan.
29- **[numbl-web-ide](https://github.com/concept-collection/numbl-web-ide)** · [live](https://concept-collection.github.io/numbl-web-ide/)
30- **[stan-web-ide](https://github.com/concept-collection/stan-web-ide)** · [live](https://concept-collection.github.io/stan-web-ide/)
32## surfacefun examples
34[Surfacefun](https://surfacefun.readthedocs.io/en/latest/) is a MATLAB package for computing with functions defined on surfaces and solving PDEs on them to high order. Here are some examples that run surfacefun via numbl in the browser.
36- **[numbl-surfacefun-intro](https://github.com/concept-collection/numbl-surfacefun-intro)** · [live](https://concept-collection.github.io/numbl-surfacefun-intro/)
37- **[surfacefun-interactive](https://github.com/concept-collection/surfacefun-interactive)** · [live](https://concept-collection.github.io/surfacefun-interactive/)
38- **[mesh-pde-solver](https://github.com/concept-collection/mesh-pde-solver)** · [live](https://concept-collection.github.io/mesh-pde-solver/)
40## chunkie examples
42[Chunkie](https://chunkie.readthedocs.io/en/latest/) is a MATLAB package for solving boundary integral equations in two dimensions. Here are some examples that run chunkie via numbl in the browser.
44- **[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 48[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 49
50- **[seqlab](https://github.com/concept-collection/seqlab)** · [live](https://concept-collection.github.io/seqlab/)
4034420Add mri-scanner (Bloch simulation in the browser)Jeremy Magland 51- **[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 52
96fd5ceAdd shtns-webgpu and turing-sphere (spherical harmonics on the GPU)Jeremy Magland 53## Spherical harmonics on the GPU
55Here 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.
57- **[shtns-webgpu](https://github.com/concept-collection/shtns-webgpu)** · [live](https://concept-collection.github.io/shtns-webgpu/)
58- **[turing-sphere](https://github.com/concept-collection/turing-sphere)** · [live](https://concept-collection.github.io/turing-sphere/)
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 60## Matrix multiplication benchmark
62Here's a benchmark of matrix-matrix multiply (GEMM) in the browser across several implementations: a plain JavaScript loop, WebGPU, hand-written C compiled to WASM (SIMD and threads), and a real BLAS (libFLAME) compiled to WASM, with a native reference for comparison.
64- **[matmul-bench](https://github.com/concept-collection/matmul-bench)** · [live](https://concept-collection.github.io/matmul-bench/)
66## Lazy reading of remote HDF5 files
68Here'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.
70- **[remote-hdf5-lazy-read](https://github.com/concept-collection/remote-hdf5-lazy-read)** · [live](https://concept-collection.github.io/remote-hdf5-lazy-read/)
72## Scientific data compression
8f1fba9Add timeseries-compressibility to the indexJeremy Magland 74Here 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 75
76- **[ans-visualizer](https://github.com/concept-collection/ans-visualizer)** · [live](https://concept-collection.github.io/ans-visualizer/)
8f1fba9Add timeseries-compressibility to the indexJeremy Magland 77- **[timeseries-compressibility](https://github.com/concept-collection/timeseries-compressibility)** · [live](https://concept-collection.github.io/timeseries-compressibility/)
d25ae50Polish profile README featured sectionsJeremy Magland 78- **[benchcompress](https://github.com/concept-collection/benchcompress)** · [results](https://concept-collection.github.io/benchcompress/) · [paper (WIP)](https://concept-collection.github.io/benchcompress/paper)
79- **[ephys_compression_tests](https://github.com/concept-collection/ephys_compression_tests)** · [results](https://concept-collection.github.io/ephys_compression_tests/)
81## Other projects
83### numbl platform: templates & tooling
85Utilities and starting points for building your own
86[numbl](https://numbl.org) projects.
88- **[numbl-figure-viewer](https://github.com/concept-collection/numbl-figure-viewer)**
89 ([live](https://concept-collection.github.io/numbl-figure-viewer/)).
90 Open and explore a figure exported from numbl, including its underlying data.
92### Peer-to-peer shared state
1fe65cdAdd commonroom to the project indexJeremy Magland 94- **[commonroom](https://github.com/concept-collection/commonroom)**
95 ([live](https://concept-collection.github.io/commonroom/)).
96 Serverless group video calls: pick a room name, share the link, and everyone
97 in the room is connected over a full WebRTC mesh (up to 8 people), with
98 room-wide shared settings.
cfe175fAdd commonroom-recorder to the project indexJeremy Magland 99- **[commonroom-recorder](https://github.com/concept-collection/commonroom-recorder)**
100 ([run with npx](https://concept-collection.github.io/commonroom-recorder/)).
101 Command-line bot that joins a commonroom call as a visible muted participant
102 and records each participant's audio (plus the chat) to files for
103 transcription.
401b3f6Add commoncall to the project indexJeremy Magland 104- **[commoncall](https://github.com/concept-collection/commoncall)**
105 ([live](https://concept-collection.github.io/commoncall/)).
106 Serverless video calls: enter an ID, see who else is on the page, and call
107 them — call setup rides over nostr relays, media flows peer-to-peer via WebRTC.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 108- **[hitandrun-commonview](https://github.com/concept-collection/hitandrun-commonview)**
109 ([live](https://concept-collection.github.io/hitandrun-commonview/)).
110 The hit-and-run figure with a single live view shared by all visitors over a
111 WebRTC mesh; one peer runs the sampler via numbl and broadcasts to the rest.
112- **[commonview](https://github.com/concept-collection/commonview)**
113 ([live](https://concept-collection.github.io/commonview/)).
114 A minimal peer-to-peer page where every visitor shares one state (a counter):
115 nostr discovery, a WebRTC mesh, and a central-peer authority. The basis for
116 hitandrun-commonview.
7978becReorganize profile README by application areaJeremy Magland 117
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 118### Geometry, meshing & PDE solvers
7978becReorganize profile README by application areaJeremy Magland 119
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 120- **[mesh-studio](https://github.com/concept-collection/mesh-studio)**
121 ([live](https://concept-collection.github.io/mesh-studio/)).
122 Build CAD primitives or import STEP/IGES with
123 [OpenCASCADE.js](https://ocjs.org/), then inspect them in 3D — including each
124 face's true NURBS surface (polynomials on faces), not just its triangulation.
1329762Add mesh-converter to the project indexJeremy Magland 125- **[mesh-converter](https://github.com/concept-collection/mesh-converter)**
126 ([live](https://concept-collection.github.io/mesh-converter/)).
127 Convert meshes between 19 formats (PLY, OBJ, STL, VTK, Gmsh, XDMF, …) with
128 [meshio](https://github.com/nschloe/meshio) running in-browser on Pyodide;
129 inspect meshes in 3D and see what a lossy export would drop.
7978becReorganize profile README by application areaJeremy Magland 130- **[qhull-wasm-demo](https://github.com/concept-collection/qhull-wasm-demo)**
131 ([live](https://concept-collection.github.io/qhull-wasm-demo/)).
132 Demos and benchmarks for [qhull-wasm](https://github.com/magland/qhull-wasm),
133 which compiles [Qhull](http://www.qhull.org) to WebAssembly. Includes 2-D
134 Delaunay triangulation, 3-D convex hull, and a Delaunay benchmark with
135 matching scripts for MATLAB, Octave, and numbl.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 136- **[numbl-distmesh](https://github.com/concept-collection/numbl-distmesh)**
137 ([live](https://concept-collection.github.io/numbl-distmesh/)).
138 Every example from Persson and Strang's
139 [DistMesh](https://github.com/popersson/DistMesh), meshing 2-D regions and
140 surfaces from signed distance functions.
141- **[abc-step-1000](https://github.com/concept-collection/abc-step-1000)**
142 ([live](https://concept-collection.github.io/abc-step-1000/)).
143 The first 1000 STEP files from the
144 [ABC dataset](https://deep-geometry.github.io/abc-dataset/) of CAD models
145 (Koch et al., CVPR 2019), served gzip-compressed with a JSON manifest for
146 direct download.
7978becReorganize profile README by application areaJeremy Magland 147
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 148### Neurophysiology data & remote access
51745afAdd matmul-bench to profileJeremy Magland 149
1307823Add organization profile README indexing concept-collection reposmagland 150- **[dandiset_000986](https://github.com/concept-collection/dandiset_000986)**
151 ([visualizations](https://concept-collection.github.io/dandiset_000986/)).
152 Reproducible figures and visualizations for
e987b68Refine org profile README wordingJeremy Magland 153 [DANDI Dandiset 000986](https://dandiarchive.org/dandiset/000986), a set of
154 mouse auditory cortex recordings.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 156### Physics & quantum systems
443d470Add mri-spinsJeremy Magland 158- **[mri-spins](https://github.com/concept-collection/mri-spins)**
159 ([live](https://concept-collection.github.io/mri-spins/)).
160 Interactive MRI physics: a 3D sample of spins evolving under the Bloch
161 equations, with RF pulses, gradients, relaxation, a live signal trace, and a
162 spoiled gradient echo sequence with scanner-like gradient sounds.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 163- **[numbl-quantum-optics](https://github.com/concept-collection/numbl-quantum-optics)**
164 ([live](https://concept-collection.github.io/numbl-quantum-optics/)).
165 Runnable scripts accompanying the article "Quantum optics in MATLAB"
166 ([arXiv:2309.14354](https://arxiv.org/abs/2309.14354)), covering quantum
167 states, operators, and dynamics.
168- **[numbl-open-quantum-systems](https://github.com/concept-collection/numbl-open-quantum-systems)**
169 ([live](https://concept-collection.github.io/numbl-open-quantum-systems/)).
170 Code from "Coding closed and open quantum systems in MATLAB"
171 ([arXiv:1911.04906](https://arxiv.org/abs/1911.04906)), including Ising
172 dynamics, cavity-QED phase transitions, and Lindblad and non-Markovian
173 evolution.
9fd8371Add qhull-wasm-demo to the indexJeremy Magland 174
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 175### Image processing
9fd8371Add qhull-wasm-demo to the indexJeremy Magland 176
7978becReorganize profile README by application areaJeremy Magland 177- **[numbl-image-filter](https://github.com/concept-collection/numbl-image-filter)**
178 ([live](https://concept-collection.github.io/numbl-image-filter/)).
179 Upload an image, write a MATLAB-syntax filter, and run it on the image in the
180 browser.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 182### Number theory & visual math
7978becReorganize profile README by application areaJeremy Magland 183
48b19b2Reorder profile sections: numbl platform first, visual math lastJeremy Magland 184- **[finite-field-visualizer](https://github.com/concept-collection/finite-field-visualizer)**
185 ([live](https://concept-collection.github.io/finite-field-visualizer/)).
186 Color-coded multiplication tables over finite (prime) fields. Step through the
187 primes to watch the structure change.
188- **[gcd-visualizer](https://github.com/concept-collection/gcd-visualizer)**
189 ([live](https://concept-collection.github.io/gcd-visualizer/)).
190 A heatmap of the greatest common divisor of every pair (i, j), laid out as a
191 color-coded table.
cc4a096Add random-points-in-diskJeremy Magland 192- **[random-points-in-disk](https://github.com/concept-collection/random-points-in-disk)**
193 ([live](https://concept-collection.github.io/random-points-in-disk/)).
194 How many random points does it take before a disk looks like a disk? Voxel-density
195 heatmaps of uniform random sampling, next to the 1/√μ noise prediction.