Skip to content

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.md table, 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)