Binary signal fixtures for the eegdash
ingestion + parser test suites. Modeled after
mne-tools/mne-testing-data:
the EEGDash main repo ships only small JSON I/O contracts inline; the raw
signal samples (BDF / EDF / SET / VHDR / SNIRF / FIF / MEF3 etc.) live here
and are fetched lazily by eegdash.testing.data_path() on first use.
eeg/ BrainVision (.vhdr/.vmrk/.eeg), BDF, EDF, EEGLAB .set + LICENSE-ATTRIBUTION
fnirs/ SNIRF samples + LICENSE-ATTRIBUTION
ieeg/ BrainVision iEEG sample + a MEF3 .tmet header
meg/ Tiny FIF samples (annotations, projections, events)
Each format directory carries a LICENSE-ATTRIBUTION.md documenting the
upstream source and licence of every fixture, where applicable. The bulk of
the fixtures are either CC0-released open data, synthetic data generated
for testing, or BSD-3-Clause samples mirrored from MNE-Python.
Tagged releases. eegdash pins a specific tag in
eegdash/testing.py; bumping the pin is what activates a new fixture set.
from eegdash.testing import data_path, requires_testing_data
@requires_testing_data
def test_my_parser():
bdf = data_path() / "eeg" / "sub-001_ses-01_task-meditation_eeg.bdf"
...On first call data_path() downloads the pinned tarball into
~/.cache/eegdash/testing-data/ (overridable via EEGDASH_TESTING_DATA_DIR),
verifies its hash, and unpacks. Subsequent calls return the cached path.
Set EEGDASH_SKIP_TESTING_DATA=true to skip every @requires_testing_data
test (useful for air-gapped or offline development).
- Drop the file under the matching format dir.
- Add a row to that dir's
LICENSE-ATTRIBUTION.mddocumenting source + licence + any redaction performed. - Commit, open a PR.
- After merge, tag a new release here.
- Bump the pin (URL hash) in the EEGDash main repo.
This repo is BSD-3-Clause for any synthetic/derived content. Individual
fixtures retain their upstream licence as documented in each
LICENSE-ATTRIBUTION.md — please honour those terms when redistributing.