P1 precomputed w-bad-channel-detective

Bad-Channel Detective

Mark the bad channels in five 30-second segments, then open the metric panels and compare your call with an objective detector.

2 claims on this page are unverified. TODO(confirm) marks a specific statement the author has not yet checked against a primary source. Everything else on this page has been reviewed. Treat a marked claim as provisional and go to the cited source rather than quoting the sentence.

Modes: default — the widget below runs in default. Use Share state to put the exact view in the URL.

Bad-Channel Detective

mode: default
Loading Bad-Channel Detective…

Data: ds-eegbci , subject S004, run R02, 15–45 s · license ODC-By-1.0 · DOI 10.13026/C28G6P · synthetic / modified segment · labels: algorithmic · a cropped, re-referenced or filtered derivative of the source recording.

What it does

Five 30-second multichannel segments are shown one at a time, with nothing but the traces. You mark the channels you would exclude. Then you reveal the metric panels — flatness, robust amplitude deviation, neighbour correlation, RANSAC predictability, high-frequency noise ratio and dropout fraction — and compare your call with the flags an objective detector produced. Every metric and every threshold is precomputed and shipped with the segments, so the panels are the detector’s actual numbers, not a re-implementation in the browser.

The point of the two-pass design is that the eye and the metrics fail differently. A channel with brief intermittent dropouts is easy for a detector and easy to scroll past; a channel that is clean but recording the wrong thing is easy for a reader and invisible to every criterion in the table.

Controls

ControlWhat it sets
SegmentWhich of the five 30-second segments is shown
Mark bad / goodToggle a channel’s flag (click the trace or its label; keyboard-operable)
Metric panelWhich criterion’s per-channel values are displayed, with its threshold line
RevealShow the reference flags and which criterion fired for each
Scale, time windowDisplay sensitivity and page length, as in the raw scroller

What to look for

default

  • A flat channel is obvious in the metric panel and easy to miss on screen at a scale set by the rest of the montage.
  • The criteria disagree with each other, and the disagreement is informative: a channel flagged by one criterion in one window is a different problem from a channel flagged by four throughout.
  • Low neighbour correlation catches a channel recording something the rest of the head is not; it can never catch a bridged pair, whose correlation is higher than average.
  • Interpolation quality depends on the neighbourhood: a bad channel in the middle of the cap is well surrounded, one at the montage edge or inside a cluster of other bad channels is not.
  • The count of bad channels is less informative than their arrangement — look at where they are before deciding whether the recording is usable.

Used in

  • L2.2 Channel locations and bad channels (default)

Data provenance

Five 30-second segments from public research-cap recordings — ds-eegbci (EEG Motor Movement/Imagery Dataset, 64 channels, 160 Hz, no hardware filters; ODC-By 1.0 on PhysioNet, CC0 on the OpenNeuro mirror) and ds-dortmund (Dortmund Vital Study resting EEG, 64 channels, CC0). At least one segment contains a genuinely bad channel; one contains a planted flat channel and is therefore a labelled synthetic derivative, carrying synthetic: true, derived_from and a modifications list in its sidecar (§4.5), which the frame’s provenance line shows.

The per-channel metrics, thresholds and reference flags are computed in Python and shipped in segments.json; the widget only reads them. The flags carry label_source: algorithmic until the author reviews them, and the JSON records the detector that produced them.

TODO(confirm): the exact subjects, runs and segment start times, and the basenames of the five binary assets, are read from data/manifest.json once data/scripts/extract_p2_widgets.py has run; the frame’s provenance line is the authority.

Open the code

site/src/components/widgets/w-bad-channel-detective/Widget.svelte, index.ts, README.md. Repository link: TODO(confirm) (GitHub org/repo, §13 item 3).