NEMAR copy of ds006104
You're viewing the NEMAR copy at v1.0.0.
Each OpenNeuro pull is a NEMAR major bump
(vN.0.0); intermediate versions are NEMAR-side fixes.
EEG dataset for speech decoding
This dataset comprises EEG recordings from 24 participants across two related studies (2019 and 2021) investigating phoneme discrimination during concurrent transcranial magnetic stimulation (TMS) of motor and speech-related cortical regions. Participants listened to speech sounds—including single phonemes, phoneme pairs, and phoneme triplets (real and pseudowords)—and responded via button press, enabling exploration of articulation and coarticulation effects on neural speech decoding. The dataset supports research into cortical mechanisms underlying speech perception and motor cortex involvement in phoneme processing.
AI-generated description, may include mistakesLoading demographics…
Coming soon. Per-file data-quality summaries are precomputed by the NEMAR processing pipeline. The static aggregate is on the way — tracked at nemar-cli#511.
Files
How to use the data (for agentic research) license, citation, download commands, Zarr access
What it is
- Modalities
- EEG
- Participants
- 24
- Size
- 83.8 GB
- Tasks
- Words, phonemes, singlephoneme
License and terms
- License
- CC0
- Recommended citation
- Moreira, J. P. C., Carvalho, V. R., Mendes, E. M. A. M., Fallah, A., Sejnowski, T. J., Lainscsek, C., & Comstock, L. (2026). EEG dataset for speech decoding (Version v1.0.0) [Data set]. NEMAR. https://doi.org/10.82901/nemar.on006104
- Reference 1
- https://doi.org/10.1097/AUD.0b013e3181b1d42d
- Reference 2
- https://doi.org/10.1523/JNEUROSCI.2383-16.2017
- Reference 3
- https://doi.org/10.1002/hbm.22016
Where the bytes are
- Latest version (always current)
- https://data.nemar.org/on006104/latest/
- This version (v1.0.0)
- https://data.nemar.org/on006104/v1.0.0/
How to download
- The dataset
-
nemar dataset download on006104Clones and fetches in one step. Content under stimuli/ and derivatives/ is skipped by default because those trees can be large; add --stimuli --derivatives for the whole thing. - A subset, one step
-
nemar dataset download on006104 --subjects sub-01,02Also filters by --sessions, --tasks, --runs, --datatypes, --include and --exclude. - A subset, step 1
-
nemar dataset clone on006104Clones git-annex pointers only; fetches no file content. Creates ./on006104. - A subset, step 2
-
cd on006104The get command below reads the clone's annex, so it only works from inside the clone. - A subset, step 3
-
nemar dataset get <files>Pulls the files you actually need. Skips stimuli/ and derivatives/ unless the path you ask for is under one of them. - One small file
- https://data.nemar.org/on006104/v1.0.0/participants.tsv A direct HTTPS fetch works for any single file.
Assess fit without downloading
- Participants table
- https://data.nemar.org/on006104/v1.0.0/participants.tsv
- Dataset description
- https://data.nemar.org/on006104/v1.0.0/dataset_description.json
- Directory listing
- https://data.nemar.org/on006104/v1.0.0/?format=json
- Catalog record
- https://api.nemar.org/datasets/on006104
Working with the Zarr copy
- 1. Start at the index
- https://zarr.nemar.org/on006104/zarr/index.json The mandatory entry point. Never hardcode a bucket path.
- 2. Pick a store entry
-
stores[].zarr, stores[].groups[].nameThese two fields exist in every index format version, so a recipe that keys on them works against the whole catalog while the back conversion is still in flight. - 3. Build the store URI
-
s3://nemar/on006104/zarr/{store.zarr}Derivable from the store entry alone. An index at format_version 3 or later also publishes contract_base, data_base and s3_uri; use them when they are there, never require them. - 4. Open the store anonymously
-
zarr.open_group(store=..., mode="r", zarr_format=3)Anonymous FsspecStore.from_url in region us-east-2, no credentials. zarr_format=3 is required: without it zarr-python probes for Zarr v2 sidecars, and because anonymous ListBucket is denied, S3 answers a missing key with 403 rather than 404 and the open raises. - 5. Read the level-0 array
-
root[store.groups[0].name]["0"]Level 0 is the full-rate signal. Never read a view/ array for inference; those exist for display. - 6. Dequantize the samples
-
physical = digital * scale + offsetscale and offset are attributes of the level-0 array, one entry per channel; the unit is on the group's channels attribute. - 7. Slice, don't download
-
signal[0:4, 0:500]Stream a window of channels and samples; download only when you will touch most of the array. - 8. Know the HTTP contract
-
index.jsonOnly index.json is always proxied and edge-cached. A plain GET for a store object, manifest.json or events.parquet 302s to the public S3 object for non-browser clients, so follow redirects, and HEAD is never redirected. - 9. Read the attribution before reuse
-
root.attrs["nemar"]The store carries its own dataset id, DOI, license, citation and source commit. - 10. Filter for pipelines
-
has_zarr=1This is the converted filter. has_zarr_verified is the stricter one, and its result set can be empty until the daily fidelity sweep reaches a dataset; verification is reported, never a precondition for serving (nemar-cli ADR 0005).