NM000166: eeg dataset, 95 subjects#

M3CV: Multi-subject, Multi-session, Multi-task EEG Database

Access recordings and metadata through EEGDash.

Citation: Gan Huang, Zhenxing Hu, Weize Chen, Shaorong Zhang, Zhen Liang, Linling Li, Li Zhang, Zhiguo Zhang (2022). M3CV: Multi-subject, Multi-session, Multi-task EEG Database. 10.1016/j.neuroimage.2022.119666

Modality: eeg Subjects: 95 Recordings: 2469 License: CC BY 4.0 Source: nemar

Metadata: Complete (100%)

Quickstart#

Install

pip install eegdash

Access the data

from eegdash.dataset import NM000166

dataset = NM000166(cache_dir="./data")
# Get the raw object of the first recording
raw = dataset.datasets[0].raw
print(raw.info)

Filter by subject

dataset = NM000166(cache_dir="./data", subject="01")

Advanced query

dataset = NM000166(
    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{nm000166,
  title = {M3CV: Multi-subject, Multi-session, Multi-task EEG Database},
  author = {Gan Huang and Zhenxing Hu and Weize Chen and Shaorong Zhang and Zhen Liang and Linling Li and Li Zhang and Zhiguo Zhang},
  doi = {10.1016/j.neuroimage.2022.119666},
  url = {https://doi.org/10.1016/j.neuroimage.2022.119666},
}

About This Dataset#

M3CV: Multi-subject, Multi-session, and Multi-task EEG Database

Overview

This dataset contains 64-channel EEG from 95 healthy young adults (Age: 21.3 +/- 2.2 years; 73 males, 22 females) from Shenzhen University, recorded across 2 sessions on different days using a BrainAmp amplifier with 64-channel Easycap (standard 10-20 positions). Each subject performed 6 paradigms with 14

View full README

M3CV: Multi-subject, Multi-session, and Multi-task EEG Database

Overview

This dataset contains 64-channel EEG from 95 healthy young adults (Age: 21.3 +/- 2.2 years; 73 males, 22 females) from Shenzhen University, recorded across 2 sessions on different days using a BrainAmp amplifier with 64-channel Easycap (standard 10-20 positions). Each subject performed 6 paradigms with 14 types of EEG signals across 15 runs per session (~50 min recording, ~2 h total including setup and rest). The original paper describes 14 signal types; the distributed data contains 13 task codes because nontarget P300 epochs were not included. The original data was recorded at 1000 Hz and preprocessed using Matlab 2018b with Letswave7 (letswave.cn), then distributed as individual 4-second epoched .mat files at 250 Hz. This BIDS version reconstructs pseudo-continuous EEG by concatenating the distributed epochs per subject/session/task. Event markers indicate epoch boundaries and stimulus onsets derived from the original marker channel. Ethics: Medical Ethics Committee, Health Science Center, Shenzhen University (No. 2019053). All subjects gave informed consent.

Recording Setup

  • Amplifier: BrainAmp (Brain Products GmbH, Germany)

  • Cap: 64-channel Easycap, standard 10-20 positions

  • Online reference: FCz; Ground: AFz

  • Sampling rate: 1000 Hz (distributed at 250 Hz after preprocessing)

  • Impedance: < 20 kOhm

  • Subject distance: ~1 meter from screen

  • Screen: 24.5-inch Alienware AW2518H (1920x1080, 240 Hz refresh rate)

  • Visual stimuli: Psychtoolbox-3 in Matlab

  • Sensory stimuli: Arduino Uno platform via serial port to Matlab

  • LED: 3 W, 2 cm diameter circular shield, 45 cm from eyes, 1074 Lux (measured by TES-1332A light meter)

  • Headphones: Nokia WH-102, 75 dB SPL average

  • Vibration motor: 1027 disk, 3 W rated, 80% efficiency, 10 mm x 2.7 mm, placed on subject’s left hand

  • Power line frequency: 50 Hz

Preprocessing (applied before distribution, Table 3 of paper)

Software: Matlab 2018b & Letswave7 (letswave.cn) 1. Bad channels identified manually, interpolated with mean of 3 surrounding

channels (22 of 95 subjects had bad channels)

  1. Channel FCz (online reference) added back

  2. Channel IO (EOG) removed

  3. Bandpass filter: 0.01-200 Hz, 4th-order Butterworth, 24 dB/octave, zero-phase

  4. Notch filter: 49-51 Hz bandstop, 4th-order Butterworth, 24 dB/octave, zero-phase

  5. Re-referenced to mean of TP9 and TP10 (linked mastoids)

  6. ICA artifact removal: eye blink and eye movement components identified by visual inspection of scalp topographies, time courses, and spectra (Huang et al., 2020)

  7. Downsampled to 250 Hz

  8. No bad epoch rejection (intentional for ML robustness/repeatability)

Note: One subject was removed due to strong 10 Hz artifacts. The remaining 95 subjects are included in the distributed data.

Paradigms (14 signal types, 13 in distributed data, 15 runs/session)

Run 01: Eyes Closed resting (restEC) — 1 min; fixate on LED (off) Run 02: Eyes Open resting (restEO) — 1 min; fixate ahead, minimal blink Run 03: Motor execution (motorFoot/motorRHand/motorLHand) — 20 trials each Run 04: Transient sensory (vep/aep/sep) — 30 trials each, random order, ~4.5 min Run 05: SSVEP (ssvep) — 10 Hz LED, 1 min Run 06: Motor execution — 20 trials each Run 07: P300 oddball (p300) — 600 stimuli (5% target=30, nontarget=570), 80 ms,

ISI 200 ms, 2 min; red/white 300x300 px squares; subjects count red

Run 08: SSVEP-SA (ssvepSA) — 6 freq (7/8/9/11/13/15 Hz), 12 segments x 10 s Run 09: SSAEP (ssaep) — 45.38 Hz, 2 min Run 10: Motor execution — 20 trials each Run 11: Transient sensory — 30 trials each, random order Run 12: SSSEP (sssep) — 22.04 Hz vibration, 2 min Run 13: Motor execution — 20 trials each Run 14: Eyes Closed resting (restEC) — 1 min Run 15: Eyes Open resting (restEO) — 1 min Motor execution details: subjects gripped (LH/RH) or lifted ankle (FT) at ~2x/sec, ~80% maximum voluntary contraction, 3 s duration until cue offset. No feedback, metronome, or hint was provided. Experimenters monitored movement quality during recording.

Notes on distributed data

  • 14 signal types in the paper, 13 task codes in distributed data: nontarget P300 (paper task 10, trigger S10) was not distributed

  • P300: Only 30 target trials stored per subject; 570 nontarget discarded

  • SSVEP-SA: 6 frequency classes not distinguishable in marker; all marker=13

  • Trigger codes in original recording (S1-S25) differ from CSV Task column (1-13). CSV Task 10=FT, 11=RH, 12=LH (paper tasks 11-13, triggers S6-S8)

  • Epoch ordering within task may not reflect original temporal sequence

  • 11 “intruder” subjects in Testing set have hidden SubjectIDs (excluded here)

Subjects and Sessions

  • 106 total subjects; 95 completed both sessions

  • Age: 21.3 +/- 2.2 years (95 subjects); 73 males, 22 females

  • Normal hearing, normal/corrected vision, no neurological history (self-report)

  • Between-session interval: 6 to 139 days (mean ~20 days)

  • ses-01 = session 1 (Enrollment set)

  • ses-02 = session 2 (Calibration + Testing sets)

  • 11 “intruder” subjects (session 2 only, hidden IDs) are excluded from BIDS

Competition context

Originally distributed for the M3CV EEG-based Biometric Competition on Kaggle (identification and verification tasks). Competition closed Apr 30, 2023; late submissions remain allowed.

Reference

Huang, G., Hu, Z., Chen, W., Zhang, S., Liang, Z., Li, L., Zhang, L., & Zhang, Z. (2022). M3CV: A multi-subject, multi-session, and multi-task database for EEG-based biometrics challenge. NeuroImage, 264, 119666. https://doi.org/10.1016/j.neuroimage.2022.119666

References

Appelhoff, S., Sanderson, M., Brooks, T., Vliet, M., Quentin, R., Holdgraf, C., Chaumon, M., Mikulan, E., Tavabi, K., Höchenberger, R., Welke, D., Brunner, C., Rockhill, A., Larson, E., Gramfort, A. and Jas, M. (2019). MNE-BIDS: Organizing electrophysiological data into the BIDS format and facilitating their analysis. Journal of Open Source Software 4: (1896).https://doi.org/10.21105/joss.01896 Pernet, C. R., Appelhoff, S., Gorgolewski, K. J., Flandin, G., Phillips, C., Delorme, A., Oostenveld, R. (2019). EEG-BIDS, an extension to the brain imaging data structure for electroencephalography. Scientific Data, 6, 103.https://doi.org/10.1038/s41597-019-0104-8

Dataset Information#

Dataset ID

NM000166

Title

M3CV: Multi-subject, Multi-session, Multi-task EEG Database

Author (year)

Huang2018

Canonical

Importable as

NM000166, Huang2018

Year

2022

Authors

Gan Huang, Zhenxing Hu, Weize Chen, Shaorong Zhang, Zhen Liang, Linling Li, Li Zhang, Zhiguo Zhang

License

CC BY 4.0

Citation / DOI

doi:10.1016/j.neuroimage.2022.119666

Source links

OpenNeuro | NeMAR | Source URL

Copy-paste BibTeX
@dataset{nm000166,
  title = {M3CV: Multi-subject, Multi-session, Multi-task EEG Database},
  author = {Gan Huang and Zhenxing Hu and Weize Chen and Shaorong Zhang and Zhen Liang and Linling Li and Li Zhang and Zhiguo Zhang},
  doi = {10.1016/j.neuroimage.2022.119666},
  url = {https://doi.org/10.1016/j.neuroimage.2022.119666},
}

Found an issue with this dataset?

If you encounter any problems with this dataset (missing files, incorrect metadata, loading errors, etc.), please let us know!

Report an Issue on GitHub

Technical Details#

Subjects & recordings
  • Subjects: 95

  • Recordings: 2469

  • Tasks: 13

Channels & sampling rate
  • Channels: 64

  • Sampling rate (Hz): 250

  • Duration (hours): 100.47502888888889

Tags
  • Pathology: Not specified

  • Modality: —

  • Type: —

Files & format
  • Size on disk: 21.6 GB

  • File count: 2469

  • Format: BIDS

License & citation
  • License: CC BY 4.0

  • DOI: doi:10.1016/j.neuroimage.2022.119666

Provenance

API Reference#

Use the NM000166 class to access this dataset programmatically.

class eegdash.dataset.NM000166(cache_dir: str, query: dict | None = None, s3_bucket: str | None = None, **kwargs)[source]#

Bases: EEGDashDataset

M3CV: Multi-subject, Multi-session, Multi-task EEG Database

Study:

nm000166 (NeMAR)

Author (year):

Huang2018

Canonical:

Also importable as: NM000166, Huang2018.

Modality: eeg. Subjects: 95; recordings: 2469; tasks: 13.

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

query#

Merged query with the dataset filter applied.

Type:

dict

records#

Metadata records used to build the dataset, if pre-fetched.

Type:

list[dict] | None

Notes

Each item is a recording; recording-level metadata are available via dataset.description. query supports MongoDB-style filters on fields in ALLOWED_QUERY_FIELDS and is combined with the dataset filter. Dataset-specific caveats are not provided in the summary metadata.

References

OpenNeuro dataset: https://openneuro.org/datasets/nm000166 NeMAR dataset: https://nemar.org/dataexplorer/detail?dataset_id=nm000166 DOI: https://doi.org/10.1016/j.neuroimage.2022.119666

Examples

>>> from eegdash.dataset import NM000166
>>> dataset = NM000166(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, overwrite=False)[source]#

Save the dataset to disk.

Parameters:
  • path (str or Path) – Destination file path.

  • overwrite (bool, default False) – If True, overwrite existing file.

Return type:

None

See Also#