Initial commit
This commit is contained in:
65
README.md
Normal file
65
README.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 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% |
|
||||
Reference in New Issue
Block a user