Multi-dataset EMG analysis for hand gesture recognition using GRABMyo (32ch) and NinaPro DB2 (12ch).
GRABMyo: 32 channels, 43 subjects, 17 gestures, 3 sessions NinaPro DB2: 12 channels, 40 subjects, 49 movements
Please run the following shell scripts to download all (or parts) of the data. For the GRABMyo, you need to download at least 6 participants from Session 1.
# Download GRABMyo (interactive prompts for sessions/participants)
./data-installers/install-GRABMyo.sh
# Download NinaPro DB2 (interactive prompts for subjects)
./data-installers/install-ninapro-db2.sh- Signal quality validation (range, NaN/Inf checks)
- Channel variability analysis across subjects
- Cross-dataset gesture separability testing (
diagnostic-analysis.ipynb)
- Per-channel normalization:
(signal - mean) / std - Bandpass filter: 20-450 Hz, 4th order Butterworth
- Sliding windows: 409 samples, 50% overlap
- Feature extraction (8 features/channel):
- Time-domain: Mean, STD, RMS, MAV
- Frequency-domain: MNF, MDF, PSD Mean, Peak Frequency
- GRABMyo: 17 gesture classes (1-17)
- NinaPro DB2: 49 movement classes + rest
- Trial-level labels for Leave-One-Trial-Out validation
| Method | Channels | Accuracy | Validation |
|---|---|---|---|
| Random Forest | 32 (GRABMyo) | 58.0% ± 3.0% | LOTO CV |
| Random Forest | 12 (reduced) | 51.8% ± 3.6% | LOTO CV |
Channel Reduction: 12 selected channels retain 89% of baseline accuracy with 62.5% fewer features. Selected channels: 2, 3, 5, 6, 10, 13, 16, 23, 28, 29, 30, 31
See channel-reduction-analysis.ipynb for methodology and diagnostic-analysis.ipynb for feature validation.
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt