BCICIV2B#

class dpeeg.datasets.BCICIV2B(subjects: list[int] | None = None, tmin: float = 0, tmax: float | None = None, baseline: tuple[int, int] | None = None, picks: list[str] | None = None, resample: float | None = None, rename: str | None = None)[source]#

Dataset IIB from BCI Competition IV.

Dataset summary

Subj

Chan

Time

Cls

Freq

Sess

9

3

4.5 s

2

250 Hz

5

This data set consists of EEG data from 9 subjects of a study published in [1]. The subjects were right-handed, had normal or corrected-to-normal vision and were paid for participating in the experiments. All volunteers were sitting in an armchair, watching a flat screen monitor placed approximately 1 m away at eye level. For each subject 5 sessions are provided, whereby the first two sessions contain training data without feedback (screening), and the last three sessions were recorded with feedback.

Three bipolar recordings (C3, Cz, and C4) were recorded with a sampling frequency of 250 Hz.They were bandpass- filtered between 0.5 Hz and 100 Hz, and a notch filter at 50 Hz was enabled. The placement of the three bipolar recordings (large or small distances, more anterior or posterior) were slightly different for each subject (for more details see [1]). The electrode position Fz served as EEG ground. In addition to the EEG channels, the electrooculogram (EOG) was recorded with three monopolar electrodes.

The cue-based screening paradigm consisted of two classes, namely the motor imagery (MI) of left hand (class 1) and right hand (class 2). Each subject participated in two screening sessions without feedback recorded on two different days within two weeks. Each session consisted of six runs with ten trials each and two classes of imagery. This resulted in 20 trials per run and 120 trials per session. Data of 120 repetitions of each MI class were available for each person in total. Prior to the first motor im- agery training the subject executed and imagined different movements for each body part and selected the one which they could imagine best (e. g., squeezing a ball or pulling a brake).

Each trial started with a fixation cross and an additional short acoustic warning tone (1 kHz, 70 ms). Some seconds later a visual cue was presented for 1.25 seconds. Afterwards the subjects had to imagine the corresponding hand movement over a period of 4 seconds. Each trial was followed by a short break of at least 1.5 seconds. A randomized time of up to 1 second was added to the break to avoid adaptation

For the three online feedback sessions four runs with smiley feedback were recorded, whereby each run consisted of twenty trials for each type of motor imagery. At the beginning of each trial (second 0) the feedback (a gray smiley) was centered on the screen. At second 2, a short warning beep (1 kHz, 70 ms) was given. The cue was presented from second 3 to 7.5. At second 7.5 the screen went blank and a random interval between 1.0 and 2.0 seconds was added to the trial.

References

Parameters:
  • subjects (list of int, optional) – List of subject number. If None, all subjects will be loaded.

  • tmin-tmax (float) – Start and end time of the epochs in seconds, relative to the time locked event. The closest or matching samples corresponding to the start and end time are included. Default is start and end time of epochs, respectively.

  • baseline (tuple of int, optional) – The time interval to consider as “baseline” when applying baseline correction. If None, do not apply baseline correction.

  • picks (list of str, optional) – Channels to include. If None, pick all channels.

  • resample (float, optional) – Resample data.

  • rename (str, optional) – Rename the dataset.

get_data(progressbar: bool = True, verbose='ERROR') dict[int, MultiSessEEGData]#

Return the data correspoonding to a list of subjects.

The returned data is a dictionary with the following structure:

data = {‘subject_id’ : {‘session_id’ : EEGData}}

get_epochs(progressbar: bool = True, verbose='ERROR') dict[int, dict[str, Epochs]]#

Return the epochs correspoonding to a list of subjects.

The returned data is a dictionary with the following structure:

data = {‘subject_id’ : {‘session_id’ : Epochs}}

get_raw(progressbar: bool = True, verbose='ERROR') dict[int, dict[str, dict[str, Raw]]]#

Return the raw correspoonding to a list of subjects.

The returned data is a dictionary with the following structure:

data = {‘subject_id’: {‘session_id’: {‘run_id’: Raw}}}

subjects are on top, then we have sessions, then runs. A session is a recording done in a single day, without removing the EEG cap. A session is constitued of at least one run. A run is a single contigous recording. Some dataset break session in multiple runs.