Report templates (structures that worked in the pilot)¶
Replicate these layouts in the toolbox's reporting component. All figures should
derive from the single metrics.json (principle #7).
A. Per-participant device/condition comparison report¶
One HTML per participant; each section places the two arms side by side (left vs right). Sections, in order: 1. Overview — device/condition, bad channels, n trials. 2. Decoding — accuracy vs window + ITR vs window (overlaid arms, faceted by condition/band), with the chance line marked. 3. Spectral — SNR spectra (per condition); electrode impedance channel-array maps (sequential colormap); per-channel SNR channel-array maps (diverging). 4. Decoding — confusion matrices. 5. Hardware — impedance-vs-SNR scatter.
B. Group / study report¶
- Mean metric by condition × arm (bar charts).
- Accuracy-vs-window and ITR-vs-window curves, mean ± SD, chance line.
- Per-participant accuracy bar at the operating window (shows spread — never hide it).
C. Deliverable metrics (external)¶
metrics.json(source of truth) →metrics.mdtable, a prose "status" paragraph, one-pager stat chips, and slide figures (PNG ≥150 dpi + SVG).- Every accuracy carries chance + window; every mean carries SD + per-participant values; an explicit "not measured / not computed" block.
Figure conventions¶
- Accuracy/ITR vs window: x = window (s), mean line + SD shading, dashed chance line,
title states decoder + n. (
ssvep.classification.viz.plot_window_sweep) - Channel maps: discrete circles at montage 2-D positions, no interpolation; diverging
(signed) vs sequential (non-negative). (
ssvep.classification.viz.plot_channel_array) - Confusion: row-normalised. (
ssvep.classification.viz.plot_confusion)