BCI Competition IV 2a数据集详解
BCI Competition IV 2a数据集详解
前言
本文是对BCI Competition IV 2a数据集的详细介绍,内容基于官方英文文档和其他相关资料整理而成。数据集包含了9名受试者的EEG数据,每位受试者在实验中需要完成四种运动想象任务:左手、右手、双脚和舌头运动想象。每位受试者在不同日期进行了两次实验(训练集和测试集),每次实验包含6个run,每个run有48次试验。
数据集整体结构
数据集由9名受试者的EEG数据组成,每位受试者需要完成四种运动想象任务:左手(1类)、右手(2类)、双脚(3类)和舌头(4类)运动想象。每位受试者在不同日期进行了两次实验,一次用于训练(T),一次用于测试(E)。因此每位受试者将产生两个数据文件,例如第一位受试者的训练数据文件为A01T,测试数据文件为A01E,整个数据集共包含18个数据文件。
每次实验(session)可以细分为6个run,每个run包含48次试验(trials)。在每次试验中,受试者坐在舒适的椅子上,面对电脑屏幕。试验开始时(t=0s),屏幕上会出现一个固定的十字。两秒后(t=2s),一个指向左、右、下或上的箭头会出现在屏幕上约1.25秒,提示受试者进行相应的运动想象。受试者需要保持这个想象状态直到屏幕上的十字消失(t=6s)。然后是短暂的休息,直到屏幕再次变黑。每次试验的平均时长约为8秒。
在每个session开始时,会对受试者进行约5分钟的记录以估计EOG影响。记录分为三组:
- 睁眼两分钟(注视屏幕上的十字)
- 闭眼一分钟
- 眼球运动一分钟
这三组记录结束后,进行6组run,每组48次试验,共288次正式测试。
数据采集
数据集包含25个通道,其中22个通道用于EEG信号采集,3个通道用于EOG信号采集。数据以250Hz的采样率进行采集(即每秒250次采样),并在0.5Hz到100Hz之间进行带通滤波。放大器的灵敏度设置为100μV,并启用额外的50Hz陷波滤波器以抑制线路噪声。采样电极分布如下图所示(左图为EEG采样点,右图为EOG采样点):
使用Python读取数据时,可以查看采样信息。以下是一个读取A01T数据的示例代码:
import mne
import matplotlib.pyplot as plt
import numpy as np
import os
filename = "D:/0ND/BCICIV_2a_gdf/A01T.gdf"
raw = mne.io.read_raw_gdf(filename)
print(raw.info)
print(raw.ch_names)
raw.plot()
plt.show()
运行结果如下图所示(显示了一个完整的session所获得的25个通道的数据):
.mat文件格式说明
在MATLAB中导入.mat类型的数据文件后,可以清晰地看到数据集的具体构成。以A01T数据为例,导入后可以看到以下内容:
数据集包含9个结构体(struct),其中前3个结构体(struct1-3)对应每次session开始时进行的三组EOG测试,即睁眼、闭眼和眼球运动测试。这三组数据仅包含该段时间内25个通道采集到的数据,不包含运动想象标签。后6个结构体(struct4-9)分别对应本次session的6个Runs。
以第一次Run(data{1,4})为例,可以看到以下内容:
- X矩阵:本次Run中48次试验采集到的具体数据值,共有25个通道。
- trial矩阵(48×1):记录了48次试验起始数据的位置。可以看出,每个试验起始位置大约相隔2000,即每个试验持续时间大约8秒,采样频率250Hz,每个通道每秒采集250次,每个试验共2000×25个左右的数据。
- y矩阵(48×1):对应每一次试验让受试者想象的运动类型,即训练标签,包括左手(1)、右手(2)、双脚(3)和舌头(4)。
同时,还可以在data{1,4}中看到采样频率和受试者的性别、年龄等信息。
需要注意的是,受试者A04T的EOG阻滞较短,仅包含眼球运动状况,数据较为特殊。A04T数据仅包含7个结构体,其中第一个结构体为EOG运动阶段采集到的数据,后6个结构体为本次session的6个Runs。