1
0
Files
Mwata-Velu_et_al_2023/README.md
2026-04-09 08:21:30 -07:00

66 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Reproduction: Mwata-Velu et al. (2023)
**Paper**: "EEG-BCI Features Discrimination between Executed and Imagined Movements
Based on FastICA, Hjorth Parameters, and SVM"
**Journal**: Mathematics 2023, 11, 4409
**DOI**: https://doi.org/10.3390/math11214409
## Overview
This repository contains an attempted reproduction of the above paper as part of a
thesis on reproducibility challenges in EEG-based BCI research. The reproduction was
**partially completed** — the core pipeline is implemented but several ambiguities in the
paper prevented a definitive reproduction.
## Repository Structure
```
config.py — Constants, channel lists, run mappings, parameters
data_loading.py — CSV data loading, MNE Raw creation, annotations
pipeline.py — Filtering, FastICA, Hjorth features, SVM classification
reproduction_notebook.ipynb — Main analysis notebook (Method 2: cross-subject)
requirements.txt — Python dependencies
```
## Data
This code expects the PhysioNet EEG Motor Movement/Imagery Dataset in the curated
CSV format provided by:
Z. Shuqfa, A. Lakas, and A. N. Belkacem, “Increasing accessibility to a large brain
computer interface dataset: Curation of physionet EEG motor movement/imagery dataset
for decoding and classification,” Data in Brief, vol. 54, p. 110181, Jun. 2024,
doi: 10.1016/j.dib.2024.110181.
Files are named:
- `eegmmidb/SUB_001_SIG_01.csv` — Signal data (n_samples × 64 channels)
- `eegmmidb/SUB_001_ANN_01.csv` — Annotations (label, duration, start/end rows)
The curated dataset excludes the 6 problematic subjects (S088, S089, S092, S100,
S104, S106) noted in the paper. Run numbering is offset by 2 from PhysioNet's
original (our Run 01 = PhysioNet R03).
## Usage
1. Install dependencies: `pip install -r requirements.txt`
2. Place curated CSV data in `eegmmidb/` directory
3. Edit `config.py` to set `ICA_STRATEGY` ('per_run', 'per_subject', or 'global')
4. Run `reproduction_notebook.ipynb`
## Key Implementation Decisions
| Decision | Paper says | We do | Rationale |
|----------|-----------|-------|----------|
| Pipeline order | Figure 1: filter→ICA; Algorithm 1: ICA with internal sub-band eval | ICA then sub-band eval | Energy criterion is meaningless on pre-filtered data |
| ICA algorithm | Gram-Schmidt (Algorithm 1, Step 3) | `algorithm='deflation'` | Deflation uses Gram-Schmidt |
| Energy criterion | ∀χ ∈ {α, β, **γ**} | ∀χ ∈ {**θ**, α, β} | γ never defined; likely typo for θ |
| ICA scope | Not specified | Configurable | Reproducibility variable |
| Classification Method | Methods 1 and 2 | Method 2 only (cross-subject) | Method 1 split is contradictory |
## Paper's Reported Results (Method 2, Set 3)
| Metric | Paper |
|--------|-------|
| Overall accuracy | 68.8 ± 0.71% |
| ME recall | 68.17% |
| MI recall | 68.41% |