forked from NeuroTechX/moabb
-
Notifications
You must be signed in to change notification settings - Fork 1
/
alex_mi.py
71 lines (53 loc) · 2.69 KB
/
alex_mi.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"""
Alex Motor imagery dataset.
"""
from mne.io import Raw
from . import download as dl
from .base import BaseDataset
ALEX_URL = "https://zenodo.org/record/806023/files/"
class AlexMI(BaseDataset):
"""Alex Motor Imagery dataset.
.. admonition:: Dataset summary
====== ======= ======= ========== ================= ============ =============== ===========
Name #Subj #Chan #Classes #Trials / class Trials len Sampling rate #Sessions
====== ======= ======= ========== ================= ============ =============== ===========
AlexMI 8 16 3 20 3s 512Hz 1
====== ======= ======= ========== ================= ============ =============== ===========
Motor imagery dataset from the PhD dissertation of A. Barachant [1]_.
This Dataset contains EEG recordings from 8 subjects, performing 2 task of
motor imagination (right hand, feet or rest). Data have been recorded at
512Hz with 16 wet electrodes (Fpz, F7, F3, Fz, F4, F8, T7, C3, Cz, C4, T8,
P7, P3, Pz, P4, P8) with a g.tec g.USBamp EEG amplifier.
File are provided in MNE raw file format. A stimulation channel encoding
the timing of the motor imagination. The start of a trial is encoded as 1,
then the actual start of the motor imagination is encoded with 2 for
imagination of a right hand movement, 3 for imagination of both feet
movement and 4 with a rest trial.
The duration of each trial is 3 second. There is 20 trial of each class.
references
----------
.. [1] Barachant, A., 2012. Commande robuste d'un effecteur par une
interface cerveau machine EEG asynchrone (Doctoral dissertation,
Université de Grenoble).
https://tel.archives-ouvertes.fr/tel-01196752
"""
def __init__(self):
super().__init__(
subjects=list(range(1, 9)),
sessions_per_subject=1,
events=dict(right_hand=2, feet=3, rest=4),
code="Alexandre Motor Imagery",
interval=[0, 3],
paradigm="imagery",
)
def _get_single_subject_data(self, subject):
"""return data for a single subject"""
raw = Raw(self.data_path(subject), preload=True, verbose="ERROR")
return {"session_0": {"run_0": raw}}
def data_path(
self, subject, path=None, force_update=False, update_path=None, verbose=None
):
if subject not in self.subject_list:
raise (ValueError("Invalid subject number"))
url = "{:s}subject{:d}.raw.fif".format(ALEX_URL, subject)
return dl.data_dl(url, "ALEXEEG", path, force_update, verbose)