EEG Motor Movement/Imagery Dataset (EEGMMIDB)
Generated from data/catalog/registry.yaml@2026-09-17. Values marked TODO(confirm) await the author's catalog.
Description
The EEG Motor Movement/Imagery Database (EEGMMIDB) is a public collection of over 1,500 one- and two-minute scalp-EEG recordings from 109 volunteers performing and imagining simple limb movements (Schalk et al., 2004). It was created by the BCI2000 team — Gerwin Schalk and colleagues at the Wadsworth Center (New York State Department of Health) together with collaborators at the University of Tübingen — and contributed to PhysioNet by Schalk in 2009. The recordings were acquired with the general-purpose BCI2000 brain-computer interface system and are intended as a standard benchmark for motor-imagery decoding, sensorimotor-rhythm (mu/beta) analysis, and BCI methods development. The cohort is described only as 109 volunteers; demographic detail (age, sex, handedness, clinical status) is not documented in the PhysioNet release.
Citation
- Paper DOI: 10.1109/TBME.2004.827072
- Dataset DOI: 10.13026/C28G6P
- Reference: Schalk, G., McFarland, D.J., Hinterberger, T., Birbaumer, N., & Wolpaw, J.R. (2004). BCI2000: A General-Purpose Brain-Computer Interface (BCI) System. IEEE Trans Biomed Eng 51(6), 1034–1043. Dataset: Schalk, G. (2009). EEG Motor Movement/Imagery Dataset (v1.0.0). PhysioNet.
Catalog citation block
Primary BCI2000 / dataset reference:
- Schalk, G., McFarland, D.J., Hinterberger, T., Birbaumer, N., & Wolpaw, J.R. (2004). BCI2000: A General-Purpose Brain-Computer Interface (BCI) System. IEEE Transactions on Biomedical Engineering, 51(6), 1034—1043. DOI: 10.1109/TBME.2004.827072
Dataset (PhysioNet):
- Schalk, G. (2009). EEG Motor Movement/Imagery Dataset (v1.0.0). PhysioNet. DOI: 10.13026/C28G6P
PhysioNet platform:
- Goldberger, A.L., et al. (2000). PhysioBank, PhysioToolkit, and PhysioNet: Components of a New Research Resource for Complex Physiologic Signals. Circulation, 101(23), e215—e220. DOI: 10.1161/01.CIR.101.23.e215
Download and access
| Field | Value |
|---|---|
| Official source | https://physionet.org/content/eegmmidb/1.0.0/ |
| Access class | open |
| Size | ~1.9 GB compressed / ~3.4 GB uncompressed |
| Format | edf |
| BIDS | mirror |
| Mirrors | OpenNeuro ds004362 (BIDS, CC0; DOI 10.18112/openneuro.ds004362.v1.0.0) |
Source & access
- Primary repository: PhysioNet, EEG Motor Movement/Imagery Dataset v1.0.0, published 2009-09-09 — https://physionet.org/content/eegmmidb/1.0.0/
- PhysioNet DOI: 10.13026/C28G6P
- PhysioNet license: Open Data Commons Attribution License v1.0 (ODC-By 1.0)
- BIDS mirror: OpenNeuro accession ds004362 (v1.0.0, created 2022-12-15), DOI 10.18112/openneuro.ds004362.v1.0.0, released under CC0 — https://openneuro.org/datasets/ds004362/
- Distributed as a single session per subject; download is ~1.9 GB compressed / ~3.4 GB uncompressed.
Data structure
The native PhysioNet release is EDF+: one folder per subject (S001—S109), each containing 14 SxxxRyy.edf recordings and matching SxxxRyy.edf.event annotation files (PhysioToolkit-compatible). The OpenNeuro mirror (ds004362) re-packages the same recordings in BIDS layout. Event annotations use three codes: T0 (rest), T1 (onset of left-fist movement/imagery in unilateral runs, or both-fists in bilateral runs), and T2 (onset of right-fist movement/imagery in unilateral runs, or both-feet in bilateral runs). Individual movement/imagery epochs run roughly 4 s before returning to rest. A montage diagram is provided as the Sharbrough-style 64-channel figure (64_channel_sharbrough.pdf). PhysioNet distributes files directly (HTTPS/wget); the OpenNeuro mirror additionally supports DataLad/git-annex retrieval.
The 64 EEG channel names (10-10 montage, Sharbrough labeling):
Fc5, Fc3, Fc1, Fcz, Fc2, Fc4, Fc6, C5, C3, C1, Cz, C2, C4, C6, Cp5, Cp3, Cp1, Cpz, Cp2, Cp4, Cp6, Fp1, Fpz, Fp2, Af7, Af3, Afz, Af4, Af8, F7, F5, F3, F1, Fz, F2, F4, F6, F8, Ft7, Ft8, T7, T8, T9, T10, Tp7, Tp8, P7, P5, P3, P1, Pz, P2, P4, P6, P8, Po7, Po3, Poz, Po4, Po8, O1, Oz, O2, Iz
License
- Name: ODC-By-1.0
- Note (verbatim from the directory): ODC-By 1.0 on PhysioNet; CC0 on the OpenNeuro BIDS mirror (ds004362)
- Snippets on this site: allowed — the site may ship short derived snippets and precomputed products from this dataset, labelled as derivatives (re-referenced, filtered, cropped) with citation, license and DOI.
Acquisition
| Field | Value |
|---|---|
| Device | BCI2000, 64-channel 10-10 cap |
| Device class | research-cap |
| Channels | 64 |
| Sampling rate (Hz) | 160 |
| Online filters | none |
| Reference | TODO(confirm) |
| Mains frequency (Hz) | 60 |
| Paradigms | rest-eo, rest-ec, motor-execution, motor-imagery |
| Participants | 109 |
| Population | 109 volunteers; demographics undocumented |
| Clinical groups | none |
| Sessions | 1 |
| Durations | R01/R02 ~1 min each; R03–R14 ~2 min each (14 runs per subject) |
Acquisition
Recordings were made with the BCI2000 instrumentation system using 64 EEG channels placed according to the international 10-10 system (explicitly excluding Nz, F9, F10, FT9, FT10, A1, A2, TP9, TP10, P9, and P10), plus an annotation channel (Schalk et al., 2004; PhysioNet). Signals were sampled at 160 Hz natively (no resampling), giving an 80 Hz Nyquist limit. Recording was performed with no hardware filters applied — PhysioNet notes that no online filtering or notch was used, so any line-noise suppression is the user’s responsibility. Power line is 60 Hz (USA). Data are distributed as EDF+ files, each paired with a .edf.event annotation file. In the recordings the channels are indexed 0—63, whereas the published montage figure numbers them 1—64.
Participants
109 subjects, numbered continuously S001—S109. PhysioNet documents only the count of “109 volunteers”; age range/mean, sex breakdown, handedness, and health/clinical status are not documented in the release. The cohort is generally treated as healthy adults. Note that several subjects are routinely excluded in downstream work owing to annotation/timing defects (see Notable caveats).
Tasks / conditions
Each subject completed a single session of 14 runs: two ~1-minute baseline runs followed by three repetitions of four ~2-minute task conditions. Within each task run, a target appeared on either the left/right (unilateral) or top/bottom (bilateral) of a screen; the subject performed or imagined the corresponding movement until the target disappeared, then relaxed.
| Run | Duration | Task |
|---|---|---|
| R01 | ~1 min | Baseline: eyes open |
| R02 | ~1 min | Baseline: eyes closed |
| R03, R07, R11 | ~2 min | Motor execution: open/close left or right fist (per target side) |
| R04, R08, R12 | ~2 min | Motor imagery: imagine opening/closing left or right fist |
| R05, R09, R13 | ~2 min | Motor execution: open/close both fists or both feet (per target) |
| R06, R10, R14 | ~2 min | Motor imagery: imagine both fists or both feet |
The four task conditions are (a) execute left/right fist, (b) imagine left/right fist, (c) execute both fists/both feet, and (d) imagine both fists/both feet — each repeated three times across runs R03—R14.
Used on this site
L0.1, L0.3, L0.4, L0.5, L0.6, C0, L1.1, L1.2, L1.3, L1.6, C1, L2.1, L2.2, C2, L4.1, L4.2, L4.3, L4.4, C4, L5.7, L7.3, L7.5, w-filter-sandbox, w-welch-explorer, w-raw-scroller, w-bad-channel-detective
Loader
Fetches only the stated subset. Recorded loader: mne.datasets.eegbci.load_data.
import mne
from mne.datasets import eegbci
# One subject, two runs: R01 eyes open, R02 eyes closed (~1 min each).
paths = eegbci.load_data(subjects=1, runs=[1, 2])
raw = mne.concatenate_raws([mne.io.read_raw_edf(p, preload=True) for p in paths])
eegbci.standardize(raw) # map Sharbrough-style labels onto 10-10 names
raw.set_montage('standard_1005')
# Exclude S088, S089, S092, S100 (and optionally S038, S104) when pooling subjects.
Caveats worth knowing
- Recorded with no hardware filters: line noise and drift are all there.
- Subjects S088, S089, S092 and S100 carry inconsistent event timestamps; S038 and S104 are also often dropped.
- Channel names use Sharbrough-style labels that must be mapped for a montage.
Notable caveats
- Known bad/anomalous subjects. A subset of records is widely excluded due to annotation and sampling-rate defects: S088, S089, S092, S100 carry inconsistent/overlapping event timestamps, and several reports additionally drop S038 and S104, leaving a commonly used clean cohort of 103 subjects. Check timestamps before pooling. (This is a community-documented analysis caveat, not stated on the PhysioNet landing page.)
- No hardware filtering. Recordings were acquired without online filters or a hardware notch, so 60 Hz line noise is present in the raw signal.
- Montage naming. The official system is the international 10-10 layout, not “10-20”; the bundled figure uses Sharbrough-style labels.
- Sampling ceiling. Native 160 Hz sampling caps the usable spectrum at the 80 Hz Nyquist.
Related datasets
Citation
Schalk, G., McFarland, D.J., Hinterberger, T., Birbaumer, N., & Wolpaw, J.R. (2004). BCI2000: A General-Purpose Brain-Computer Interface (BCI) System. IEEE Trans Biomed Eng 51(6), 1034–1043. Dataset: Schalk, G. (2009). EEG Motor Movement/Imagery Dataset (v1.0.0). PhysioNet.
- Paper DOI
- 10.1109/TBME.2004.827072
- Dataset DOI
- 10.13026/C28G6P
A BibTeX button appears only when every BibTeX field is available in the catalog (§10.8); none is available yet.
Download
- Official source
- https://physionet.org/content/eegmmidb/1.0.0/
- Access class
- open
- Size
- ~1.9 GB compressed / ~3.4 GB uncompressed
- Format
- edf
- BIDS
- official BIDS mirror
- Mirrors
- OpenNeuro ds004362 (BIDS, CC0; DOI 10.18112/openneuro.ds004362.v1.0.0)
License
- Name
- ODC-By-1.0
- Note
- ODC-By 1.0 on PhysioNet; CC0 on the OpenNeuro BIDS mirror (ds004362)
- On this site
- Short derived snippets and precomputed products (cropped, re-referenced, filtered) may appear in labs and figures, labelled as derivatives with this license and DOI. Notebooks download only the subset they need from the official source.
Acquisition
| Device | BCI2000, 64-channel 10-10 cap |
|---|---|
| Device class | research-cap |
| Channels | 64 |
| Sampling rate | 160 Hz |
| Online filters | none |
| Reference | TODO(confirm) |
| Mains frequency | 60 Hz |
| Paradigms | rest-eo, rest-ec, motor-execution, motor-imagery |
| Subjects | 109 |
| Sessions | 1 |
| Durations | R01/R02 ~1 min each; R03–R14 ~2 min each (14 runs per subject) |
| Population | 109 volunteers; demographics undocumented |
| Clinical groups | none (healthy only) |
Used on this site
- L0.1 · What EEG measures
- L0.3 · Amplifiers, sampling and recording
- L0.4 · Reading raw traces
- L0.5 · The artifact atlas
- L0.6 · Data hygiene and metadata
- C0 · Capstone — Recording report
- L1.1 · Sampling, Nyquist and aliasing
- L1.2 · Time and frequency domains
- L1.3 · Power spectral density
- L1.6 · Line noise
- C1 · Capstone — Spectral fingerprint
- L2.1 · Loading data and BIDS
- L2.2 · Channel locations and bad channels
- C2 · Capstone — Clean pipeline
- L4.1 · Why time-frequency
- L4.2 · STFT and Morlet wavelets
- L4.3 · Multitaper and filter-Hilbert
- L4.4 · Baseline normalization and ERD/ERS
- C4 · Capstone — Mu/beta ERD
- L5.7 · Spatial filters for decoding
- L7.3 · Real-time processing and neurofeedback
- L7.5 · Mobile and consumer EEG
- Filter Sandbox
- Welch Explorer
- Raw Scroller
- Bad-Channel Detective
Loader
# Loader recorded in the catalog: mne.datasets.eegbci.load_data
# Fetch only the subset you need; see the loader's docstring for subject/run arguments.
import mne
files = mne.datasets.eegbci.load_data(...) # TODO(confirm) subset arguments
Caveats worth knowing
- Recorded with no hardware filters: line noise and drift are all there.
- Subjects S088, S089, S092 and S100 carry inconsistent event timestamps; S038 and S104 are also often dropped.
- Channel names use Sharbrough-style labels that must be mapped for a montage.
Related datasets
- LEMON (MPI-Leipzig Mind-Brain-Body) (spine, scalp)
- Cuban Human Brain Mapping Project (elective, scalp)
- Dortmund Vital Study resting EEG (support, scalp)
- HBN-EEG (Healthy Brain Network) (elective, scalp)
- PEARL-Neuro Database (elective, scalp)