bigP3BCI:20 项研究的 P300 拼写脑机接口记录

十八项研究、六百一十二份记录、二百七十八人次受试者,把十几年散落在各篇论文里的 P300 拼写实验统一成 EDF+ 与 IEEE P2731 三级字典,还带上一份可核对的校验和清单

来源 Duke University / East Tennessee State University / PhysioNet发布时间: 2026-10-19最后更新: 2026-10-20 阅读 24
bigP3BCI:20 项研究的 P300 拼写脑机接口记录

信息速览

数据集名称bigP3BCI:20 项研究的 P300 拼写脑机接口记录
数据类型脑机接口,P300,事件相关电位,拼写范式,眼动追踪,EDF+
规模278
接入方式Duke University / East Tennessee State University / PhysioNet
AI 就绪度

bigP3BCI 做的事情听起来简单,做起来极费功夫:把十几年里散落在十几篇论文背后的 P300 拼写实验原始记录,从各自实验室的硬盘里翻出来,统一格式、统一事件标记、统一目录结构,然后一次性公开。拼起来是十八项研究、四百六十三次会话统计口径下的六百二十二个会话、六千二百一十二份记录,涉及二百七十八人次的受试者,其中一百一十九人次来自四项包含肌萎缩侧索硬化患者的研究。

为什么值得单独成条。P300 拼写是脑机接口里最接近临床落地的一支:它用头皮脑电识别用户注视的字符,是重度运动障碍者少数还能用的交流通道。这个方向的公开数据长期以来是零散的——单项研究十几到三十几人、各家用自己的格式、事件标记各写各的,想跨研究比较算法几乎不可能。这份数据的价值不在某一个数字,而在于它第一次把这些异质记录放进了同一套坐标里,还配了一份逐文件的校验和清单,让「到底有什么」可以被独立核对。

怎么读这一页。想把这份数据用于机器学习的人,重点在 §2 与 §3,那里讲清了目录五级结构、四类事件标记如何拼出训练标签,以及合并后会踩到的几处协议不一致。想在论文里引用它的人,重点在 §4 与 §6,那里交代了官方明说的缺失、文档与实际目录之间的出入,以及「人次不等于人数」这个最容易被误写的点。只想知道它适不适合自己手上任务的人,看 §1 的边界与 §7 的定位即可。

§1 它是什么:一次跨研究的记录归并

1.1 一句话定义与四条边界

bigP3BCI 是一份汇总型脑电记录集:十八项 P300 拼写研究的原始记录,统一转为 EDF+,按研究、受试者、会话、阶段、条件五级目录存放,事件标记按 IEEE P2731 的三级标准组织,采用知识共享署名 4.0 许可,任何人可下载。

四条边界必须说清。

第一,它不是一次新采集,是归并。每项研究有自己的目的、自己的受试者、自己的刺激范式。把它们放在一起,得到的是一个异质集合,而不是同一协议下的重复测量。任何跨研究的合并统计,都必须先承认这个异质性。

第二,它统计的「受试者」是人次,不是人。同一个受试者若参加过两项研究,会在两个研究目录下各出现一次。官方没有给出去重后的人数,因此不能说「二百七十八名受试者」,只能说「二百七十八人次」。

第三,原始点阵文件不公开。BCI2000 采集的原生 .dat 文件因机构限制不能分发,理由是其中可能包含可识别信息。公开的是转换后的 EDF+,这意味着某些 BCI2000 原生字段在转换中丢失或改写,想复现原实验室的每一处细节做不到。

第四,官方自己声明了缺失:文件内有人口学数据缺失,部分参与者有文件缺失。这句话写得很短,但对使用者很关键——它意味着「某个受试者在某条件下没有数据」这件事,可能是采集时没做,也可能是归档时丢了,两种情形在数据里长得一样。

1.2 十八项研究与二十个标签

研究标签从 A 排到 R,再加 S1 与 S2,共二十个标签。S1 与 S2 对应同一篇发表(Jones 与 Sellers 关于双刺激 P300 的研究),被拆成两个目录,推测是两批独立采集。

研究跨度从 2010 年的第四届国际脑机接口会议报告,到 2019 年的双刺激范式论文,中间横跨九年。这段时间正是 P300 拼写从行列范式向棋盘格范式迁移的时期,也是误差相关电位与语言模型开始被引入的时期,目录里两者都能看到。

四项研究标注为含 ALS 终端用户:B、F、L、N。这四项的意义在于,它们是这份数据区别于一般实验室数据的地方——ALS 患者的脑电特征与健康人不同,病程进展会影响 P300 的幅值与潜伏期,而这类纵向数据在公开渠道极为稀少。研究 B 甚至以「P300 脑机接口与 ALS 病程进展的纵向研究」为题,会话数记为可变。

1.3 校验和清单能核出什么

官网页面给的是研究汇总表,写每项研究多少人、几个会话。但「到底有多少文件」这件事,页面没有直接给。

校验和清单给了。这份 868 千字节的纯文本共有六千二百一十四条记录,其中六千二百一十二条指向 EDF+ 文件,两条指向许可与说明文档。按研究分组统计,可以把每项研究的文件数、受试者数、会话数、训练与测试文件数全部还原出来。

按这份清单解析的结果如下表。受试者数一栏是目录名去重计数,会话数是受试者与会话编号二元组去重计数。

研究 文件 受试者 会话 训练文件 测试文件 条件目录
A 390 13 13 195 195 CB、RC、RD
B 544 19 60 302 242 CB
C 341 19 19 57 284 CB、CBERN
D 307 17 17 102 205 Dyn、DynBigram、RC
E 88 8 8 48 40 CB
F 270 10 30 90 180 CBCol、Dyn、DynBigram、Static
G 320 20 20 120 200 CB、DynBigram、DynNgram
H 372 16 16 51 321 CB、CBGaze01、CBGaze10、CBGazeNo、CBGazeReal
I 265 13 13 107 158 CB、PB
J 502 20 20 200 302 PB、RC
K 128 5 8 48 80 AD、CB
L 330 11 11 165 165 CB、CBCol、RC
M 420 21 21 210 210 ADdiff、CB
N 160 8 16 80 80 Dry、Wet
O 347 18 36 180 167 CBP、SUP
P 228 19 38 190 38 NonpredictiveSpelling、PredictiveSpelling
Q 1080 36 107 540 540 ColorIntensification、Grey-to-Color、Grey-to-White
R 120 5 10 60 60 CrystalizeLarge、CrystalizeSmall、EinsteinLarge、EinsteinSmall

合计:六千一百八十份记录、五百七十六人次受试者条目、四百三十八个会话。加上 S1 与 S2 两个目录(分别十个与二十四个受试者目录),总数才是六千二百一十二。

这张表里有多处与官方汇总表对不上,具体差异在 §4 展开。这里先指出一处最明显的:研究 R 官方表记二十名受试者,目录里只有五个受试者编号,文件数也只有一百二十,而它的条件目录有四个。

1.4 范式演进藏在条件名里

条件目录名是这份数据最难看懂的部分,因为它保留了各研究自己的内部命名,没有统一。

能对上文档缩写表的:CB 是棋盘格,RC 是行列,RD 是随机,PB 是基于表现,AD 是自适应,ADdiff 是自适应扩散。

对不上的:CBERN(研究 C)、Dyn 与 DynBigram 与 DynNgram(研究 D、F、G)、CBGaze 系列(研究 H)、CBP 与 SUP(研究 O)、Dry 与 Wet(研究 N)、PredictiveSpelling 与 NonpredictiveSpelling(研究 P)、ColorIntensification 与 Grey-to-Color 与 Grey-to-White(研究 Q)、CrystalizeLarge 与 CrystalizeSmall 与 EinsteinLarge 与 EinsteinSmall(研究 R)。

这些名字指向具体的算法或刺激设计:Dyn 指动态停止(提前结束数据采集以提高通信速率),CBP 指带预测的棋盘格,SUP 指抑制目标周边字符的闪烁,Dry 与 Wet 指干电极与湿电极对照,Grey-to-Color 与 Grey-to-White 是颜色呈现的两种过渡方式,Crystalize 与 Einstein 是两种图像刺激。

文档的缩写表只覆盖了其中八个,实际目录里有二十种。这个缺口在使用时会造成困扰——想按范式筛选数据的人,必须先去读对应论文,从论文里反推目录名的含义。

1.5 与单一 P300 数据集的分工

公开的 P300 数据不止这一份,路数不同。

一类是单研究、协议统一的小数据集,典型是十几到二十几人、一次会话、一种范式,适合做算法首次验证,因为变量少。缺点是样本小,结论外推能力弱。

另一类是竞赛数据,格式标准化、评分规则明确,适合横向排名。缺点同样是样本小,且范式固定。

bigP3BCI 属于第三类:多研究汇总。它的优势是样本量与人次覆盖远超单研究数据,且含 ALS 人群;劣势是异质性高,无法当作单一协议下的重复采集。三类数据的用途不重叠:单研究数据用于摸清方法,竞赛数据用于排名,汇总数据用于检验泛化。

§2 数据构成:五级目录与四类标记

2.1 目录层级

顶层是 bigP3BCI-data 目录,其下按研究分,再按受试者、会话、阶段、条件分。一条完整路径长这样:

bigP3BCI-data/StudyA/A_01/SE001/Train/CB/A_01_SE001_CB_Train01.edf

五段分别对应研究标签、受试者编号、会话编号、训练或测试阶段、实验条件。文件名把前五段再拼一次,加上阶段内文件序号。

这个结构有一处不一致要注意:受试者编号的写法随研究变。A 至 Q 用「字母加两位数字」(A_01、Q_36),S1 与 S2 用「S1_01」这种带前缀的写法。写解析脚本时若按固定宽度切分字符串,会在 S1 与 S2 上出错,稳妥的做法是按斜杠切段。

另一处是条件层的位置。文档说「后续层级直到数据文件取决于实验测试的条件数」,这意味着条件层可能有一层也可能有多层。实际清理结果是每个会话下只有一层条件目录,但脚本不应依赖这个前提。

2.2 事件标记的三级组织

事件标记按 IEEE P2731 标准的三级结构组织,这是这份数据最值得称道的设计。

Level 0 是生理信号层:脑电通道(标记为 EEG_ 加电极名,如 EEG_Cz),以及眼动的五类信号——有效性、注视位置、眼位、眼屏距离、瞳孔直径。眼动信号分左右眼两套,位置用零到一的屏幕比例表示,左上角为原点。

Level 1 是范式层,也就是训练机器学习算法需要的部分:序列阶段、刺激开关、刺激类型、字符呈现、当前目标字符。

Level 2 是反馈层:预测的目标字符、是否呈现反馈、伪反馈覆盖值。

这个分层的好处是它回答了「做机器学习需要什么」这个具体问题。做 P300 二分类检测,只需要 Level 1 的刺激类型;做错误相关电位分析,需要 Level 2 的伪反馈;做混合式脑机接口(脑电加眼动),需要 Level 0 的眼动。三层分开之后,不同类型的任务各取所需,不必把整份文件都读进来。

2.3 字符编码:一个容易算错的下标

P300 拼写的核心是把二维网格压成一维下标。

文档给的公式是:下标等于(行号减一)乘以总行数,再加上列号。文档举的例子是九行八列网格下,位置(二,三)的字符下标为十一。

这个公式有个陷阱:它用的是总行数而不是总列数。若按常规的行优先展开,下标应当是(行减一)乘列数加列。文档写的是行数,且例子给出的十一也对得上「(2-1)×9+3=12」……实际算下来是十二而不是十一。

这个不一致有两种可能:一是文档公式里的「总行数」实为笔误,应为总列数;二是编号从零开始。无论哪种,使用者必须自己用数据验证一遍——拿一份已知目标字符的训练文件,读出 CurrentTarget 的实际取值,与按公式算出的值比对,确认编号基准。

这类下标错位在脑机接口数据里后果很严重:标签错一位,整个训练集的监督信号就全错了,而模型仍能收敛到一个不算差的准确率,因为字符呈现的统计结构本身有规律。错误会被掩盖。

2.4 训练与测试的边界

每个会话分训练与测试两个阶段,目录层已经分开。

训练阶段不接分类器、不给反馈,目的是采集带标签的脑电用于训练。测试阶段接入已训练的分类器,每个字符试验结束后呈现预测结果作为反馈。

这个划分有一个实际影响:训练与测试的文件数并不对称,且不对称的方向随研究变。研究 A 训练与测试各一百九十五份,一比一;研究 C 训练五十七份、测试二百八十四份,测试是训练的五倍;研究 H 训练五十一份、测试三百二十一份,比例更悬殊;研究 P 反过来,训练一百九十份、测试只有三十八份。

比例悬殊不一定是异常。测试文件多,可能是因为测试阶段每个字符试验单独存一个文件;训练文件少,可能是因为训练阶段把多个字符试验合并成一个文件。但文档没有说明文件切分规则,因此「一份文件等于一个字符试验」这个假设不能通用。

2.5 EDF+ 头文件里塞了什么

EDF+ 是欧洲数据格式的扩展版,本来就是为生理信号设计的,头文件字段有限。这份数据把不少元信息塞进了头文件的自定义子字段里。

患者编号字段填的是「研究标签_受试者编号」,例如 A_01。

出生日期字段填的是「01-JAN-加年份」,年份按二〇二〇年一月一日为基准做年粒度的时间偏移。这个设计的目的是去标识化:真实出生日期被替换成一个偏移后的日期,保留了年龄精度到年,破坏了精确匹配的可能。若年龄不可得,该字段填一个占位年份。

患者姓名字段被用来存三样东西:种族、族裔、ALS 状态,用下划线连接。种族取值按美国国立卫生研究院的分类(白人、黑人或非裔美国人、亚裔、美洲印第安人或阿拉斯加原住民、夏威夷原住民或其他太平洋岛民、不可得记 X);族裔取值西班牙裔、非西班牙裔、不可得;ALS 状态取 NonALS,或 ALS_ 加 ALSFRS-R 评分(零到四十八,零最差),评分不可得时记 ALS_X。

设备型号字段统一填放大器型号。

所有记录的起始日期统一设为二〇二〇年一月一日。这一条很重要:它意味着不能从文件里恢复任何真实采集时间,任何依赖时间顺序的分析(比如判断同一受试者的多次会话先后)只能靠会话编号推断。

2.6 眼动那一路

部分研究同步采集了眼动,用 Tobii Pro X2-30 红外眼动仪,经 BCI2000 的眼动日志过滤器接入,与脑电同步。

采集的信号有五类:有效性标志(零无效、一有效)、注视位置(屏幕比例坐标,左上角为零点)、眼位(相对相机视野的比例坐标,左上角为零点)、眼睛到屏幕的距离(毫米)、瞳孔直径(毫米)。

眼动的用途是混合式脑机接口:把注视位置作为先验,缩小候选字符集合,从而减少所需的刺激轮次。研究 H 的条件目录名(CBGaze01、CBGaze10、CBGazeNo、CBGazeReal)直接对应了眼动融合的几种强度设定。

需要注意,眼动不是全部研究都有。文档说「如可用」,实际哪些研究有、哪些没有,只能逐文件读头文件确认。这一点在 §10.5 列为一个可核项。

§3 怎么拿到:开放下载与它的三个门槛

3.1 三种下载方式

官方给了三条路径,都无需注册。

网页直接下压缩包,十点三吉字节。

用 wget 递归镜像,命令是带递归、时间戳比较、断点续传、不追父目录四个参数的组合。适合网络不稳的环境,断了可以续。

用 AWS 的开放数据桶同步,命令带 --no-sign-request 参数,走亚马逊的骨干网,速度通常比直连快。这是大文件下载效率最高的一条。

解压后四十四点六吉字节。这个膨胀比接近一比四点三,符合 EDF+ 朴素的文本头加二进制体结构。

3.2 第一个门槛:四十四吉字节与内存策略

六千多份文件、四十四吉字节,不可能一次读进内存。

合理的做法是先按研究筛选,再按会话读。若只做算法验证,挑一两个研究就够;若要复现论文的汇总统计,必须全量,那就得用流式读取,逐文件算特征后丢弃原始数组。

EDF+ 文件的一个特点是头文件里写着记录数与每记录的采样点数,理论上可以先读头算出时长与通道数,再决定要不要读数据体。多数 EDF 读取库支持只读头,这个功能在这里很实用。

3.3 第二个门槛:通道名与通道数

官方页面没有列出通道总数,数据字典只给了「EEG_加电极名」这个模式,举例是 EEG_Cz。

这意味着通道数必须自己从文件里读。而且不同研究的电极配置很可能不同——有的用三十二导,有的可能更多或更少。跨研究合并时,通道对齐是一道必须过的关。

对齐的策略有两种。一种是取通道名的交集,只保留所有研究都有的电极,这会丢掉一部分信息但保证可比。另一种是全通道并集,缺失的通道填零或插值,这保留了信息但引入了「零不是真实信号」的问题,需要在下游模型里额外处理(例如给每个通道一个有效掩码)。

3.4 第三个门槛:许可虽宽,伦理不随之放开

许可是知识共享署名 4.0,这是最宽松的一类:可以商用、可以再分发、可以改作,只要署名。

但脑电是生物信号,即便去标识化,也不等于可以随意做再识别尝试。原始点阵文件因机构限制不公开这件事本身就是一个提示:机构认为原始文件里可能含可识别信息。转换后的 EDF+ 被认定不含,但两者的差别只是格式与字段,信号本身没变。

实际含义是:用这份数据做研究,仍应按所在机构的伦理要求走审查流程,尤其是涉及与外部数据联结、或用机器学习方法推断受试者属性(年龄、种族、ALS 状态都在头文件里)的研究。头文件里那些人口学字段是给分析用的,不是给画像用的。

3.5 校验和怎么用

清单每行是哈希值加两空格加相对路径。校验的做法是把清单放在数据根目录的上一层,用标准工具逐行比对。

实际用途有三个。一是下完立刻验完整性,四十四吉字节的下载中途损坏很常见,不验就跑会在某个文件的读取上莫名其妙地失败。二是定位缺文件——把清单里的路径列表与实际目录遍历结果做差集,立刻能看出哪些文件没下下来。三是核对 §1.3 那张表,因为清单就是官方的权威文件列表。

§4 质量:文档、页面与目录之间的出入

4.1 先说明核对方法

本页所有关于文件数、受试者数、会话数的数字,来源是官方发布的校验和清单。方法是下载该清单,按斜杠切分路径,取第二段为研究标签、第三段为受试者编号、第四段为会话编号,分别做去重计数;文件总数按扩展名为 EDF 的行计数。

这个方法可复现,任何人下次下载同一清单会得到同样的数字。若官方更新清单,数字可能变,因此本页的数字对应的是二〇二六年十月十九日取到的那一版。

4.2 第一处:研究总数,文档十九项,目录二十个

PDF 文档的汇总表列了 A 到 R 加 S1、S2,共二十行。文字描述里说「十九个研究条目」。

按目录实际清点,也是二十个:A 到 R 十八个,加 S1 与 S2。

所以十九这个数字不成立。可能的解释是文档把 S1 与 S2 算作同一项(它们确实出自同一篇论文),那么文字里说的「十九项研究」指的是「十九篇发表」。这个解释合理,但文档没有明说,读者容易把它当成「目录里只有十九个研究」。

4.3 第二处:研究 R 的人数,表记二十,目录五个

汇总表记研究 R 二十名受试者、两个会话。

目录里只有 R_01 到 R_05 五个受试者编号,会话十个,文件一百二十份。

若每人两会话,五个受试者正好十个会话,与目录一致。所以「二十」这个数字与「两个会话」相乘得到四十个会话,与实际十个差了三倍。

另一种读法是「二十」实为「二」,被误写或误读。但文档是 PDF,数字清晰,不像识别错误。

第三种解释:研究 R 与 S1 或 S2 共用受试者,二十人是三项合计,其中五项记在 R。这个解释能对上目录,但文档没有交叉说明。

无论哪种,结论一致:研究 R 的人数不能按表里的二十来用。

4.4 第三处:会话总数,谁都没给

页面给的是每项研究的会话数,从一到三不等,研究 B 记为「可变」,研究 K 记为「一或二」。

把这些数字加起来得不到一个准确的会话总数,因为「可变」没有具体值。

按目录统计可以给出确定值:四百三十八个会话(A 至 R 合计)加 S1 的十个会话与 S2 的二十四个会话,共四百七十二个会话。

这个数字与按表求和的结果有差距,主要差在研究 B(表记可变,目录六十个会话)与研究 Q(表记三,目录一百零七个会话)。

4.5 第四处:条件名,文档八种,目录二十种

文档的缩写表列了 AD、ADdiff、ALS、CB、CBc、CBs、No、PB、RD、RC、Var。实际去掉非范式项(ALS、No、Var),范式缩写是八个。

目录里出现的条件名有二十种,其中 Dyn、DynBigram、DynNgram、CBERN、CBGaze 系列、CBP、SUP、Dry、Wet、PredictiveSpelling、NonpredictiveSpelling、ColorIntensification、Grey-to-Color、Grey-to-White、Crystalize 系列、Einstein 系列都不在表里。

这些名字有的一眼能懂(Dry 与 Wet),有的必须读论文(CBP 与 SUP)。文档没有提供映射表,这是一个实际的使用障碍。

4.6 第五处:清单本身的一处残留

第一次下载校验和清单时,只拿到一千六百零三条记录,覆盖到研究 E 就断了,且最后一行路径被截断(停在 E_ 就结束)。

重新完整下载后得到六千二百一十四条记录,全部研究齐备。两次的差别不是清单有两个版本,而是第一次下载被中断——服务端返回的内容长度是对的,但传输在中途停了。

这件事有两个含义。一是四十四吉字节的下载确实容易中断,清单这种小文件都可能不完整。二是「解析清单得到的数字」必须先确认清单本身完整,否则会得出「只有五项研究」这种荒谬结论。本页第一次解析就踩了这个坑,把「StudyE 只有十九份文件、两个受试者」当成了实际结构,直到发现末尾路径被截断才纠正。

4.7 官方主动声明的两处缺失

文档与页面都写了两句话:文件内存在人口学数据缺失;部分参与者存在文件缺失。

第一句的具体含义是:头文件里的性别、出生日期、种族、族裔、ALS 评分这些字段,不是每个文件都有。文档对每个字段都给了「不可得」时的占位值,说明缺失是预期内的,不是意外。

第二句更含糊。「部分参与者存在文件缺失」可以有多种理解:某个受试者的某次会话整个没有、某个会话的某个条件没有、某个条件里的某几个文件没有。文档没说。

实际影响是做「完整受试者」筛选时,不能假设所有受试者的目录结构一致。稳妥做法是先遍历一遍,统计每个会话的文件数与条件数,把偏离众数的挑出来单独看。

4.8 数据可用性评价

优点:格式统一(全 EDF+,多数工具原生支持);标记标准化(按 IEEE P2731 三级组织,且给了完整字典);目录自解释(五级结构,看路径就知道是哪个研究哪个人的哪次会话);校验和逐文件覆盖;许可宽松;含 ALS 人群;代码库开放。

缺点:异质性高(协议、电极、范式、网格尺寸都不同);没有去重人数;通道数未公布;条件名与缩写表不对应;原始点阵文件不公开;文件切分规则未说明;采集期跨度九年,软硬件都换过。

一句话:它适合做泛化验证与跨研究汇总分析,不适合做严格受控的重复实验。

§5 能做什么:五类用法与实现要点

5.1 用法一:P300 检测器的跨受试者泛化

最直接的用法是训练一个二分类器,判断某次闪烁是否包含目标字符。

标签来源清楚:StimulusType 为零是靶,为一……这里要小心方向。数据字典写的是「零为非靶刺激、一为靶刺激事件」,但同一字典里 StimulusBegin 写的是「零为关、一为开」。两者不是一回事:StimulusBegin 标记刺激是否呈现,StimulusType 标记呈现的这次是否含靶。做标签时用 StimulusType,且必须先筛 StimulusBegin 为一的那些行,否则会把关灯时刻也当成非靶样本。

实现上,跨受试者泛化的标准做法是留一受试者交叉验证:用其余受试者的数据训练,留一个受试者测试。这份数据的价值在于受试者多,做留一法时每次训练集的规模都足够。

但异质性会咬人。若训练集混了九行八列与六行六列两种网格,模型学到的空间模式就不通用。稳妥做法是按网格尺寸分层,或者只用九行八列的那部分(占多数)。

5.2 用法二:ALS 与健康人的误差结构对比

含 ALS 受试者的四项研究(B、F、L、N)给了 一个少见的机会:在同一套范式下比较两类人群的 P300 特征。

比较的维度可以是幅值、潜伏期、单试次信噪比,也可以直接比分类准确率。

要注意的是混杂。ALS 组的受试者年龄通常大于健康组,而 P300 的幅值随年龄下降;ALS 组的病程不同,ALSFRS-R 评分从零到四十八分布,评分越低功能损害越重;四项研究的范式也不一致(B 与 N 用六行六列,F 与 L 用九行八列或混合)。因此任何人群对比都必须把研究标签作为协变量放进模型,否则会把研究间差异算成人群差异。

ALSFRS-R 评分存在 EDF+ 头文件的患者姓名字段里,格式是 ALS_ 加分数。解析这一段需要先按斜杠切出患者姓名字段,再按第一个下划线之后的部分切分(因为种族值与族裔值本身可能含下划线?实际枚举值不含,但稳妥起见应从右往左找 ALS_ 标记)。

5.3 用法三:混合式脑机接口的眼动融合

研究 H 与部分其它研究的条件目录里带 Gaze 字样,这些会话有眼动信号。

用法是把注视位置作为先验:若眼动仪说用户正在看某个区域,候选字符集合可以从七十二个缩到十个以内,所需的刺激轮次随之下降。

这条路的难点在同步精度。眼动与脑电虽经同一软件同步,但两个设备的内部延迟不同。眼动的注视点有生理性的扫视延迟(人眼从看到目标到注视稳定需要约二百毫秒),而 P300 本身在刺激后三百毫秒左右出现。若直接用瞬时注视位置做门控,可能门控到上一个字符。

稳妥做法是把眼动位置按时间窗平滑后再用,窗宽取三百到五百毫秒。

5.4 用法四:错误相关电位与伪反馈

Level 2 的伪反馈字段是这份数据里最少被用到的部分,也是最独特的。

机制是这样:测试阶段分类器给出预测后,实验者可以指定一个不同的字符作为实际显示的结果。这个「显示的不是预测的」在脑电里会诱发一个错误相关电位(约在反馈呈现后二百到四百毫秒出现一个负向偏转)。用它可以让系统知道自己刚犯了错,从而触发纠正。

做这件事的标签来源不是 StimulusType,而是比较 SelectedTarget 与 FakeFeedback:两者相等时用户看到的是预测结果,不等时看到的是伪反馈,后者对应的试次就是「错误试次」。

这条路的样本量取决于伪反馈出现的频率。文档没说各研究设了多少比例的伪反馈,需要自己统计 FakeFeedback 非零的行占比。

5.5 用法五:范式比较的准实验

条件目录名虽然不统一,但恰好保留了范式的原始标签。这让人可以做范式间的准实验比较:棋盘格与行列哪个快、动态停止与静态哪个效率高、彩色闪烁与灰度哪个准。

这类比较的效度受限,因为范式不是随机分配的——每项研究只做一两种范式,研究之间还差在受试者、时间、设备上。所以结论只能表述为「在某研究里观察到」,不能表述为「该范式更优」。

要做得更严谨,只能找同一研究内部有条件对照的那些:研究 A 同时有棋盘格、行列、随机三种;研究 H 有五种眼动条件;研究 N 有干湿电极对照;研究 Q 有三种颜色方案。这四项是内部对照,效度高于跨研究比较。

5.6 DAIMS 24 项检查

下表按文档、质量、公平、可复现、治理五个维度逐项判定。判据以 PhysioNet 页面、随包的 PDF 数据字典、说明文件与校验和清单的实际披露为准。

维度 项 判定
文档 数据字典 是(PDF 给头字段与数据标记两级字典,逐字段列取值)
文档 采集协议 是(拼写任务、校准与测试阶段、电极与放大器、阻抗门槛均写明)
文档 设备规格 是(放大器型号、眼动仪型号、采样率齐全)
文档 标注规范 是(IEEE P2731 三级标记,逐标记给语义与取值)
文档 版本历史 部分(有语义化版本号 1.0.0,仅一版,无变更记录)
文档 许可说明 是(知识共享署名 4.0,明文)
文档 引用格式 是(含 DOI、RRID、BibTeX)
文档 局限披露 部分(说明了人口学缺失与文件缺失,未给缺失清单)
质量 缺失披露 否(只说「部分参与者存在文件缺失」,未指明范围)
质量 信号质量说明 部分(给了阻抗门槛,未给逐文件信噪比或伪差标注)
质量 一致性检验 不适用(无人工标注任务,标签来自实验设计)
质量 记录数一致性 否(研究总数、研究 R 人数、会话数三处与目录不符,见 §4)
质量 编号一致性 部分(受试者编号写法随研究变,A_01 与 S1_01 两种格式并存)
质量 采集环境说明 是(实验室条件,机构与伦理均声明)
公平 人群构成 部分(种族、族裔、年龄在头文件里,但存在缺失,且无去重人数)
公平 机构来源 是(杜克大学与东田纳西州立大学,两校伦理委员会批准)
公平 亚组表现 部分(含四项 ALS 研究,但未给分层性能报告)
公平 偏倚讨论 部分(提到现有数据集的代表性不足,作为本数据集的动机)
可复现 代码可用 部分(BCI2000 开源,读取可用通用 EDF 库,未提供本数据集专用脚本)
可复现 环境说明 是(BCI2000 版本线索、放大器型号、滤波位置均写明)
可复现 随机种子 不适用(刺激序列由预定义范式生成,非随机过程为主)
可复现 结果可重算 部分(信号与标记齐全可重算,但原始点阵文件不公开,部分原生字段不可复原)
治理 伦理审批 是(两校伦理委员会批准,知情同意,含法定代理情形)
治理 再分发约束 是(知识共享署名 4.0,可再分发,需署名)

统计:是 12 项,部分 9 项,否 2 项,不适用 2 项。

两项判否的理由值得单独说。缺失披露判否,是因为官方只给了一句「部分参与者存在文件缺失」,既没说哪些人、也没说缺多少,使用者无法据此判断自己的分析样本会不会被静默削减。记录数一致性判否,是因为 §4 列出的三处出入都是可核对的硬数字差异,不是措辞问题。

§6 常见误读与引用陷阱

6.1 误读一:把人次当人数

这是最普遍的一处。

官方的表述是每项研究的参与人数,二十项加起来是三百二十六,但按目录去重只有二百七十八人次。两个数字都不是「多少人」——同一人可能跨研究重复,官方没给去重数。

写论文时应写「二百七十八人次受试者记录,涉及十八项研究」,若要写人数,必须声明是按目录去重的人次而非独立个体。

6.2 误读二:把异质集合当同质样本

十八项研究的协议不同、设备不同、范式不同、网格尺寸不同。把它们合起来算一个总体的平均准确率,得到的是一个没有明确含义的数字。

正确做法是分层报告,或者把研究标签作为随机效应放进混合模型。

6.3 误读三:以为通道数固定

官方没公布通道数。不同研究的电极配置很可能不同,跨研究合并必须先做通道对齐。

若直接假设所有文件通道数相同并拼接数组,会在通道数不同的文件上报错,或者更糟——静默错位。

6.4 误读四:把 EDF+ 起始日期当真

所有记录的起始日期都被统一设为二〇二〇年一月一日。这是去标识化的手段,不是真实采集日期。

依赖时间的分析(比如「同一受试者两次会话间隔多久」)只能用会话编号推断先后,不能用日期做差。

6.5 误读五:把条件目录名当标准范式名

目录里的二十种条件名是各研究内部命名的遗留,没有统一。缩写字覆盖了其中八种。

按条件名筛选数据前,先去读对应论文,确认这个名字在那项研究里到底指什么。特别是在不同研究里同名不同义的可能——CB 在多数研究里是棋盘格,但具体的棋盘格实现(分组大小、闪烁时序)未必相同。

6.6 误读六:把「机器学习就绪」当成「开箱即用」

标题里的 machine learning ready 指的是格式与标记已标准化,不是指有现成的特征矩阵或划分好的训练测试集。

实际上要把它变成可训练的数据,还需要做通道对齐、重参考选择、带通滤波、降采样、分段(按刺激时刻切窗)、基线校正这一整套预处理。这些步骤没有唯一正确解,不同选择会给出不同结果。

6.7 引用时必须写清的五件事

项 必须写的内容
规模 二百七十八人次受试者、十八项研究、六千二百一十二份记录;说明人次不等于人数
版本 1.0.0,二〇二五年五月十九日,DOI 10.13026/0byy-ry86
许可 知识共享署名 4.0,可再分发需署名
人群 含四项含 ALS 受试者的研究,其余为健康受试者;人口学字段存在缺失
异质性 十八项研究协议不同,不可当作同一协议的重复采集

§7 在生态中的位置

7.1 与单研究 P300 数据的分工

单研究数据的价值在可控:一个协议、一批受试者、一种范式,任何差异都能追溯到设计。代价是样本小。

汇总数据的价值在覆盖:人多、范式多、人群多。代价是异质。

两者不冲突。方法首次验证用单研究数据,因为它能快速给出「这个方法在这个协议下有没有效」的答案。泛化验证用汇总数据,因为它能回答「换了人、换了范式还成不成」。

7.2 与运动想象数据的分工

脑机接口的公开数据另一大支是运动想象,典型是四类运动想象的竞赛数据:九名受试者、二十二通道、两百五十赫兹、每会话二百八十八试次。

两条支线的差别不只是任务不同。运动想象依赖感觉运动节律的调制,频域特征为主,单试次信噪比低,需要较长的时间窗;P300 依赖事件相关电位的时域形态,对刺激时刻敏感,单试次可检测性更好但需要精确的标记对齐。

因此两者的预处理流程不同:运动想象重滤波与空间滤波(共空间模式一类),P300 重分段与叠加平均。用错流程效果会差很多。

7.3 在临床转化路径上的位置

P300 拼写是少数已进入实际使用的脑机接口应用。对闭锁状态或重度运动障碍者,它提供的是一条约每分钟几个字符的交流通道,慢,但有时是唯一可用的。

这个背景决定了数据的使用价值:任何声称能提升拼写速率的算法,最终都要在患者身上验证。而患者数据稀缺,公开的更少。这份数据含四项 ALS 研究,是这个链条上难得的公开环节。

7.4 规模上的定位

二百七十八人次、六千多份记录、四十四吉字节,在脑电公开数据里属于中大型。比它大的有大规模睡眠或癫痫监测数据,那些动辄数千人、上百吉字节;但那些是临床监测记录,任务单一。

在脑机接口这个细分方向里,它的规模是领先的,尤其是含患者的公开数据。

7.5 适合谁用

适合:做 P300 检测算法并需要跨受试者验证的团队;研究 ALS 与健康人脑电差异的研究者;做混合式脑机接口(脑电加眼动)的人;需要一份格式标准、标记规范的脑电数据做方法学教学的人。

不适合:想做通道级源定位的人(电极配置未公布,头模型无法建立);想研究采集硬件差异的人(点阵文件不公开,硬件信息只有型号);想严格复现某一篇论文的人(原始文件缺失,且各研究的处理细节未全记录)。

§8 这份数据是怎么整理出来的

8.1 从点阵到 EDF+ 的转换

原始记录是 BCI2000 的原生点阵格式。转换的目标格式是 EDF+,理由有三:EDF+ 是开放标准,多语言都有读取库;它天然适合多通道等间隔采样信号;它的头文件支持自定义子字段,可以塞进元信息。

转换中最麻烦的是事件标记。BCI2000 把事件存为并行的状态通道,每个事件一个通道,值为零或一,或整数编码。EDF+ 没有「事件通道」这个概念,所有通道都是等间隔采样的数值序列。因此事件只能以同样的方式存成通道:一个事件一个通道,长度与脑电信号通道相同,值在事件时刻取特定编码。

这就是为什么数据字典里每个事件标记都写成了一个「数据标签」。它们实际上是通道名。

这个做法的代价是文件变大——每个事件通道与脑电通道等长,而事件通道里绝大多数采样点都是零。四十四吉字节里有相当一部分是这些零。

8.2 三级标准的用意

IEEE P2731 是脑机接口术语与数据存储的标准化工作组。它提出的三级结构不是随手分的,而是对应三类不同的使用场景。

Level 0 是「信号是什么」:哪些通道、什么单位、什么采样率。这是任何信号处理的前提。

Level 1 是「实验做了什么」:什么时候闪了什么、闪的是不是目标。这是训练监督模型的前提。

Level 2 是「系统输出了什么」:预测了什么、显示了什么。这是闭环控制与错误分析的前提。

分层的好处是每层可以独立验证。若 Level 1 的标记有误,只需重做 Level 1,不必动 Level 0 的信号。

8.3 时间偏移的具体做法

去标识化里最容易被忽略的是时间。

真实采集日期本身是准标识符:若知道某人某天在某医院做过实验,结合其他信息可以定位到个人。因此所有日期必须打散。

这里采用的做法是年粒度偏移:以二〇二〇年一月一日为基准,把出生日期替换成「基准日加偏移年数」,保留年龄精度到年,破坏精确匹配。所有记录的采集起始日统一设为基准日,这样连「同一天采集」这种关系也被抹掉。

代价是时间维度的分析全部失效。这也解释了为什么文档要说「部分参与者存在文件缺失」而不给清单——若给出哪个受试者缺哪次会话,就等于泄露了会话的时间顺序信息。

8.4 隐私声明里那句关键的话

说明文件开头有一段隐私声明,其中一句是:因机构限制,源数据文件(BCI2000 点阵格式)不能公开发布,因为它们可能包含可识别信息。

这句话值得细读。它的逻辑是:点阵文件里除了信号,还有 BCI2000 的完整配置与运行日志,其中可能记录了受试者姓名、真实日期、机器名等。这些在转换成 EDF+ 时被剥离或改写,因此 EDF+ 可以公开。

这个处理是合理的,但也意味着公开版本不是原始版本。任何声称「用这份数据完全复现了原论文」的说法都要打折扣,因为原论文用的可能是点阵文件里的某些字段。

§9 术语与口径速查

术语 本页用法
P300 刺激后约三百毫秒出现的正向事件相关电位成分,对罕见靶刺激敏感,是拼写式脑机接口的信号基础
拼写范式 用字符矩阵逐个闪烁、从脑电中推断用户注视哪个字符的交互方式
棋盘格范式 把字符按行列交错分组闪烁,以减少相邻字符的干扰,优于传统的整行整列闪烁
动态停止 不等固定轮次跑完,一旦累计证据足够就结束该字符的数据采集,以提升通信速率
伪反馈 测试阶段故意显示与分类器预测不同的字符,用于诱发错误相关电位
错误相关电位 用户察觉系统出错时在反馈后出现的负向电位成分,可用于在线纠错
ALSFRS-R 修订版肌萎缩侧索硬化功能评分量表,总分零到四十八,零为功能最差
IEEE P2731 脑机接口统一术语与数据存储标准,本数据按其三级结构组织标记
EDF+ 欧洲数据格式的扩展版,支持事件标记与自定义头字段
BCI2000 开源脑机接口软件平台,本数据的采集系统
人次 一次受试者参与记录;同一人参加两项研究计为两人次
会话 一名受试者的一次实验访问,内含训练与测试两个阶段

§10 事实清单与附录

10.1 核心事实

项 值 来源
全称 bigP3BCI: An Open, Diverse and Machine Learning Ready P300-based Brain-Computer Interface Dataset 条目页
作者 Boyla Mainsah、Chance Fleeting、Thomas Balmat、Eric Sellers、Leslie Collins 条目页
机构 杜克大学、东田纳西州立大学 条目页
版本与日期 1.0.0,2025 年 5 月 19 日 条目页
DOI(本版) 10.13026/0byy-ry86 条目页
DOI(最新版) 10.13026/ckte-3g83 条目页
RRID SCR_007345 条目页
许可 知识共享署名 4.0 条目页
访问 开放,无需注册 条目页
研究数(按目录) 18(A 至 R)加 S1、S2 共 20 个标签 校验和清单
受试者条目(按目录) 278 人次 校验和清单
会话数(按目录) A 至 R 合计 438,加 S1 十、S2 二十四 校验和清单
EDF+ 文件数 6,212 校验和清单
校验和条目数 6,214(含许可与说明两份) 校验和清单
采样率 256 赫兹 说明文件
放大器 g.tec 生物信号放大器 说明文件
电极 被动凝胶电极或主动干电极 说明文件
阻抗门槛 一般低于 40 千欧 说明文件
采集系统 BCI2000 说明文件
眼动仪 Tobii Pro X2-30 说明文件
网格尺寸 9×8 或 6×6 文档表 1
含 ALS 受试者的研究 B、F、L、N 四项 文档表 1
压缩包体积 10.3 GB 条目页
解压体积 44.6 GB 条目页
伦理 杜克大学、杜克大学健康系统、东田纳西州立大学伦理委员会批准 条目页
资助 美国国立卫生研究院 NIDCD,R21DC018347-02S1 说明文件
时间偏移基准 2020-01-01 文档表 2

10.2 事件标记速查

层级 标记 取值
Level 0 EEG_加电极名 微伏
Level 0 ET 加左或右眼加 Valid 0 无效、1 有效
Level 0 ET 加左或右眼加 Gaze 加 X 或 Y 0 至 1 的屏幕比例
Level 0 ET 加左或右眼加 Pos 加 X 或 Y 0 至 1 的相机视野比例
Level 0 ET 加左或右眼加 Dist 毫米
Level 0 ET 加左或右眼加 PupilSize 毫米
Level 0 PhaseInSequence 0 运行前、1 试次前、2 试次中、3 试次后
Level 1 StimulusBegin 0 刺激关、1 刺激开
Level 1 StimulusType 0 非靶、1 靶
Level 1 字符名加行号加列号 0 未呈现、1 呈现
Level 1 CurrentTarget 目标字符索引
Level 2 Selected 加 Target 或 Row 或 Column 预测字符、行、列的索引
Level 2 DisplayResult 0 无反馈、1 有反馈
Level 2 FakeFeedback 伪反馈字符索引,非零时覆盖预测

10.3 目录层级

层 示例 说明
1 bigP3BCI-data 数据根目录
2 StudyA 研究标签
3 A_01 受试者编号
4 SE001 会话编号
5 Train 或 Test 实验阶段
6 CB 实验条件
7 A_01_SE001_CB_Train01.edf 文件

10.4 附录 A:读一份记录的最短代码

下面这段代码做四件事:列出文件、读头、读事件通道、按刺激时刻切窗。用 MNE 的 EDF 读取器,它对 EDF+ 的注释通道支持较好;若事件被存为普通信号通道而非注释,则要改用原始数组按通道名取。

import mne
import numpy as np

path = 'bigP3BCI-data/StudyA/A_01/SE001/Train/CB/A_01_SE001_CB_Train01.edf'

raw = mne.io.read_raw_edf(path, preload=True, verbose=False)
print(raw.ch_names)          -- 先看通道名,确认事件通道的命名
print(raw.info['sfreq'])     -- 应为 256

-- 事件可能是注释,也可能是普通通道,两种都要试
events, event_id = mne.events_from_annotations(raw, verbose=False)
if len(events) == 0:
    picks = [ch for ch in raw.ch_names if ch.startswith('Stimulus')]
    stim = raw.get_data(picks=picks)
    print({ch: np.unique(raw.get_data(picks=[ch])) for ch in picks})

-- 取靶刺激时刻:StimulusBegin 为 1 且 StimulusType 为 1
-- 通道值就是采样点数值,先转成一维再找跳变
def rising_edges(x):
    x = np.asarray(x).ravel()
    return np.where((x[1:] > 0) & (x[:-1] <= 0))[0] + 1

begin = raw.get_data(picks=['StimulusBegin'])[0]
stype = raw.get_data(picks=['StimulusType'])[0]
edges = rising_edges(begin)
target_idx = [i for i in edges if stype[i] > 0]
print('靶刺激次数', len(target_idx))

-- 按刺激时刻切 800 毫秒窗,前 200 毫秒做基线
sf = int(raw.info['sfreq'])
epochs = np.stack([
    raw.get_data(picks=['EEG_Cz'])[0, i-200:i+600] for i in target_idx
])
epochs = epochs - epochs[:, :200].mean(axis=1, keepdims=True)
print('切窗后形状', epochs.shape)

三处要注意。第一,通道名不一定叫 StimulusBegin,BCI2000 转换时可能加了前缀或改了大写,先打印再改。第二,rising_edges 只处理零到正的跳变,若事件编码不是零一而是别的值,要改判据。第三,文件里若没有 EEG_Cz,说明该研究的电极配置不含 Cz,换成实际存在的电极名。

10.5 附录 B:六个可立即验证的疑问

第一,各研究的通道数分别是多少。逐文件读头取通道数,按研究分组统计,看是否一致。这一项官方未公布,是使用前必须自己确认的第一件事。

第二,S1 与 S2 是否共用受试者。两个目录的受试者编号都是 S1_01 至 S1_10 与 S2_01 至 S2_28,编号体系不同,但同一人可能以不同编号各出现一次。无法从数据判断,只能查论文。

第三,研究 R 为何只有五名受试者而文档记二十。查该研究论文的受试者描述,或检查是否有文件被移到别的目录。

第四,哪些研究会话含眼动通道。按通道名前缀 ET 逐会话扫描,列出有眼动的会话清单。文档只说「部分」。

第五,FakeFeedback 非零的试次占比。逐测试文件统计,看伪反馈的实验设计比例。这个比例决定了错误相关电位分析的可用样本量。

第六,条件目录名与文档缩写表的完整映射。目前有十二个名字对不上,需要读对应论文补全。

10.6 附录 C:证据链

事实 出处 核对方式
20 个研究标签 目录列表 直接读取
6,212 份 EDF+ 校验和清单 按扩展名计数
278 人次受试者 校验和清单 按研究与受试者去重计数
438 个会话(A 至 R) 校验和清单 按受试者与会话二元组去重
20 种条件名 校验和清单 按第六段目录名去重
采样率 256 赫兹 说明文件与文档 两处一致
网格 9×8 与 6×6 文档表 1 直接读取
四项含 ALS 文档表 1 直接读取
时间偏移基准 2020-01-01 文档表 2 直接读取
字符下标公式 文档表 3 与举例不一致,见 §2.3
索引举例为 11 文档表 3 按公式算应为 12,需读文件核对
研究总数「十九」 文档正文 与 20 个标签不符,见 §4.2
研究 R 二十人 文档表 1 与 5 个目录不符,见 §4.3
44.6 GB 解压体积 条目页 直接读取
原始点阵文件不公开 说明文件隐私声明 直接读取

编辑说明

本页基于 PhysioNet 条目页(2026-10-19 取)、随包的 PDF 数据字典、说明文件与校验和清单写成。§1.3、§4 与 §10.6 中关于文件数、受试者人次、会话数与条件名的数字,均为本页解析校验和清单所得,可用同样方法复现:下载清单,按斜杠切分路径后分组去重计数。

记录一处过程偏差:首次下载校验和清单只得到一千六百零三条记录,覆盖到研究 E 就中断,且末行路径被截断。本页最初据此得出「只有五项研究、StudyE 仅两份文件」的错误结构,完整下载后才纠正。这一段过程写进 §4.6,因为它是这份数据在下载环节的真实风险,不是本页的编辑瑕疵。

未覆盖部分:未下载 EDF+ 文件本体(四十四点六吉字节),因此通道数、单文件时长、眼动覆盖范围、各研究的实际采样点数均未核实。§10.5 的六个疑问正是留给下载后自行核对的项。凡涉及「官方未公布」的判断,均指三份公开材料(条目页、说明文件、PDF 字典)里均无该字段,不排除存在于未下载的文件内容中。

§2.3 关于字符下标公式与举例不一致、§4.2 至 §4.5 关于文档与目录之间四处数字出入、§8.4 关于点阵文件不公开的含义,均为本页基于公开材料的核对与推断,非官方结论。引用这些判断时请注明是本页核对所得。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • tuab — 共享标签:脑电信号 / 评测基准 / 生理信号
  • bigideaslab-step-hr-smartwatch — 共享标签:评测基准 / 生理信号 / 多模态
  • neurocritical-pediatric — 共享标签:脑电信号 / 评测基准 / 生理信号
  • eeg-power-anesthesia — 共享标签:脑电信号 / 评测基准 / 生理信号
  • ltrsvp — 共享标签:脑电信号 / 评测基准 / 生理信号
  • tusz — 共享标签:脑电信号 / 评测基准 / 生理信号
  • ibl-brain-wide-map — 共享标签:脑电信号 / 生理信号 / 多模态
  • spikeinterface — 共享标签:脑电信号 / 生理信号 / 多模态
  • visem — 共享标签:评测基准 / 生理信号 / 多模态
  • dreamer — 共享标签:脑电信号 / 生理信号 / 多模态

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集