Data
Demo data with known answers
Every window can open synthetic recordings made by the toolbox itself. They are generated from explicit formulas with fixed random seeds, so they are always the same, and each file stores the values that were simulated.
How to use it
- Try demo data in a window opens it with its demo already loaded and the settings filled in.
- ▶ Try it with demo data in Help does the same for the topic shown.
- Generate all demo files… (Help, Welcome topic; the launcher's ? Help opens that topic) writes every file to a folder, which can become the Import folder.
- From code:
files = DemoData.writeAll(folder), orp = DemoData.file(kind)for one cached file (intempdir/NeuroAnalyzerDemo). - Each file has a
truthvariable with the simulated values: onsets, latencies, amplitudes, spike times, shifts, diameters, and so on.
Everything shown on this site, every plot and number, comes from these synthetic recordings. They are not measurements from animals.
Files
| File | Open it in | What it contains |
|---|---|---|
| demo_ldf_export.mat | LDF Extract | LabChart-style export, 300 s at 1000 Hz: stimulus on channel 6 (5 s pulses every 30 s from 30 s), LDF on channel 8 (~120 PU) with a +30 PU response peaking ~4 s after each onset |
| demo_ldf_cropped.mat | LDF Process | The same recording cropped to 20–280 s (stim, LDF, t, Fs) |
| demo_ldf_trials.mat | LDF Average, Signal Characterization | 8 trials from −5 to 20 s at 10 Hz (segmentedLDF, segmentedTime) |
| demo_tank/ | Ephys Extract | 30 s TDT-like block: 8 raw channels at 24414 Hz and a whisker stimulus (20 ms pulses every 2 s from 1 s) |
| demo_lfp.mat | LFP Analysis, Signal Characterization | 8-channel LFP at 1017 Hz, 100 µm spacing: ERP with N1 at 15 ms and P2 at 40 ms, largest at channel 4 |
| demo_mua.mat | MUA Analysis | Channels 3–5 at 24414 Hz with three units that fire more for 50 ms after each stimulus |
| demo_imaging.mat | ROI Analysis | 96 × 96 × 150 frames at 10 Hz: a pulsing vessel, a moving red blood cell and a cell with calcium transients (roiMask included) |
| demo_lfp_oscillations.mat | LFP Analysis (step 6) | demo_lfp.mat plus 6 Hz theta (40 µV, all channels) and a phase-locked 40 Hz burst (10 µV, 50–250 ms after each stimulus, channels 3–5) |
| demo_imaging_advanced.mat | ROI Analysis | Jittered stack (±3 px), three cells with distinct event times, a pulsing vessel and a red blood cell crossing the diameter line |
| demo_histology.mat | Histology / culture | Two images of one culture (day 1, day 3), nuclei + marker channels, 400 × 400 px at 1 µm: 60 nuclei, 24 then 39 marker-positive, debris and a fibre, day 3 shifted on the stage |
| groups/ | Signal Characterization (Groups & statistics) | 24 LDF trial files: the same 8 animals in Control, Stimulated and Drug (true peaks 18, 30 and 24 PU) |
| formats/ | Ephys Extract | The first 6 s of demo channels 3–6 as an Intan .rhd, an Open Ephys binary folder and an NWB file |
LDF recording (DemoData.ldfExport)
An 8-channel LabChart-style export, 300 s at 1000 Hz. Channel 6 is the stimulus: 5 V pulses of 5 s every 30 s from t = 30 s (9 pulses). Channel 8 is the LDF signal:
LDF(t) = 120 + 5·sin(2πt/400) + 3·sin(2π·0.13·t) + 1.5·sin(2π·6·t) + noise(SD 2)
+ Σ_onsets 30·g((t − onset)/4), g(x) = x³·e^(3(1−x)) for x > 0, else 0
That is a ~120 PU baseline, a slow drift (period 400 s), vasomotion at 0.13 Hz, a 6 Hz cardiac ripple and white noise, plus a response of +30 PU peaking 4 s after every onset. The response shape is a gamma-variate function, a common model of slow haemodynamic responses[12].
- Cropped file
- 20–280 s of the same recording (
stim,LDF,t,Fs); onsets at 10, 40, … 250 s. - Trials file
- The 8 onsets whose −5 to +20 s window fits, block-averaged to 10 Hz (
segmentedLDF,segmentedTime,Fs). - Ground truth
- onsets, stimulus duration 5 s, response peak delay 4 s, amplitude 30 PU, baseline 120 PU.
Electrophysiology (DemoData.tdtTank, lfpFile, muaFile)
30 s, 8 channels 100 µm apart, whisker stimulus pulses of 20 ms every 2 s from 1 s (15 stimuli). The raw channels are at the TDT rate 24414.0625 Hz; the LFP and stimulus are at 1017.25 Hz (24× decimation).
LFP
ERP(x) = −120 µV·exp(−(x − 15 ms)²/(2·(5 ms)²)) + 60 µV·exp(−(x − 40 ms)²/(2·(12 ms)²))
LFP_c(t) = profile_c·Σ ERP(t − onset) + shared(t) + local_c(t) + white noise (1 µV)
profile_c = exp(−(depth_c − 300 µm)²/(2·(150 µm)²)) → largest on channel 4
The background shared(t) is the same on every channel (an AR(1) process with coefficient 0.98, scale 3 µV), so it cancels in the CSD; local_c(t) is small independent AR(1) noise (0.9, 0.3 µV). Ground truth: onsets, sink channel 4, N1 at 15 ms, P2 at 40 ms, spacing 100 µm.
MUA
| Unit | Home channel | Waveform (negative peak) | Baseline rate | Rate 5–55 ms after each stimulus |
|---|---|---|---|---|
| 1 | 4 | about −90 µV | 6 spikes/s | 80 spikes/s |
| 2 | 4 | about −50 µV | 10 spikes/s | 40 spikes/s |
| 3 | 5 | about −110 µV | 3 spikes/s | 120 spikes/s |
Spike trains are Poisson with a 2 ms refractory period; each unit is seen on neighbouring channels with a gain of exp(−|distance|/0.8) (skipped below 0.05). Noise is white, 10 µV. The MUA file holds channels 3–5. Ground truth: every unit's spike times, rates and home channel.
Oscillation demo (core/demo/demoLFPOscillations.m)
The same LFP plus a 6 Hz theta rhythm (40 µV, identical on all channels, frequency wandering with SD 0.5 Hz, so not phase-locked to the stimuli) and a 40 Hz burst (10 µV, 50–250 ms after each stimulus with 25 ms raised-cosine ramps, channels 3–5, same phase at every stimulus).
Imaging stacks
Basic stack (DemoData.imagingStack)
96 × 96 px, 150 frames at 10 Hz. A dark vertical vessel at x = 60 whose diameter is 12 + 3·sin(2π·0.2·t) px (9–15 px, period 5 s);
a bright red blood cell (Gaussian spot, sigma 2 px) moving down the upper part of the vessel at 2 px per frame (it never reaches the diameter line at y = 70);
a cell at (24, 30), radius 6 px, with calcium transients of ΔF/F = 1 at 3, 7 and 11 s (rise 0.1 s, decay 0.8 s) added on top of the tissue background; sensor noise SD 0.02. roiMask marks the cell.
Advanced stack (core/demo/demoImagingAdvanced.m)
- Every frame translated by a sub-pixel shift that follows a smooth random walk, zero mean, at most 3 px in each direction (the true shifts are stored).
- Three cells: (22, 24) r = 6 px, events at 4.0, 8.5, 13.0 s; (26, 78) r = 5 px, events at 5.5, 10.5 s; (82, 30) r = 7 px, events at 7.0, 12.0 s (ΔF/F amplitudes 1.0, 0.8, 1.2).
- The vessel at x = 60 (12 ± 3 px, period 5 s) and a red blood cell moving 3 px per frame down the whole image, crossing the diameter line (35, 64)–(85, 64) about every 3 s.
EEG (core/demo/demoEEG.m)
- Scalp: an oddball study of 8 participants, 32 channels at 250 Hz, trials from −200 to 800 ms, already cleaned; Standard (40), Target (15) and Novel (15) trials, 5 rejected per participant. P300 at 350 ms, largest at Pz: Target 10 > Novel 6 > Standard 2 µV; P1 +2 µV at 60 ms (Oz), N1 −5 µV at 100 ms (Cz), 10 Hz alpha in random phase.
- Rodent: a continuous 60 s recording from 4 skull screws at 1000 Hz with 30 light flashes; a visual evoked potential over V1 (−40 µV at 50 ms, +25 µV at 100 ms), 30% of that over M1.
- Both are written in every EEG format the window reads (EEGLAB, FieldTrip, BrainVision, plain .mat). Expected results are on the EEG page.
Groups (core/demo/demoGroups.m)
24 LDF trial files: the same 8 animals in three conditions (Control, Stimulated, Drug), 8 trials each (−5 to 20 s at 10 Hz), response peaking 4 s after onset on a 110–130 PU baseline.
amplitude(animal, condition) = trueMean(condition) + animal effect (SD 3 PU)
+ animal × condition scatter (SD 2.5 PU)
trueMean = 18, 30, 24 PU (Control, Stimulated, Drug); each trial adds jitter (SD 2 PU)
Population effects: Stimulated − Control = 12 PU, dz = 3.27 (paired), Cohen's d = 3.02 (unpaired), ANOVA η² = 0.60. The realised per-file amplitudes are stored as well.
Formats (core/demo/demoFormats.m)
The first 6 s of tank channels 3–6 (3 stimuli at 1, 3 and 5 s) written as an Intan RHD file (format 3.0, resampled to 20 kHz, stimulus on DIGITAL-IN-01 and as a 1 V pulse on ANALOG-IN-1), an Open Ephys binary folder (GUI 0.6 layout, 30 kHz, TTL line 1 and ADC1, first sample number 512000) and an NWB file (raw at 24414.0625 Hz as int16 × 0.195 µV, the whisker stimulus TimeSeries and a trials table). The writers are part of the toolbox (core/io); the tests also read files assembled byte by byte from the published format descriptions.
Batch sets (core/demo/demoBatch.m)
| Pipeline | Files | What differs between files (file k) |
|---|---|---|
| LDF | 4 cropped recordings, 200 s at 1000 Hz, 7 stimuli | Amplitude 15 + 5k PU (20–35), peak delay 2.5 + 0.5k s (3–4.5), baseline 115 + 5k PU |
| LFP | 3 recordings, 8 channels, 20 s at 1000 Hz, 10 stimuli | N1 at 9 + 3k ms (12, 15, 18) of −(80 + 20k) µV, sink on channel 2 + k (3, 4, 5) |
| MUA | 2 files | The demo MUA recording and an exact copy at twice the gain |
| Imaging | 3 stacks, 64 × 64 × 100 frames at 10 Hz | Peak ΔF/F 0.5k (0.5, 1.0, 1.5), transients at 3 and 6.5 s; vessel diameter 8 + 2k ± 2 px |
| Response features | 4 trial files, 8 trials each | Amplitude 15 + 5k PU, peak delay 2.5 + 0.5k s |
Random seeds
All generators use MATLAB's RandStream('mt19937ar') with fixed seeds: DemoData.Seed = 20260924 (+1 LDF, +2 electrophysiology, +3 imaging, +101 theta wander), 20260925 for the groups, 20260965 for the advanced stack and 20260930 + offset for the batch sets. The global random stream is not touched.