NM000107: emg dataset, 100 subjects#
FRL Wrist Control: Wrist Movement Decoding from Surface Electromyography
Access recordings and metadata through EEGDash.
Citation: Patrick Kaifosh, Thomas R. Reardon, CTRL-labs at Reality Labs (2025). FRL Wrist Control: Wrist Movement Decoding from Surface Electromyography. 10.82901/nemar.nm000107
Modality: emg Subjects: 100 Recordings: 182 License: CC-BY-NC 4.0 Source: nemar
Metadata: Complete (100%)
Quickstart#
Install
pip install eegdash
Access the data
from eegdash.dataset import NM000107
dataset = NM000107(cache_dir="./data")
# Get the raw object of the first recording
raw = dataset.datasets[0].raw
print(raw.info)
Filter by subject
dataset = NM000107(cache_dir="./data", subject="01")
Advanced query
dataset = NM000107(
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{nm000107,
title = {FRL Wrist Control: Wrist Movement Decoding from Surface Electromyography},
author = {Patrick Kaifosh and Thomas R. Reardon and CTRL-labs at Reality Labs},
doi = {10.82901/nemar.nm000107},
url = {https://doi.org/10.82901/nemar.nm000107},
}
About This Dataset#
wrist: Wrist Movement Control from EMG
Overview
Dataset: wrist - Wrist posture and movement from wrist-based surface electromyography Task: 1D continuous cursor control via wrist flexion/extension Participants: 100 subjects Sessions: 100 total (1 per subject)
View full README
wrist: Wrist Movement Control from EMG
Overview
Dataset: wrist - Wrist posture and movement from wrist-based surface electromyography Task: 1D continuous cursor control via wrist flexion/extension Participants: 100 subjects Sessions: 100 total (1 per subject) Publication: Kaifosh et al., 2025 - “A generic non-invasive neuromotor interface for human-computer interaction” (Nature)
Purpose
This dataset captures wrist-based sEMG signals during wrist movements for continuous cursor control. Motion capture provides ground-truth wrist angles. The goal is to enable gesture-free control through wrist posture alone, demonstrating sEMG’s ability to decode motor intent before visible movement occurs.
Dataset Details
Participants
Sample size: 100 participants
Demographics: Not available (marked as n/a)
Recording side: Dominant wrist
Sessions: 1 per participant
Hardware
Device: sEMG-RD (single wristband)
Channels: 16 (EMG0-EMG15)
Sampling rate: 2000 Hz
Reference: Bipolar differential
Ground truth: Motion capture wrist angles
Recording Protocol
Participant wears sEMG-RD on dominant wrist
Motion capture tracks wrist angles in real-time
Participant controls horizontal cursor position with wrist flexion/extension
Target acquisition task: Navigate to targets and hold for 500ms
Data Contents
Files per Session
sub-XXX/ses-XXX/emg/
├── sub-XXX_ses-XXX_task-wrist_emg.edf
├── sub-XXX_ses-XXX_task-wrist_emg.json
├── sub-XXX_ses-XXX_task-wrist_channels.tsv
├── sub-XXX_ses-XXX_task-wrist_events.tsv
└── sub-XXX_ses-XXX_electrodes.tsv
Events
Stage boundaries: Task phases and movement trials
Coordinate System
Single coordinate system at root (dominant wrist, percent units, no decimals)
Signal Processing
Note: This dataset has significant data quality issues: - Duplicate timestamps found in many sessions (up to 88% duplicates) - Irregular sampling requiring resampling (up to 916% deviation) - Post-processing: Duplicate removal followed by resampling to regular 2000 Hz
Baseline Performance
Published Results (Kaifosh et al., 2025)
Offline Evaluation: - Wrist angle velocity error: <13°/s - Error decreases with more training participants
Closed-loop Performance (n=17 naive test users): - Target acquisition time: Median 1.51s (sEMG decoder) - Dial-in time: Time to re-acquire after premature exit - Learning effects: Improvement from practice to evaluation blocks
Comparison: - Motion capture ground truth: 0.96s - MacBook trackpad: 0.68s - sEMG decoder: 1.51s (2.2× slower than trackpad)
Model architecture: MPF features + LSTM
Key Findings
Predictive signals: sEMG precedes movement by tens of milliseconds
Generic models work: Out-of-the-box cross-user generalization
Continuous control: Demonstrates feasibility of gesture-free interfaces
Room for improvement: Performance gap vs traditional inputs
Use Cases
Continuous control: Cursor/pointer movement
AR/VR navigation: Hands-free interface
Low-effort control: Minimal visible movement required
Predictive decoding: Intent detection before motion completion
Known Limitations
Single degree of freedom (1D control only)
Single wrist (dominant hand)
Duplicate timestamps (data quality issue)
Performance below traditional inputs
Extension to 2D control not demonstrated
Citation
Kaifosh, P., Reardon, T.R., & CTRL-labs at Reality Labs. (2025).
A generic non-invasive neuromotor interface for human-computer interaction.
Nature, 645(8081), 702-711. https://doi.org/10.1038/s41586-025-09255-w
Data Curator
Yahya Shirazi SCCN (Swartz Center for Computational Neuroscience) INC (Institute for Neural Computation) University of California San Diego
Version History
v1.0 (2025-10-01): Initial BIDS conversion
BIDS Version: 1.11 | EMG-BIDS: BEP-042 | Updated: Oct 1, 2025
Dataset Information#
Dataset ID |
|
Title |
FRL Wrist Control: Wrist Movement Decoding from Surface Electromyography |
Author (year) |
|
Canonical |
— |
Importable as |
|
Year |
2025 |
Authors |
Patrick Kaifosh, Thomas R. Reardon, CTRL-labs at Reality Labs |
License |
CC-BY-NC 4.0 |
Citation / DOI |
|
Source links |
OpenNeuro | NeMAR | Source URL |
Copy-paste BibTeX
@dataset{nm000107,
title = {FRL Wrist Control: Wrist Movement Decoding from Surface Electromyography},
author = {Patrick Kaifosh and Thomas R. Reardon and CTRL-labs at Reality Labs},
doi = {10.82901/nemar.nm000107},
url = {https://doi.org/10.82901/nemar.nm000107},
}
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!
Technical Details#
Subjects: 100
Recordings: 182
Tasks: 1
Channels: 16
Sampling rate (Hz): 2000.0
Duration (hours): 77.18355888888888
Pathology: Not specified
Modality: —
Type: —
Size on disk: 24.9 GB
File count: 182
Format: BIDS
License: CC-BY-NC 4.0
DOI: 10.82901/nemar.nm000107
Electrode Layout#
Electrode layout — EMG · 16 sensors — 16 channels
Dataset Statistics#
Channel counts: 16 ch (n=182 recordings)
Sampling frequencies: 2000.0 Hz (n=182 recordings)
Total recording duration: 77 h
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
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.
API Reference#
Use the NM000107 class to access this dataset programmatically.
- class eegdash.dataset.NM000107(cache_dir: str, query: dict | None = None, s3_bucket: str | None = None, **kwargs)[source]#
Bases:
EEGDashDatasetFRL Wrist Control: Wrist Movement Decoding from Surface Electromyography
- Study:
nm000107(NeMAR)- Author (year):
Kaifosh2025_107- Canonical:
—
Also importable as:
NM000107,Kaifosh2025_107.Modality:
emg. Subjects: 100; recordings: 182; 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/nm000107 NeMAR dataset: https://nemar.org/dataexplorer/detail?dataset_id=nm000107 DOI: https://doi.org/10.82901/nemar.nm000107
Examples
>>> from eegdash.dataset import NM000107 >>> dataset = NM000107(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.
See Also#
eegdash.dataset.EEGDashDataseteegdash.dataset