- One spike, eleven numbers
In the Voytek Lab, David's project was parameterizing intracellular action potentials: take a raw patch-clamp sweep, find every spike, and reduce each one to a handful of interpretable numbers: ramp slope, inflection point, peak width and sharpness, exponential decay rate. The lab's spikeparam package defines the model; this page runs it on real recordings, in your browser.
- Learning the lab's model
spikeparam (a Voytek Lab package, NIH R01 GM134363) fits each windowed spike in a fixed order: smooth the derivative with LOWESS, find the inflection as the intersection of two line fits, open calipers at half-height for the peak width, then fit a bounded exponential down the tail. Panel 1 animates exactly that sequence. An alternative model (the sum of two skewed Gaussians) refits the same waveform with r² ≈ 0.999.
- Getting the data
The recordings are marmoset cortical neurons from the Primate Cell Type Database (primatedatabase.com), published on DANDI as dandiset 001776 (CC-BY-4.0). NWB files read with h5py, each sweep an 8-second current-clamp trace at 50 kHz. The notebooks' loader (extract_data) walked the acquisition group of each file; the page ships four real sweeps and the feature table from ten subjects.
- The parameters become sliders
Fitting is a one-way street until you invert it: panel 2 turns the fitted parameters into sliders and regenerates a waveform from them (gen_fit_ramp + gen_fit_exp, or the two skewed Gaussians), with a real spike ghosted underneath to match by hand. The mini train at the bottom is sim_patch: spikes stitched together with exponential hyperpolarization at whatever ISI you dial in.
- The MEGA dataframe
Every sweep of every file went through the same pipeline into one growing table (monkey_df, affectionately the 'super mega df' in the code), then metadata joined on: species, brain region, cortical layer, sex, dendritic type. Panel 3 is that table as a live scatter: pick any two features, brush a region, and the real waveforms behind the selected points overlay on the right, with the group boxplots the notebooks drew beside them.
- Describing, not concluding
The original statistics compared features across metadata groups (boxplots, overlapped average waveforms, ANOVA). That analysis is unpublished, so this page shows what was compared and how, not scientific conclusions. The shipped figures are David's own rendered outputs from the 2024 notebooks.
- Rebuilt for this page (2026-09-01)
The TS port of spikeparam's fit (LOWESS, control points, bounded exponential fit) was written with AI coding tools and is fixture-tested against the real Python pipeline on the shipped sweeps: spike detection matches sample-for-sample. The live feature table was rebuilt from the current public release of the dataset (10 files, ~2,700 spikes, all Callithrix jacchus); the 2024 analysis in the figures also drew on macaque files from a pre-release version that the published dandiset has since superseded, so the figures show species and regions (LIP, Macaca) the rebuilt table doesn't contain. spikeparam is the lab's work; David is a user of the package, not an author.