ON002578: eeg dataset, 2 subjects#
Visual Oddball Task (256 channels)
Citation: Arnaud Delorme, Scott Makeig (20). Visual Oddball Task (256 channels). 10.82901/nemar.on002578
2-participant EEG dataset — Visual Oddball Task (256 channels).
Quickstart#
Install
pip install eegdash
Access the data
from eegdash.dataset import ON002578
dataset = ON002578(cache_dir="./data")
# Get the raw object of the first recording
raw = dataset.datasets[0].raw
print(raw.info)
Filter by subject
dataset = ON002578(cache_dir="./data", subject="01")
Advanced query
dataset = ON002578(
cache_dir="./data",
query={"subject": {"$in": ["01", "02"]}},
)
Iterate recordings
for rec in dataset:
print(rec.subject, rec.raw.info['sfreq'])
If you use this dataset in your research, please cite the original authors.
BibTeX
@dataset{on002578,
title = {Visual Oddball Task (256 channels)},
author = {Arnaud Delorme and Scott Makeig},
doi = {10.82901/nemar.on002578},
url = {https://doi.org/10.82901/nemar.on002578},
}
About This Dataset#
Data for this selective attention task was collected in 2004
at the Swartz Center for Computational Neuroscience at UCSD.
These datasets are part of a larger corpus of 32-channel data
collected a few years prior. The experiment is identical although the number of channel is larger (256), the electrode positions are scanned and the anatomical MRI is provided (allowing for precise source localization). See publication for more details.
Raw data manipulation before export: - Fuse all BDF BIOSEMI files and reference to electrode 135 (see loadallbdf_2020.m) - Fuse with presentation file information (see loadallbdf_2020.m) - Remove spurious events of type ‘condition’ and ‘201’ (see clean_events.m) - Add HED tags (see addHEDTags.m) - Convert MRI to NIFTI format (MRIcron) and reorient (MRIcrogl) (see convert_nifti.m)
NEMAR curation changes (2026-05-21)
View full README
Raw data manipulation before export: - Fuse all BDF BIOSEMI files and reference to electrode 135 (see loadallbdf_2020.m) - Fuse with presentation file information (see loadallbdf_2020.m) - Remove spurious events of type ‘condition’ and ‘201’ (see clean_events.m) - Add HED tags (see addHEDTags.m) - Convert MRI to NIFTI format (MRIcron) and reorient (MRIcrogl) (see convert_nifti.m)
NEMAR curation changes (2026-05-21)
BIDS validator: 7 errors + 109 warnings → 0 errors + 94 warnings. Raw
.set/.fdtbinary payloads unchanged.participants.tsv
Header had
participant_idlisted twice (participant_id, gender, participant_id, age), and the duplicate column repeated the subject ID. Dropped the duplicate so the header isparticipant_id, gender, age. Two data rows now readsub-001 F 30andsub-002 M 30. Closes theTSV_COLUMN_HEADER_DUPLICATE,TSV_COLUMN_MISSING, andPARTICIPANT_ID_MISMATCHerrors.dataset_description.json
BIDSVersion:"v1.2.1"→"1.8.0"(BIDS-canonical, no leadingv). ClosesUNKNOWN_BIDS_VERSION.Added
DatasetType: "raw".Added
GeneratedBy: [{Name: "nemar-cli", Version: "0.8.8", CodeURL: "https://github.com/nemar-org/nemar-cli"}].sub-NNN/eeg/sub-NNNtask-attentionelectrodes.tsv (2 files)
git mvtosub-NNN/eeg/sub-NNN_electrodes.tsv(dropped thetask-entity — electrode positions are subject-level, not task-level per BIDS). ClosesEXCESSIVE_ELECTRODE_SPECIFICITY×2 and dependentSIDECAR_KEY_RECOMMENDED:TaskNamewarnings.sub-NNN/eeg/sub-NNNtask-attentioncoordsystem.json (2 files)
git mvtosub-NNN/eeg/sub-NNN_coordsystem.json(same rationale). ClosesEXCESSIVE_COORDSYSTEM_SPECIFICITY×2 andJSON_SCHEMA_VALIDATION_ERROR:EEGCoordinateSystem(file contents unchanged; value"CTF"is a valid BIDS coordinate system once the file is at the subject-level path).task-attention_events.json (new, consolidating root sidecar)
Created at dataset root, replacing the two byte-identical per-subject
_events.jsonfiles (removed) plus the orphan rootevents.json(also removed). BIDS inheritance carries this single file to both subjects.All time columns (
onset,duration,response_time):"Units": "second"→"Units": "s"(BIDS-canonical SI symbol).Added
samplecolumn definition (was undocumented).
valuecolumn: removed the obsoleteLevelsblock — the old keysx11..x55did not match any cells inevents.tsv, which is what triggered theTSV_VALUE_INCORRECT_TYPEerrors on bare numerics like34(sub-001 line 249) and35(sub-002 line 252). Closes both errors.
valuecolumn: preserved the HED dictionary from the orphan rootevents.json(12 entries: numeric trigger codes 31/33-35/41-45 plus the string classesPicture,Response,boundary) and re-anchored it undervalue.HEDto match the actual column name inevents.tsv. The orphan had nested it under a non-existent columntype, so the annotations were unreachable; their content is unchanged.Removed files
events.json(root) — orphan that nested HED tags under a non-existent columntype. Salvageable HED entries now live in the newtask-attention_events.jsonundervalue.HED. Removing this file also closes theHED_ERROR:SIDECAR_INVALIDon sub-001.
sub-001/eeg/sub-001_task-attention_events.json,sub-002/eeg/sub-002_task-attention_events.json— byte-identical to each other; both replaced by the inheriting root sidecar.
Cohort#
Dataset Statistics#
Age distribution by gender (n=2, range 30–30 yr, mean 30.0 yr)
Sex composition
Channel counts: 256 ch (n=2 recordings)
Sampling frequencies: 256.0 Hz (n=2 recordings)
Total recording duration: 1 h 27 min
Signal · Electrodes & live trace#
Live trace viewer — sub-001 · task-attention
Showing one representative recording out of
2 subjects and 2 recordings in this dataset.
Browse the full set on OpenNeuro;
drop any other _eeg.{set,edf,bdf,vhdr} file onto the
viewer (or pass ?eeg=<url>) to inspect it.
Electrode layout — EEG · 256 sensors — 256 channels
NEMAR Processing Statistics#
The plots below are generated by NEMAR’s automated EEG pipeline. The histogram shows pipeline success for data cleaning and ICA decomposition, the percentage of data frames and EEG channels retained after artefact removal, line noise per channel (RMS, dB), and the age/gender distribution of participants.
HED event descriptors word cloud
Manifest#
File Explorer#
Browse the BIDS file structure of this dataset. Records are fetched on demand from the EEGDash catalog the first time you open the explorer.
Full dataset metadata table
Dataset ID |
|
Title |
Visual Oddball Task (256 channels) |
Author (year) |
— |
Canonical |
— |
Importable as |
|
Year |
20 |
Authors |
Arnaud Delorme, Scott Makeig |
License |
CC0 |
Citation / DOI |
|
Source links |
OpenNeuro | NeMAR | Source URL |
Copy-paste BibTeX
@dataset{on002578,
title = {Visual Oddball Task (256 channels)},
author = {Arnaud Delorme and Scott Makeig},
doi = {10.82901/nemar.on002578},
url = {https://doi.org/10.82901/nemar.on002578},
}
API Reference#
eegdash.datasetEEGDashDataset- class eegdash.dataset.ON002578(cache_dir: str, query: dict | None = None, s3_bucket: str | None = None, **kwargs)[source]#
Visual Oddball Task (256 channels)
- Study:
on002578(NeMAR)- Author (year):
nan- Canonical:
—
Also importable as:
ON002578,nan.Modality:
eeg. Subjects: 2; recordings: 2; tasks: 1.- Parameters:
cache_dir (str | Path) – Directory where data are cached locally.
query (dict | None) – Additional MongoDB-style filters to AND with the dataset selection. Must not contain the key
dataset.s3_bucket (str | None) – Base S3 bucket used to locate the data.
**kwargs (dict) – Additional keyword arguments forwarded to
EEGDashDataset.
- data_dir#
Local dataset cache directory (
cache_dir / dataset_id).- Type:
Path
Notes
Each item is a recording; recording-level metadata are available via
dataset.description.querysupports MongoDB-style filters on fields inALLOWED_QUERY_FIELDSand is combined with the dataset filter. Dataset-specific caveats are not provided in the summary metadata.References
OpenNeuro dataset: https://openneuro.org/datasets/on002578 NeMAR dataset: https://nemar.org/dataexplorer/detail?dataset_id=on002578 DOI: https://doi.org/10.82901/nemar.on002578
Examples
>>> from eegdash.dataset import ON002578 >>> dataset = ON002578(cache_dir="./data") >>> recording = dataset[0] >>> raw = recording.load()
- __init__(cache_dir: str, query: dict | None = None, s3_bucket: str | None = None, **kwargs)[source]#
- save(path: str, overwrite: bool = False, offset: int = 0)[source]#
Save datasets to files by creating one subdirectory for each dataset:
path/ 0/ 0-raw.fif | 0-epo.fif description.json raw_preproc_kwargs.json (if raws were preprocessed) window_kwargs.json (if this is a windowed dataset) window_preproc_kwargs.json (if windows were preprocessed) target_name.json (if target_name is not None and dataset is raw) 1/ 1-raw.fif | 1-epo.fif description.json raw_preproc_kwargs.json (if raws were preprocessed) window_kwargs.json (if this is a windowed dataset) window_preproc_kwargs.json (if windows were preprocessed) target_name.json (if target_name is not None and dataset is raw)
- Parameters:
path (str) –
- Directory in which subdirectories are created to store
-raw.fif | -epo.fif and .json files to.
overwrite (bool) – Whether to delete old subdirectories that will be saved to in this call.
offset (int) – If provided, the integer is added to the id of the dataset in the concat. This is useful in the setting of very large datasets, where one dataset has to be processed and saved at a time to account for its original position.
BaseDataset from braindecode — windowed via create_windows_from_events.braindecodeDataLoader; supports parallel workers and on-the-fly augmentations.pytorchSwap any load_dataset(...) call for on002578 to reproduce the tutorial on this dataset.
Citation
Arnaud Delorme, Scott Makeig (20). Visual Oddball Task (256 channels). 10.82901/nemar.on002578
Provenance
¹Contributed to nemar in BIDS format.
²Curated & ingested by the EEGDash catalog; see CITATION.cff for canonical reference.
³Persistent identifier: 10.82901/nemar.on002578.
See Also#
eegdash.dataset.EEGDashDataseteegdash.dataset