Signal Studio is in public beta. Usable, but still moving. Join the beta

Validation dashboard

12/12
All cards agree with their reference.
Last run 02 Sep 2026, 14:00 UTC on Signal Studio 0.9.0, harness tools/gt.py.
Raw JSON

A card is accepted once its output has been compared, on a real recording, against a reference computed separately in Python with MNE-Python or an equivalent library. A card that merely runs, or that agrees with an earlier version of itself, is not validated.

This table is written by the continuous integration run, not by hand. If a comparison starts failing, it turns red here before anyone tells you.

CardReferenceDatasetAgreementStatusLast run
Bipolar Reference
signalstudio.bipolar
mne.set_bipolar_reference
MNE-Python 1.8.0
ds004457 sub-1
144 ch
r = 1pass02 Sep 2026, 13:41 UTC
Common Average Reference
signalstudio.car
MNE average reference
MNE-Python 1.8.0
P05
128 ch
r = 1pass02 Sep 2026, 13:41 UTC
Low Pass
signalstudio.low_pass
MNE FIR filter
MNE-Python 1.8.0
P01
64 ch
r = 0.9998pass02 Sep 2026, 13:41 UTC
High Pass
signalstudio.high_pass
MNE FIR filter
MNE-Python 1.8.0
P01
64 ch
r = 0.9963pass02 Sep 2026, 13:41 UTC
Band Pass
signalstudio.band_pass
MNE FIR filter
MNE-Python 1.8.0
P01
64 ch
r = 0.9901pass02 Sep 2026, 13:41 UTC
Notch
signalstudio.notch
MNE notch_filter
MNE-Python 1.8.0
P01
64 ch
r = 0.9994pass02 Sep 2026, 13:41 UTC
Crowther Artefact Removal
signalstudio.crowther
artefact-removal reference implementationds004457 sub-1
144 ch
max |Δ| = 1.9e-09pass02 Sep 2026, 13:41 UTC
Epoch
signalstudio.epoch
mne.Epochs
MNE-Python 1.8.0
P01
64 ch
0pass02 Sep 2026, 13:41 UTC
Morse Wavelet
signalstudio.morse_tf
jLab morse wavelets
jLab 1.7.1
P01
32 ch
r = 0.9987pass02 Sep 2026, 13:42 UTC
FDR Correction
signalstudio.fdr
statsmodels multipletests
statsmodels 0.14.2
synthetic p-values, n=100000pass02 Sep 2026, 13:42 UTC
N1 N2 Peaks
signalstudio.n1n2
hand-scored peaks, two ratersds004457 sub-1
144 ch
±1.8 mspass02 Sep 2026, 13:42 UTC
Reject by Variance
signalstudio.reject_variance
mne.Epochs.drop_bad
MNE-Python 1.8.0
P01
64 ch
identical trial setpass02 Sep 2026, 13:42 UTC

How the comparison works

For each card, the harness loads a real recording, runs the card through the application engine, then computes the same quantity from scratch with the reference library in a separate process. The two outputs are compared channel by channel.

The tolerance is set per card, because the right answer differs. A re-referencing operation is arithmetic and should agree to floating-point noise, so its tolerance is 1e-6. A FIR filter depends on how the transition band is resolved, so a correlation of 0.99 is the honest target rather than exact equality.

What this does not tell you

Agreement with a reference means the arithmetic is right. It does not mean the card is the right choice for your data, that the parameters you picked are sensible, or that the reference itself is beyond question. Those remain your judgement.

It also covers built-in cards only. Cards published by other people are reviewed before they appear in the marketplace, but they are not run through this harness.

Replaying it yourself

The harness ships with the repository. It recomputes the reference from scratch rather than comparing against a stored result, so a change in the reference library shows up as a disagreement rather than passing silently.

terminal
python3 tools/gt.py --all --report validation.json