/ proof-of-concept / .mochi
Sign in
proof-of-concept / .mochi
.mochi / profile / README.md
196 lines · 14.5 KBCodeBlameHistory
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/)
65662b6Add seqlab (pulseq sequences in the browser)Jeremy Magland 33## MRI pulse sequences
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.
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/)
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
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.
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/)
4459435Add mdshare to the profile indexJeremy Magland 79### Documents
81- **[mdshare](https://github.com/concept-collection/mdshare)**
82 ([live](https://concept-collection.github.io/mdshare/)).
83 A split-pane markdown editor (LaTeX math, highlighted code, mermaid
84 diagrams) where the document is compressed into the URL itself, so sharing
85 is just copying the link; no server, nothing uploaded.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 87### Peer-to-peer shared state
1fe65cdAdd commonroom to the project indexJeremy Magland 89- **[commonroom](https://github.com/concept-collection/commonroom)**
90 ([live](https://concept-collection.github.io/commonroom/)).
91 Serverless group video calls: pick a room name, share the link, and everyone
92 in the room is connected over a full WebRTC mesh (up to 8 people), with
93 room-wide shared settings.
cfe175fAdd commonroom-recorder to the project indexJeremy Magland 94- **[commonroom-recorder](https://github.com/concept-collection/commonroom-recorder)**
95 ([run with npx](https://concept-collection.github.io/commonroom-recorder/)).
96 Command-line bot that joins a commonroom call as a visible muted participant
97 and records each participant's audio (plus the chat) to files for
98 transcription.
401b3f6Add commoncall to the project indexJeremy Magland 99- **[commoncall](https://github.com/concept-collection/commoncall)**
100 ([live](https://concept-collection.github.io/commoncall/)).
101 Serverless video calls: enter an ID, see who else is on the page, and call
102 them — call setup rides over nostr relays, media flows peer-to-peer via WebRTC.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 103- **[hitandrun-commonview](https://github.com/concept-collection/hitandrun-commonview)**
104 ([live](https://concept-collection.github.io/hitandrun-commonview/)).
105 The hit-and-run figure with a single live view shared by all visitors over a
106 WebRTC mesh; one peer runs the sampler via numbl and broadcasts to the rest.
107- **[commonview](https://github.com/concept-collection/commonview)**
108 ([live](https://concept-collection.github.io/commonview/)).
109 A minimal peer-to-peer page where every visitor shares one state (a counter):
110 nostr discovery, a WebRTC mesh, and a central-peer authority. The basis for
111 hitandrun-commonview.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 113### Geometry, meshing & PDE solvers
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 115- **[mesh-studio](https://github.com/concept-collection/mesh-studio)**
116 ([live](https://concept-collection.github.io/mesh-studio/)).
117 Build CAD primitives or import STEP/IGES with
118 [OpenCASCADE.js](https://ocjs.org/), then inspect them in 3D — including each
119 face's true NURBS surface (polynomials on faces), not just its triangulation.
1329762Add mesh-converter to the project indexJeremy Magland 120- **[mesh-converter](https://github.com/concept-collection/mesh-converter)**
121 ([live](https://concept-collection.github.io/mesh-converter/)).
122 Convert meshes between 19 formats (PLY, OBJ, STL, VTK, Gmsh, XDMF, …) with
123 [meshio](https://github.com/nschloe/meshio) running in-browser on Pyodide;
124 inspect meshes in 3D and see what a lossy export would drop.
7978becReorganize profile README by application areaJeremy Magland 125- **[qhull-wasm-demo](https://github.com/concept-collection/qhull-wasm-demo)**
126 ([live](https://concept-collection.github.io/qhull-wasm-demo/)).
127 Demos and benchmarks for [qhull-wasm](https://github.com/magland/qhull-wasm),
128 which compiles [Qhull](http://www.qhull.org) to WebAssembly. Includes 2-D
129 Delaunay triangulation, 3-D convex hull, and a Delaunay benchmark with
130 matching scripts for MATLAB, Octave, and numbl.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 131- **[numbl-distmesh](https://github.com/concept-collection/numbl-distmesh)**
132 ([live](https://concept-collection.github.io/numbl-distmesh/)).
133 Every example from Persson and Strang's
134 [DistMesh](https://github.com/popersson/DistMesh), meshing 2-D regions and
135 surfaces from signed distance functions.
136- **[abc-step-1000](https://github.com/concept-collection/abc-step-1000)**
137 ([live](https://concept-collection.github.io/abc-step-1000/)).
138 The first 1000 STEP files from the
139 [ABC dataset](https://deep-geometry.github.io/abc-dataset/) of CAD models
140 (Koch et al., CVPR 2019), served gzip-compressed with a JSON manifest for
141 direct download.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 143### Neurophysiology data & remote access
51745afAdd matmul-bench to profileJeremy Magland 144
1307823Add organization profile README indexing concept-collection reposmagland 145- **[dandiset_000986](https://github.com/concept-collection/dandiset_000986)**
146 ([visualizations](https://concept-collection.github.io/dandiset_000986/)).
147 Reproducible figures and visualizations for
e987b68Refine org profile README wordingJeremy Magland 148 [DANDI Dandiset 000986](https://dandiarchive.org/dandiset/000986), a set of
149 mouse auditory cortex recordings.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 151### Physics & quantum systems
443d470Add mri-spinsJeremy Magland 153- **[mri-spins](https://github.com/concept-collection/mri-spins)**
154 ([live](https://concept-collection.github.io/mri-spins/)).
155 Interactive MRI physics: a 3D sample of spins evolving under the Bloch
156 equations, with RF pulses, gradients, relaxation, a live signal trace, and a
157 spoiled gradient echo sequence with scanner-like gradient sounds.
332b16dLink the live acoustic-scattering-2d pageJeremy Magland 158- **[acoustic-scattering-2d](https://github.com/concept-collection/acoustic-scattering-2d)**
159 ([live](https://concept-collection.github.io/acoustic-scattering-2d/)).
ab443ecAdd acoustic-scattering-2d entryJeremy Magland 160 2D acoustic wave scattering off a room, a disk, slits, or a lens, in real
161 physical units: a MATLAB time-stepper compiled through numbl to WebGPU
162 compute kernels. Drop a microphone anywhere in the field and listen back in
163 real time, at the pitch a microphone there would actually have heard.
99510c1Reorganize profile: lead with most interactive/visual demosJeremy Magland 164- **[numbl-quantum-optics](https://github.com/concept-collection/numbl-quantum-optics)**
165 ([live](https://concept-collection.github.io/numbl-quantum-optics/)).
166 Runnable scripts accompanying the article "Quantum optics in MATLAB"
167 ([arXiv:2309.14354](https://arxiv.org/abs/2309.14354)), covering quantum
168 states, operators, and dynamics.
169- **[numbl-open-quantum-systems](https://github.com/concept-collection/numbl-open-quantum-systems)**
170 ([live](https://concept-collection.github.io/numbl-open-quantum-systems/)).
171 Code from "Coding closed and open quantum systems in MATLAB"
172 ([arXiv:1911.04906](https://arxiv.org/abs/1911.04906)), including Ising
173 dynamics, cavity-QED phase transitions, and Lindblad and non-Markovian
174 evolution.
7978becReorganize profile README by application areaJeremy Magland 178- **[numbl-image-filter](https://github.com/concept-collection/numbl-image-filter)**
179 ([live](https://concept-collection.github.io/numbl-image-filter/)).
180 Upload an image, write a MATLAB-syntax filter, and run it on the image in the
181 browser.
a10d201Reorganize profile README: feature proof-of-concept projects up topJeremy Magland 183### Number theory & visual math
48b19b2Reorder profile sections: numbl platform first, visual math lastJeremy Magland 185- **[finite-field-visualizer](https://github.com/concept-collection/finite-field-visualizer)**
186 ([live](https://concept-collection.github.io/finite-field-visualizer/)).
187 Color-coded multiplication tables over finite (prime) fields. Step through the
188 primes to watch the structure change.
189- **[gcd-visualizer](https://github.com/concept-collection/gcd-visualizer)**
190 ([live](https://concept-collection.github.io/gcd-visualizer/)).
191 A heatmap of the greatest common divisor of every pair (i, j), laid out as a
192 color-coded table.
cc4a096Add random-points-in-diskJeremy Magland 193- **[random-points-in-disk](https://github.com/concept-collection/random-points-in-disk)**
194 ([live](https://concept-collection.github.io/random-points-in-disk/)).
195 How many random points does it take before a disk looks like a disk? Voxel-density
196 heatmaps of uniform random sampling, next to the 1/√μ noise prediction.
↑↓ move↵openescclose