信息速览
把一张十二导联心电图摊在面前,三十秒。这是多数门诊里真实存在的节奏:扫一眼节律条,看下壁导联有没有抬高,再回头核对aVR。熟练的人三十秒够用,生手三十秒只够找到V1。这三十秒里眼睛去了哪里、在哪个导联上停了多久、回头看了几次,肉眼看不见,却正是「视觉专长」这四个字最实在的落点。
卡塔尔多哈的一支团队把这三十秒搬进了实验室。六十三名医学生与心血管从业人员,依次坐在一台十三点三英寸笔记本前,看十张静态心电图,每张限时三十秒。屏幕上没有病人、没有病史、没有可点的按钮,只有图。眼动仪以每秒六十次的频率记下瞳孔位置,事后被切成注视、扫视与回视,再按导联区域汇总成两张表。
需要先说清一件事:这个库的名字里虽然有 ECG,但库里没有一条心电波形。ECG 在这里是刺激物,不是被测量的信号。全库真正被测量的只有目光。这个错位值得在开头就摆明,因为它是绝大多数误用的源头。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 官方全名 | Eye Tracking Dataset for the 12-Lead Electrocardiogram Interpretation of Medical Practitioners and Students |
| 中文通称 | 十二导联心电图判读眼动数据集 |
| 发布平台 | PhysioNet,Open Access |
| 版本与日期 | 1.0.0,2022 年 3 月 16 日发布 |
| DOI | 10.13026/gsr5-8b11 |
| 采集机构 | 哈马德·本·哈利法大学科学与工程学院信息与计算技术学部(多哈) |
| 受试者 | 63 名,十种岗位标签,含医学生、护士、技师、住院医、专科培训医与顾问医师 |
| 判读规模 | 每人 10 份心电图,合计 630 次判读 |
| 刺激材料 | 10 张静态十二导联心电图图片,覆盖正常窦性心律与九种异常 |
| 眼动设备 | Tobii Pro X2-60,60 赫兹,配 iMotions 8.1 |
| 时间限制 | 每份图 30 秒 |
| 兴趣区方案 | 网格版(每图十六至二十五块)与长短导联版(每图两块) |
| 数据文件 | 两张 CSV,各 30 列;网格版 15,372 行,长短版 1,890 行 |
| 体量 | 解压后 30.5 MB,压缩包 25.9 MB |
| 许可 | ODbL 1.0,可商用,须署名并以同许可开放衍生库 |
| 配套论文 | JMIR Medical Education 2021、JMIR Human Factors 2022、IEEE BESC 2021 |
§1 它要解决的具体麻烦
1.1 一个被名字耽误的库
库名把两个词并排放着:eye-tracking 与 ECG。中文语境里最顺的读法是「眼动加心电同步采集」,这也是检索时最容易带上的预期。实际情况相反:心电是画面里的图像,眼动是画面外的记录,两者是刺激与反应的关系,不是两路并行信号。
这个错位不影响数据本身的价值,却决定了它能不能被接进你的流程。心电算法团队打开目录会发现没有 WFDB、没有采样率、没有导联电压,三秒内就会关掉;医学教育团队打开同一目录,看到的是一份难得的、按岗位分层、带限时约束的判读行为记录。
把名字拆开看,三层信息各自成立:eye-tracking 说明测量手段,指的是注视、扫视与回视的汇总指标,不是原始帧也不是录屏;ECG 说明刺激内容,指的是十张静态图片,是画面而不是通道;中间的 interpretation 才是研究主题,指的是限时三十秒的纯看图任务,不带诊断结论也不带对错标签;最后的 practitioners and students 指十种岗位标签下的六十三人,不是清一色的医学生。
1.2 三条常见的错误期待
第一条是期待同步生理记录。库里没有心电、没有皮电、没有瞳孔直径的连续曲线,只有按区域汇总后的注视指标。想研究「看心电图时心率如何变化」,这份数据一行都用不上。
第二条是期待逐例诊断金标准。表里 30 列没有一列记录受试者说了什么、判对还是判错。配套论文报告了各岗位的判读准确率,从顾问医师的九成八到医学生的五成二,但这些数字是论文层面的统计结果,没有回填到数据行里。想复现准确率,得自己重新组织判读并标注。
第三条是期待自然观看行为。任务被限时三十秒,且明确不给病史。这两条约束是设计的一部分,不是缺陷,但它们让数据偏离真实门诊:真实场景里医生会翻病历、会比旧图、会回头问病人。
这三条错位各自对应一类后果:把眼动与心电当成同步信号,生理耦合类研究就无从下手;把标签当成诊断金标准,监督学习就得自建标签;把限时任务当成自由观看,任何外推到门诊的结论都站不住。还有第四种,把汇总当原始帧,结果是想重跑注视切分算法时才发现没有坐标。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 看不同资历的人先看哪个导联 | 每块兴趣区的首次到达时间与注视时长 | 够,且是这份数据最硬的用途 |
| 比较专家与新手的搜索策略 | 注视次数、平均注视时长、回视次数 | 够,按岗位分组即可 |
| 训练一个「会看图」的模型 | 无逐例标签,图也只有十张 | 不够,样本与标签两头都缺 |
| 研究眼动仪算法本身 | 只有汇总值,无原始坐标 | 不够,需另找原始帧数据 |
| 做教学系统的注意力热区设计 | 两种粒度的手工兴趣区与示意图 | 够,可直接借版面切分 |
| 复现论文的准确率数字 | 论文有数字,数据无对应列 | 不够,只能引用不能复算 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 想证明「专家看图更快更准」 | 提供按岗位分层的注视与回视对照 | 先读 §4.4 的案例,确认指标口径 |
| 要给规培生做看图训练 | 提供专家在哪些导联停留久的参照 | 用网格版做导联级注意力模板 |
| 要设计眼动实验但缺范式 | 提供限时、无病史、随机顺序的完整参数 | 照 §3.4 的参数复刻,再扩样本 |
| 做多模态教学分析 | 提供行为侧的一半 | 另配判读结果与考核分数 |
| 只想找心电波形做算法 | 给不了 | 转心电类库,别在此停留 |
1.5 一句话判断
它是一份「看图的动作」的记录,不是「图里的信号」的记录;把它当成视觉专长的行为底稿,它够用且稀缺,把它当成心电数据,它一无所有。
1.6 不适合谁:四条边界
第一条,不适合任何需要心电波形、导联电压或心律标注的任务。库里没有这些,未来版本也不会有,因为采集时根本没有接电极。
第二条,不适合需要大样本做深度学习的任务。六十三人、十张图、六百三十次观察,这个量级适合做行为分析、假设检验与教学对照,不适合训练视觉模型。十张刺激图本身就构成了天花板:模型学到的只会是这十张图的版面。
第三条,不适合需要自然情境的研究。限时三十秒与不给病史这两条硬约束,把任务压成了「纯看图」,任何关于临床决策流程、病史整合、团队协作的问题都问不出来。
第四条,不适合需要个体追踪的研究。每人每图只有一次观察,没有前后测、没有重复测量,个体内的学习效应与疲劳效应都无从估计。
| 边界 | 具体表现 | 替代方向 |
|---|---|---|
| 无生理信号 | 零心电通道 | 心电波形库 |
| 样本量小 | 63 人、10 张图 | 大规模判读日志或仿真数据 |
| 非自然情境 | 限时、无病史 | 真实门诊录屏与访谈 |
| 无重复测量 | 每人每图一次 | 前后测设计自采 |
§2 数据构成与规格
2.1 三十兆的三层目录
解压后的体积是 30.5 MB,压缩包 25.9 MB。体积的大头不是数据表,而是十张心电图图片,其中一张 PNG 单文件就有十二兆,另有一张四点七兆。两张 CSV 加起来只有三兆出头。这个比例说明一件事:这是一份「小表加大图」的数据集,下载瓶颈在图片而不在数据。
目录是三层,顶层四个子目录加三个文件。四个子目录分别放兴趣区示意图、两张数据表、刺激图片与三份说明表;三个顶层文件是许可全文、校验和清单,以及一份图表索引。
几个具体文件能说明体积的分布:网格版表 2,961,092 字节,长短版 309,140 字节,两张加起来不到三兆半;房颤那张刺激图的 PNG 是 12,135,497 字节,高钾图 4,672,710 字节;许可全文 25,815 字节,校验和清单 1,929 字节。图片占了整包体积的八成以上,这也解释了为什么弱网下常见的失败是图片截断而不是表损坏。
2.2 字段与记录的完整字典
两张表共用三十列,第一列是没有列名的行号。其余二十九列可以分五组:身份、刺激与时间、凝视汇总、注视汇总、辅助。
身份组七列。Respondent_Name 是匿名代号,形如 Consultant 1、CCU 2、Cathlab 5,按岗位加序号生成;Group 是同源的岗位标签;Gender 与 Age 来自报名表;Study_name 全场只有一个取值。
| 列名 | 含义 | 取值示例 |
|---|---|---|
| 首列(无名) | 行号 | 0、1、2 |
| Study_name | 研究名 | ECG Study |
| Respondent_Name | 匿名受试者代号 | Consultant 1 |
| Gender | 性别 | MALE、FEMALE |
| Age | 年龄 | 整数;大量以 0 占位 |
| Group | 岗位标签 | Consultant、Fellow、Nurse |
| Type | 观察类型 | Stimulus、Static AOI |
刺激与时间组六列。Label 在整图行里是心电图名称,在区域行里是「区域名加心电图名」;ParentStimulus 是所属心电图全名;Start 与 Duration 以毫秒计。
| 列名 | 含义 | 备注 |
|---|---|---|
| Label | 区域名或图名 | 如 V5-1 NSR |
| Start | 呈现起始时刻(毫秒) | 相对整场实验 |
| Duration | 该次呈现时长(毫秒) | 名义 30000,实际有长短 |
| ParentStimulus | 所属心电图 | 如 Normal sinus rhythm |
| Parent_Stimulus_Start | 所属图起始时刻 | 浮点毫秒 |
| Parent_Stimulus_Duration | 所属图时长 | 浮点毫秒 |
凝视汇总组七列,全部带 G 后缀。Hit_time_G 是首次看到该区域的时刻,Time_spent_G 是在该区域停留的总时长,百分比列把它折算成占整段观察的比例,Respondent_ratio_G 是零一标记,表示这次观察里到底看没看过该区域。
| 列名 | 含义 | 单位 |
|---|---|---|
| Hit_time_G | 首次注视到达时刻 | 毫秒 |
| Time_spent_G | 凝视总时长 | 毫秒 |
| Time_spent_G_Percentage | 凝视时长占比 | 百分比 |
| Respondent_ratio_G | 是否看过该区域 | 0 或 1 |
| Revisit_G_Revisitors | 是否存在回视者 | 0 或 1 |
| Revisit_G_Visitors | 该次是否回视 | 0 或 1 |
| Revisit_G_Revisits | 回视次数 | 计数 |
注视汇总组九列,全部带 F 后缀。与 G 组的区别在于统计对象:G 组算的是「目光落在区域内」的时间,F 组算的是被算法判定为注视的那部分时间。两组并列,等于给了两套口径。
| 列名 | 含义 | 单位 |
|---|---|---|
| TTFF_F | 首次注视潜伏期 | 毫秒 |
| Time_spent_F | 注视总时长 | 毫秒 |
| Time_spent_F_Percentage | 注视时长占比 | 百分比 |
| Revisit_F_Revisitors | 是否存在再注视者 | 0 或 1 |
| Revisit_F_Visitors | 该次是否再注视 | 0 或 1 |
| Revisit_F_Revisits | 再注视次数 | 计数 |
| Fixations_Count | 注视次数 | 计数 |
| First_Fixation_Duration | 首次注视时长 | 毫秒 |
| Average_Fixations_Duration | 平均注视时长 | 毫秒 |
辅助组只剩一列 Mouse_Clicks,记录该区域内的鼠标点击数,是行为混杂因素的对照项。它在两张表里基本全为零,可用于确认没有人试图用鼠标去指图,但不构成有分析价值的变量列。
2.3 一条记录的完整解剖
取网格版中 Consultant 1 判读正常窦性心律的那一段。整图行只有一个,区域行有二十五个。整图行告诉我们这张图在实验开始后约三百零九秒出现,实际停留十三点四秒,而不是满三十秒;区域行告诉我们,这位顾问医师在 V1 导联上停留了一千三百四十九毫秒、注视十六次。
这段记录里有两个容易被忽略的细节。其一,V5-1 区域的 Fixations_Count 是 0、Average_Fixations_Duration 是负一,说明该区域从未被注视,负一是软件的缺失标记,不是真实时长。其二,同一区域内 G 组与 F 组的数值并不相等,差额来自扫视经过但未形成注视的那部分时间。
#-- 网格版中 Consultant 1 判读正常窦性心律的整图行(列有截断)
Study_name,Respondent_Name,Gender,Age,Group,Type,Label,Start,Duration,ParentStimulus
ECG Study,Consultant 1,MALE,0,Consultant,Stimulus,Normal sinus rhythm,308916,13389,Normal sinus rhythm
#-- 同一段观察里 V1 导联那一行
Type,Label,Start,Duration,ParentStimulus,Hit_time_G,Time_spent_G,Time_spent_G_Percentage,Fixations_Count,Average_Fixations_Duration
Static AOI,V1 NSR,308916,13389,Normal sinus rhythm,7375.0,1349.0,10.0,16.0,47.0
| 字段 | 读到的值 | 怎么读 |
|---|---|---|
| 整图起始 | 308,916 毫秒 | 实验进行到五分多钟时出现 |
| 整图时长 | 13,389 毫秒 | 未用满三十秒,提前结束 |
| 该图区域数 | 25 个 | 与官方「24 等分」的口径不同 |
| V1 首次到达 | 7,375 毫秒 | 看图约七秒后才看 V1 |
| V1 凝视时长 | 1,349 毫秒 | 约占整段的十分之一 |
| V1 注视次数 | 16 次 | 平均每次约 47 毫秒 |
2.4 两种兴趣区方案
兴趣区是眼动研究里的量尺:先在刺激图上画出区域,再把注视点归属进去。这个库给了两把尺,粒度差一个数量级。
网格版按导联版面切块。切法不是均匀二十四宫格,而是贴着导联走:胸前导联各占一块或数块,肢体导联同样处理,底部三条节律条各占一块,另有一个信息区。不同心电图的版面不同,切出来的块数也不同,从十六块到二十五块不等。全库合计出现二百三十三个不同的区域名。
块数的分布并不齐整:正常窦性心律、心房扑动、室性心动过速、心室起搏心律与左束支传导阻滞五张各二十五块,版面最规整;沃尔夫-帕金森-怀特与 ST 段抬高型心梗各二十四块;完全性房室传导阻滞二十二块,另有三行 copy 副本;高钾血症二十块;心房颤动十六块,是块数最少的一张。差别来自版面的排版疏密,不是标注质量的差别,但跨图比较前必须先做名称对齐。
长短导联版只切两块,命名就叫 Long 与 Short。第一块是十二个导联组成的上半区,横轴每导联约二点五秒;第二块是底部三条节律条,横轴共十秒。这个切法直接对应临床读图的两段式习惯:先看节律条定节律,再逐导联找形态异常。
2.5 与同类资源的字段差异
同样是眼动数据,字段设计的差别往往比样本量更能决定它能不能用。这个库的核心选择是「只发汇总、不发原始帧」,因此没有坐标、没有瞳孔直径、没有逐帧时间戳。原始帧导出里常见的这三样,在这里一概缺席;反过来,区域级汇总它直接给了两套口径,而原始帧数据要自己算。判读结论两边都没有,刺激原图它倒是把十张都放了出来。
2.6 十张图与它们的诊断
十张刺激图覆盖一个正常节律与九种异常。文件按诊断命名,扩展名混用 PNG 与 JPG,其中房颤那张是十二兆的 PNG,压缩率低,适合投影但不适合批量读入。
| 文件 | 诊断 | 中文 |
|---|---|---|
| Normal_Sinus_Rhythm.jpg | 正常窦性心律 | 正常窦性心律 |
| Atrial_Fibrillation.png | 心房颤动 | 心房颤动 |
| Atrial_Flutter.jpg | 心房扑动 | 心房扑动 |
| Complete_Heart_Block.jpg | 完全性心脏传导阻滞 | 三度房室传导阻滞 |
| Hyperkalemia.jpg | 高钾血症 | 高钾血症 |
| Left_Bundle_Branch_Block.jpg | 左束支传导阻滞 | 左束支传导阻滞 |
| STEMI.png | ST 段抬高型心肌梗死 | ST 段抬高型心梗 |
| Ventricular_Paced_Rhythm.jpg | 心室起搏心律 | 起搏心律 |
| Ventricular_Tachycardia.jpg | 室性心动过速 | 室速 |
| Wolf_Parkinson_White_Syndrome.jpg | 沃尔夫-帕金森-怀特综合征 | 预激综合征 |
这十张图不是随机抽的。正常图作基线,房颤与房扑考节律识别,传导阻滞考 QRS 形态,心梗考 ST 段,高钾考 T 波与 QRS 增宽,起搏与预激考特殊形态。九种异常覆盖了「一眼能看出」和「要逐导联核对」两类难度,这也是后续能把岗位差异拉开的前提。
§3 它是谁的数据:多哈的一间眼动实验室
3.1 四位作者、三所机构
署名四人,机构三处。第一作者 Mohammed Tahri Sqalli 与第二作者 Dena Al-Thani 同属哈马德·本·哈利法大学科学与工程学院的信息与计算技术学部,前者负责实验设计与数据处理,后者偏人机交互方向;第三作者 Mohamed Elshazly 在克利夫兰诊所,负责心血管临床;第四作者 Mohammed Al-Hijji 在哈马德医疗集团的心脏医院,做介入心脏病学。这个组合解释了数据的两面:技术侧负责眼动方法与数据处理,临床侧负责心电图选材与岗位定义。
机构分布也解释了样本为何集中在多哈:受试者来自卡塔尔的医疗机构与医学院,岗位标签里的 CCU、Cathlab 都是本地医院的实际科室。
3.2 配套论文三篇
数据背后有三篇论文。第一篇只分析医学生群体,发在 JMIR Medical Education;第二篇覆盖全部岗位,发在 JMIR Human Factors,也是官方指定的配套引用;第三篇是会议综述,发在 IEEE BESC。
| 论文 | 载体 | 覆盖人群 |
|---|---|---|
| Interpretation of a 12-Lead Electrocardiogram by Medical Students | JMIR Medical Education,2021 | 仅医学生 |
| Understanding Cardiology Practitioners’ Interpretations of Electrocardiograms | JMIR Human Factors,2022 | 全部岗位 |
| The Journey Towards an Accurate Electrocardiogram Interpretation | IEEE BESC,2021 | 综述 |
三篇共用一个实验,但分析口径不同。这意味着引用时不能只引数据 DOI:官方明确要求同时引数据与技术论文,因为字段含义、兴趣区画法与统计口径都写在那篇论文里,而不在数据说明页。
3.3 时间线
时间线可以按五个节点排:2020 年伦理批件下达,批号 QBRI-IRB-2020-01-009;2021 年实验执行、论文陆续发表;2021 年 12 月数据文件归档,目录时间戳集中在 12 月 12 日;2022 年 1 月图表索引与说明表定稿;2022 年 3 月 16 日 PhysioNet 发布 1.0.0 版。
从批件到发布约两年,其中大部分时间花在论文而不是数据整理上。这也是为什么数据说明页的结构更像论文的方法节,而不是工程文档。
3.4 采集现场:Tobii Pro X2-60 与 iMotions
设备是一台屏幕式眼动仪 Tobii Pro X2-60,采样率六十赫兹,官方标注正负一赫兹。这个采样率对注视分析够用,对微扫视分析偏粗。软件是 iMotions 8.1,负责刺激呈现、同步与指标导出。
| 参数 | 取值 | 影响 |
|---|---|---|
| 眼动仪 | Tobii Pro X2-60 | 屏幕式,非头戴 |
| 采样率 | 60 赫兹,正负 1 赫兹 | 微扫视分析偏粗 |
| 软件 | iMotions 8.1 | 指标定义随软件版本 |
| 注视算法 | I-VT 速度阈值 | 参数需照抄才能复现 |
| 窗口长度 | 20 毫秒 | 短于常见默认值 |
| 速度阈值 | 每秒 30 度 | 偏宽松 |
| 间隙填补 | 关闭 | 眨眼造成的数据缺口不插值 |
| 降噪 | 关闭 | 保留抖动 |
| 短注视丢弃 | 关闭 | 极短注视仍在表内 |
| 相邻注视合并 | 关闭 | 注视计数偏多 |
后四项全关是个重要选择。关掉填补与降噪,等于把原始判定结果直接交出来,好处是可追溯,坏处是指标里混入了眨眼与抖动造成的碎片。也正因为全关,注视次数会系统性高于开了合并与丢弃的流程,跨数据集比较时必须先对齐这组开关。
校准方面,官方写明逐人重校,校准标准差不超过零点一九英寸,屏幕是十三点三英寸笔记本。这个精度对导联级兴趣区足够,因为一块导联区在屏幕上通常有几十像素宽。
3.5 伦理与知情同意
伦理批件来自哈马德·本·哈利法大学卡塔尔生物医学研究所的伦理委员会,批号 QBRI-IRB-2020-01-009,批件在实验开始前下达。全部受试者签署书面知情同意。数据发布前做了姓名替换,代号采用岗位加序号。
去标识的方式值得停一下看。六十三人分布在十种岗位里,某些岗位只有一两个人,例如住院医只有一名、普通内科医生只有两名。在这种粒度下,「Consultant 3」对本院同事并不算匿名。使用者若要在论文里做岗位级引用,应避免同时披露机构与岗位人数。
3.6 三个口径:六类、五类、十类
同一个岗位变量,官方文本里出现了三种数法。摘要写六类:医学生、护士、技师、住院医、专科培训医、顾问医师。方法节写五类,把住院医并入专科培训医一类。字段说明表写五类,列的是顾问、专科培训医、技师、护士、医学生。而数据表与人口学表实际给出十种标签。
四个出处并列,差额的构成官方没有说明。可以做一种合理推断:摘要按六种身份写,方法节把住院医并进专科培训医,字段说明表进一步把医学生合并、把护士按大类算,而数据表保留了招募时的全部十种岗位。
十种标签的写法是:Med 1 与 Med 2 区分初级与高年级医学生,Nurse、CCU Nurse、Cathlab Nurse 区分普通护士与两个心内科护理岗位,General Doctor 指非心血管专科的医生,其余四种与上面一致。做分析时想合并成五类或六类都可以,但必须自己写映射,数据表不会代劳。
§4 它最独特的东西:把「看图」拆成可数的动作
4.1 两套语义:凝视与注视
同一行里有两组指标,G 组与 F 组。初学者最容易把它们当成重复列,其实两组的统计对象不同。G 组统计「目光落在区域内」的全部时间,包含扫视穿过该区域的那些毫秒;F 组只统计被算法判为注视的片段,要求眼球速度低于每秒三十度并持续超过二十毫秒。
| 指标族 | 统计对象 | 典型用途 |
|---|---|---|
| G 组(凝视) | 目光进入区域的全部时间 | 区域是否被扫到、覆盖广度 |
| F 组(注视) | 速度低于阈值的停留 | 信息加工深度 |
| 差值 | 扫视穿过的部分 | 粗略扫视与真正停留的分界 |
这个差值有实际意义。一个导联区若 G 组时长高而 F 组时长低,说明目光从上面掠过但没有停;若两组都高,说明确实在读。换成四分格更好记:G 高 F 高是深度阅读,G 高 F 低是扫视掠过,G 低 F 高少见、多为极短而密集的注视,G 低 F 低就是没看。对「专家是否逐导联核对」这类问题,比值比绝对值更能说明问题。
4.2 网格化兴趣区的命名法
区域名不是编号,而是「导联名加序号加图名」。例如 V5-1 NSR 指正常窦性心律那张图上 V5 导联的第一块;II-3 AFib 指房颤那张图上 II 导联的第三块。拆开看是四段信息:导联名(V5、II、aVR 之一)、序号(条带内的第几段)、图名后缀(NSR、AFib 等)、以及少数不带序号的整段形式(V1、aVF)。另有一个特殊名 Information,指版面角落的信息区,不属于任何导联。
不同图的命名并不完全统一:有的图导联被切成四段,有的只切两段,有的不切。这不是错误,而是因为十张图的版面排版并不一致,作者是逐图手绘的兴趣区。代价是跨图比较前必须先做名称对齐。
4.3 长短导联版:临床读图的两段式
长短版的切法更贴近临床习惯。上半区是十二个导联,横轴每导联约二点五秒;下半区是三条节律条,横轴共十秒。前者看形态,后者看节律,正好对应「先扫节律条再逐导联」的教科书顺序。两个区块的名字就是 Long 与 Short,一个指导联区、一个指节律条区,表里没有第三种取值。
这个版本的行数只有网格版的八分之一,却保留了「先看哪一块」这个最粗的决策。如果你的研究问题只是「专家是不是先看节律条」,用长短版就够,不必碰网格版。
4.4 案例:Consultant 1 在 V1 上停留的一点三秒
把一个人、一张图、一个区域拉出来看,比读十张汇总表更能理解这份数据的质感。Consultant 1 是九名顾问医师之一,男性,判读正常窦性心律那张图时只用了十三点四秒,比限时短了一半以上。
在这十三点四秒里,他的目光先落在信息区与几个肢体导联,约七点四秒时才第一次进入 V1,随后在 V1 上停了十六次注视、累计一千三百四十九毫秒,占整段观察的十分之一。同一张图上,V5 的第一块只被扫过十七毫秒,注视次数为零。
| 时刻(毫秒) | 动作 | 读数 |
|---|---|---|
| 0 | 图出现 | 起始 |
| 约 4875 | 首次进入 V1 上段 | 短停 |
| 约 6625 | 进入底部节律条 | 停留 433 毫秒 |
| 约 7375 | 正式进入 V1 | 后续累计 1349 毫秒 |
| 约 13375 | 扫过 V5 第一块 | 仅 17 毫秒,无注视 |
| 13389 | 结束 | 提前交卷 |
这段轨迹与论文的结论方向一致:资历高的判读人不必逐块扫,靠形态识别直接锁定关键导联。但要强调,单条记录只能用来理解字段,不能用来证明结论;结论要靠六十三人的分组比较。四项读数可以对照着记:整段时长 13,389 毫秒,只到限时 30,000 毫秒的四成半;V1 注视十六次,是这张图上单区域最多;V1 平均注视四十七毫秒,接近阈值下限;V5 第一块注视次数为零,扫过未停。
§4.4 的案例还暴露了一个使用细节:整段时长并不等于三万毫秒。有人提前结束,有人接近用满,因此凡是以时长为分母的占比指标,分母都随行而变。想比较「在 V1 上花了多少比例的时间」,用表里的百分比列即可,它会自动按该行的实际时长折算。
4.5 边界条件:什么时候这套指标会失真
第一,采样率六十赫兹意味着每十六点七毫秒一个点,短于这个尺度的注视无法分辨。六十毫秒以下的注视在这种采样率下只剩三四个点,判定不稳。
第二,间隙填补关闭意味着眨眼期间的数据是缺口。缺口落在某个导联区上,会让该区域的凝视时长系统性偏低。
第三,兴趣区是手绘的,边界位置带主观性。同一条波形若一半落在两块区域内,注视会被切开,导致两块各记一半。
| 边界 | 机制 | 后果 |
|---|---|---|
| 60 赫兹采样 | 时间分辨率 16.7 毫秒 | 极短注视判不稳 |
| 填补关闭 | 眨眼缺口不插值 | 时长偏低 |
| 手绘兴趣区 | 边界主观 | 跨图块数不一致 |
| 单次观察 | 无重复测量 | 个体内波动不可估 |
| 限时 30 秒 | 任务被压缩 | 策略无法充分展开 |
§5 怎么拿到:从 curl 到可分析表
5.1 下载面:四个入口
官方给了三条下载路径:网页逐文件、整包 ZIP、以及无需账号的 S3 同步。对脚本化流程,S3 最稳;对只想看两张表的人,直接抓两个 CSV 就够,总共三兆出头。
| 入口 | 地址形态 | 适用 |
|---|---|---|
| 项目页 | physionet.org/content/eye-tracking-ecg/1.0.0/ | 阅读说明与引用 |
| 文件树 | physionet.org/files/eye-tracking-ecg/1.0.0/ | 逐文件下载 |
| 整包 ZIP | 项目页下载按钮,25.9 MB | 一次性拿全 |
| S3 同步 | s3://physionet-open/eye-tracking-ecg/1.0.0/ | 脚本批量 |
| wget 递归 | 官方给出的 wget 命令 | 保留目录结构 |
#-- 只取两张表与许可,约 3 MB,几秒完成
BASE=https://physionet.org/files/eye-tracking-ecg/1.0.0
mkdir -p eye-tracking-ecg/Datasets
curl -sSL -o eye-tracking-ecg/Datasets/Grid_Anonymized.csv "$BASE/Datasets/Grid_Anonymized.csv"
curl -sSL -o eye-tracking-ecg/Datasets/Long_Short_Anonymized.csv "$BASE/Datasets/Long_Short_Anonymized.csv"
curl -sSL -o eye-tracking-ecg/LICENSE.txt "$BASE/LICENSE.txt"
ls -la eye-tracking-ecg/Datasets
5.2 校验与目录复原
官方提供 SHA256SUMS.txt,逐文件列出校验和。整包下载后先跑一次校验,能避免图片在传输中损坏却无人察觉。图片总量约二十六兆,其中一张十二兆的 PNG 最容易在弱网下截断。
#-- 全量同步后校验,图片损坏会在这里暴露
aws s3 sync --no-sign-request s3://physionet-open/eye-tracking-ecg/1.0.0/ eye-tracking-ecg/
cd eye-tracking-ecg
sha256sum -c SHA256SUMS.txt
#-- 期望四个子目录、三个顶层文本与 PDF 文件
find . -maxdepth 2 -type d | sort
| 校验项 | 期望 | 失败含义 |
|---|---|---|
| CSV 行数 | 网格版 15373 行含表头 | 下载截断 |
| CSV 列数 | 30 | 版本不符 |
| 图片数 | 10 | 目录不全 |
| SHA256 | 与清单一致 | 文件损坏 |
5.3 读表:先认清三件小事
读进内存后有三件事要先处理:第一列没有列名,pandas 会把它命名为 Unnamed: 0;Age 列有大量 0,不能当成真实年龄;Respondent_Name 带尾随空格,按名字分组前要去空格。
#-- 读表并做第一步体检
import pandas as pd
path = "eye-tracking-ecg/Datasets/Grid_Anonymized.csv"
df = pd.read_csv(path)
print(df.shape) #-- 行数与列数
print(df["Type"].value_counts()) #-- 整图行与区域行各多少
print(df["Respondent_Name"].nunique())#-- 受试者数,应为 63
print(df["Age"].unique()) #-- 0 是占位,不是年龄
df["Respondent_Name"] = df["Respondent_Name"].str.strip()
| 检查 | 期望结果 | 说明 |
|---|---|---|
| 形状 | 15372 行 × 30 列 | 不含表头 |
| Type 取值 | Stimulus 与 Static AOI | 两类行含义不同 |
| 受试者数 | 63 | 与官方一致 |
| Age 取值 | 含 0 | 0 为缺失占位 |
5.4 从长表到「人 × 区域」矩阵
区域行是长表,一行一个区域。做组间比较前通常要转成宽表,或者直接按受试者与区域聚合。转宽表时注意:Type 为 Stimulus 的行没有区域,必须先过滤,否则会多出一列空区域。
#-- 只留区域行,按受试者与区域透视注视时长
aoi = df[df["Type"] == "Static AOI"].copy()
wide = aoi.pivot_table(
index="Respondent_Name",
columns="Label",
values="Time_spent_G",
aggfunc="sum",
)
print(wide.shape)
四个处理步骤每一步都可能出错:过滤 Stimulus 是为了去掉没有区域的整图行,不过滤会多出空列;去空格是为了统一代号,否则同一个人会被拆成两组;透视是为了得到人与区域的矩阵,区域名不统一会让列错位;补缺是为了区分「没看」与「零」,这两者在眼动数据里含义完全不同。
5.5 划分:按人切,不按行切
六百三十行整图数据来自六十三个人,每人十行。若随机按行切分训练与测试,同一个人的十行会分散到两侧,模型学到的是这个人的眼动指纹,测试分数会虚高。正确做法是按 Respondent_Name 分组切分,或做留一受试者交叉验证。
#-- 按受试者分组切分,避免同一人跨两侧
from sklearn.model_selection import GroupKFold
groups = df.loc[df["Type"] == "Stimulus", "Respondent_Name"]
print(groups.nunique()) #-- 63
gkf = GroupKFold(n_splits=5)
for train_idx, test_idx in gkf.split(X=groups, groups=groups):
break
四种切法的泄漏风险从高到低排:按行随机最危险,同一人跨两侧;按人分组可以接受;留一受试者在六十三人的规模上最稳;按岗位分层切分则在组间比较时才有意义,前提是每个岗位的人数足够,而这里有四个岗位不足五人,分层后某些折会空。
5.6 六个容易踩的坑
第一个坑是把 Stimulus 行与 Static AOI 行混在一起求均值。整图行的时长是三万毫秒量级,区域行是几百毫秒量级,混算会得到无意义的数。
第二个坑是把 Revisit_F_Revisits 当成布尔值。字段说明表在这一列的取值说明上写得含糊,实际数据里它是计数。
第三个坑是把 Age 的 0 当真。人口学数字应以官方表 1 为准,表里给的是年龄段人数。
第四个坑是忽略 copy 副本。完全性房室传导阻滞那张图有三行标签带 copy 后缀,同一区域被导出多次,不去重会重复计数。
第五个坑是把长短版与网格版拼接。两者行数差一个数量级,拼在一起会让长短版的区域被重复计权。
第六个坑是把标签当诊断金标准。Label 里的 NSR、AFib 是刺激图的名字,不是受试者的判断。
#-- 去重与清洗:剥掉 copy 后缀,再按人去空格
import re
aoi["Label_clean"] = aoi["Label"].str.replace(r"(\s+copy)+$", "", regex=True)
print(aoi["Label_clean"].nunique())
aoi = aoi.drop_duplicates(subset=["Respondent_Name", "Label_clean", "ParentStimulus"])
print(aoi.shape)
| 坑 | 表现 | 处理 |
|---|---|---|
| 混算两类行 | 均值被整图行拉高 | 先按 Type 分流 |
| 把计数当布尔 | 出现大于 1 的值 | 按计数解读 |
| Age 的 0 | 年龄集中在 0 | 改用官方表 1 |
| copy 副本 | 同区重复三行 | 剥后缀后去重 |
| 拼接两版 | 权重失衡 | 分开分析 |
| 标签当金标准 | 误当诊断标签 | 只作刺激标识 |
5.7 许可:ODbL 意味着什么
许可是开放数据库许可 1.0,不是常见的知识共享署名。两者的差别在于对数据库本身的约束:ODbL 要求衍生数据库以同一许可开放,而不仅是署名。
| 事项 | ODbL 1.0 下的要求 |
|---|---|
| 商用 | 允许 |
| 再分发 | 允许,须保留许可与署名 |
| 衍生数据库 | 须以 ODbL 或兼容许可开放 |
| 成果发表 | 须引用数据 DOI 与配套论文 |
| 单独使用其中图片 | 图片随库授权,仍受同一许可约束 |
对多数研究团队,这意味着可以直接用、可以发论文、可以把处理后的表随论文公开,但不能把加工后的版本改成闭源商业产品。若产品化,需先与权利人确认。
§6 与库内条目的关系
6.1 关系图谱
库内已有三条眼动相关记录,刺激物各不相同:一条是胸片定位,一条是多模态整合,一条是手术模拟器。本库是唯一以心电图为刺激的。
| 库内记录 | 刺激物 | 与本库的关系 |
|---|---|---|
| REFLACX 胸片眼动 | 胸部 X 线片 | 同为影像判读眼动,刺激模态不同 |
| MIMIC-Eye 多模态整合 | 多源临床数据 | 上游整合,本库可作行为侧补充 |
| 手术模拟器脑电眼动 | 模拟手术场景 | 同为技能评估,任务域不同 |
| 本库 | 十二导联心电图 | 心电图判读的行为底稿 |
6.2 检索路径
在站内找同类资源,可按三条线索走:按刺激模态找影像判读类,按测量手段找眼动类,按应用找医学教育类。
| 线索 | 检索词 | 命中方向 |
|---|---|---|
| 刺激模态 | 心电图、十二导联 | 心电类数据集 |
| 测量手段 | 眼动、注视、兴趣区 | 眼动类记录 |
| 应用场景 | 医学教育、视觉专长 | 教学与考核类 |
| 岗位分层 | 住院医、专科培训医 | 人力与培训类 |
6.3 三组对照
第一组对照刺激物。心电图是线条图,胸片是灰度图,两者的注视模式不可直接比较:前者靠局部波形,后者靠整体轮廓。
| 维度 | 心电图 | 胸片 |
|---|---|---|
| 视觉元素 | 线条与网格 | 灰度块 |
| 判读方式 | 逐导联扫查 | 整体扫视加局部放大 |
| 兴趣区 | 导联块 | 病灶框 |
第二组对照标签形态。本库的标签是区域与图名,不含病灶位置,也不含判读结论;带定位标签的影像库则相反,区域标签多为病灶框,诊断标签常有,判读结论视库而定。两者能对齐的只有区域这一层。
第三组对照测量深度。本库只发汇总,不发原始帧,因此不能重跑算法:时间分辨率是汇总级,重算不可行,体积只有三十兆;原始帧类数据逐帧保存,可以重算,体积常见数百兆到数吉。这个差别决定了「二次分析」的含义在两类数据里完全不同。
6.4 站外参照
官方在说明页里点名了一条外部参照:曼彻斯特大学 Davies 等人的心电图判读眼动工作,代码在其实验室的 GitHub 仓库,用的心电图不同但异常类别相近。这条参照的价值在于方法复刻:想看同一批异常在另一套范式下的结果,可以从那里取。两者的差别在刺激图与范式,不在异常分类;本库配套的三篇论文则是同一实验的不同分析面,差别在人群覆盖与分析角度。
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
评估这份数据前,需要先校正一个默认预期:它不是「一份可用于训练的数据」,而是「一份可用于观察的记录」。多数数据集的质量维度围绕完整性、标注一致性与规模展开,而这份数据的价值集中在另一处:它把「资历」这个难以量化的变量,变成了可分组、可对照的岗位标签,并给每组配了同一套刺激与同一套限时。
用错位的标准去评它,会得出「样本太小、标签太少、无法训练」的结论,这个结论本身没错,但对判断没有帮助。正确的问法是:在六十三人这个量级上,它能支持什么样的推断,不能支持什么样的推断。
7.1 五维评分
按 DAIMS 五维打分,满分五分。评分只针对「作为行为研究底稿」这一定位,不针对「作为机器学习数据集」的定位。
| 维度 | 分数 | 依据 |
|---|---|---|
| 文档完备性 | 4 | 三份说明表加方法节,字段逐列有定义;岗位类别数前后不一扣一分 |
| 采集规范性 | 4 | 设备、算法、阈值、校准全部写明;采样率偏低扣一分 |
| 完整性与一致性 | 3 | 两张表列结构一致;Age 占位、copy 副本、块数不统一各扣分 |
| 可获取性 | 5 | 开放访问、三条下载路径、附校验和 |
| 可持续性 | 4 | 有 DOI 与版本号、挂在长期平台;仅一版,无更新计划说明 |
五个维度里,可获取性满分是实至名归:无需注册、无需申请、无需签署数据使用协议,这一点在临床行为数据里并不常见。完整性的三分主要不是数据缺失,而是一致性代价:同一变量在不同文档里有不同数法,使用者必须自己裁决。逐项看强弱也很清楚:文档的强项是字段逐列定义、弱项是类别数三套口径;采集的强项是参数齐全可复刻、弱项是六十赫兹偏粗;一致性的强项是两表同构、弱项是块数与命名不齐;获取只有强项,没有弱项;可持续的强项是 DOI 稳定,弱项是只有一版。
7.2 标注的两层:区域标签与岗位标签
这份数据的「标注」不是疾病标注,而是两层结构标注。第一层是区域标签,由作者手绘兴趣区产生,决定每个注视点归到哪一块;第二层是岗位标签,由招募时的身份决定,决定每个受试者归到哪一组。
两层标注的可靠性不同。岗位标签是自报加核实,几乎无误差;区域标签是手绘,边界带主观性,且不同图的块数不一致。做组间比较时,真正影响结论的是第二层,因为第一层的误差在组间是随机的,会被平均掉。第三层是图名标签,选材时就已确定,可靠性同样高,用来界定刺激的分类基准。回到 §4.4 的案例:那位顾问医师在 V1 上的十六次注视之所以能比较,靠的是区域标签把目光归到了同一块;而他属于「顾问」这一组,靠的是岗位标签。两层各司其职。
7.3 已知的、可枚举的偏差
第一,选择偏差。受试者来自同一座城市的两三家机构,全部是志愿者。愿意坐下看三十秒心电图的人,本身就对这件事有兴趣。
第二,任务偏差。限时三十秒且不给病史,把判读压缩成纯视觉任务。真实判读里,病史决定了先看哪个导联,这里没有。
第三,设备偏差。屏幕式眼动仪要求头部相对固定,十三点三英寸屏幕限制了图的可视尺寸。真实场景里医生可能看大屏或纸质图。
第四,顺序偏差已被设计消解:十张图以随机顺序呈现,Parent_Stimulus_Start 的取值跨度从九秒到六百七十六秒,说明顺序确实被打乱。这一点是加分项。
| 偏差 | 来源 | 可否校正 |
|---|---|---|
| 选择偏差 | 单城市志愿者 | 不可,只能声明 |
| 任务偏差 | 限时无病史 | 不可,属设计 |
| 设备偏差 | 屏幕式眼动仪 | 部分,可做敏感性分析 |
| 顺序偏差 | 随机呈现 | 已被设计消解 |
| 块数不一致 | 手绘兴趣区 | 可,做名称对齐 |
7.4 外部验证矩阵
判断一份行为数据是否可信,可以看它在几个方向上被外部证据支撑。这个库的支撑主要来自三篇同源论文,独立复现较少。
| 验证方向 | 证据 | 强度 |
|---|---|---|
| 同源论文 | 三篇,覆盖医学生与全岗位 | 强,但非独立 |
| 外部方法参照 | 曼彻斯特团队的同类研究 | 中,范式不同 |
| 独立复现 | 未见公开复现 | 弱 |
| 跨库一致性 | 与胸片眼动库的指标口径不同 | 弱,不可直接比 |
这张矩阵说明一件事:它的可信度建立在「作者把方法写清楚了」之上,而不是「多个团队得到同样结果」。对方法学复刻,这够用;对结论外推,要谨慎。
7.5 它为何能持续:一份被反复引用的方法学底稿
这个库不会因为版本更新而增值,也不会因为被超越而失效。它的生存逻辑在于占住了一个空位:公开的、带岗位分层的、以十二导联心电图为刺激的眼动数据,目前只有这一份。
任何要做「专家与新手看图差异」的团队,要么复刻它的范式自采数据,要么直接用它做基线。前者成本高,后者只需一次下载。只要医学教育还在讨论视觉专长,这份底稿就会被引用;它被引用的方式不是「用了它的数据训练模型」,而是「用了它的范式与对照」。
这也解释了它为何只有一版:方法学底稿的价值在于稳定,不在于增长。作者把范式、参数、阈值、批号全写清楚,等于把复刻的门槛降到最低,剩下的增量工作留给别人去做。
§8 生态位与历史
8.1 历史沿革:从读片研究到读图研究
眼动进入医学研究并不晚,早期的落点是放射影像。胸片与病理切片有明确的病灶位置,注视点落在病灶上与否可以直接判定专业度。之后扩展到内镜与病理,兴趣区从单一病灶框变成「病灶框加周边区域」。到了以十二导联心电图为刺激这一阶段,兴趣区只能是导联块,因为心电图没有单一「病灶点」,它的信息分布在十二个导联的波形形态里。再往后是联合区域的方向,即把图与报告放在同一屏上,兴趣区跨越两种材料。
把心电图纳入眼动研究,难点不在设备而在兴趣区设计:导联块怎么切、节律条算不算、信息区要不要单列。这个库给出的两套切法,实际上是对这个难点的两种回答。
8.2 这条线上的三个坐标
第一个坐标是「刺激复杂度」。心电图比胸片简单,线条图的信息密度低,注视更集中在少数区域,因此区域级指标比像素级指标更够用。
第二个坐标是「判读人分层」。多数影像判读研究对比两级:专家与新手。这个库分了十种岗位,把「中间层」也纳进来,技师与护士这两类在影像研究里常被忽略。
第三个坐标是「时间约束」。三十秒是刻意选的:足够完成一次快速判读,不足以做深度分析。这个约束把「第一印象」与「系统排查」两种策略的差别放大。
三个坐标合起来看,本库在刺激复杂度上取低值,换来区域级指标够用;在判读人分层上取高值,保住了中间层;在时间约束上取中值,既不让人从容到可以反复核对,也不至于仓促到看不出异常。
8.3 谁在用它,以及官方建议怎么用
官方在说明页里列了三类复用方式:在已有受试者身上挖掘更多指标、复刻范式去比对另一批人、以及扩样本。这三条正好对应三种角色:二次分析者、方法复刻者、数据扩建者。
| 角色 | 官方建议的用法 | 需要的额外投入 |
|---|---|---|
| 二次分析者 | 换指标重算,如首次到达时间、回视结构 | 低,只需两张表 |
| 方法复刻者 | 照搬设备、参数、限时与兴趣区 | 高,需实验室与受试者 |
| 数据扩建者 | 换机构、换人群,扩到更多岗位 | 最高,需伦理与招募 |
| 教学使用者 | 借兴趣区与版面设计做训练界面 | 中,需前端开发 |
值得注意的是官方没有建议「训练模型」。这不是遗漏,而是这份数据的定位本身不含监督学习:没有标签、样本又小,任何模型都只能学到这十张图的版面。
8.4 版本与维护
只有一个版本,2022 年 3 月发布,此后未更新。文件时间戳显示数据在 2021 年 12 月归档,2022 年 1 月补齐说明表,3 月补上校验和。校验和清单的生成日期是 2022 年 3 月 22 日,比发布日晚六天,说明发布后又补过一次完整性核对。DOI 有两个:版本 DOI 指向 1.0.0,最新 DOI 指向当前版本,两者目前等价。
| 更新计划 | 未见公开说明 |
单版本对使用者是好事:不必担心口径漂移,也不必追踪变更日志。对长期引用是坏事:若未来出现 2.0,旧链接与旧分析都需重新核对。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一步 | 第二步 | 第三步 |
|---|---|---|---|
| 只想验证一个假设 | 下两张 CSV | 按岗位分组算注视时长 | 做组间检验并声明样本量 |
| 要复刻实验 | 读方法节与三份说明表 | 照抄 I-VT 参数与限时 | 用同一批异常类型选图 |
| 要做教学产品 | 看两张兴趣区示意图 | 借版面切分设计热区 | 用专家数据做参照层 |
三条路径的共同点是:都不需要碰那十张十几兆的图片。图片只在复刻实验时有用,做分析时表里已经有区域名。
9.2 一条最短的可用流程
从下载到第一张组间对照表,最短的路径是四步:取表、清洗、聚合、对照。下面这段可以直接跑,输出去掉 copy 副本后每位受试者在导联区的平均注视时长,按岗位排序。它跑出来的量纲与 §4.4 的案例一致,都是毫秒,因此可以拿那位顾问医师的一千三百四十九毫秒去对照岗位均值。
#-- 最短流程:下载后的两张表到一个组间对照
import pandas as pd
grid = pd.read_csv("eye-tracking-ecg/Datasets/Grid_Anonymized.csv")
grid["Respondent_Name"] = grid["Respondent_Name"].str.strip()
grid["Label"] = grid["Label"].str.replace(r"(\s+copy)+$", "", regex=True)
aoi = grid[grid["Type"] == "Static AOI"].drop_duplicates(
subset=["Respondent_Name", "ParentStimulus", "Label"]
)
per_person = (
aoi.groupby(["Group", "Respondent_Name"])["Time_spent_G"]
.mean()
.reset_index()
)
summary = per_person.groupby("Group")["Time_spent_G"].agg(["mean", "count"])
print(summary.sort_values("mean", ascending=False))
这段代码做了三件容易被跳过的事:去尾随空格、剥 copy 后缀、按三元组去重。少了任何一步,分组结果都会偏:不去空格,同一个人会被拆成两组;不剥 copy,房室传导阻滞那张图的权重会翻倍;不去重,同一区域会被重复计数。至于先按人求均值再按组汇总,是为了让每个岗位内部的样本量相等,避免大组被某一个人的极端值带偏。
9.3 引用方式
官方要求两层引用:数据本身与技术论文。数据引用含四位作者、标题、版本、平台与 DOI;论文引用按期刊格式给出。若只在方法节提一句「数据来自 PhysioNet」,在多数期刊的数据可得性声明里是不够的。
| 引用对象 | 关键字段 |
|---|---|
| 数据集 | Tahri Sqalli 等,2022,版本 1.0.0,PhysioNet,DOI 10.13026/gsr5-8b11 |
| 技术论文 | Sqalli 等,2022,JMIR Human Factors,9 卷,e34058 |
| 医学生分册 | Sqalli 等,2021,JMIR Medical Education,7 卷,e26675 |
| 平台 | PhysioNet,RRID SCR_007345 |
#-- 数据引用的 BibTeX 骨架(字段照官方页面抄录)
@article{PhysioNet-eye-tracking-ecg-1.0.0,
author = {Tahri Sqalli, Mohammed and Al-Thani, Dena and Elshazly, Mohamed and Al-Hijji, Mohammed},
title = {Eye Tracking Dataset for the 12-Lead Electrocardiogram Interpretation of Medical Practitioners and Students},
journal = {PhysioNet},
year = {2022},
note = {Version 1.0.0},
doi = {10.13026/gsr5-8b11}
}
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 数据来源 | 全部数字取自 PhysioNet 项目页、三份官方说明表与两张 CSV 的列结构 |
| 是否重算 | 未重算任何统计量;行数与块数为逐表计数,属结构核对 |
| 图像使用 | 未使用受试者面部或可识别影像,本库本身不含此类内容 |
| 生成方式 | 文字由语言模型辅助起草,事实逐条回查官方页面 |
| 不确定性标注 | 官方前后不一致处并列两口径,未替官方裁决 |
| 医学建议 | 本文不含诊断或治疗建议 |
| 许可遵从 | 引用与转载遵循 ODbL 1.0 与官方引用要求 |
| 更新责任 | 官方若发新版本,以官方页面为准 |
常见误读
| 说法 | 实际 | 证据 |
|---|---|---|
| 这是心电信号加眼动的同步采集 | 心电是十张静态图片,无任何生理通道 | 目录只有 CSV 与图片,无 WFDB 文件 |
| 数据里有判读对错 | 30 列中无结论列 | 字段说明表逐列列出,无 accuracy |
| 有原始眼动帧可以重跑算法 | 只有区域级汇总 | 无坐标列、无逐帧时间戳 |
| 采样率是 120 赫兹 | 60 赫兹,正负 1 赫兹 | 方法节与字段说明一致 |
| 每张图固定看满 30 秒 | 名义 30 秒,实际有长有短 | 整图行 Duration 从两千余到三万余毫秒 |
| 六类岗位 | 摘要六类、方法五类、数据表十类 | 三处文本并列 |
| 兴趣区是均匀 24 宫格 | 逐图手绘,十六到二十五块 | 各图区域行数不同 |
| 六百三十人是六百三十名受试者 | 63 人各十次 | Respondent_Name 去重为 63 |
| 可以直接训练判读模型 | 无标签、十张图 | 无结论列,刺激图仅十张 |
| 许可是 CC-BY | ODbL 1.0,衍生库须同许可 | LICENSE.txt 与项目页许可栏 |
FAQ
Q1:这个库到底记录了什么?
只记录目光。受试者看十张静态心电图时的注视位置、时长、次数与回视,被汇总到导联区域一级。心电本身是图片,不是信号。
Q2:63 人够做统计吗?
够做组间描述与中等效应的检验,不够做亚组细分。十种岗位里有四种不足五人,这些组的均值只能当案例看,不能当结论。
Q3:为什么每张图的实际时长不一样?
任务允许提前结束。整图行的 Duration 记录的是这张图真正在屏幕上停留的毫秒数,从两千多到三万多不等。做占比分析时用表里的百分比列,它已按实际时长折算。
Q4:Grid 与 Long_Short 该选哪个?
看问题粒度。问「专家先看节律条还是先看导联」用长短版;问「专家在哪个导联停得久」用网格版。两者列结构相同,可以互相对照但不能拼接。
Q5:表里的 G 与 F 后缀是什么意思?
G 指凝视,统计目光进入区域的全部时间;F 指注视,只统计速度低于阈值并持续足够长的停留。两者差值约等于扫视穿过的部分。
Q6:能从中得到每位受试者的判读准确率吗?
不能。数据表没有结论列,论文里的准确率是另行统计的分组结果,无法回填到具体某一行。若要准确率,必须重新组织判读并标注。
Q7:Age 列为什么大量是 0?
年龄在导出时未逐人写入,0 是占位。真实人口学分布见官方表 1,按年龄段给出人数,六十三人全部覆盖。
Q8:copy 后缀是什么?
完全性房室传导阻滞那张图的三个导联区域在导出时被复制,标签末尾累积了 copy、copy copy、copy copy copy。分析前应剥掉后缀并去重,否则该图权重偏高。
Q9:可以做商用产品吗?
可以,但受 ODbL 1.0 约束:署名,且以本库为基础衍生的数据库须以同一许可开放。把加工后的表闭源嵌入商业产品,需要先与权利人确认。
Q10:为什么只有一版?
方法学底稿的定位决定了它不需要增长。作者把范式与参数写全,价值在于可复刻,而不在于数据量。目前未见更新计划。
Q11:和胸片眼动数据能直接比吗?
不能直接比。刺激的视觉结构不同,兴趣区粒度不同,注视切分参数也可能不同。可比的是方法框架,不是数值。
Q12:引用时最容易被审稿人挑的问题是什么?
只引数据不引论文。字段含义、兴趣区画法与统计口径都在论文里,只引 DOI 会让方法节的描述缺依据。
术语表
| 术语 | 英文 | 含义 |
|---|---|---|
| 眼动仪 | eye tracker | 记录眼球位置与运动的设备 |
| 采样率 | sampling rate | 每秒记录次数,本库 60 赫兹 |
| 注视 | fixation | 眼球相对静止、信息被加工的时间段 |
| 扫视 | saccade | 注视之间的快速眼动 |
| 微扫视 | micro-saccade | 幅度极小的扫视,约 15 角分 |
| 回视 | revisit | 再次回到曾看过的区域 |
| 首次到达时间 | time to first hit | 从刺激出现到首次看到该区域 |
| 首次注视潜伏期 | TTFF | 到首次形成注视的时间 |
| 兴趣区 | area of interest, AOI | 刺激图上预先划定的统计区域 |
| 凝视 | gaze | 目光落在区域内的状态 |
| 注视时长 | fixation duration | 单次注视持续的毫秒数 |
| 注视次数 | fixation count | 区域内注视的个数 |
| I-VT | velocity threshold identification | 按速度阈值切分注视的算法 |
| 阈值 | threshold | 判定注视的速度上限,本库 30 度每秒 |
| 窗口长度 | window length | 算法平滑的时间窗,本库 20 毫秒 |
| 间隙填补 | gap fill-in | 对眨眼缺口插值的选项,本库关闭 |
| 十二导联 | 12-lead | 从十二个角度记录心电的标准布局 |
| 节律条 | rhythm strip | 图底部长时程记录,用于判节律 |
| 视觉专长 | visual expertise | 长期训练形成的 perceptual 技能 |
| 判读 | interpretation | 对心电图的临床解读行为 |
| 导联 | lead | 一对电极构成的观察角度 |
| 校准 | calibration | 采集前对眼动仪的个体化校正 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 受试者数 | 63 | 摘要、方法节、数据表 | 官方页面 |
| 刺激图数 | 10 | 摘要、目录 | 官方页面 |
| 判读次数 | 630 | 方法节,63 × 10 可核 | 官方页面 |
| 单次限时 | 30 秒 | 摘要、字段说明 | 官方页面 |
| 采样率 | 60 赫兹 | 方法节 | 官方页面 |
| 网格版行数 | 15,372 行数据 | 逐表计数,与官方 15,373 行含表头一致 | 文件核对 |
| 长短版行数 | 1,890 行数据 | 逐表计数,与官方 1,891 行含表头一致 | 文件核对 |
| 列数 | 30 | 两张表表头 | 文件核对 |
| 解压体积 | 30.5 MB | 项目页文件栏 | 官方页面 |
| 岗位标签数 | 10 | 数据表 Group 列与表 1 | 文件核对 |
| 男性人数 | 51 | 表 1 | 官方说明表 |
| 女性人数 | 12 | 表 1 | 官方说明表 |
附录 B:数字的来源分层
| 层级 | 含义 | 本库对应内容 |
|---|---|---|
| 官方页面 | 项目页正文与方法节明写 | 人数、图数、限时、设备、采样率、许可 |
| 官方说明表 | 三份 PDF 与索引表 | 人口学分布、异常定义、字段定义 |
| 文件核对 | 逐表计数、逐列比对 | 行数、列数、区域块数、copy 行 |
| 论文摘要 | Europe PMC 收录的摘要 | 各岗位准确率区间 |
| 未核实 | 无公开依据 | 采集具体场所、实验月份 |
附录 C:完整参考文献
- Tahri Sqalli M, Al-Thani D, Elshazly M, Al-Hijji M. Eye Tracking Dataset for the 12-Lead Electrocardiogram Interpretation of Medical Practitioners and Students. PhysioNet, version 1.0.0, 2022. DOI 10.13026/gsr5-8b11.
- Sqalli MT, Al-Thani D, Elshazly MB, Al-Hijji M, Alahmadi A, Sqalli Houssaini Y. Understanding Cardiology Practitioners’ Interpretations of Electrocardiograms: An Eye-Tracking Study. JMIR Human Factors, 2022, 9: e34058. DOI 10.2196/34058.
- Sqalli MT, Al-Thani D, Elshazly MB, Al-Hijji M. Interpretation of a 12-Lead Electrocardiogram by Medical Students: Quantitative Eye-Tracking Approach. JMIR Medical Education, 2021, 7: e26675.
- Sqalli MT, Al-Thani D, Elshazly MB, Al-Hijji M, Houssaini YS. The Journey Towards an Accurate Electrocardiogram Interpretation: An Eye-tracking Study Overview. IEEE BESC, 2021.
- Davies A, Mueller J, Horseman L, et al. How do healthcare practitioners read electrocardiograms? A dual-process model of electrocardiogram interpretation. British Journal of Cardiac Nursing, 2019, 14: 1-19.
附录 D:任务代码
下面这段把十种岗位标签映射成三档资历,并输出每档在导联区的平均首次到达时间。三档划分是本文的建议,不是官方口径。
#-- 十种岗位并三档,比较首次到达时间的档间差异
import pandas as pd
SENIOR = {"Consultant"}
MID = {"Fellow", "resident", "General Doctor"}
JUNIOR = {"Med 1", "Med 2", "Nurse", "CCU Nurse", "Cathlab Nurse", "Technician"}
def tier(g):
if g in SENIOR:
return "senior"
if g in MID:
return "mid"
return "junior"
df = pd.read_csv("eye-tracking-ecg/Datasets/Grid_Anonymized.csv")
df["Respondent_Name"] = df["Respondent_Name"].str.strip()
df["tier"] = df["Group"].map(tier)
aoi = df[df["Type"] == "Static AOI"]
first = aoi.groupby(["tier", "Respondent_Name"])["Hit_time_G"].median()
print(first.groupby("tier").agg(["mean", "count"]))
| 档位 | 包含标签 | 人数 |
|---|---|---|
| senior | Consultant | 9 |
| mid | Fellow、resident、General Doctor | 13 |
| junior | 其余六种 | 41 |
附录 E:如果只记五件事
| 序号 | 记住这一条 |
|---|---|
| 1 | 库里没有心电波形,ECG 是刺激图片 |
| 2 | 63 人、10 张图、630 次判读、每次 30 秒 |
| 3 | 两张表同构,差别只在兴趣区粒度 |
| 4 | 无判读结论,无原始帧,无重复测量 |
| 5 | ODbL 1.0,可商用,衍生库须同许可 |
编辑说明
本篇的核验时间为 2026 年 10 月 28 日。事实来源为 PhysioNet 项目页(1.0.0 版)、三份官方说明表 PDF、两张 CSV 的表头与行数,以及 Europe PMC 收录的技术论文摘要。行数、列数、区域块数与 copy 行数属结构核对,逐表计数得出;人口学数字直接抄自官方表 1,未做二次统计。官方文本在岗位类别数、兴趣区块数与呈现时长三处存在多个口径,正文并列呈现,未作裁决。未覆盖的内容包括:实验的具体场所与月份、受试者的招募渠道、十张刺激图的原始采集参数。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- kiel-cardio — 共享标签:生理信号 / 心电信号 / 多模态
- ephnogram — 共享标签:生理信号 / 心电信号 / 多模态
- deepfake-ecg — 共享标签:生理信号 / 心电信号 / 多模态
- ecg-spider-clip — 共享标签:生理信号 / 心电信号 / 多模态
- ninfea — 共享标签:生理信号 / 心电信号 / 多模态
- ucddb — 共享标签:生理信号 / 多模态
- qol-stress — 共享标签:生理信号 / 心电信号 / 多模态
- dreamer — 共享标签:生理信号 / 心电信号 / 多模态
- heartcycle — 共享标签:生理信号 / 心电信号 / 多模态
- vitaldb-arrhythmia — 共享标签:生理信号 / 多模态
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

