信息速览
腹腔镜手术的技能考核长期靠人眼看录像打分。三个标准动作——把六个橡胶件在空中换手后钉到对侧钉板上、沿预画的圆圈把纱布剪下来、在引流管上穿过缝合线并打两个结——构成了腹腔镜基本功(Fundamentals of Laparoscopic Surgery, FLS)认证的核心,也是美国外科医师体系里拿到手术资质的一道门槛。评分由考官用李克特量表完成,五档、五到八个维度,最后落成一个总分。麻烦在于:同一段操作换一位考官可能差好几档,而受训者拿到的反馈只有"完成时间""扣分次数"和"最终得分"这几个数字,中间那几十秒里他的视线停在哪里、脑负荷什么时候升高,谁也说不清。
脑电与眼动在原理上正好补这一段。眼动给出注意力的落点与转移节奏,脑电给出认知负荷与运动准备的直接读数。但要同时把 128 导脑电帽和眼动眼镜戴在一个正趴在训练箱上做精细动作的人头上,需要设备、需要伦理审批、需要一批愿意坐下来配合的受试者,这三样凑齐的团队很少,愿意把原始信号公开出来的更少。NIBIB-RPCCC-FLS 是这条稀缺线上一个具体的答案:美国罗斯威尔公园综合癌症中心与加拿大圭尔夫大学把 25 名受试者在 FLS 训练箱上完成三项标准任务的 315 组同步记录连同逐次评分一起放上了 PhysioNet,官方称其为 NIBIB_RPCCC_FLS。它和站内已有的 NIBIB-RPCCC-RAS 词条出自同一批人、同一套设备、甚至同一段伦理审批编号,但任务平台、任务数量与评分体系完全不同——这个区别在 §6 里会专门拆开讲。FLS 脑电眼动数据集的价值与边界,一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | Integration of Electroencephalogram and Eye-Gaze Datasets for Performance Evaluation in Fundamentals of Laparoscopic Surgery (FLS) Tasks |
| 常用名 | NIBIB-RPCCC-FLS(官方正文亦写作 NIBIB_RPCCC_FLS) |
| 发布方 | PhysioNet;数据由美国 Roswell Park Comprehensive Cancer Center 智能癌症护理实验室与加拿大圭尔夫大学贡献 |
| 首次发布 | 2023 年 8 月 23 日,版本 1.0.0 |
| 版本沿革 | 仅 1.0.0 一个版本,发布说明写"initial release",无后续修订 |
| 受试者数 | 25 名,年龄 20–67 岁 |
| 任务数 | 3 项 FLS 标准任务(钉板转移、环形裁剪、体内缝合) |
| 同步记录组数 | 315 组,每组一个 .edf 加一个 .csv |
| 脑电规格 | AntNeuro 128 通道头戴,500 Hz,EDF+C,单条时长 59–1048 秒 |
| 眼动规格 | Tobii 眼镜,20 项指标,50 Hz,CSV,已用 Tobii Pro Lab 预处理 |
| 脑电总时长 | 约 17.25 小时(315 个 EDF 头文件中记录时长字段合计) |
| 评分规模 | 315 条评分;钉板转移与环形裁剪 5–25 分,体内缝合 8–40 分 |
| 人口学字段 | 年龄、性别、利手、利眼,逐受试者恒定 |
| 文件格式 | EEG_FLS/ 下 .edf,EYE_FLS/ 下 .csv,根目录 PerformanceScores.csv、RECORDS、SHA256SUMS.txt、LICENSE.txt |
| 总体积 | 未压缩 7.8 GB,官方 ZIP 2.7 GB |
| 许可 | CC BY-NC-SA 4.0,官方明确"供学术研究发布,不作商业使用" |
| 典型用途 | 手术技能客观评估、脑电与眼动特征建模、学习曲线预测、认知负荷研究 |
§1 它要解决的具体麻烦
1.1 主观评分卡在哪一格
腹腔镜技能的考核之所以难客观,不是因为考官不认真,而是因为量表本身的结构决定了它能承载的信息量。GOALS(Global Operative Assessment of Laparoscopic Skills,腹腔镜技能整体评估)用五个维度、每项 1 到 5 分,总分 5 到 25;OSAT(Objective Structured Assessment of Technical Skills,客观结构化技术技能评估)用八个维度、每项 1 到 5 分,总分 8 到 40。两者都是"考官看完整段录像后给一个印象分"的结构:分数是段的属性,不是时刻的属性。
这意味着两件事。第一,评分的分辨率被压到"每次尝试一个数",一次尝试通常几十秒到几分钟,中间发生的过程全部丢失。第二,评分的参照系是考官的经验,同一份录像前后两天重评未必一致,两位考官之间的差更难消除。想用这类分数去监督一个"技能是否在进步"的过程,先天就缺了时间维度的地面真值。
客观化的努力分两条路。一条是 kinematic(运动学)路线:从器械轨迹里算路径长度、抖动、停顿次数,机器人手术模拟器天然能给出这类数据。另一条是神经生理路线:从头皮脑电里算功率谱、功能连接、事件相关去同步,从眼动里算注视时长、扫视幅度、瞳孔直径变化。后一条路的价值在于它测的是"操作者的状态"而不是"器械的效果",代价是需要同步采集设备,而这是绝大多数医学院不具备的条件。公开数据集的作用正是把这条路的门槛从"自己采"降到"下载"。
1.2 三条常见的错误期待
第一条,期待它是"手术视频数据集"。它里面没有任何视频。三项任务的完成时间、器械碰撞次数、掉落次数确实来自录像分析,但录像本身不在此库中,只有这些计数值被折算进了评分口径。想做器械分割、动作相位识别、手术场景理解的人,在这里找不到素材。
第二条,期待它是"临床手术数据"。全部记录来自训练箱(Pyxus 训练箱),箱内是橡胶件、纱布与 Penrose 引流管,不是人体组织,没有真实的出血、粘连、解剖变异,也没有患者结局。它测的是基本功,不是手术。
第三条,期待它是"大样本深度学习粮仓"。25 名受试者、315 组记录、三个任务,这个量级支撑不了从头训练一个深度模型。它的正确用法是特征工程加浅层模型,或者作为跨数据集的外部验证集。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 脑电与眼动同步的原始信号 | 315 组 500 Hz 脑电 + 50 Hz 眼动,同一次尝试 | 够,且是本库唯一不可替代的部分 |
| 逐次尝试的绩效分数 | 315 条评分,含上下限列 | 够,注意三个任务用了两套量表 |
| 学习曲线建模 | 同一人同一任务最多 5 次尝试 | 够做短程曲线,不足以做长期技能追踪 |
| 认知负荷的时频特征 | 128 通道原始脑电,可自行做 PSD 与相干 | 够,需自己做预处理 |
| 注意力分配研究 | 20 项眼动指标含注视/扫视类型 | 够,无时间戳列,对齐要自己处理 |
| 手术视频动作识别 | 无 | 不给,库中无视频 |
| 临床结局预测 | 无 | 不给,无患者、无随访 |
| 跨中心泛化验证 | 单一机构采集 | 不够,只能做跨任务或跨人的对照 |
| 经验水平分组的组间比较 | 人口学表未含经验年资字段 | 不够,分组信息只在论文里,不在 CSV 中 |
最后一行值得单独强调。官方页面反复说"受试者具备不同水平的机器人手术经验",但 PerformanceScores.csv 的十二列里没有经验年资这一列。想按经验分组做组间比较,必须回到原始论文,且论文摘要里只给出了分组的大类名称与若干显著性检验的 p 值,没有给出每组人数。
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你在做手术技能自动评分,缺一个带真值分数的公开集 | 315 组信号配 315 条考官评分,标签直接可用 | 先按受试者编号分组划训练/测试,再把三个任务分开建模 |
| 你手上有自己的小规模采集,想找外部集对照 | 设备与范式不同(训练箱 vs 你的平台),正好做跨设备外测 | 固定受试者划分与随机种子,在同一份划分上比不同模型 |
| 你想验证"眼动特征能预测绩效"这个假设 | 20 项眼动指标配同一尝试的绩效分 | 先做注视与扫视的时长、幅度类特征,再进浅层模型 |
| 你在研究学习曲线 | 同一人同一任务最多五轮重复 | 用首次尝试分数作为基线,看后续轮次的增量 |
| 你想做脑电功能网络与技能的关系 | 128 通道原始 EDF,可做相干与图论指标 | 先剔除 4 条眼电通道,再处理 6 个官方点名的低质量通道 |
| 你要找的是手术视频或机器人手术数据 | 无 | 转看 §6 的导航,本库不匹配 |
1.5 一句话判断
它不适合当"更大的训练集",而适合当"唯一那把尺子":在一批同步采下来的脑电与眼动上,把"考官打的分数"这件事拆成可计算的特征,而这个拆分在别处没有第二个公开数据集能同时满足双模态同步与量表评分两个条件。
1.6 不适合谁:四条边界
不适合做端到端深度学习的预训练。 315 组记录、25 个人,任何一个有一定容量的模型都能在几轮内把受试者身份记下来。想用数据量换性能的项目,用它只会得到虚高的组内成绩。
不适合做临床推断。 训练箱上的橡胶件不等于腹腔里的组织,得分高不代表上台安全。任何把本库结论外推到临床的说法都缺乏支撑。
不适合做跨中心泛化研究。 全部记录来自一家机构的同一间实验室(ATLAS 实验室),设备、光照、指导语、考官都只有一套。它能做的是"跨人"而不是"跨中心"。
不适合做商业产品。 许可为 CC BY-NC-SA 4.0,官方页面另有一句"发布供学术研究使用,不作商业使用"。两个约束叠加,商业场景基本被排除。
§2 数据构成与规格
2.1 一次尝试由两个文件加一行评分组成
库的根目录只有六个条目:两个数据文件夹 EEG_FLS/ 与 EYE_FLS/,四个平铺文件 PerformanceScores.csv、RECORDS、SHA256SUMS.txt、LICENSE.txt。两个文件夹各 315 个文件,文件名一一对应,命名规则是 participantID_taskID_try,例如 11_2_1.edf 指 11 号受试者、第 2 项任务、第 1 次尝试。受试者编号 1 到 25,任务编号 1 到 3,尝试编号 1 到 5。
三者之间的关系是一张很干净的星型表:PerformanceScores.csv 的每一行给出一个(脑电文件、眼动文件)对,并挂上受试者人口学与这次尝试的得分。因此"一次尝试"在本库里的完整定义是三个东西的并集——一段 EDF 信号、一段 CSV 信号、一行评分。缺任何一个,这次尝试就不再完整。
这套结构带来一个直接后果:脑电与眼动是"按文件配对",不是"按时间戳对齐"。CSV 里没有时间戳列,只有按 50 Hz 等间隔排下来的行;EDF 里也只有起始时刻与总时长。要做真正的逐时刻对齐,必须假设两者同时开始、同时结束,并接受这个假设带来的误差(§5.5)。
2.2 字段的完整字典
评分表是本库唯一的结构化元数据载体,十二列如下。
| 列名 | 取值形态 | 含义 | 使用注意 |
|---|---|---|---|
EEG File Name |
如 '11_2_1.edf' |
脑电文件名,带单引号 | 与 EEG_FLS/ 下文件一一对应 |
Eye File Name |
如 '11_2_1.csv' |
眼动文件名,带单引号 | 与 EYE_FLS/ 下文件一一对应 |
Subject ID |
1–25 | 受试者编号 | 分组划分的唯一键 |
Gender(F:Female; M:Male) |
F / M |
性别 | 逐受试者恒定 |
Age (year) |
20–67 | 年龄 | 逐受试者恒定,官方声明的范围与此一致 |
Dominant Hand |
Right / Left |
利手 | 钉板转移任务明确要求从非利手换到利手 |
Dominant Eye |
Right / Left |
利眼 | 眼动指标按左右眼分列,分析时可能需要区分 |
Task ID |
1 / 2 / 3 | 任务编号 | 1 钉板转移、2 环形裁剪、3 体内缝合 |
Try |
1–5 | 第几次尝试 | 按(受试者 × 任务)分组编号 |
Performance |
数值 | 本次尝试得分 | 不同任务量程不同,见下行 |
Minimum possible score |
5 或 8 | 该任务得分下限 | 任务 1、2 为 5;任务 3 为 8 |
Maximum Possible score |
25 或 40 | 该任务得分上限 | 任务 1、2 为 25;任务 3 为 40 |
除评分表外,EDF 头结构(hdr)里还有两个官方特别提示的变量:patientID 与 recordID。官方明确写了这两个变量里的日期是"EDF 转换日期",不是采集日期——也就是说,本库没有任何字段能告诉你某次尝试发生在哪一天、是上午还是下午。做昼夜节律、疲劳累积一类研究的人在这里会撞墙。
2.3 一组记录的完整解剖
以 11 号受试者第 2 项任务第 1 次尝试为例。脑电文件 11_2_1.edf 的头结构给出:EDF+C 格式,129 条信号,1 个数据记录,记录时长 135 秒,每条信号 67500 个采样点——67500 ÷ 135 = 500,正好是官方声明的 500 Hz。物理量纲为毫伏。
129 条信号里,128 条是脑电通道,最后一条是 EDF Annotations 通道(EDF+ 规范要求的注释通道,不是脑电)。128 条脑电通道的命名规则统一为 EEG<电极名>CPz,例如 EEGFp1CPz、EEGCzCPz、EEGOI2hCPz,后缀提示这批记录以 CPz 为参考电极。其中 4 条是眼电通道:EEGHEOGRCPz、EEGHEOGLCPz、EEGVEOGUCPz、EEGVEOGLCPz,官方使用说明要求把这 4 条剔除。
patientID 字段的内容是 1234567 F 21-Jul-2022 Patient_1,recordID 是 Startdate 21-Jul-2022 MW_1234567 MW_Inv_01 MW_Eq_01。两段字符串在库内所有文件里都是同一套去标识化的字面量,不随受试者变化——所以不能从 EDF 头部反推这是几号受试者,必须回到评分表。
对应的眼动文件 11_2_1.csv 有一个表头行,二十列,列名即指标名(§2.6)。文件共 6737 个数据行,6737 ÷ 135 ≈ 49.9,与官方声明的 50 Hz 相符。这个"行数 ≈ 脑电时长 × 50"的关系在全库成立,也是目前唯一可行的对齐依据。
2.4 受试者、任务与轮次的网格
本库的规模可以用一张三维网格说清楚:25 名受试者 × 3 项任务 × 若干轮次。理想的满网格是 25 × 3 × 5 = 375,实际是 315,缺口来自"有的人没做满五轮"。
| 维度 | 规模 | 说明 |
|---|---|---|
| 受试者 | 25 名 | 编号 1–25,评分表全部出现 |
| 任务 | 3 项 | 编号 1–3,三项 FLS 标准任务 |
| (受试者 × 任务)组合 | 75 个 | 满网格应为 75,实际全部有记录 |
| 每组合轮次 | 2 / 3 / 5 次 | 官方声明"每人五次,部分受试者只做两次" |
| 做满五轮的组合 | 54 个 | 按评分表分组计数 |
| 做三轮的组合 | 3 个 | 按评分表分组计数 |
| 只做两轮的组合 | 18 个 | 按评分表分组计数 |
| 记录总数 | 75 组 × 合计 315 | 与 EDF、CSV 各 315 个文件一致 |
按(受试者 × 任务)分组计数是读这张表的正确口径,也是划分数据集时必须采用的口径。同一个人同一任务的五次尝试,共享的不只是这个人,还有同一台训练箱、同一批器械、同一套光照、同一位考官的评分习惯。按文件随机切分会把同一次"学习过程"的相邻轮次分到两侧,模型只要学会"这个人的脑电长什么样"就能白拿分。正确做法是把 Subject ID 作为分组键,同一个人绝不出现在两侧(§7.3)。
三项任务的记录数并不相等:任务 1 有 108 条、任务 2 有 107 条、任务 3 有 100 条,合计 315。这个不均衡来自有人只做两轮,而不是某一项任务被跳过——75 个组合全部有记录。
2.5 两种通道配置:为什么有的文件是 129 条,有的是 127 条
这是本库最容易让人困惑的一处结构细节。全库 315 个 EDF 并不是同一种通道配置:
| 配置 | 文件数 | 信号条数 | 脑电通道构成 | 眼电表示方式 |
|---|---|---|---|---|
| 配置 A | 264 | 129 | 124 条头皮通道 + 4 条单极眼电 + 1 条 EDF 注释 | EEGHEOGRCPz、EEGHEOGLCPz、EEGVEOGUCPz、EEGVEOGLCPz |
| 配置 B | 51 | 127 | 124 条头皮通道 + 2 条双极眼电 + 1 条 EDF 注释 | EEGHEOGLHEOGR、EEGVEOGUVEOGL |
两组配置共享的 124 条头皮通道完全一致,命名都是 EEG<电极名>CPz,顺序也一致。差别只在眼电怎么记:配置 A 记四条单极(右上、左上、上垂直、下垂直),配置 B 记两条双极(左右水平差分、上下垂直差分)。
这对使用者的实际影响有两处。第一,官方使用说明点名要剔除的四个名字(EEGHEOGRCPz 等)只在配置 A 的 264 个文件里存在,在配置 B 的 51 个文件里查不到——如果代码写成"按名字精确剔除这四条",在配置 B 上会静默跳过,眼电伪迹就留在了数据里。稳妥的写法是同时处理两组名字。第二,如果打算把全库拼成一个统一张量,必须先决定眼电通道怎么处理,否则 129 与 127 两种宽度无法直接堆叠。
官方页面还有一句与本处相关的声明:头戴为 128 通道,其中 9 条为眼电与接地用途,实际用于脑区的为 119 个。而落到文件里,EDF 保留了 128 条(或 126 条)脑电通道。两条陈述之间的差额官方没有进一步说明,处理办法是相信文件:按通道名剔除眼电,剩下 124 条头皮通道。
2.6 二十项眼动指标的物理含义
眼动 CSV 的二十列按官方给出的顺序排列。FLS 官方页未逐列标注单位,下表单位栏参考同组 RAS 数据集对同名指标的说明,供读数量级时参考。
| 列 | 指标名 | 含义 | 单位(参考) |
|---|---|---|---|
| 1 | Gaze point X | 注视点在屏幕上的横坐标 | 像素 |
| 2 | Gaze point Y | 注视点在屏幕上的纵坐标 | 像素 |
| 3–5 | Gaze point 3D X/Y/Z | 注视点在三维空间中的位置 | 毫米 |
| 6–8 | Gaze direction left X/Y/Z | 左眼视线方向向量 | 单位向量 |
| 9–11 | Gaze direction right X/Y/Z | 右眼视线方向向量 | 单位向量 |
| 12–14 | Pupil position left X/Y/Z | 左眼瞳孔在眼窝中的三维位置 | 毫米 |
| 15–17 | Pupil position right X/Y/Z | 右眼瞳孔在眼窝中的三维位置 | 毫米 |
| 18 | Pupil diameter left | 左眼瞳孔直径 | 毫米 |
| 19 | Pupil diameter right | 右眼瞳孔直径 | 毫米 |
| 20 | Eye movement type index | 眼动类型:1 注视、2 扫视、0 未识别 | 类别码 |
第 20 列的取值定义值得单独记:官方写明 1: Fixation; 2: Saccade; 0: Unknown。同组的 RAS 数据集在同类指标上还定义了"3: 眼未找到",本库的 FLS 版本没有这一档,只有 0。做跨库拼接时这个码表差异要显式处理。
第 18、19 列的瞳孔直径是本库最有解释力的两项之一:瞳孔直径同时受光照与认知负荷影响,在训练箱这种光照固定的场景里,它的变化更可能反映后者。但要注意,眼镜式眼动仪在头部快速移动时可能丢失瞳孔,丢失时刻在 CSV 里表现为 0 值或第 20 列的 0,需要在特征工程阶段显式处理。
§3 它是谁的数据
3.1 贡献者与机构
两位署名作者分属两个国家。第一位 Somayeh B. Shafiei 来自美国纽约州布法罗的 Roswell Park Comprehensive Cancer Center 智能癌症护理实验室(Intelligent Cancer Care Laboratory, ICCL);第二位 Saeed Shadpour 来自加拿大圭尔夫大学动物生物科学系家畜遗传改良中心。原始论文还有四位合著者,来自伦斯勒理工学院与 Roswell Park。
资助方在致谢里写得很清楚:美国国立生物医学影像与生物工程研究所(NIBIB)R01EB029398,美国国家癌症研究所(NCI)P30CA016056,后者支持了 Roswell Park 的比较肿瘤学共享资源与先进外科应用技术实验室(ATLAS)。数据集的缩写名 NIBIB-RPCCC-FLS 正是由这两家机构名拼成的——NIBIB 加 RPCCC(Roswell Park Comprehensive Cancer Center)加 FLS。
3.2 时间线与版本
| 时间 | 事件 |
|---|---|
| 2020–2021 前后 | 同组 RAS 数据集在官方页写明采集于 2020 年 7 月至 2021 年 11 月;本库采集窗口官方未单独给出 |
| 2022 年 7 月 21 日 | EDF 头结构中的转换日期(该日期为转换日,非采集日) |
| 2023 年 6 月 8 日 | PerformanceScores.csv 最后修改 |
| 2023 年 8 月 22 日 | LICENSE.txt 最后修改 |
| 2023 年 8 月 23 日 | 版本 1.0.0 在 PhysioNet 发布,SHA256SUMS.txt 同日生成 |
| 2023 年 | 原始论文发表于 Surgical Endoscopy 第 37 卷第 11 期 |
| 至今 | 仅一个版本,无修订 |
版本只有 1.0.0,发布说明写的是"initial release of the dataset"。截至核验时,官方页显示的累计浏览量为 278 次。
3.3 采集场景:训练箱上的三项任务
采集场所是 Roswell Park 的 ATLAS 实验室,设备是一台 FLS 腹腔镜训练箱(Pyxus)。受试者站在箱前,双手各持一件器械,通过箱盖上的操作孔看着显示器里的画面操作。头上戴 128 通道脑电帽(AntNeuro),眼上戴 Tobii 眼镜,两套系统同时开始记录。
三项任务的内容与评分口径如下:
| 任务 | 编号 | 操作内容 | 客观项 | 量表与量程 |
|---|---|---|---|---|
| 钉板转移 | 1 | 把六个物体在空中从非利手换到利手,放到对侧钉板上,再原路移回;掉出视野扣分 | 完成时间、器械碰撞次数、掉落次数(录像分析) | GOALS 五维度,5–25 |
| 环形裁剪 | 2 | 一手持 Maryland 分离器牵引纱布,另一手持内镜剪刀沿预画圆圈剪下,偏离圆圈扣分 | 完成时间、器械碰撞次数、误差面积(用 Fiji 分析成品) | GOALS 五维度,5–25 |
| 体内缝合 | 3 | 在 Penrose 引流管上把缝线穿过两个标记点并打两个结闭合切口;偏离标记、闭合不良、线结滑脱扣分 | 完成时间、掉落次数、碰撞次数(录像分析) | OSAT 八维度,8–40 |
GOALS 的五个维度是深度感知、双手灵巧度、效率、组织处理、自主性;OSAT 的八个维度是尊重组织、时间与动作、器械操作、缝合操作、缝合流畅度、步骤知识、整体外观、整体表现。两者都用 1 到 5 的李克特档位,量表总分即各维度之和,因此下限等于维度数、上限等于维度数乘五。
同一项任务被重复最多五次,这是本库能做"学习曲线"研究的全部依据。官方没有说明重复之间的间隔,也没有说明是否提供示范视频或反馈——同组 RAS 数据集明确写了"每项任务前先看教学视频",本库官方页未提这一点。
3.4 数据来源的三个层次
第一个层次是官方页面的声明:受试者数、年龄范围、任务内容、采样率、通道数、评分工具、许可、资助号。这一层最可靠,也最粗。
第二个层次是目录与文件本身:315 个 EDF 头结构、630 行 RECORDS、316 行评分表、51.7 KB 的校验和清单。这一层能给出第一层没有的东西——单条时长、通道配置差异、每个组合的轮次数、文件名的不一致。本文凡涉及这一层的数字都标注了出处。
第三个层次是原始论文:受试者的经验分组、模型方法、显著性检验结果。论文摘要提到从中采集了 25 名受试者做三项 FLS 任务、22 名做两项 RAS 任务,并用带 L1 惩罚的广义线性混合模型建模。摘要提到的经验分组大类是医预科生、住院医师、专科培训医师、主治医师。这部分信息不在数据文件里,要用只能回到论文,且论文摘要未给出每组人数。
§4 它最独特的东西
4.1 双模态同步为什么稀缺
公开数据集里,"手术技能"与"神经生理信号"各有一堆,交集很小。手术技能侧的主流是视频与运动学:胆囊切除视频库、缝合动作库、机器人手术动作库,它们给的是像素与器械轨迹,标注是相位、器械、动作三元组。神经生理侧的主流是脑电与眼动的通用库:癫痫脑电、运动想象脑电、静息态眼动,它们给的是信号,但没有外科任务上下文。
把两者放在一起需要同时具备三件东西:一台可用的手术训练平台、一套可穿戴的多模态采集系统、一批愿意戴满设备做任务的受试者。前两件是钱,第三件是组织能力。这就是为什么"手术技能 + 脑电 + 眼动"这个组合在公开库里屈指可数,而其中还带逐次量表评分的更少——评分需要有人看完每一段操作,是纯人力成本。
本库的稀缺性不在规模,恰恰在"三件东西都齐了"这一件事上。315 组记录在任何深度学习语境下都不算大,但每一组都同时挂着 500 Hz 的 128 通道脑电、50 Hz 的二十项眼动、以及一位考官给出的量表分。这个三元组目前没有其他公开数据集以同等规格提供。
4.2 案例:同一个人五次尝试的分数怎么走
10 号受试者(34 岁,女性,右利手,左利眼)在评分表里留下了一条相当清晰的短程曲线。她在钉板转移上的五次尝试得分依次是 17.5、18.5、19、19.5、19.5,量程 5–25,单调上升到第四次后走平;在环形裁剪上是 15.5、17、17、17、17,第二次之后就进入平台;在体内缝合上是 36.5、34、31、39、39,量程 8–40,第三次出现一次明显回落之后才升到 39。
这一条记录说明了三件事。第一,学习曲线不是单调的:缝合任务第三次比第一次低了 5.5 分,任何假设"轮次越后越好"的模型都会在这类样本上出错。第二,不同任务的饱和速度不同:钉板转移到第四轮还在涨,环形裁剪第二轮就到顶了。第三,量程不同的任务不能直接把分数放在一起比——36.5 分(满分 40)和 17.5 分(满分 25)在数值上差一倍,实际含义完全不同。做跨任务建模时必须先归一化到量程,或者按任务分别建模。
对照 11 号受试者(44 岁,男性,右利手,右利眼):他每项任务只做了两次,钉板转移 9.5 与 14,环形裁剪 15 与 15,体内缝合 32 与 33。两次的样本做不了曲线,只能做"首次—末次"的差值。这就是为什么本库的使用者在做学习曲线研究时,实际上可用的受试者少于 25 名。
4.3 评分的两套尺子
| 维度 | 钉板转移 / 环形裁剪(GOALS) | 体内缝合(OSAT) |
|---|---|---|
| 维度数 | 5 | 8 |
| 档位 | 1–5 | 1–5 |
| 总分下限 | 5 | 8 |
| 总分上限 | 25 | 40 |
| 官方点名的客观项 | 完成时间、碰撞、掉落(前者)/ 完成时间、碰撞、误差面积(后者) | 完成时间、掉落、碰撞 |
| 评分人 | 考官 | 考官 |
两套尺子带来的最实际的麻烦是:本库没有给出归一化后的统一分数,也没有给出各维度的分项分,只有总分和上下限。做跨任务分析时,要么把每个任务单独建模,要么自己按上下限做 min-max 归一化并把这个口径写进方法节。官方没有推荐任何一种口径。
另一个麻烦是评分人的数量与一致性。官方只说"每次尝试后由一位评分员评估",未说明是同一位评分员评完全部,还是多人分工,也未给出评分者间信度。这是一处对结果影响很大但无法从数据里补上的缺口(§7.3)。
4.4 通道层面的边界条件
官方在使用说明里点了两处。第一处是必须剔除的四条眼电通道(§2.3);第二处是六个"部分记录中质量较差"的通道:F8、POz、AF4、AF8、F6、FC3。
这六个通道的位置分布有规律:AF4、AF8、F6、F8 都在右侧前颞—额区,FC3 在左侧中央—额区,POz 在顶枕中线。前颞区正是眼动与咬肌活动伪迹最重的地方,而受试者在做精细手部动作时头颈肌肉持续紧张,这解释了为什么这批通道先出问题。同时这也是本库的一个结构性提醒:戴着眼动眼镜与脑电帽做手部精细操作,肌电伪迹不是偶发而是常态。
处理方式有两条。保守做法是全库统一剔除这六个通道,代价是损失额区与顶枕中线的信息,而这些区域恰恰是注意力与视觉整合研究关心的位置。激进做法是逐文件做质量评估后决定保留与否,代价是不同文件的通道集不再一致,后续拼接要额外处理。官方给的是"部分记录中较差",没有给判定阈值,所以两种做法都要自己承担选择的后果,并在论文里写清。
4.5 边界条件:什么情况下它不再适用
当你需要时刻级对齐时。 CSV 无时间戳,只有 50 Hz 等间隔的行;EDF 有总时长但无绝对起始时刻。两者只能按"同时开始"的假设粗对齐,误差随记录时长累积。做事件相关分析(比如"器械碰撞那一刻的脑电反应")时需要碰撞发生的时刻,而这个时刻库里没有——录像不在此库中。
当你需要经验分组时。 评分表无经验字段,分组只在论文里,且论文摘要未给出每组人数。
当你需要采集时间信息时。 EDF 头里的日期是转换日期,官方明确说明不是采集日期;评分表也没有日期列。任何依赖时间顺序或间隔的分析都无法进行。
当你需要器械轨迹时。 本库没有运动学通道,器械位置、角度、力度一概没有。想做运动学与神经生理的联合建模,必须另找带运动学的库与本库配对,而这两者在受试者与任务上并不匹配。
§5 怎么拿到
5.1 目录结构与下载面
| 路径 | 内容 | 体量 |
|---|---|---|
/files/eeg-eye-gaze-for-fls-tasks/1.0.0/EEG_FLS/ |
315 个 .edf,单文件 7–30 MB 量级 |
文件夹主体 |
/files/eeg-eye-gaze-for-fls-tasks/1.0.0/EYE_FLS/ |
315 个 .csv,单文件 0.4–1.4 MB 量级 |
数百 MB |
/files/eeg-eye-gaze-for-fls-tasks/1.0.0/PerformanceScores.csv |
316 行评分表 | 18.1 KB |
/files/eeg-eye-gaze-for-fls-tasks/1.0.0/RECORDS |
630 行文件名清单 | 13.2 KB |
/files/eeg-eye-gaze-for-fls-tasks/1.0.0/SHA256SUMS.txt |
校验和清单 | 51.7 KB |
/files/eeg-eye-gaze-for-fls-tasks/1.0.0/LICENSE.txt |
许可全文 | 0 B(空文件) |
全库未压缩 7.8 GB,官方 ZIP 2.7 GB。下载有四条路:网页点目录、wget 递归、AWS S3 同步、以及先拿评分表再按需取信号。第四条最省事——评分表只有 18 KB,先把它读进来决定要哪些受试者,再只下那部分 EDF。
5.2 批量下载
#-- 方案一:整库递归下载(约 7.8 GB,磁盘要留够)
wget -r -N -c -np https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/
#-- 方案二:AWS 开放桶,断点续传更稳(无需凭证)
aws s3 sync --no-sign-request \
s3://physionet-open/eeg-eye-gaze-for-fls-tasks/1.0.0/ ./fls
#-- 方案三:只取评分表 + 清单,先做样本规划
curl -sL https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/PerformanceScores.csv -o PerformanceScores.csv
curl -sL https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/RECORDS -o RECORDS
curl -sL https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/SHA256SUMS.txt -o SHA256SUMS.txt
#-- 校验:官方给了 SHA256 清单,下完务必核对
sha256sum -c SHA256SUMS.txt 2>&1 | grep -v ': OK$' | head
最后一行是本库最该跑却最容易漏的一步。脑电 EDF 单个十几兆,网络抖动造成的截断不会报错,只会在读头结构时给出一个奇怪的采样点数。校验和清单 51.7 KB,跑一次的时间远小于排查一次的时间。
还有一处 RECORDS 的坑:它列出的 EEG_FLS/9_1_5.edf 在服务器上并不存在,实际文件名是 EEG_FLS/9_1_51.edf。校验和清单与评分表都写的是后者(评分表对应行为 '9_1_51.edf','9_1_5.csv')。照 RECORDS 逐行下载会在这一个文件上拿到 404,其余 314 个正常。这是全库唯一一处清单与实体不一致。
5.3 读取 EDF 与 CSV
import mne
import pandas as pd
#-- 读脑电:MNE 能直接吃 EDF+C,verbose 关掉避免刷屏
raw = mne.io.read_raw_edf('EEG_FLS/11_2_1.edf', verbose='ERROR')
print(raw.info['nchan'], raw.info['sfreq'], raw.n_times / raw.info['sfreq'])
#-- 输出形如 129 500.0 135.0:129 条信号、500 Hz、135 秒
#-- 剔除官方点名的四条单极眼电 + 配置 B 的两条双极眼电
EOG = ['EEGHEOGRCPz', 'EEGHEOGLCPz', 'EEGVEOGUCPz', 'EEGVEOGLCPz',
'EEGHEOGLHEOGR', 'EEGVEOGUVEOGL']
drop = [c for c in raw.ch_names if c in EOG or c == 'EDF Annotations']
raw.drop_channels(drop)
print(raw.info['nchan']) #-- 配置 A 剩 124,配置 B 剩 124
#-- 读眼动:20 列,无时间戳列,行序即 50 Hz 等间隔
eye = pd.read_csv('EYE_FLS/11_2_1.csv')
print(eye.shape, eye.columns[-1])
#-- 输出形如 (6737, 20) Eye movement type index (1: Fixation; 2: Saccade; 0: Unknown)
MNE 之外,官方自己的推荐路径是 MATLAB:用 GitHub 上的 edfRead 把 EDF 读进 MATLAB,再用 EEGLAB 工具箱做预处理。走 Python 路线时,mne 与 pyedflib 都能读,区别在后续生态——要做独立成分分析去眼电,MNE 的 ICA 实现更顺手。
眼动 CSV 的读取没有任何坑,就是一张普通的表。真正的坑在下一步。
5.4 转成通用的表结构
import numpy as np
import pandas as pd
FS_EYE = 50 #-- 官方声明的眼动采样率
FS_EEG = 500 #-- 官方声明的脑电采样率
def align_pair(edf_path, csv_path):
#-- 眼动行数 / 50 就是眼动覆盖的秒数,用来与 EDF 时长对账
eye = pd.read_csv(csv_path)
sec_eye = len(eye) / FS_EYE
#-- 在此处读 EDF 时长(略),与 sec_eye 比对
return eye, sec_eye
def window_features(eye, win_sec=2.0):
#-- 两秒一窗,把眼动压成窗级特征,避免逐样本建模
w = int(win_sec * FS_EYE)
n = len(eye) // w
out = []
for i in range(n):
seg = eye.iloc[i * w:(i + 1) * w]
typ = seg.iloc[:, -1]
out.append({
'win': i,
'fixation_ratio': float((typ == 1).mean()), #-- 注视占比
'saccade_ratio': float((typ == 2).mean()), #-- 扫视占比
'unknown_ratio': float((typ == 0).mean()), #-- 未识别占比
'pupil_left_mean': float(seg.iloc[:, 17].mean()),
'pupil_right_mean': float(seg.iloc[:, 18].mean()),
})
return pd.DataFrame(out)
这段代码演示的是本库最主流的一条下游路线:不逐样本建模,而是先把眼动压成窗级特征,再与脑电的窗级特征(功率谱、相干)拼接,最后用一个浅层模型去拟合该次尝试的评分。官方在"复用潜力"一节里列的五条用途,几乎都落在这个路数上。
上正式实验前有三处必须改。一是受试者编号要从评分表读进来跟着每一行走,否则后面按受试者划分无从下手。二是窗宽的口径要写进方法节,因为窗宽直接决定样本量与特征的稳定性。三是眼电剔除要同时覆盖两种配置的名字,否则会有 51 个文件静默带着眼电伪迹。
5.5 评分表的对齐与分组
import pandas as pd
from sklearn.model_selection import GroupKFold
df = pd.read_csv('PerformanceScores.csv')
#-- 文件名列带单引号,先剥掉
for c in ['EEG File Name', 'Eye File Name']:
df[c] = df[c].str.strip("'")
print(df.shape) #-- (315, 12)
print(df.groupby('Task ID').size()) #-- 任务 1/2/3 分别 108/107/100
print(df.groupby(['Subject ID', 'Task ID']).size().value_counts())
#-- 每组合的轮次数:5 轮 54 组、3 轮 3 组、2 轮 18 组
#-- 按受试者分组划分,绝不能按文件随机切
gkf = GroupKFold(n_splits=5)
X = df[['Subject ID', 'Task ID', 'Try']]
y = df['Performance']
for tr, te in gkf.split(X, y, groups=df['Subject ID']):
assert set(df['Subject ID'].iloc[tr]).isdisjoint(df['Subject ID'].iloc[te])
print(len(tr), len(te))
GroupKFold 的 groups 参数传 Subject ID 是关键。同一个人的 6 到 15 组记录会被整体分到一侧,测试集里的每一个人都是模型没见过的人。这个划分口径下的成绩会比随机切分低一截,低出来的那部分正是"记住这个人"带来的虚高。
顺带一提,评分表里 Performance 的取值范围是跨任务不可比的:任务 1、2 的可能区间是 5 到 25,任务 3 是 8 到 40。建模时要么按 Task ID 分开训,要么先按 Minimum possible score 与 Maximum Possible score 两列做归一化。
5.6 五个最容易出错的地方
| 位置 | 错误写法 | 后果 | 正确做法 |
|---|---|---|---|
| 眼电剔除 | 只按官方点名的四个名字剔除 | 51 个配置 B 文件静默保留眼电伪迹 | 同时剔除 EEGHEOGLHEOGR 与 EEGVEOGUVEOGL |
| 通道堆叠 | 直接把 315 个 EDF 拼成同宽张量 | 129 与 127 两种宽度无法对齐 | 先统一到 124 条共享头皮通道 |
| 数据集划分 | 按文件随机切分 | 同一人的相邻轮次分到两侧,成绩虚高 | 以 Subject ID 为 groups |
| 分数比较 | 把任务 3 的 36 分与任务 1 的 17 分直接比 | 量程不同,结论无意义 | 按上下限列归一化或分任务建模 |
| 下载清单 | 照 RECORDS 逐行下载 | 9_1_5.edf 报 404 |
以 SHA256SUMS.txt 或评分表为准 |
§6 与库内条目的关系
6.1 与 NIBIB-RPCCC-RAS 的区别:同门不同题
站内已有一个高度相似的词条——rid 1486 的 NIBIB-RPCCC-RAS 多模态数据集。两者出自同一批作者、同一家机构、同一个资助号,连伦理审批编号都是同一个(I-241913),受试者同为 25 名、年龄同为 20–67 岁,采集设备同为 AntNeuro 128 通道脑电帽与 Tobii 眼镜。因此很容易被当成同一批数据的两个版本。它们不是。
| 对比项 | 本库 NIBIB-RPCCC-FLS | rid 1486 NIBIB-RPCCC-RAS |
|---|---|---|
| PhysioNet slug | eeg-eye-gaze-for-fls-tasks | eeg-eye-gaze-data |
| 任务平台 | FLS 腹腔镜训练箱(Pyxus) | da Vinci Skills Simulator 模拟器 |
| 任务性质 | 腹腔镜基本功,徒手双手器械 | 机器人辅助手术,主从操作加脚踏 |
| 任务数量 | 3 项 | 27 项(六个模块) |
| 脑电记录数 | 315 个 .edf |
1636 个 .edf |
| 眼动记录数 | 315 个 .csv |
1559 个 .csv |
| 记录是否配对 | 严格一一配对,315 对 | 不配对,脑电比眼动多 77 个 |
| 评分来源 | 考官按量表打分,人工 | 模拟器自动生成 |
| 评分区间 | GOALS 5–25 / OSAT 8–40 | 0–100 |
| 重复规则 | 每人每任务五次,部分只做两次 | 至少两次,未达 70 分则继续重做 |
| 官方声明未用导联数 | 9 条(眼电与接地) | 4 条(眼电) |
| 发布版本 | 1.0.0 | 1.0.0 |
判定结论:两者是同一研究组的两个独立采集项目,任务平台、任务集合、评分机制、文件规模均不同,不存在包含关系,也不是同一批采集的拆分发布。它们可以互补使用(同一批人既做了腹腔镜训练箱又做了机器人模拟器),但任何一条记录都不跨库共享。
需要提醒的是,两库的受试者编号都是 1 到 25,但编号是否指向同一个人,官方未作说明。做跨库联合分析时不应假设编号对齐。
6.2 关系图谱
把本库摆到"手术技能 × 数据模态"这张图上,位置很清楚:
| 模态 | 站内代表 | 与本库的关系 |
|---|---|---|
| 手术视频 + 动作标注 | CholecT50、HeiChole、PhaKIR | 互补:给视觉与工作流,不给神经生理 |
| 手术视频 + 器械分割 | SAR-RARP50、Hamlyn | 互补:机器人手术场景,无脑电 |
| 手术动作 + 技能评分 | JIGSAWS | 最接近:有技能评分但靠运动学,不靠脑电 |
| 机器人手术 EEG + 眼动 | rid 1486 NIBIB-RPCCC-RAS | 同源不同题,见 §6.1 |
| 通用脑电库 | TUSZ、TUAB、ERP-BCI | 方法论可迁移,无外科上下文 |
| 通用眼动库 | 十二导联心电图眼动库、MIMIC-Eye | 方法论可迁移,无外科上下文 |
| 步态多模态 | 健康年轻人四模态步态库 | 同属"多模态同步"范式,场景不同 |
6.3 分工判据
| 你要做的事 | 该用谁 | 本库的位置 |
|---|---|---|
| 手术视频的动作识别与相位分割 | CholecT50、HeiChole | 不适用,无视频 |
| 器械分割与追踪 | SAR-RARP50、PhaKIR | 不适用 |
| 基于运动学的技能评估 | JIGSAWS | 不适用,无运动学 |
| 机器人手术模拟器上的技能评估 | rid 1486 | 不适用,那是 da Vinci |
| 腹腔镜基本功 + 神经生理 | 无可替代 | 主力 |
| 脑电特征提取方法验证 | 任一通用脑电库 | 辅助,可当跨场景外测 |
| 眼动特征提取方法验证 | 通用眼动库 | 辅助 |
一句话概括分工:本库只负责"腹腔镜训练箱上的三项基本功 + 脑电 + 眼动 + 考官评分"这一格。出了这一格,它立刻不适用,而且不适用得相当干脆。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
先纠正一个常见误判:把 25 人、315 组当成"质量差"。这个规模不是采集能力不足,而是同步多模态采集的现实约束——每人要在训练箱上完成最多十五次尝试,每次都要戴满设备、有人看着评分、有人盯着两台记录软件。能凑到 25 人并把原始信号全量公开,本身就是一个不小的组织成本。评价它时不能用"越大越好"的尺子,而要问:在它能回答的那个问题上,样本够不够。
7.1 五维评分
按常用维度打分,每项 1–5 分,针对"作为手术技能评估研究数据"这个用途:
| 维度 | 分数 | 理由 |
|---|---|---|
| 数据规模 | 2 | 25 人、315 组,训练不足,做特征级研究够用 |
| 标注质量 | 3 | 量表评分有明确工具与量程,但未报告评分者间信度 |
| 任务适配 | 5 | 脑电 + 眼动 + 外科量表评分三元组,公开库里几乎无替代 |
| 文档完整 | 4 | 人群、设备、任务、评分、通道缺陷都写清;采集时间与经验分组缺失 |
| 可获取性 | 4 | 免注册、开放许可、有校验和;但 7.8 GB 对带宽有限者仍不轻 |
合计 18 分(满分 25)。分数结构是"适配性拉满、规模拖后腿",这与 §1.5 的判断一致:它是尺子,不是粮仓。
7.2 评分的两层
第一层是量表本身的结构效度。GOALS 与 OSAT 都是经过验证的成熟工具,维度定义清晰,量程明确,这一点没有疑问。官方还额外给出了客观项——完成时间、碰撞次数、掉落次数、裁剪误差面积——这些是"数出来的"而不是"感觉出来的",为量表分提供了一个可对照的锚。
第二层是评分过程的一致性。官方只说"每次尝试后由一位评分员评估",没有说这位评分员是同一个人还是多人轮换,没有给出评分者间信度,也没有说明评分员是否知道这是第几次尝试(知道的话可能产生期望效应)。这是本库最大的一处未声明的变异来源。做法上的建议是:把评分当作带噪声的标签,而不是金标准;做回归时报告误差,做分类时不要指望高精度。
7.3 已知的、可枚举的偏差
| 偏差 | 表现 | 影响 |
|---|---|---|
| 单人轮次相关 | 同一人同一任务最多五次连续尝试 | 随机切分导致乐观偏差,必须按受试者分组 |
| 单一机构 | 全部来自 Roswell Park 一间实验室 | 设备、光照、考官、指导语都只有一套 |
| 经验分组不可得 | 评分表无经验字段 | 组间比较只能回论文,且论文未给每组人数 |
| 采集时间不可得 | EDF 日期为转换日期,评分表无日期 | 无法做时间顺序、间隔、疲劳累积类分析 |
| 通道配置不一致 | 129 与 127 两种宽度 | 直接堆叠会失败,眼电剔除要覆盖两组名字 |
| 指定通道质量差 | F8、POz、AF4、AF8、F6、FC3 在部分记录中差 | 全库剔除损失额区信息,逐文件判定破坏一致性 |
| 量程不统一 | 任务 1、2 为 5–25,任务 3 为 8–40 | 跨任务直接比较无意义 |
| 清单与实体不一致 | RECORDS 里的 9_1_5.edf 实为 9_1_51.edf |
照 RECORDS 下载会 404 |
| 无视频 | 录像不在库中 | 碰撞与掉落的时刻不可得,做不了事件相关分析 |
| 无运动学 | 无器械轨迹 | 做不了运动学与神经生理的联合建模 |
7.4 外部验证矩阵
本库最直接的一次"外部验证"其实是它自己的论文:作者用这批数据训练了带 L1 惩罚的广义线性混合模型来预测绩效,并用首次尝试的分数加神经特征去拟合学习率,报告了若干组间比较的显著性。这次验证的意义在于证明"脑电与眼动特征里确实含有与绩效相关的信息",但它不是独立验证——同一批人既采集又建模。
| 验证角色 | 做法 | 讲得通的地方 | 风险 |
|---|---|---|---|
| 特征有效性验证 | 用本库做绩效回归 | 量表分是真值标签,特征可直接算 | 原论文已做过,重复验证边际价值低 |
| 跨设备外测 | 拿自己的采集做训练,本库外测 | 平台不同,正好检验泛化 | 本库只有 25 人,成绩波动大 |
| 方法学对照 | 在同一批数据上比较不同特征集 | 数据固定,比较干净 | 结论未必能外推到别的任务平台 |
| 与 RAS 库联合 | 两库合并看"腹腔镜 vs 机器人"的差别 | 同组采集,设备一致 | 受试者编号是否对齐未获官方确认 |
最后一行要特别小心。两库合并看上去很诱人——同一批人、同一套设备、两种手术范式——但官方从未说明编号对应关系。在没有确认之前,合并分析只能停留在"两个独立队列"的层面。
7.5 它为何能持续
它没有更新计划,也没有第二个版本,但短期内不会被替代,原因是它占的那个格子需要同时凑齐三件东西(§4.1)。新增一个同类库的成本,远高于新增一批手术视频或一批通用脑电。只要"手术技能 + 神经生理 + 量表评分"这个三元组仍然稀缺,它就仍然是最容易被引用的那个。
§8 生态位与历史
8.1 历史沿革
本库不是一个长期积累的项目,而是一项具体课题的副产品。资助号 R01EB029398 的题目指向"用于机器人辅助手术技能客观评估的脑动力学与眼动轨迹同步",腹腔镜基本功是这条线上的基础对照——受试者先在训练箱上做徒手腹腔镜,再上机器人模拟器做 27 项任务,两批数据最终各自独立发布。
这种"一个课题产出两个数据集"的模式在 PhysioNet 上不常见。它的好处是两个库的采集规范高度一致,可以互为方法学对照;代价是两个库各自都不大,且共享同一批人的选择偏差。
8.2 与原始论文的关系
原始论文发表于 Surgical Endoscopy 2023 年第 37 卷第 11 期,第 8447–8463 页,DOI 10.1007/s00464-023-10409-y,PMID 37730852。论文摘要写明:脑电与眼动数据来自 25 名做三项 FLS 任务的受试者与 22 名做两项 RAS 任务的受试者;用带 L1 惩罚的广义线性混合模型做绩效评估,用线性模型做学习率评估;经验分组包括医预科生、住院医师、专科培训医师、主治医师。
有几个细节需要注意。论文里的 RAS 部分是 22 人、2 项任务,而 RAS 数据集本身是 25 人、27 项任务——论文只用了其中的一部分。同理,论文报告的 FLS 结论未必覆盖本库全部 315 组记录。把论文的结论直接搬到整个数据集上,是一个需要谨慎的跳跃。
8.3 生态位:方法学靶场
| 角色 | 主力粮仓 | 方法学靶场 |
|---|---|---|
| 典型用法 | 大规模训练、预训练 | 特征有效性验证、跨设备外测、方法学对照 |
| 需要的前提 | 数据量大、标签细 | 模态组合独特、标签口径明确 |
| 代表 | 通用脑电大库、手术视频库 | 本库、rid 1486 |
| 失败模式 | 过拟合、标签噪声累积 | 样本太少导致结论不稳 |
本库坐在右边这一列。把它当粮仓用会立刻遇到规模瓶颈;把它当靶场用,它的价值正好落在"别处做不了"的那一格。
8.4 谁在用它
从公开信息看,使用者集中在三类:做手术技能客观评估的医学工程组(把它当带真值的特征验证集)、做神经工效学与认知负荷的研究组(把它当真实任务场景下的多模态样本)、以及做医学教育的研究组(用它讨论学习曲线的量化方式)。第三类目前最少,但也是官方在"复用潜力"里点名的一条——预测学习率。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一天 | 第一周 | 注意事项 |
|---|---|---|---|
| 算法研究者 | 下评分表,看清十二列与三任务量程 | 建立按受试者分组的基线,先做眼动窗级特征 | 眼电剔除要覆盖两种配置(§2.5) |
| 医学工程研究者 | 跑通一组 EDF + CSV 的读取 | 做 PSD 与相干特征,配眼动特征做绩效回归 | 先决定六个低质量通道怎么处理 |
| 医学教育研究者 | 看清每个组合的轮次数分布 | 用首次尝试分数做基线,拟合后续增量 | 只有部分受试者做满五轮 |
9.2 一条最短的可用流程
#-- 1. 拿评分表与校验清单(不到 100 KB)
curl -sL https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/PerformanceScores.csv -o ps.csv
curl -sL https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/SHA256SUMS.txt -o sums.txt
#-- 2. 只下一个受试者的全部记录,先跑通再放量
mkdir -p sample && cd sample
for f in $(grep -o "EEG_FLS/10_[0-9]*_[0-9]*\.edf" ../sums.txt); do
curl -sL -O "https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/$f"
done
#-- 3. 按 SHA256 清单核对(在 1.0.0 根目录下执行)
cd .. && sha256sum -c sums.txt 2>&1 | grep -c ': OK$'
import pandas as pd
import mne
#-- 4. 评分表清洗 + 归一化口径
df = pd.read_csv('ps.csv')
for c in ['EEG File Name', 'Eye File Name']:
df[c] = df[c].str.strip("'")
df['score_norm'] = ((df['Performance'] - df['Minimum possible score']) /
(df['Maximum Possible score'] - df['Minimum possible score']))
print(df.groupby('Task ID')['score_norm'].describe()[['min', 'max']])
#-- 5. 读一组信号,剔除眼电与注释通道
raw = mne.io.read_raw_edf('sample/10_1_1.edf', verbose='ERROR')
drop = ['EEGHEOGRCPz', 'EEGHEOGLCPz', 'EEGVEOGUCPz', 'EEGVEOGLCPz',
'EEGHEOGLHEOGR', 'EEGVEOGUVEOGL', 'EDF Annotations']
raw.drop_channels([c for c in raw.ch_names if c in drop])
print(raw.info['nchan'], raw.info['sfreq'])
9.3 引用方式
| 引用对象 | 内容 |
|---|---|
| 数据集 | Shafiei, S. B., and Shadpour, S. (2023). Integration of Electroencephalogram and Eye-Gaze Datasets for Performance Evaluation in Fundamentals of Laparoscopic Surgery (FLS) Tasks (version 1.0.0). PhysioNet. https://doi.org/10.13026/kyjw-p786 |
| 原始论文 | Shafiei, S. B., Shadpour, S., Intes, X., Rahul, R., Toussi, M. S., and Shafqat, A. (2023). Surgical Endoscopy 37(11): 8447–8463. DOI 10.1007/s00464-023-10409-y |
| 平台 | PhysioNet 平台综述论文(2026 年发表于 Nature Health),按官方页面的 Cite 按钮生成 |
官方页面明确要求同时引用数据集、原始论文与 PhysioNet 平台三项。论文写作时建议另外注明使用的版本号(1.0.0)与数据集划分方式(按受试者分组)。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实 |
| 数字来源 | 规模、结构、边界三类数字来自 PhysioNet 官方页面与文件目录 |
| 文件核验 | RECORDS、SHA256SUMS.txt、PerformanceScores.csv、315 个 EDF 头结构、两个眼动 CSV 经直接访问确认 |
| 不一致说明 | RECORDS 里的 EEG_FLS/9_1_5.edf 与实体文件名 EEG_FLS/9_1_51.edf 不一致,已在 §5.2 与 §7.3 说明 |
| 论文信息 | 仅参考公开摘要与索引页,未读全文 |
| 未核验内容 | 受试者的经验分组与每组人数、评分者间信度、采集的具体日期与时段、每次尝试间隔、评分员是否为同一人 |
| 图像 | 无配图;封面为生成式提示词,不含真实脑电或眼动波形 |
| 免责 | 本文不构成临床建议;数据使用须遵守 CC BY-NC-SA 4.0 的非商业与署名要求 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「它里面有手术视频」 | 没有任何视频,只有信号与评分 | 官方文件目录只有两个信号文件夹加四个平铺文件 |
| 「三项任务用同一套分数」 | 任务 1、2 是 5–25,任务 3 是 8–40 | 评分表的上下限两列 |
| 「官方说 119 个脑区,所以每个文件 119 条通道」 | 文件里是 128 条(配置 A)或 126 条(配置 B) | EDF 头结构的信号数字段 |
| 「按官方点名的四条眼电名剔除就够了」 | 51 个文件的眼电是两条双极通道,名字不同 | 全库 EDF 头结构对比 |
| 「每个人的每项任务都做了五次」 | 官方写明部分受试者只做两次,实际有 3 轮的组合 | 官方摘要;评分表按组合计数 |
| 「它可以拿来训练大模型」 | 25 人、315 组,几轮就记住 | 评分表受试者编号只有 25 个不同值 |
| 「受试者的经验年资在数据里」 | 评分表十二列里没有经验字段 | 评分表列名清单 |
| 「EDF 头里的日期是采集日期」 | 官方明确说是 EDF 转换日期 | 官方数据描述段 |
| 「它和 rid 1486 是同一批数据」 | 同组不同题:训练箱 3 项 vs 机器人模拟器 27 项 | 两个官方页的任务与规模描述 |
| 「眼动 CSV 有时间戳」 | 二十列里没有时间列,只有 50 Hz 等间隔的行 | CSV 表头 |
| 「按文件随机切分就行」 | 同一人同一任务的多次尝试高度相关 | 评分表的 Subject ID 与 Try 两列 |
FAQ
Q1:三个任务的分数能放在一起比较吗?
不能直接比。钉板转移与环形裁剪用 GOALS 五个维度、量程 5 到 25;体内缝合用 OSAT 八个维度、量程 8 到 40。评分表里专门留了 Minimum possible score 与 Maximum Possible score 两列,就是为了让人能自己做归一化,但官方没有推荐任何一种归一化口径。稳妥的做法是按 Task ID 分开建模,或者做完归一化后把口径明确写进方法节。数值上 36 分(满分 40)和 17 分(满分 25)看似差一倍,归一化后差别要小得多。
Q2:每个 EDF 里的通道数为什么不一样?
全库有两种配置:264 个文件是 129 条信号(128 条脑电加 1 条 EDF 注释通道),51 个文件是 127 条信号(126 条加 1 条注释)。两者共享的 124 条头皮通道完全一致,差别只在眼电的记录方式——前者记四条单极(右上、左上、上垂直、下垂直),后者记两条双极(左右差分、上下差分)。官方使用说明点名要剔除的那四个名字只在第一种配置里存在,所以按名字精确剔除会在第二种配置上静默失效。
Q3:能不能用它做跨中心泛化研究?
不能。全部记录来自美国 Roswell Park 综合癌症中心的同一间实验室(ATLAS),设备、光照、指导语、评分员都只有一套。它能做的是"跨受试者"对照,不是"跨中心"对照。真正需要跨中心结论的研究,必须另找多机构数据集;本库在其中的角色是外部测试集或方法学靶场,而不是泛化证据的来源。
Q4:眼动和脑电怎么对齐?
只能粗对齐。眼动 CSV 没有时间戳列,只有按 50 Hz 等间隔排下来的行;EDF 里也只有总时长与起始时刻,没有绝对时钟。可行做法是假设两者同时开始、同时结束,用"眼动行数 ÷ 50"得到的秒数与 EDF 的时长字段对账,两者在库内是一致的,说明这个假设大致成立。但要做事件相关分析(比如器械碰撞瞬间的脑电反应)就不行了——碰撞发生的时刻不在数据里,录像也不在库里。
Q5:它和 rid 1486 的 NIBIB-RPCCC-RAS 到底什么关系?
同一批作者、同一家机构、同一笔资助、同一个伦理审批编号,受试者同为 25 名、年龄同为 20–67 岁,采集设备也同为 AntNeuro 128 通道脑电帽与 Tobii 眼镜,但它们是两次独立的采集:本库在 FLS 训练箱上做 3 项腹腔镜基本功,评分由考官按 GOALS 与 OSAT 量表给出,共 315 组严格配对的记录;RAS 库在 da Vinci 模拟器上做 27 项任务,评分由模拟器自动生成 0 到 100 分,共 1636 个脑电文件与 1559 个眼动文件且不严格配对。两库的受试者编号都是 1 到 25,但编号是否指向同一个人,官方未作说明,做联合分析时不应假设对齐。
术语表
| 术语 | 解释 |
|---|---|
| FLS | Fundamentals of Laparoscopic Surgery,腹腔镜基本功,美国外科资质认证的训练与考核项目 |
| 钉板转移 | Peg transfer,FLS 第一项任务,把六个物体在空中换手后放到对侧钉板 |
| 环形裁剪 | Pattern cut,FLS 第二项任务,沿预画圆圈剪下纱布 |
| 体内缝合 | Intracorporeal suturing,FLS 第三项任务,在引流管上穿线打结闭合切口 |
| GOALS | Global Operative Assessment of Laparoscopic Skills,腹腔镜技能整体评估,五维度各 1–5 分,总分 5–25 |
| OSAT | Objective Structured Assessment of Technical Skills,客观结构化技术技能评估,八维度各 1–5 分,总分 8–40 |
| 李克特量表 | Likert scale,等距档位评分,本库用 1 到 5 档 |
| 训练箱 | Trainer box,带操作孔与显示器的腹腔镜技能训练装置,本库用 Pyxus 品牌 |
| EDF+ | European Data Format 的扩展版,带注释通道的生物信号存储格式 |
| EDF Annotations | EDF+ 规范要求的注释通道,不是脑电信号,读取时应剔除 |
| 眼电(EOG) | Electrooculogram,记录眼球电位的通道,本库用于伪迹识别,分析时应剔除 |
| 单极 / 双极 | 单极是某点对参考电极的电位,双极是两点之差;本库眼电两种配置各用其一 |
| 参考电极 | 电位测量的基准点,本库通道名后缀提示为 CPz |
| 采样率 | 每秒采集的样本数,本库脑电 500 Hz、眼动 50 Hz |
| 注视 / 扫视 | Fixation / Saccade,眼动的两类基本状态,本库类型码为 1 与 2 |
| 瞳孔直径 | Pupil diameter,同时受光照与认知负荷影响的指标 |
| 运动学 | Kinematics,器械轨迹、速度、力度等运动数据,本库不含 |
| 功率谱密度 | PSD,信号功率在频率上的分布,脑电特征提取的常用起点 |
| 功能连接 | 不同脑区信号之间的统计相关性,常用于构建脑网络 |
| 受试者分组划分 | 同一受试者的全部记录只进训练或只进测试 |
| CC BY-NC-SA | 署名—非商业—相同方式共享的开放许可 |
附录 A:核心数字核对表
| 项 | 值 | 出处 |
|---|---|---|
| 受试者数 | 25 | 官方页面摘要;评分表 Subject ID 去重 |
| 年龄范围 | 20–67 岁 | 官方页面方法段;评分表 Age 列极值 |
| 任务数 | 3 | 官方页面;评分表 Task ID 去重 |
| 脑电文件数 | 315 | 官方页面;RECORDS 与校验和清单 |
| 眼动文件数 | 315 | 官方页面;RECORDS 与校验和清单 |
| 评分表行数 | 315(不含表头) | PerformanceScores.csv |
| 评分表列数 | 12 | PerformanceScores.csv 表头 |
| (受试者 × 任务)组合数 | 75 | 评分表按两列分组计数 |
| 每组合轮次 | 2、3、5 三种,做满五轮的 54 组 | 评分表按组合计数;官方摘要 |
| 任务 1 / 2 / 3 记录数 | 108 / 107 / 100 | 评分表按 Task ID 计数 |
| 任务 1、2 分数量程 | 5–25 | 评分表上下限两列;官方 GOALS 说明 |
| 任务 3 分数量程 | 8–40 | 评分表上下限两列;官方 OSAT 说明 |
| 脑电采样率 | 500 Hz | 官方页面;EDF 头结构 67500 ÷ 135 |
| 眼动采样率 | 50 Hz | 官方页面;CSV 行数 ÷ EDF 时长 |
| 眼动指标数 | 20 | 官方页面;CSV 表头列数 |
| 单条脑电时长 | 59–1048 秒 | 315 个 EDF 头结构时长字段 |
| 脑电总时长 | 约 17.25 小时 | 315 个 EDF 头结构时长字段合计 |
| 通道配置 A | 129 条信号,264 个文件 | EDF 头结构信号数字段 |
| 通道配置 B | 127 条信号,51 个文件 | EDF 头结构信号数字段 |
| 共享头皮通道数 | 124 | 两种配置的通道名集合求交 |
| 官方点名的低质量通道 | F8、POz、AF4、AF8、F6、FC3 | 官方使用说明 |
| 未压缩体积 | 7.8 GB | 官方页面 |
| 官方 ZIP | 2.7 GB | 官方页面 |
| 许可 | CC BY-NC-SA 4.0 | 官方页面许可段 |
| 发布日期 | 2023-08-23 | 官方页面版本区 |
| DOI(v1.0.0) | 10.13026/kyjw-p786 | 官方页面 |
| 伦理审批号 | I-241913 | 官方页面伦理段 |
附录 B:数字的来源分层
第一层:官方页面与官方文件。 受试者数、年龄范围、任务内容、采样率、通道数、评分工具与量程、许可、资助号、发布日期,来自项目主页的摘要、方法、数据描述与使用说明段;文件数、评分表行列数、组合数、轮次分组、单条时长、通道配置,来自 RECORDS、校验和清单、评分表与 315 个 EDF 头结构。
第二层:论文摘要。 经验分组的大类名称、建模方法、若干组间比较的显著性。摘要只能支撑"有人这样做过、得出了这样的结论",不能支撑"每一组有多少人"或"结论覆盖全部记录"。
第三层:未核实。 受试者的经验分组与每组人数、评分者间信度、评分员是否为同一人、采集的具体日期与时段、相邻尝试之间的间隔、每次尝试里器械碰撞与掉落的具体时刻。这些需要下载全量并回溯原始录像或联系作者,超出了本篇的范围;正文中凡涉及的地方都只做定性表述。
附录 C:完整参考文献
| 编号 | 文献 | 链接 | 用途 |
|---|---|---|---|
| 1 | 本数据集官方页 v1.0.0 | https://physionet.org/content/eeg-eye-gaze-for-fls-tasks/1.0.0/ | 全部规模、结构、边界数据的来源 |
| 2 | 本数据集文件目录 | https://physionet.org/files/eeg-eye-gaze-for-fls-tasks/1.0.0/ | RECORDS、评分表、校验和清单、EDF 头结构 |
| 3 | Shafiei 等,Surgical Endoscopy 2023 | https://doi.org/10.1007/s00464-023-10409-y | 经验分组、建模方法、组间比较 |
| 4 | PhysioNet 平台综述(2026,Nature Health) | https://doi.org/10.1038/s44360-026-00096-z | 托管模式与引用规范 |
| 5 | NIBIB-RPCCC-RAS 数据集(对照) | https://physionet.org/content/eeg-eye-gaze-data/1.0.0/ | §6.1 的同源对比 |
| 6 | JIGSAWS 手术技能数据集(对照) | https://www.qianfanghub.com/ai-ready-dataset/jigsaws/283 | §6.3 的分工判据 |
附录 D:任务代码
任务一:按受试者分组的绩效回归骨架
import numpy as np
import pandas as pd
from sklearn.model_selection import GroupKFold
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_absolute_error
df = pd.read_csv('PerformanceScores.csv')
for c in ['EEG File Name', 'Eye File Name']:
df[c] = df[c].str.strip("'")
#-- 分任务建模:三个任务量程不同,不能混在一起
for task in sorted(df['Task ID'].unique()):
sub = df[df['Task ID'] == task].copy()
lo = sub['Minimum possible score'].iloc[0]
hi = sub['Maximum Possible score'].iloc[0]
sub['y'] = (sub['Performance'] - lo) / (hi - lo)
#-- 这里只放结构化特征做演示,真实实验请换成脑电与眼动特征
X = pd.get_dummies(sub[['Try']], drop_first=True).astype(float)
X['age'] = sub['Age (year)'].astype(float)
y = sub['y'].values
gkf = GroupKFold(n_splits=5)
errs = []
for tr, te in gkf.split(X, y, groups=sub['Subject ID']):
m = Ridge(alpha=1.0).fit(X.iloc[tr], y[tr])
errs.append(mean_absolute_error(y[te], m.predict(X.iloc[te])))
print('task', task, 'n', len(sub), 'MAE', round(float(np.mean(errs)), 4))
任务二:眼动窗级特征与脑电时长对账
import pandas as pd
FS_EYE = 50
scores = pd.read_csv('PerformanceScores.csv')
for c in ['EEG File Name', 'Eye File Name']:
scores[c] = scores[c].str.strip("'")
#-- 抽查若干组:眼动行数 / 50 应接近该次脑电的秒数
for i in [0, 100, 200, 300]:
row = scores.iloc[i]
eye = pd.read_csv('EYE_FLS/' + row['Eye File Name'])
print(row['EEG File Name'], 'eye_rows', len(eye),
'eye_sec', round(len(eye) / FS_EYE, 1))
这段代码的用途不是建模,而是对账。如果某组的眼动秒数与 EDF 时长差得离谱,说明这一组的两个文件可能不是同一次尝试,或者其中一个在录制中断过。这类记录在全库里是否存在、有多少,官方没有说明,属于附录 B 的第三层。
编辑说明
本文的核验时间为 2026 年 10 月 28 日。核对方式为直接访问 PhysioNet 项目页与文件目录,逐一确认 RECORDS、SHA256SUMS.txt、PerformanceScores.csv、全部 315 个 EDF 头结构与两个眼动 CSV 的可访问性与内容;论文侧只检索了公开索引页与摘要,未读全文。
核验过程中发现两处官方文件之间的不一致,均在正文里标注:一是 RECORDS 列出的 EEG_FLS/9_1_5.edf 与实体文件名 EEG_FLS/9_1_51.edf 不符(校验和清单与评分表均为后者);二是官方声明"119 个脑区、9 条导联未用"与文件里实际保留 128 条或 126 条脑电通道不符。两处都以文件为准,并保留了官方原始表述。
未覆盖的内容包括:受试者的经验分组与每组人数、评分者间信度、评分员是否为同一人、采集的具体日期与时段、相邻尝试的间隔、器械碰撞与掉落的具体时刻、以及两个同源数据集的受试者编号是否对应。本文按要求只写规模、结构、边界三类数字。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- eeg-eye-gaze-data 共享标签:生理信号 / 脑电信号 / 眼动追踪 / 手术技能评估
- jigsaws 共享标签:手术技能评估 / 医学教育
- eye-tracking-ecg 共享标签:眼动追踪 / 生理信号
- eeg-gaba-anesthesia 共享标签:生理信号 / 脑电信号
- multimodal-gait-dataset 共享标签:多模态 / 同步采集 / 时序信号
- erpbci 共享标签:生理信号 / 脑电信号
- tusz 共享标签:生理信号 / 脑电信号 / 时序信号
- phakir 共享标签:手术技能评估 / 医学教育
- heichole 共享标签:手术技能评估 / 医学教育
- sar-rarp50 共享标签:手术技能评估
- cholect50 共享标签:医学教育
- hamlyn-datasets 共享标签:医学教育
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

