BCI Competition IV 2a数据集介绍
Posted 袋装猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BCI Competition IV 2a数据集介绍相关的知识,希望对你有一定的参考价值。
前言
本文是在结合了官方的英文介绍以及各大佬的讲解之后,根据我的个人理解整理出的关于BCICIV 2a数据集的简介,如有错误还请指正。
相关链接如下:
数据集下载链接(.gdf文件版本)
数据集下载链接(.mat文件版本)
官方介绍文档(PDF)
正文
一、整体介绍
数据集由9名受试者的EEG数据组成,受试者在实验过程中需要进行四种不同的运动想象任务,即左手(1类)、右手(2类)、双脚(3类)和舌头(4类)运动想象。每名受试者均在不同的日期进行了两个session,两个session所得数据分别用于分类器的训练(T)和测试(E)。因此每个受试者将拥有两个数据文件,以一号受试者为例我们将两份文件命名为A01T和A01E,数据集共有18份文件。
对于每一次session,可以细分为6次runs,每一次run包含有48次trials(测试)。(为了避免引起误解,这里保留英文描述),在每一个测试中,受试者都坐在一个舒适的扶椅上,面前是电脑屏幕。测试开始时(t=0s),一个固定的十字会出现在黑色的屏幕上。此外还有简短的声音提示音。两秒过后(t=2s),一个作为提示指向左、右、下或者上(对应于四个类别左手运动、右手运动,双脚运动以及舌头运动)的箭头会出现在屏幕上约1.25s。促使受试者想象与图片对应的运动。每个受试者需要完成这个想象任务直到屏幕上的十字消失(t=6s)。然后是短暂休息直到屏幕再次变黑。每一次测试的平均时间大约为8秒。
一次测试的流程可以用如下图片简洁表示:
在每一次run包含的48个测试中,有12次是左手运动想象,12次是右手运动想象,12次双脚运动想象和12次舌头运动想象,即均匀分布,但顺序随机。一个session的6个runs中共包含有288(6*48)次测试。6个runs之间会让受试者进行一定时间的休息。
值得注意的是,在每一个session开始的时候,会对受试者进行大约5分钟的记录以估计EOG影响。记录分为3组:
(1)睁眼两分钟(注视屏幕上的注视十字)
(2)闭眼一分钟
(3)眼球运动一分钟。
在这三组记录结束之后,再进行6组runs,即每组48次,共288次的正式测试。
因此一个session的完整流程可以用下图简洁表示:
(对于本数据集,N为6)
数据集的总体结构如下:
二、数据采集
数据共有25个通道,其中22个通道为EEG,3个通道为EOG,其中EOG三通道的数据不参与分类。以250 Hz对信号进行采样(每秒250次采样),并在0.5 Hz和100 Hz之间进行带通滤波。放大器的灵敏度设置为100 µV。使能额外的50 Hz陷波滤波器以抑制线路噪声。采样电极分布如下(左图为EEG采样点,右图为EOG采样点):
在用Python打开数据集后,也可以看到以上采样信息。以A01T数据为例,代码如下:
import mne
import matplotlib.pyplot as pl
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)
运行结果如下图所示:
也可以用图像的方式直观感受,代码如下:
import mne
import matplotlib.pyplot as pl
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()
pl.show()
运行结果如下(绘制出的是一个完整的session所获得的25个通道的数据):
(截图只能截取到A01T数据的一小部分)
三、.mat文件讲解
在MATLAB中导入.mat类型的数据文件后,可以清晰地看到数据集的具体构成,我们依然以A01T数据为例。
导入后可以看到如下图所示的内容:
我们可以看到,该文件中的数据包含了9个struct,其中struct1-3的数据对应的是每次session开始时进行的三组EOG测试,即上文所提到的Eyes open,Eyes closed,Movement,这三组数据仅包含有该段时间内25个通道所采集到的数据,不包含运动想象标签。struct4-9分别对应了本次session的6个Runs,点开第一次Run,也就是data1,4,可以看到如下内容:
其中X矩阵为本次Run中48次trials采集到的具体数据值,共有25个通道,如下图所示:
trial矩阵(48×1)记录了48次trial起始数据的位置,如下图所示:
可以看出,每一个trial起始位置大约相隔2000,即上文所提到的每个trial持续时间大约八秒,采样频率250Hz,即每个通道每秒采集250次,每个trial共2000×25个左右的数据。
进一步可以估算出每个Run包含有96000×25左右个数据,即X矩阵的估计大小。第一个trial的起始位置在250左右,即每个Run的开始处存在大约一秒的停顿。
y矩阵(48×1)对应的是每一次trial让受试者想象的运动类型,也就是训练标签,即左手(1)、右手(2)、双脚(3)和舌头(4)。
同时,我们也可以在data1,4所包含的信息中看到采样频率和该受试者的性别,年龄。
由于技术问题,受试者A04T的EOG阻滞较短,仅包含眼球运动状况,数据较为特殊。A04T数据仅包含7个struct,其中struct1为EOG movement阶段采集到的数据,struct2-7为本次session的6个Runs,如下图所示:
四、感谢
感谢小绿鲸文献阅读器提供翻译。
感谢Dancingharbor的文章提供思路。
https://blog.csdn.net/Dancingharbor/article/details/123528278?spm=1001.2014.3001.5506
以上内容如有问题,敬请指正。
BCI 常见问题解答
What?
SUSE BCI
SUSE BCI(Base Container Image)提供了一个基于 SUSE Linux Enterprise Server 的、经过测试和认证的容器镜像仓库,仓库中的容器镜像可以在企业生产环境中使用。
SUSE 的容器镜像和应用程序开发工具是真正开放、灵活和安全的。SUSE 会定期维护这些镜像,使用最新的安全补丁更新镜像,它们的功能与基本操作系统版本一致,开发人员、集成商和操作人员可以随时使用。
用户可以从 SUSE Container Registry 获取 BCI 镜像,并根据 EULA 自行进行复制、使用和分发。
Rancher 2.6 发布后,SUSE 宣布完全集成 Rancher 和 BCI,并且确保符合最新的安全标准。
BCI 包含什么?
BCI 包含两组容器镜像:
-
单纯基于 SLE 的容器,容器具有最小软件包集,其中一个带有 Zypper,一个不带 Zypper 但带有 RPM,另一个不带 Zypper 和 RPM,这增加了开发环境的灵活性,删除了不必要的包,并加快了应用程序的部署和编排。
-
语言堆栈容器镜像,其基础环境能用于 Python、Node.js、Ruby、.NET、ASP.Net、Java(基于 OpenJDK)、Go 和 Rust 等编程语言。
-
应用程序堆栈容器镜像,能提供现成的容器化应用程序(如 RMT 和 PostgreSQL)。
BCI 的优势是什么?
- 可用性:BCI 可用于 x86-64、arch64、s390x 和 ppc64le。
- 安全性:容器镜像更安全,能减少容器漏洞扫描程序的通知数量。
BCI 用例是什么?
BCI 提供了一个稳定、安全和开放的生态系统,用户可以在轻量灵活的环境中开发和部署应用程序,还能利用 SLES(SUSE Linux Enterprise Server)操作系统的稳定性和安全性。
另一方面,BCI 提供了以下机会:
-
Rancher 用户:
①让 Rancher 能够使用稳定、可靠、安全和认证的企业组件进行构建。
②利用 SUSE 内部操作系统知识,同时将应用程序容器化。这是因为工具是相同的,不需要迁移路径(例如,由于 BCI 会作为容器基础,因此用户可以将 Zypper 转为其它包管理器)。 -
开发者:
①如果用户不想为云原生环境进行付费订阅,则可以选择免费的 BCI。
②BCI 可以部署在任何操作系统中,能帮助用户在多云厂商生态系统内迁移并避免云厂商锁定。 -
ISV(Independent Software Vendor):
①使用稳定、可靠、安全且经过认证的企业级操作系统来容器化应用程序。
②使用免费的 Linux 来构建应用程序,无需在链中提供支持和安全服务。
③容器化时进行导航(软件、工具、文档、咨询)。
④在各种主机上运行应用程序。
BCI 中提供了哪些软件包和库?
SUSE 提供了多种 BCI,开发人员可以随时选择符合需求的 BCI。同时,开发人员可以使用知名的工具和库,如编译器、加密库以及多种操作系统工具等,如下:
- 包管理器和工具,如 Zypper、RPM、sysctl 或 glibc。
- 库,如 lib-acl、lib-crypto、lib-openssl、libldap。
在 BCI 上构建产品需要哪些法律协议?
需要接受 SUSE Enterprise Linux 默认和标准的条款和条件。
Why?
SUSE 为什么要推出 BCI?
我们希望为开发人员和集成商提供真正开放、灵活和安全的容器镜像和应用程序开发工具,避免用户受替代产品的限制。
为了满足受监管市场的需求,SUSE 计划提供经过专门强化和认证的 SLE 解决方案。
BCI 支持哪些硬件平台?
BCI 在 x86_64、aarch64、ppcle64 和 s390x 上可用(.NET 镜像现在仅在 x86-64 上可用)。
How?
是否需要订阅才能使用 BCI?
不需要,无需订阅即可使用 BCI。
我是否需要 SUSE Linux 环境来构建基于 BCI 的镜像?
不需要,你可以在任何支持基于 OCI 镜像进行构建的环境中构建和运行 BCI。
部署 BCI 是否需要 SUSE Linux 环境?
不需要,你可以在任何经过认证的 Kubernetes Deployment 或任何与 OCI 兼容的运行时中运行 BCI。
我可以自由分发基于 BCI 构建的应用程序吗?
基于 BCI 重新分发应用程序是没有限制的,因此你可以通过 EULA 自由复制、使用、分发以及重新分发镜像。
我可以在不使用 SUSE 镜像仓库的情况下分发基于 BCI 的容器镜像吗?
如果 BCI 镜像可以免费生成、使用和分发,你可以使用任何镜像仓库来分发基于 BCI 的应用程序。
因此,是的,你可以根据需要分发基于 BCI 的应用程序。
我是否可以将非 BCI RPM 添加到 BCI 镜像,并继续在 SUSE 之外的平台上重新分发生成的容器镜像?
由于在提供的镜像上添加的所有内容都会被视为应用程序或依赖项,因此你可以将非 BCI-RPM 添加到镜像中。
如果你遵守 EULA,SUSE 对重新分发没有任何限制。
是否推荐将 BCI 用于社区项目?
是的。
BCI 会接收更新吗?
是的,我们通过 SUSE Linux Enterprise Server 仓库构建 BCI 镜像。我们为每个新的 SLE (SUSE Linux Enterprise) Service Pack 构建新的 BCI 镜像。
已发布 Service Pack 的 BCI 镜像会持续接收更新(例如安全更新)。
如何支持 BCI?
可以在 SUSE Lifecycle 仪表板中查看 BCI 的生命周期以及我们的其他产品。
基于 BCI 构建的应用程序是否受到支持?
SUSE 支持可用的 BCI 镜像。
通过容器镜像交付的应用程序需要由其厂商或开发人员提供支持。
什么是 BCI 生命周期?
通用 BCI(General Purpose BCI)遵循 SLE Service Pack 的通用支持生命周期,可查阅 SUSE Linux Enterprise Server 的生命周期
应用程序和语言堆栈 BCI 的生命周期限制于对应的应用程序或语言堆栈,不与对应的 Service Pack 关联。有关详细信息,请参阅 SUSE 生命周期
长期服务包支持(Long Term Service Pack Support,LTSS)不支持 BCI 镜像。
如何在 BCI 中请求新功能?
SUSE 内部:通过 https://jira.suse.com/projects/PM 请求新功能,并创建一个新的 PM Pool Epic。
BCI 是否支持将容器镜像分发到任何位置?
是的,SUSE 不会监督你处理及分发镜像的方式。你可以自由分发 BCI;如果你遵守 EULA,也可以根据需要分发应用程序。
如果 BCI 中缺少某些内容,我可以添加非 BCI 的包吗?
是的。但是由于 BCI 来自我们的镜像仓库,因此 SUSE 支持 BCI。将包添加到 BCI 是开发过程的一部分,但 SUSE 不直接支持此操作。
以上是关于BCI Competition IV 2a数据集介绍的主要内容,如果未能解决你的问题,请参考以下文章