信息速览
2 型糖尿病对大脑的伤害大多不是一次事件,而是一条缓慢的链:脑血管的调节能力先变钝,白质先出现弥散与信号异常,认知与平衡几年之后才拉开差距。要把这条链拆成可测的量,得在同一批人身上、跨足够长的时间、同时拿到血流、影像与功能三层证据——三样凑齐的公开数据集很少。
CDED 就是这样一份材料,由 BIDMC 的 Vera Novak 团队交给 PhysioNet:招募 120 人,60 例 2 型糖尿病对 60 例同龄对照,55 至 75 岁;基线段做满二十四小时心电、经颅多普勒与三特斯拉磁共振,两年后再做一遍,41 人走完全程。
它的分量不在样本量,而在「同一批人、同一套仪器、两个时间点」这件事本身;它的门槛也不在许可,而在读懂三套异构文件之间的对应关系。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | Cerebromicrovascular Disease in Elderly with Diabetes |
| 常用缩写 | CDED |
| 作者 | Vera Novak、Rodrigo Quispe(BIDMC,后者兼哈佛医学院) |
| 内部协议号 | GE-79 |
| 版本与日期 | v1.0.0 于 2020-10-09;v1.0.1 于 2022-08-05 |
| DOI | 10.13026/00bm-0x81(最新版另有 10.13026/bpnv-4b88) |
| 规模 | 招募 120 人;官方正文 69 名受试者有观测;41 人完成两年随访 |
| 人群 | 2 型糖尿病与同龄对照,55–75 岁,单中心 |
| 伦理批件 | BIDMC 2008P000286 |
| 波形 | 二十四小时心电(ME6000,1000 Hz);LabVIEW 心血管、呼吸与经颅多普勒 |
| 影像 | 3T:T1、T2、CASL 灌注、FLAIR、DTI(处理后数值,非原始 DICOM) |
| 随访 | 6、12、18 个月门诊;第 8 次访视为两年复测 |
| 许可 | CC BY 4.0,无数据使用协议 |
| 体积 | 未压缩 3.7 GB,整包 ZIP 2.1 GB |
| 引用要求 | 数据集 DOI + 2011 年 Diabetes Care 原文 + PhysioNet 平台文献 |
§1 它要解决的具体麻烦
1.1 想研究「糖尿病怎么伤脑」,最缺的从来不是影像
脑影像本身不缺。公开的 T1 结构像、弥散张量、灌注图,动辄上千例,多到需要挑着用。缺的是把影像和「当时这个人的脑血管还听不听话」放在同一个人身上、同一周内测出来的材料。因为这件事要求受试者在磁共振室旁边的检查床上躺两个小时,头上扣着多普勒探头,鼻子夹着呼气管,中途还要被倾斜床立起来——愿意配合的人本来就不多,能重复两次的更少。
于是文献里常见两种妥协。一种是用影像讲结构,用别人的队列讲血流,两组人拼在一起讨论机制;另一种是在几十人的小样本里做一次横断面,看到相关就收工,随访留待「未来研究」。这两种做法都不算错,但它们都回答不了最要紧的那个问题:基线时血管反应性差的那批人,两年后是不是真的白质更差、走得更慢、记得更少。
CDED 的设计就是冲着这个问题去的。它的核心不是某一张漂亮的灌注图,而是两个完整测量时点——基线的两天与两年后的复测——中间夹着 6、12、18 个月的门诊随访。第 8 次访视被官方写明「与基线第 2 次访视完全相同」,这句话是整个数据集的价值支点,也是使用它时最该记住的一句。
1.2 三条常见的错误期待
第一条,期待它是一个「糖尿病脑影像数据集」。持这种期待的人下载后会失望:包里没有一张可以拖进阅片软件的 DICOM,只有七张 CSV 里成列的区域数值与体积。想用它训练分割网络、做影像组学、跑放射组学流水线,方向从一开始就错了。
第二条,期待它的样本量能撑起深度学习。120 是招募数,69 是有观测数,41 是走完两年的人数。三个数字对应三种完全不同的统计能力,拿最大的那个去做模型规划,得到的结论一定虚高。
第三条,期待它给出「脑血管反应性」这个现成指标。官方给的是原始血流速度与呼气末二氧化碳通道,反应性要自己算;而且官方用的是过度通气与二氧化碳再呼吸这套分级刺激,不是临床上更省事的屏气试验。指标定义得自己写清楚,否则不同论文之间没法比。
1.3 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 同一批人两年内的脑结构变化 | 基线与两年两个时点的结构体积与白质指标 | 够,且是这份数据最硬的用途 |
| 脑血管反应性与白质改变的关联 | 基线多普勒速度、呼气末二氧化碳、区域灌注 | 够做相关与中介分析,指标需自算 |
| 糖尿病与对照的组间比较 | 两组同龄同中心,标签在汇总表首列 | 够,但每组只有几十人 |
| 训练脑区分割模型 | 只有处理后的区域数值 | 不够,无原始影像 |
| 训练心电或波形模型 | 二十四小时单导联级心电、多通道 LabVIEW 波形 | 可做,但通道定义要读说明表 |
| 认知与步态的纵向变化 | 同一套认知测验与步行测试做两次 | 够,量表条目完整可复算 |
| 多中心泛化验证 | 单中心、单一人群 | 不够,只能做外部验证的「一端」 |
| 药物或干预效果评估 | 观察性设计,用药只有记录,没有随机化 | 不够,不支持因果结论 |
1.4 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你在做糖尿病与脑小血管病的机制研究,手上只有横断面数据 | 提供同一批人的两年复测,可把「相关」推进到「先后」 | 先锁定 41 名完成者,把两次测量配对,再谈时序 |
| 你要验证一个脑血管反应性指标是否与认知下降有关 | 反应性可从原始通道自算,认知在基线与两年各有一套 | 先复现官方的任务分段,再固定算法版本,避免指标口径漂移 |
| 你在做生理信号的多模态融合,缺带临床标签的长时程波形 | 二十四小时心电与多任务 LabVIEW 波形同属一人,标签在 CSV 里 | 用受试者编号做连接键,先把文件清单读成表再谈建模 |
| 你要教一组学生做队列数据分析 | 三个样本量口径、七张表、两套访视,正好讲清数据管理 | 用 §4.3 的案例做课堂练习,从编号反查文件 |
| 你在为某个影像模型找外部测试集 | 区域灌注与体积可作为弱标签外测 | 明确标注这是处理后的数值外测,不是像素级外测 |
| 你在写系统综述,需要核对一个常被引用的队列 | 版本、DOI、批件、资助编号全在页面上 | 按 §9.3 的三条引用一并著录,避免只引平台不引原文 |
1.5 一句话判断
它是一份「时间维度上的对照工具」:单看任何一个时间点都不算强,把两个时间点扣在一起,才显出别人替代不了的那部分。
1.6 不适合谁:四条边界
不适合做影像算法。 包里没有像素。所有影像结论都以数值形式存在于 CSV,做不了分割、配准、放射组学,也做不了任何需要原始体素的任务。
不适合做大规模监督学习。 69 名有观测、41 名有随访,特征却有几百列。这是典型的小样本宽表,天然适合统计建模与假设检验,不适合端到端训练。
不适合做人群流行病学推断。 单中心、单一人群、糖尿病与对照各半且经过筛选。它不能用来估计糖尿病人群中脑小血管病的患病率,任何「发生率」类的结论都会失真。
不适合做干预评价。 观察性设计,用药只作为病史记录,没有随机化、没有洗脱期、没有盲法。把它当作某项治疗的效果证据,属于设计层面的误用。
§2 数据构成与规格
2.1 目录骨架:三套材料,三种读法
顶层目录很短,但每一层的性质完全不同。Data/ 是波形与影像派生物,Data_Description/ 是元数据与汇总表,Papers/ 是二十篇基于该库发表的论文。协议 PDF 单独放在根目录,许可与校验文件也在根目录。
| 路径 | 内容 | 形态 | 读法 |
|---|---|---|---|
Data/ |
波形与派生的影像指标 | 二进制与文本混合 | 按 RECORDS 清单逐条读 |
Data_Description/ |
七张汇总表、数据字典、文件清单 | CSV | 直接用表格工具打开 |
GE-79_Protocol.pdf |
实验协议全文(根目录) | 方法段在第 13 至 20 页 | |
Papers/ |
二十篇相关论文 | 先读方法学那几篇 | |
RECORDS |
波形记录清单 | 文本 | 每行一条记录路径 |
LICENSE.txt |
许可全文 | 文本 | CC BY 4.0 |
SHA256SUMS.txt |
校验和 | 文本 | 下载后核对完整性 |
三套材料的读法差别很大。波形要靠 WFDB 工具链,汇总表靠电子表格或 pandas,协议 PDF 只能人读。官方没有提供把三者自动对齐的脚本,连接键是受试者编号——这一点在 §2.3 会具体演示。
2.2 字段与记录的完整字典
先看汇总表这一层。七张表都以「受试者编号 + 访视」为行,但列数差别极大:认知表六十余列,实验室与眼科表一百七十列,磁共振第五部分一百七十余列。列多不等于信息密度高,很多列是同一指标的不同派生形态。
| 信息项 | 所在位置 | 取值形态 | 含义 | 使用注意 |
|---|---|---|---|---|
| 受试者编号 | 各表首列 | 四位数字,前缀 S | 个体标识 | 与波形文件名的后四位一致 |
| 访视 | 各表次列 | 2 或 8 | 基线或两年 | 只有完成者才有第 8 行 |
| 分组 | 人口学表 | Diabetes / Control | 糖尿病或对照 | 全库唯一的监督标签 |
| 年龄 | 人口学表 | 整数,单位岁 | 入组时年龄 | 与页面所写 55–75 有出入的个案见 §7.3 |
| 年龄段 | 人口学表 | 五年一档 | 分箱后的年龄 | 与年龄列重复,取其一即可 |
| 身高体重体质指数 | 人口学表 | 小数 | 体格测量 | 单位在数据字典里标为米与千克 |
| 性别 | 人口学表 | M / F | 性别 | 汇总层面的构成官方未公布 |
| 种族与族裔 | 人口学表 | 编码文本 | 自我报告 | 编码表在数据字典内 |
| 灰质体积 | 磁共振第一部分 | 小数 | 分割所得体积 | 归一化方式需查协议 |
| 白质体积 | 磁共振第一部分 | 小数 | 分割所得体积 | 同上 |
| 脑脊液体积 | 磁共振第一部分 | 小数 | 分割所得体积 | 同上 |
| 区域脑血流量 | 磁共振第五部分 | 小数,毫升每百克每分钟 | CASL 灌注 | 分左右与全脑,分基线与再呼吸 |
| 白质高信号 | 磁共振第二至四部分 | 分级或体积 | FLAIR 判读 | 判读规则见协议 |
| 弥散张量指标 | 磁共振第二至四部分 | 小数 | 白质完整性 | 感兴趣区定义在协议内 |
| 糖化血红蛋白 | 实验室表 | 百分数 | 血糖控制 | 两次访视各有一次 |
| 空腹血糖与 C 肽 | 实验室表 | 小数 | 代谢指标 | 单位见字典 |
| 血脂四项 | 实验室表 | 小数 | 脂代谢 | 同上 |
| 炎症因子 | 实验室表 | 小数 | 炎症水平 | 具体项目见协议 |
| 二十四小时血压 | 实验室表 | 汇总统计量 | 动态血压 | 原始逐跳波形另存 |
| 视网膜病变分级 | 实验室表 | 分级 | 眼底判读 | 判读标准见协议 |
| 步行测试 | 实验室表 | 时间与距离 | 功能性移动 | 与足底压力文件对应 |
| 认知成套测验 | 认知表 | 原始分与量表分 | 多域认知 | 量表缩写见 §2.6 |
| 抑郁与日常能力 | 认知表 | 总分 | 情绪与功能 | 常被忽略但可作协变量 |
再看数据字典这一层。它把全部变量逐行列成一张长表,右侧两列是两名受试者的真实取值,用来示范量纲与编码。这一设计很实用,但也带来一个陷阱:那两列是真实个体,不是虚构样例,任何基于它们的推断都要当作个体信息对待。
| 字典项 | 内容 | 用途 |
|---|---|---|
| 行数 | 七百余行 | 覆盖七张表的全部变量 |
| 列数 | 二十六列 | 前三列为编号与两例取值 |
| 变量说明列 | 英文短语 | 说明该列测的是什么 |
| 单位列 | 物理单位 | 少量变量留空 |
| 示例受试者 | 两名,一例糖尿病一例对照 | 示范编码与量纲 |
| 覆盖范围 | 人口学、影像、实验室、认知 | 与七张表一一对应 |
2.3 一条记录的完整解剖
把一名受试者从编号追到文件,要经过三次跳转:汇总表的行、文件清单的行、波形文件的名字。下面用官方数据字典列出的两名示例受试者,走一遍这条链。
#-- 汇总表层:一行 = 一人一次访视(以下取值为官方字典示例列)
patient ID Visit GROUP Age BMI
S0434 2 Diabetes 65 26.6
S0434 8 Diabetes 67 26.4
S0078 2 Control 78 18.5
#-- 第一步:确认这两条记录在波形清单里各出现过几次
curl -sL https://physionet.org/files/cded/1.0.1/RECORDS \
| grep -Ei "s0434|s0078"
#-- 第二步:确认这两名受试者各自有哪些文件
curl -sL https://physionet.org/files/cded/1.0.1/Data_Description/GE-79_Files_per_subject.csv \
| grep -Ei "S0434|S0078"
文件名遵循「编号 + 任务代号 + 访视后缀」的结构。任务代号是三段:DA 对应基线第 1 天的倾斜与反应性任务,DB 对应基线第 2 天,DC 对应坐立测试;访视后缀 -v2 与 -v8 区分基线与两年。心电例外,用 ECG 作为任务代号且不带访视后缀,一天的记录单独成文件。
| 文件族 | 命名式 | 对应内容 | 访视区分方式 |
|---|---|---|---|
| 心电 | S####ECG.dat/.hea |
二十四小时单导联级心电 | 无后缀,按日期区分 |
| LabVIEW 基线第 1 天 | s####DA-v2 |
倾斜、Valsalva、反应性 | 后缀 -v2 |
| LabVIEW 基线第 2 天 | s####DB-v2 |
同上,次日重复 | 后缀 -v2 |
| LabVIEW 两年 | s####DB-v8 |
与基线第 2 天同序列 | 后缀 -v8 |
| 坐立测试 | S####DC.dat |
坐立转换 | 单独文件 |
| 动态血压 | SxxxxA.R、SxxxxA.V |
原始与校验后两版 | 另有 B.R 为第二次 |
| 连续血压 | Sxxxxsa1-x.dat |
逐跳手指血压 | 按记录序号分卷 |
| 足底压力 | SxxxxS-1.asc 与 .gtc |
压力矩阵与标定 | 按测试次序编号 |
2.4 访视时间轴:四次复测与三个空档
官方把整个流程写成八次访视。第 1 次是筛查,第 2 次是基线(分两天),第 3 至第 7 次是每半年一次的门诊,第 8 次是两年复测。值得注意的是:只有第 2 次与第 8 次是全套测量,中间几次只做血、压、体格与用药更新。
| 访视 | 时间 | 做的事 | 是否随包给数据 |
|---|---|---|---|
| 筛查 | 入组前 | 知情同意、病史、心电、多普勒窗、简易智能筛查、采血 | 否,官方标注未上传 |
| 基线第 1 天 | 入组当周 | 体格、神经与眼科、认知、二十四小时心电启动 | 部分,认知与眼科进表 |
| 基线第 2 天 | 次日 | 采血、多普勒与磁共振 | 是 |
| 第 3 至第 7 次 | 官方点名 6、12、18 个月三个节点 | 空腹血糖、糖化、肾功能、体征、体成分、用药 | 否,未进七张表 |
| 第 8 次(两年) | 二十四个月 | 与基线第 2 天完全相同 | 是 |
这里有一处序号与时间对不上的地方:第 8 次访视被明确定义为两年,而随访只点名了 6、12、18 个月三个时间点,中间却留了第 3 到第 7 共五个序号。多出来的两个序号对应什么时间,官方没有写明,可能是安排上的预留,也可能是编号跳号。使用者在写方法段时,应照抄「6、12、18 个月与第 8 次两年复测」这个表述,不要自行补齐中间两个时点。
这个设计有一个使用上的后果:中间几次门诊的数据不在包里,所以任何「轨迹」分析实际只有两个锚点。想要拟合曲线,自由度远小于直觉。
2.5 与同类资源的字段差异
同样是糖尿病脑血管方向,库内还有两篇同实验室的姊妹集。三者的字段覆盖面差别很大,选型时值得先看这张表。
| 字段族 | CDED(本篇) | 1023 号姊妹集 | 1022 号姊妹集 |
|---|---|---|---|
| 结构影像数值 | 有,灰白质与脑脊液体积累 | 无,影像未上传 | 有,以区域灌注为主 |
| 灌注 | CASL,区域值与再呼吸对比 | 无 | ASL,区域值 |
| 白质完整性 | 有,FLAIR 与 DTI 指标 | 无 | 该篇未提 |
| 经颅多普勒血管 | 中脑动脉与前脑动脉 | 中脑动脉与肱动脉 | 中脑动脉与前脑动脉 |
| 二十四小时心电 | 有,1000 Hz | 无 | 有,1000 Hz |
| 纵向随访 | 有,两年 | 无 | 无 |
| 认知成套 | 有,两访视 | 有限 | 有 |
| 足底压力 | 有 | 有 | 有 |
这张表最该读出来的一点是:三份数据在信号层面高度重叠。二十四小时心电、足底压力、Vera Novak 实验室那套多普勒任务序列,三份都有。真正的分岔只有两处——影像给到什么程度,以及有没有第二个时间点。所以选型时不要问「哪份信号更全」,要问「我需要影像到什么粒度」和「我需要一个时间点还是两个」。
2.6 认知表里到底装了哪些量表
认知表六十余列,看起来杂,其实是六个域加三个总体量表。理清域归属,才能避免把同一能力的两种测法当成两个独立指标。
| 域 | 量表 | 主要列 | 复测价值 |
|---|---|---|---|
| 注意与工作记忆 | 数字广度 | 顺背、倒背、总分、量表分 | 高,练习效应小 |
| 言语记忆 | 霍普金斯词语学习 | 四次学习试、延迟回忆、保持率、识别 | 高,有平行版本 |
| 视空间记忆 | 复杂图形 | 临摹、即时回忆、延迟回忆、识别 | 中,图形重测有回忆残留 |
| 语言流畅性 | 词语与语义流畅 | 三个字母、动物、超市 | 高,两分钟即可 |
| 执行功能 | 连线测验 | A 段与 B 段时间、量表分 | 中,B 段受运动速度干扰 |
| 视空间与执行 | 画钟 | 记忆、执行、总分、标准分 | 中,评分者差异需控制 |
| 病前智力估计 | 成人阅读测验 | 原始分与标准分 | 不随病程变化,作协变量 |
| 总体认知 | 简易智能状态检查 | 总分与常模 | 低,天花板效应明显 |
| 情绪与功能 | 抑郁量表、日常能力、行为评估 | 总分 | 作混杂控制 |
2.7 影像部分给了什么、没给什么
影像在包里以数值形式出现,分五个部分存放。第一部分是人口学加结构体积,第二部分到第四部分是不同层面的白质与灰质指标,第五部分是灌注加病史。
| 部分 | 主要列 | 行粒度 | 说明 |
|---|---|---|---|
| 第一部分 | 人口学与结构体积 | 一人一访视 | 最常用的一张 |
| 第二部分 | 区域体积与白质指标 | 一人一访视 | 与第一部分配对读 |
| 第三部分 | 白质高信号相关 | 一人一访视 | 判读规则在协议 |
| 第四部分 | 弥散张量汇总 | 一人一访视 | 感兴趣区需查协议 |
| 第五部分 | 灌注与病史 | 一人一访视 | 一百七十余列,列名极长 |
第五部分的列名值得单独提醒。它们把「序列、区域、左右、状态」四层信息压进一个长字符串,例如标明左右侧、标明基线与再呼吸、标明单位。用代码读表时如果按列位置索引,换一个版本就会错位;按列名匹配才稳。
2.8 空单元格的三种可能
七张表里都有空单元格,而官方没有给缺失标记。同一个空格可能意味着三件完全不同的事,这件事在动手分析之前必须先定下来。
| 空的含义 | 例子 | 处理建议 |
|---|---|---|
| 该访视没做这项 | 只参加基线的人没有第 8 行影像 | 按访视缺失处理,不进分母 |
| 做了但没记进表 | 部分通道在说明表里单位为空 | 回查协议与头文件,别当作零 |
| 做了但不适用 | 糖尿病病程与降糖用药在对照组自然为空 | 按设计缺失处理,单独说明 |
第三种最容易被当成数据错误。对照受试者没有糖尿病,与之相关的病程、用药、并发症字段本来就该空着。把这类空值当作缺失去插补,等于凭空造出一组不存在的观测。
§3 身份:谁做的、为什么编号叫 GE-79
3.1 一份被反复引用的实验室资产
Vera Novak 在 BIDMC 主持的老年晕厥与跌倒实验室,二十多年只做一件事:把老年人站起来时大脑供血跟不上这件事,拆成可测量的生理量。他们的方法学传统相当稳定——经颅多普勒测速、二氧化碳分级刺激、体位应激、磁共振看结构,外加一套认知与步态量表。CDED 是这套传统里规模最大、时间跨度最长的一份。
| 角色 | 名称 | 说明 |
|---|---|---|
| 数据作者 | Vera Novak | 通讯作者,实验室负责人 |
| 数据作者 | Rodrigo Quispe | 第二作者,兼哈佛医学院 |
| 采集机构 | BIDMC | 波士顿,单中心 |
| 托管平台 | PhysioNet | 平台编号 RRID:SCR_007345 |
| 伦理批件 | 2008P000286 | BIDMC 机构审查委员会 |
| 资助方 | 多家 | 见 §3.5 |
3.2 GE-79 这个编号的含义
实验室内部用 GE 加两位数字给研究 protocol 编号。这个编号不进论文,只出现在文件名、协议封面与汇总表前缀里。它最大的用处是区分同实验室的几份数据——同一个平台上有三份来自这个实验室的公开数据,编号各不相同。
| 编号 | 对应资源 | 伦理批件 | 设计 | 官方人数 |
|---|---|---|---|---|
| GE-79 | 本篇 CDED | 2008P000286 | 纵向,两年随访 | 招募 120,观测 69,随访 41 |
| GE-71 | 库内 1023 号姊妹集 | 2003P000013 | 横断面,两天重复 | 86(37 例糖尿病、49 例对照) |
| GE-75 | 库内 1022 号姊妹集 | 官方未在该篇说明 | 横断面 | 140(70 例糖尿病、70 例对照) |
编号顺序与批件年份一致:2003 年的批件对应 GE-71,2008 年的批件对应 GE-79。GE-75 落在两者之间,与它 140 人的规模一起,说明这是同一课题组在十余年里陆续做的三条支线,而不是一次研究的不同切片。
3.3 三个样本量口径,各有各的用法
这是使用这份数据时最容易踩空的地方。官方页面上同时存在三个数,它们不是笔误,而是三个不同阶段的计数。
| 口径 | 数字 | 出现在官方的哪一段 | 能用来做什么 |
|---|---|---|---|
| 招募 | 120 人,60 例糖尿病加 60 例对照 | 方法段的招募小节 | 说明研究设计与目标样本 |
| 有观测 | 69 名糖尿病与对照受试者 | 摘要第一句 | 直接对应 RECORDS 里 69 条基线波形 |
| 完成随访 | 41 人 | 摘要第一句的后半 | 直接对应 RECORDS 里 41 条两年波形 |
第三个数与清单能对上:RECORDS 一共一百五十七条,其中基线 LabVIEW 记录 69 条、两年 LabVIEW 记录 41 条、心电记录 47 条。也就是说,「69」与「41」不是估计,是文件层面的实际条数。相对地,120 与 69 之间的差额,官方从头到尾没有解释:是筛查淘汰、是退出、是设备故障,还是只公开了一部分,页面没有交代。
同时要留意心电那 47 条。它比 69 少,说明二十四小时心电只覆盖了一部分受试者。官方没有说明筛选规则,所以做心电相关分析时,可用样本要从 47 起算,而不是 69。
3.4 伦理与授权:开放但不含糊
| 项目 | 内容 |
|---|---|
| 伦理审查 | BIDMC 机构审查委员会,批件号 2008P000286 |
| 知情同意 | 筛查访视时签署,协议第 13 至 20 页写明 |
| 数据许可 | CC BY 4.0,允许商用与再分发 |
| 使用门槛 | 无数据使用协议、无申请审批 |
| 署名义务 | 注明作者、给出许可链接、标明是否修改 |
| 去标识 | 受试者以四位数编号出现,无姓名与日期 |
CC BY 4.0 这一条值得强调,因为同一平台上不少临床数据要求签署数据使用协议、限制再分发。这份不需要。它是本项目里少数能直接进商业流水线的临床队列之一,代价是去标识化程度必须够——官方用编号替代了一切直接标识,连采集日期都换成了访视序号。
3.5 资助与利益冲突
| 资助编号 | 资助方 | 说明 |
|---|---|---|
| 1R01-AG0287601A2 | 美国国立衰老研究所 | 主要资助 |
| 5R21 DK084463 | 美国国立糖尿病消化肾病研究所 | 探索性项目 |
| 1R01DK103902-01A1 | 同上 | 后续支持 |
| Clinical 1-03-CR-23 | 美国糖尿病协会 | 临床研究资助 |
| Clinical 1-06-CR-25 | 同上 | 临床研究资助 |
| UL1 RR025758 | 哈佛临床与转化科学中心 | 临床研究中心支持 |
| M01-RR-01032 | 国立研究资源中心 | 临床研究中心支持 |
七个编号覆盖衰老、糖尿病、转化医学三条线,说明这项研究从一开始就是多目标拼起来的:既看脑血管反应性,也看认知与平衡,还要为临床研究中心的平台建设交账。这解释了为什么测量项目如此庞杂——它要同时对多个资助方负责。官方声明作者无利益冲突。
§4 质量:这套测量到底靠不靠得住
4.1 一条测量链的五段
从受试者躺下到 CSV 里出现数字,中间有五段。任何一段出问题,最终数值都会偏,而官方文档对每一段的记录详细程度并不一样。
| 段 | 做的事 | 记录在哪 | 可追溯程度 |
|---|---|---|---|
| 受试者准备 | 停降压药、空腹、体位标准化 | 协议第 13 至 20 页 | 高,有明确日程 |
| 生理采集 | 心电、血压、呼吸、多普勒、倾斜 | 波形文件 | 中,通道定义在说明表 |
| 影像采集 | 3T 结构、灌注、弥散 | 协议与论文 | 中,序列参数未全列 |
| 数值处理 | 分割、灌注量化、量表计分 | 七张汇总表 | 低,算法细节在论文里 |
| 汇总入表 | 按访视一行 | CSV | 高,字典覆盖全变量 |
可追溯程度最低的是第四段。分割用的算法、灌注量化的具体实现、量表计分的版本,官方都没有在数据包内给出可执行脚本,只指向论文。这意味着复现不是「跑一遍脚本」,而是「读论文、照做、接受差异」。
4.2 一次 LabVIEW 记录里的六段任务
官方对这段的描述极简,但信息密度很高:五个阶段加一个动作,全在一个文件里连续记录。这决定了你不能把它当作六段独立数据切开来用,因为段与段之间的过渡本身就是信号。
| 阶段 | 时长 | 生理目的 | 主要通道 |
|---|---|---|---|
| 仰卧基线 | 5 分钟 | 建立静息参照 | 多普勒、呼吸、心电、血压 |
| 过度通气 | 3 分钟 | 造成低碳酸,测血管收缩反应 | 多普勒、呼气末二氧化碳 |
| 二氧化碳再呼吸 | 3 分钟 | 造成高碳酸,测血管扩张反应 | 多普勒、呼气末二氧化碳 |
| 仰卧休息 | 5 分钟 | 回到基线,看恢复速度 | 全部 |
| 头高位倾斜 | 10 分钟 | 体位应激,测自动调节 | 多普勒、血压、心电 |
| Valsalva 动作 | 穿插进行 | 胸腔内压骤变,测脑血流耦合 | 多普勒、呼吸、血压 |
合计二十六分钟以上,加上准备与恢复,一名受试者在检查床上要躺四十分钟左右。这个时长解释了两件事:为什么一天只能做一次,以及为什么两年后还愿意再来一次的人只有 41 个。
4.3 案例:两个编号 S0078 与 S0434
官方数据字典用两名受试者的真实取值做示例列。这两个编号恰好在 RECORDS 里呈现出两种完全不同的命运,正好用来把整套数据的连接逻辑走一遍。
S0434 是 65 岁男性,分组为糖尿病,体质指数 26.6。它在清单里出现两次:s0434DB-v2 与 s0434DB-v8。也就是说,他基线来了,两年后也来了,是那 41 人之一。S0078 是 78 岁女性,分组为对照,体质指数 18.5,清单里只有 s0078DB-v2 一条——她完成了基线,没有两年记录。
这两条记录还暴露出第三个事实:两人都不在四十七条心电记录的名单里。心电文件名另起一套(S0033ECG 这样的形式),与 LabVIEW 的编号体系只共享后四位。所以在做多人合并时,你不能假设「有 LabVIEW 记录的人就有心电」。
把 S0434 这条线走完,需要四步:从人口学表拿到编号与分组,从 RECORDS 确认有哪几个访视,从 Files_per_subject.csv 拿到该受试者的文件清单,再从文件名解析出任务代号。这四步没有一步能省,因为官方没有提供一张「编号到文件」的总表。§5.5 会用代码把这四步串起来。
4.4 影像这一层的质量边界
磁共振采集用三特斯拉的 GE 设备,序列含 T1、T2、CASL 灌注、FLAIR 与弥散张量。官方对处理流程只给了一句指向:灌注的处理细节见 2009 年发表于 Neurology 的那篇方法学论文。
| 维度 | 官方给的 | 官方没给的 | 影响 |
|---|---|---|---|
| 场强与机型 | 3T,GE 两款机型 | 具体线圈与序列参数 | 跨受试者一致性无法评估 |
| 结构序列 | T1、T2 | 层厚、体素、翻转角 | 无法重做分割 |
| 灌注 | CASL,区域值,基线与再呼吸 | 标记时长、延迟、动脉输入函数 | 无法重算灌注 |
| 白质 | FLAIR 与 DTI | 感兴趣区坐标、追踪参数 | 指标定义依赖论文 |
| 原始数据 | 无 | 全部 DICOM | 影像组学与深度学习不可行 |
两款机型混用这件事值得单独说明。同一队列里换机型,扫描间的灰度与信噪比会有系统差,而官方没有公布每名受试者用的是哪一台。做纵向比较时,这种未记录的技术变量会混进「两年变化」里,无法剔除。
4.5 三个能自算的指标
包里给的是通道,不是结论。想得到可比较的脑血管反应性指标,至少有三条路,每条路对通道的要求不同。
| 指标 | 定义 | 需要的通道 | 官方是否给定 |
|---|---|---|---|
| 高碳酸反应性 | 单位呼气末二氧化碳变化对应的流速变化 | 多普勒速度、呼气末二氧化碳 | 未给定,需自算 |
| 低碳酸反应性 | 过度通气段的流速下降幅度 | 同上 | 未给定,需自算 |
| 自动调节指数 | 倾斜瞬间流速与血压的相位关系 | 多普勒速度、逐跳血压 | 未给定,需自算 |
官方文档里没有出现屏气指数这个说法。屏气试验是临床上更常用的简化方案(屏气三十秒,算流速上升百分比),但这份协议用的是分级气体刺激,两者的数值不可互换。若论文里要与用屏气指数的研究对比,必须说明口径不同,不能直接放在一张表里比大小。
4.6 两年复测的可比性风险
纵向数据最怕的不是丢人,是留下来的那批人与走掉的那批人不一样。这份数据在这个问题上有三处需要注意。
| 风险 | 表现 | 缓解办法 |
|---|---|---|
| 选择性存活 | 41 人可能整体更健康 | 用基线特征对比完成者与未完成者 |
| 设备漂移 | 两年间磁共振机型或序列可能更新 | 官方未记录,只能作为局限写明 |
| 练习效应 | 认知量表第二次普遍偏高 | 用有平行版本的量表做主分析 |
| 药物变化 | 降压药与降糖药两年内会调整 | 用药史在表里,可作时变协变量 |
| 季节与昼夜 | 访视时间未标准化 | 官方未记录,无法校正 |
第一行是核心。41 与 69 之间的差额不是随机缺失,而是与健康状况相关的缺失——走不动、搬走、不愿再来的人,恰恰可能是功能下降更快的那批。任何基于 41 人的「两年变化率」,都带有向健康方向偏移的风险。
4.7 两支长时程记录:心电与动态血压
除了检查床上那半小时,这份数据还有两支贴着人走的记录。它们撑起了「日常生活状态下」的那部分信息,也最容易被只做影像的人整段忽略。
| 通道 | 时间分辨率 | 覆盖范围 | 可做的分析 | 不能做的 |
|---|---|---|---|---|
| 二十四小时心电 | 1000 Hz 采样 | 夜间睡眠、日间活动、十二分钟步行 | 心率变异性、夜间心率下降、步行时心率反应 | 多导联形态诊断、逐搏标注 |
| 二十四小时血压 | 日间每二十分钟、夜间每三十分钟 | 一整天 | 昼夜节律、夜间血压下降幅度、血压变异性 | 逐搏血压、短时压力反射 |
| 连续手指血压 | 逐搏 | 基线静卧约两小时 | 压力反射敏感性、倾斜前基线 | 全天候、自由活动 |
心电这支要记住三点。第一,它是设备自带的单导联级记录,说明表里首通道标为 V5/V6 至左侧锁骨位,不是标准十二导联,做不了束支阻滞分型这类依赖导联关系的判读。第二,包里只有四十七条,比有基线波形的人少,任何以「全体受试者」为前提的心率分析都要先减到四十七。第三,官方没有提供心搏或节律的标注文件,所有事件都得自己检。
动态血压这支的采样间隔本身就带信息:日间二十分钟一次、夜间三十分钟一次,意味着夜间的时间分辨率更低,做夜间下降幅度时要把这一点写进方法。原始文件与校验后文件分成两版,官方把后者标为 validated file,但校核规则没有说明。用哪一版会直接影响夜间最低值的判定,建议在方法段写明选择及其理由。
§5 取数:从下载到第一张图
5.1 三条下载路径
| 路径 | 适用场景 | 体积 | 说明 |
|---|---|---|---|
| 网页整包 ZIP | 一次拿全,离线用 | 2.1 GB | 解压后 3.7 GB |
| 逐文件目录 | 只要某几个受试者 | 按需 | 适合小规模复现 |
| 命令行工具 | 脚本化拉取 | 按需 | 支持断点续传与远程读取 |
整包解压后接近四吉字节,其中大头是二十四小时心电与多通道 LabVIEW 波形。如果只做汇总表分析,其实只需要 Data_Description 下的九个 CSV,加起来不到两兆——这是最省事的一条路,很多人不知道。
5.2 下载与完整性核对
官方提供校验和文件,下载后应当核对一遍。抓取下来的目录结构也要先看一眼,避免后续路径写错。
#-- 用官方推荐的镜像式抓取,可断点续传
mkdir -p data/cded && cd data/cded
wget -r -N -c -np https://physionet.org/files/cded/1.0.1/
#-- 把抓下来的目录挪成短路径,后文统一用它作根
mv physionet.org/files/cded/1.0.1 ./cded-1.0.1
cd cded-1.0.1
#-- 核对校验和,再只看结构
sha256sum -c SHA256SUMS.txt
find . -maxdepth 2 -type d | sort
如果在核对时出现大量失败,先确认是不是只抓到了部分文件,再确认传输是否被中断。校验和是按文件逐个列的,缺文件也会报失败。
5.3 读一条 LabVIEW 记录
WFDB 工具链是唯一省事的读法。记录名不含扩展名,路径按 RECORDS 里给的相对路径写。
#-- 读取一名受试者的基线 LabVIEW 记录
import wfdb
rec = wfdb.rdrecord(
"data/cded/cded-1.0.1/Data/Labview/Converted/Labview-v2/s0434DB-v2"
)
print(rec.fs)
print(rec.sig_name)
print(rec.units)
print(rec.p_signal.shape)
#-- 通道名与单位务必对照 Files_and_Channels.csv,不要凭顺序猜
p_signal 是物理量数组,已按头文件里的增益与基线换算过;若想拿原始整数,用 d_signal。通道顺序在不同记录之间是否一致,官方没有承诺,稳妥做法是每次按 sig_name 定位,而不是按列号取。
5.4 读二十四小时心电
心电记录更长,一次性读进内存可能吃紧。用分段读取,只取需要的时间窗。
#-- 分段读取心电,取凌晨两点的半小时
import wfdb
name = "data/cded/cded-1.0.1/Data/ECG/S0033ECG"
hdr = wfdb.rdheader(name)
print(hdr.fs, hdr.sig_len, hdr.sig_name)
start = int(2 * 3600 * hdr.fs)
rec = wfdb.rdrecord(name, sampfrom=start, sampto=start + int(1800 * hdr.fs))
print(rec.p_signal.shape)
采样率是 1000 赫兹,二十四小时就是八千多万个采样点。按单精度浮点算,单通道约三百多兆,多通道叠加后必须分段处理,这一点在写批处理脚本时要提前设计。
5.5 把七张表拼成一张宽表
七张表都以受试者编号加访视为键,但列名大小写与空格不统一。稳妥做法是先统一键名,再逐个左连接。
#-- 合并七张汇总表,键为受试者编号与访视
import pandas as pd
from pathlib import Path
base = Path("data/cded/cded-1.0.1/Data_Description")
files = sorted(base.glob("GE-79_Summary_Table-*.csv"))
def norm_key(df):
df.columns = [c.strip() for c in df.columns]
df = df.rename(columns={df.columns[0]: "pid", df.columns[1]: "visit"})
df["pid"] = df["pid"].astype(str).str.strip().str.upper()
df["visit"] = pd.to_numeric(df["visit"], errors="coerce")
return df
wide = None
for f in files:
df = norm_key(pd.read_csv(f, low_memory=False))
print(f.name, df.shape)
wide = df if wide is None else wide.merge(df, on=["pid", "visit"], how="outer")
print(wide.shape)
wide.to_parquet("cded_wide.parquet")
合并后列数会到几百,其中大量列在两次访视里只有一次有值。这不是错误,是访视设计的结果:六个月那次门诊只有血与压,没有影像。
5.6 从长列名里捞出灌注指标
第五部分的列名把四层信息压在一起。按关键词筛选,比按位置索引可靠得多。
#-- 只保留灌注相关列,并按左右与状态拆分
import pandas as pd
df = pd.read_csv(
"data/cded/cded-1.0.1/Data_Description/"
"GE-79_Summary_Table-MRI-Part5-History.csv",
low_memory=False,
)
perf = [c for c in df.columns if "Perfusion" in c]
print(len(perf))
def tag(col):
state = "rebreathing" if "rebreathing" in col.lower() else "baseline"
side = "left" if "Left" in col else ("right" if "Right" in col else "whole")
return state, side
sel = df[["patient ID", "Visit"] + perf].copy()
sel.columns = ["pid", "visit"] + [str(tag(c)) for c in perf]
print(sel.head())
注意列名里的单位有写在括号内的,也有完全没写的。同一物理量在不同列上的单位一致性,官方没有逐列声明,遇到要跨列比较的场景,先抽样核对量级。
5.7 划分训练集与测试集:按人,不按行
同一名受试者在宽表里有两行(基线与两年)。按行随机划分,同一个人会同时出现在训练与测试两侧,这是这类纵向宽表最典型的泄漏。
#-- 按受试者划分,保证同一人的两个访视落在同一侧
import pandas as pd
from sklearn.model_selection import GroupShuffleSplit
df = pd.read_parquet("cded_wide.parquet")
df = df.dropna(subset=["visit"]).sort_values(["pid", "visit"])
gss = GroupShuffleSplit(n_splits=1, test_size=0.25, random_state=20261027)
train_idx, test_idx = next(gss.split(df, groups=df["pid"]))
train, test = df.iloc[train_idx], df.iloc[test_idx]
print(train["pid"].nunique(), test["pid"].nunique())
print(set(train["pid"]) & set(test["pid"]))
#-- 交集应为空集;若非空,说明分组键用错了
还有一个更隐蔽的泄漏源:只保留完成两年的那 41 人做纵向分析,再用他们去训练模型,等于把「能坚持两年」这个筛选条件也学了进去。做预测任务时,纳入标准与评价标准要分开设计。
5.8 环境与常见故障
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 读波形报通道数不符 | 头文件与实际文件版本不匹配 | 用同目录下的 .hea,不要跨版本混用 |
| 合并后行数变多 | 某张表内同一人同一访视有重复行 | 先查重复键再去重 |
| 灌注列全是空 | 该受试者未做再呼吸序列 | 区分「未做」与「做了没记」,两者同为空 |
| 日期对不上 | 表里只有访视序号,无采集日期 | 只能按访视排序,无法算真实间隔 |
| 内存爆掉 | 一次性读二十四小时心电 | 分段读,或用 rdrecord 的采样范围 |
| 校验失败 | 传输中断或缺文件 | 重新下载该文件,不要跳过 |
§6 与库内条目的关系
6.1 三份同源数据的分工
同一个实验室、同一个平台、三份公开数据,最容易混淆。它们的差别不在名字,在设计与随包内容。
| 维度 | 本篇 CDED | 1023 号 cerebral-vasoreg-diabetes | 1022 号 cerebral-perfusion-diabetes |
|---|---|---|---|
| 内部协议号 | GE-79 | GE-71 | GE-75 |
| 伦理批件 | 2008P000286 | 2003P000013 | 该篇未载明 |
| 人数 | 120 招募、69 观测、41 随访 | 86(37 加 49) | 140(70 加 70) |
| 年龄 | 55–75 | 55–75 | 50–85 |
| 设计 | 纵向,两年 | 横断面,两天 | 横断面 |
| 多普勒血管 | 中脑动脉与前脑动脉 | 中脑动脉与肱动脉 | 中脑动脉与前脑动脉 |
| 影像 | 结构、灌注、弥散(数值) | 未上传 | 灌注 |
| 体积 | 3.7 GB | 该篇未标注 | 约 5 GB |
| DOI | 00bm-0x81 | m40k-4758 | whjz-e968 |
三者的关系不是版本迭代,而是三条并行的支线。GE-71 解决「糖尿病人的脑血管还听不听话」,GE-75 解决「脑灌注与认知的对应」,GE-79 解决「两年之后变了多少」。协议号越大,越往纵向走。
6.2 与 1023 号那篇的口径对齐
1023 号那篇在十余处把 CDED 当作同实验室的姊妹集引用,用的口径是:GE-79 协议、含灌注与弥散影像、有两年随访、41 人完成。这四个点与本篇一致,两篇不会互相打架。
需要说清的区别有四处,两篇都写到了,但侧重不同:
| 区别点 | 1023 号的表述 | 本篇的表述 | 是否冲突 |
|---|---|---|---|
| 人群 | 86 人,37 例糖尿病加 49 例对照 | 120 招募、69 观测、41 随访 | 不冲突,是两份数据 |
| 伦理批件 | 2003P000013 | 2008P000286 | 不冲突,两份批件 |
| 协议年份 | GE-71 | GE-79 | 不冲突,编号不同 |
| 随访长度 | 无随访,横断面 | 两年,含 6 至 18 个月门诊 | 不冲突,本篇专有 |
真正需要小心的是引用场景。若一篇论文同时用两份数据,样本量不能相加——两份数据的受试者是否重叠,官方没有说明。同一实验室在相近年份做的两项研究,共用受试者的可能性无法排除,稳妥做法是在方法段声明「两份数据的受试者重叠情况官方未公布,未做合并分析」。
6.3 与 1022 号那篇的区隔
1022 号那篇是 140 人的横断面,主打灌注与认知,年龄上限放到 85 岁,样本量是本篇的两倍。两者都用中脑动脉与前脑动脉的多普勒记录,都用动脉自旋标记技术,方法学上高度兼容。
差别在于时间。1022 号只有一个时间点,本篇有两个。做「灌注与认知的关联」,1022 号样本更大、结论更稳;做「灌注下降是否先于认知下降」,只有本篇能回答,而且只能回答 41 个人的版本。
6.4 检索路径:从任一入口找到另外两份
| 你的起点 | 怎么找 | 判断依据 |
|---|---|---|
| 先看到 CDED | 查作者的 PhysioNet 主页 | 同作者名下另有 GE-71 与 GE-75 |
| 先看到 1023 号 | 该篇的关系图谱 | 明确指向 CDED 与 1022 号 |
| 先看到某篇论文 | 看方法段的批件号 | 2008P000286 即本篇 |
| 只记得人数 | 86 是 1023 号、140 是 1022 号、69 与 41 是本篇 | 人数是最快的判别键 |
| 只记得血管 | 出现肱动脉的是 1023 号 | 本篇与 1022 号都没有肱动脉 |
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
在给这份数据打分之前,得先把评价坐标校正一次。多数人拿到一份临床队列,第一反应是拿它跟大型影像数据库比规模,然后得出「太小」的结论。这个比较的坐标本身就是错的:那份大型数据库没有二十四小时心电,没有呼气末二氧化碳,没有倾斜床,更没有两年后的复测。规模不是同一个维度上的量。
正确的比较对象不是「更大的数据集」,而是「同样做过两年复测、同样带气体刺激与多普勒的公开队列」——这个集合小到几乎只有它自己。所以下面的五维评分,规模一栏给低分是刻意的,但低分不代表不可用,只代表它不该被用在做规模的地方。把「误判」的来源搞清楚,比记住一个总分有用。
7.1 五维评分(DAIMS 框架)
| 维度 | 分数 | 依据 | 扣分点 |
|---|---|---|---|
| 可发现性 | 4 | 平台首页可检索,DOI 双版本,作者主页可追 | 标题里的缩写 CDED 不直观,搜索需用全名 |
| 可访问性 | 5 | CC BY 4.0,无数据使用协议,注册即可下 | 整包两吉字节,弱网环境耗时 |
| 互操作性 | 3 | 波形用 WFDB 标准格式,表格用 CSV | 文件名规则不统一,七张表列名不规范 |
| 可复用性 | 4 | 变量字典覆盖全表,附两例真实取值 | 无预处理脚本,影像处理细节外置论文 |
| 可理解性 | 3 | 协议 PDF 完整,任务序列清楚 | 样本量口径矛盾,缺失值无标记 |
综合判断:这是一份「边界清晰、入口顺畅、细节需要自己做功课」的数据。它不会在下载环节卡人,卡人的地方全在中段——读不懂文件名、对不上访视、算不出指标。
7.2 与理想状态的三处落差
| 落差 | 具体表现 | 造成的影响 |
|---|---|---|
| 文档与文件不同步 | 页面写 s####DB-v2.dat,清单里是 s0434DB-v2 无扩展名 |
写死路径的脚本换个版本就断 |
| 说明表覆盖不全 | 通道说明里若干单元格为空 | 部分通道只能按信号形态反推 |
| 量表版本未标注 | 认知表只给分数,未给常模版本 | 跨研究比较需自行确认版本 |
第二处落差最容易被低估。通道说明表里,有些行的采样率与单位是空的,而这正是计算反应性时最需要的两个量。遇到空单元格,只能从头文件里读,头文件也没有时,就只剩波形形态可以依靠。
7.3 已知的、可枚举的偏差
| 偏差 | 证据 | 影响面 | 能否校正 |
|---|---|---|---|
| 样本量双口径 | 摘要 69,方法段 120 | 全部分析的样本描述 | 不能,只能并列声明 |
| 随访分母不明 | 41 人,未说是 69 还是 120 的分母 | 纵向分析的应答率 | 不能,只能按下限写 |
| 年龄越界个案 | 字典示例 S0078 记 78 岁,页面写 55–75 | 年龄纳入标准的严格性 | 不能,官方未解释 |
| 心电覆盖不全 | 清单里心电 47 条,基线波形 69 条 | 心电相关分析的样本 | 不能,只能报 47 |
| 单中心单人群 | 页面写明 single-center | 全部外推结论 | 不能,需外部验证 |
| 机型混用未记录 | 说明表列两款 GE 机型 | 影像纵向比较 | 不能,只能写入局限 |
| 中间访视缺失 | 6 至 18 个月数据未进包 | 轨迹拟合 | 不能,只能两点一线 |
第四行的心电覆盖,是这份数据里最少被提到的一处。很多人以为「有 69 个人就有 69 份二十四小时心电」,实际上只有 47 份。若有研究以「六十九人的二十四小时心电」描述样本,那是不准确的,正确的写法是四十七人。§4.3 的案例里那两个编号,恰好都不在这四十七人之中,可作为提醒。
7.4 外部验证矩阵
| 验证类型 | 本集能否作为验证方 | 说明 |
|---|---|---|
| 跨中心验证 | 能,作为外部一端 | 单中心数据,天然是别人的外部集 |
| 跨人群验证 | 有限 | 只覆盖波士顿地区的糖尿病与对照 |
| 跨设备验证 | 能,用于多普勒与心电 | 设备型号与常见公开库不同 |
| 影像像素级验证 | 不能 | 无原始影像 |
| 纵向预测验证 | 能,但样本极小 | 41 人只能做效应量,不做准确率 |
| 指标可复现性验证 | 能 | 通道原始,可重算指标 |
作为外部验证集,它有一个别处少见的优点:标签干净。糖尿病与对照的分组是入组时确定的临床诊断,不像很多数据集的标签靠病历关键词抽取。用它做二分类的外部测试,标签噪声这一项可以放心。
7.5 它为何能持续:一份被二十篇论文反复取用的原始矿
Papers/ 目录里躺着二十篇 PDF,时间跨度从 2004 年到 2018 年。这不是装饰,是这份数据能活下来的原因:它不是一个为发布而生的数据集,而是一批人先做了十年研究、发表了二十篇论文,最后把底稿整理出来。每一次发表都为它增加一个已知结论,每一个结论又让后来者更愿意下载。
这种「论文先行」的路径带来两个后果。好的一面是元数据格外厚:协议、字典、说明表、论文方法段四层互证,任何可疑的数字都能找到出处。坏的一面是文档风格不统一——论文里的术语、表里的列名、文件里的代号,三套命名并存,读者要在它们之间来回翻译。
§8 生态位与历史
8.1 时间线上的四个节点
| 时间 | 事件 | 依据 |
|---|---|---|
| 2008 年 | 伦理批件签发,研究启动 | 批件号 2008P000286 |
| 2011 年 | 首篇主结果论文发表 | Diabetes Care 34 卷 2438 页 |
| 2020 年 10 月 9 日 | v1.0.0 上线 | 页面版本记录 |
| 2022 年 8 月 5 日 | v1.0.1 上线,现行版本 | 页面版本记录 |
采集起止年份官方没有公布。从批件年份与论文年份推断,主体采集应落在 2008 至 2014 年之间,但这只是推断,不能当作事实写进方法段。
8.2 方法论谱系
这份数据站在三条方法学传统的交叉口,每条传统都能在参考文献里找到源头。
| 传统 | 代表工作 | 在本数据里的体现 |
|---|---|---|
| 脑自动调节的传递函数分析 | 1998 年 Stroke 上的直立性低血压研究 | 倾斜段的流速与血压耦合 |
| 二氧化碳反应性的定量 | 2003 与 2004 年关于高碳酸反应的麻醉学研究 | 过度通气与再呼吸两段 |
| 动脉自旋标记灌注 | 2009 年 Neurology 的方法学论文 | CASL 区域灌注值 |
三条传统各自成熟,这份数据的贡献是把它们装进同一个受试者的同一天里。这个组合在 2008 年立项时是前沿做法,放到今天仍然是少数派——因为贵、慢、要求受试者耐受。
8.3 生态位:纵向的那一格
把公开的脑血管数据按两个轴摆开,一个轴是「有没有影像」,另一个轴是「有没有重复测量」,这份数据落在右上角,而右上角几乎是空的。
| 象限 | 特征 | 代表资源 | 数量感 |
|---|---|---|---|
| 有影像、无重复 | 横断面影像队列 | 多数大型影像库 | 多 |
| 无影像、有重复 | 生理信号纵向监测 | 可穿戴与重症数据 | 中 |
| 无影像、无重复 | 单次生理测量 | 各类挑战赛数据 | 多 |
| 有影像、有重复 | 同一人的多时点影像加生理 | 本篇 | 少 |
「少」不等于「好」,但意味着替代品难找。当研究问题正好落在这一格,选择余地只有个位数,评价标准也随之从「哪个更好」变成「哪个能对上我的时间尺度」。
8.4 与四类替代资源的取舍
| 替代资源类型 | 优势 | 劣势 | 何时选它 |
|---|---|---|---|
| 大型横断面影像库 | 样本量大、影像原始 | 无生理、无随访 | 做影像算法 |
| 单中心生理信号库 | 通道多、采样高 | 无影像、无临床结局 | 做信号处理 |
| 电子病历队列 | 规模大、结局全 | 无精细生理、无影像 | 做流行病学 |
| 本篇 | 三者兼有但都小 | 样本小、无原始影像 | 做机制与时序 |
取舍的关键在问题的粒度。问「糖尿病人的白质是不是更差」,大型影像库就够了;问「白质变差之前,血管反应性是不是先变差」,只有这一格能答。
§9 使用指引
9.1 三种角色的路径
| 角色 | 先做什么 | 再做什么 | 别做什么 |
|---|---|---|---|
| 统计与流行病学 | 只下 Data_Description 九个 CSV |
用 §5.5 的代码拼宽表 | 不要下整包,浪费时间 |
| 生理信号工程 | 先读通道说明表与协议方法段 | 按 §5.3 与 §5.4 读波形 | 不要假设通道顺序固定 |
| 影像与神经科学 | 先读 2009 年那篇灌注方法论文 | 再用第五部分做区域分析 | 不要期待原始 DICOM |
| 教学 | 用 §4.3 的案例讲数据连接 | 让学生自己从编号找到文件 | 不要一上来就讲统计 |
第四行值得展开。这份数据的教学价值被严重低估:它同时具备三种文件形态、两个时间点、两套命名规则、一处官方矛盾。让学生在两小时内把一名受试者的全部材料找齐,比讲十页数据管理理论有效。
9.2 一条最短的可用流程
从零到第一张组间对比图,最短路径大约六步。下面的脚本把它们串起来,假定只做汇总表分析。
#-- 最短流程:读表、配对、做一次组间对比
import pandas as pd
from scipy import stats
base = "data/cded/cded-1.0.1/Data_Description/"
demo = pd.read_csv(base + "GE-79_Summary_Table-Demographics-MRI-Part1.csv", low_memory=False)
cog = pd.read_csv(base + "GE-79_Summary_Table-Cognitive-Testing.csv", low_memory=False)
for df in (demo, cog):
df.columns = [c.strip() for c in df.columns]
df.rename(columns={df.columns[0]: "pid", df.columns[1]: "visit"}, inplace=True)
df["pid"] = df["pid"].astype(str).str.upper()
df["visit"] = pd.to_numeric(df["visit"], errors="coerce")
base_only = demo[demo["visit"] == 2]
mmse = [c for c in cog.columns if c.startswith("MMSE Total")][0]
merged = base_only.merge(cog[cog["visit"] == 2][["pid", "visit", mmse]], on=["pid", "visit"])
grp = merged.groupby("GROUP")[mmse].apply(list)
dm, ct = grp.get("Diabetes", []), grp.get("Control", [])
print(len(dm), len(ct))
print(stats.mannwhitneyu(dm, ct, alternative="two-sided"))
#-- 这一行只是示例;真正的分析要先处理年龄、教育年限与抑郁量表
六步是:下 CSV、统一键、筛基线、连接认知列、分组、检验。跑通之后再加协变量,比一开始就上复杂模型稳妥。
9.3 引用方式
官方在页面上要求三件事同时做:引数据集、引原始论文、引平台文献。三者缺一都不算完整引用。
#-- 数据集本体
Novak V, Quispe R. Cerebromicrovascular Disease in Elderly with Diabetes
(version 1.0.1). PhysioNet. 2022. doi:10.13026/00bm-0x81
#-- 原始论文(官方要求同时引用)
Novak V, Zhao P, Manor B, Sejdic E, Alsop D, Abduljalil A,
Roberson PK, Munshi M, Novak P. Adhesion molecules, altered
vasoreactivity, and brain atrophy in type 2 diabetes.
Diabetes Care. 2011;34(11):2438-41. doi:10.2337/dc11-0969
#-- 平台文献
Pollard T, Moody BE, Lehman L, et al. PhysioNet as a global platform
for biomedical research. Nature Health. 2026;1(8):792-795.
doi:10.1038/s44360-026-00096-z
版本号必须写。这份数据有 v1.0.0 与 v1.0.1 两个版本,两者 DOI 不同(后者另有 10.13026/bpnv-4b88 作为最新版标识)。只写主 DOI 不写版本号,读者无法判断你用的是哪一版。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 用途定位 | 适合做方法学验证、指标复算、教学与小样本假设检验 |
| 训练适用性 | 不适合从头训练影像或大模型,样本量与特征维度严重倒挂 |
| 微调适用性 | 可用于轻量微调或提示工程的领域适配,需明确标注来源 |
| 标签使用 | 分组标签为临床诊断,可用于二分类;其余为连续变量 |
| 数据切分 | 必须按受试者划分,禁止按行划分 |
| 隐私边界 | 已去标识,但样本极小,重识别风险不能视为零 |
| 生成内容 | 基于本数据生成或推断的内容须标注为推断,不得表述为原始记录 |
| 引用义务 | 数据集、原始论文、平台文献三者齐引,并写明版本号 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 这是一份 120 人的数据集 | 120 是招募数,有观测 69,完成随访 41 | 摘要与方法段两处口径 |
| 有 69 个人就有 69 份二十四小时心电 | 心电记录只有 47 条 | RECORDS 清单 |
| 包里有磁共振原始影像 | 只有处理后的区域数值 | 目录结构无 DICOM |
| 脑血管反应性可以直接取用 | 只给通道,指标要自算 | 页面只描述任务,未给指标 |
| 屏气指数是它的标准指标 | 官方用过度通气与再呼吸,未提屏气 | 协议与页面正文 |
| 它和 1023 号是同一批人 | 批件、协议号、人数都不同 | GE-79 对 GE-71 |
| 41 人是 120 人的随访率 | 分母官方未说明 | 摘要只写 41 人完成 |
| 所有受试者都在 55 至 75 岁 | 字典示例有一例 78 岁 | 数据字典年龄列 |
| 两年随访覆盖全部测量 | 中间三次门诊只有血与压 | 访视设计 |
| 可以按行随机划分训练测试 | 同一人两行,必然泄漏 | 宽表结构 |
FAQ
Q1:到底是 120 人还是 69 人?
官方两处口径不同。摘要写 69 名糖尿病与对照受试者的观测,方法段的招募小节写 120 人(60 例糖尿病加 60 例对照)。两个数字都是原文,差额的构成官方没有说明。做样本量规划时按 69 算更保守,做纵向分析按 41 算。
Q2:它需要签数据使用协议吗?
不需要。许可为 CC BY 4.0,属于开放访问,注册账号即可下载。义务是署名、给许可链接、标明是否修改。这一点与同平台上不少需要签协议、限制再分发的临床数据不同。
Q3:脑血管反应性是用屏气指数算的吗?
官方没有提到屏气指数。协议写的是三分钟过度通气造成低碳酸、三分钟二氧化碳再呼吸造成高碳酸,用多普勒记录流速随呼气末二氧化碳的变化。屏气指数是另一套简化做法,与这份协议不可直接互换。
Q4:磁共振原始影像在里面吗?
不在。包里给的是处理后的区域数值,包括灰白质与脑脊液体积、区域脑血流量、白质指标。序列含 T1、T2、CASL、FLAIR 与 DTI,但没有 DICOM。想换分割算法或做影像组学,这份数据支撑不了。
Q5:它和库内 1023 号那篇是同一批人吗?
不是。本篇协议号 GE-79,批件 2008P000286;1023 号是 GE-71,批件 2003P000013,86 人横断面,影像未上传。两份数据同实验室、同方法学传统,但人群与批件都不同。两份是否会重叠,官方未说明。
Q6:只有 41 人走完两年,还能做纵向建模吗?
能做配对分析与效应量估计,不能做需要分层的大样本建模。41 对前后测量适合看个体内变化与特征筛选,不适合按年龄性别再切子组,更不适合训练时间序列预测模型。
Q7:为什么说心电只有 47 份?
RECORDS 清单共一百五十七条,分三类:心电 47 条、基线 LabVIEW 69 条、两年 LabVIEW 41 条。心电条数少于基线人数,官方没有说明原因。凡是涉及二十四小时心电的分析,样本量都应以 47 起算。
Q8:两年随访之前有没有中间数据?
有访视,没有数据。第 3 至第 7 次门诊做空腹血糖、糖化、肾功能、体征、体成分与用药更新,但这些记录没有进随包的七张表。所以轨迹分析实际只有基线与两年两个锚点。
Q9:能不能直接拿它训练一个诊断模型?
不建议。特征数百列、样本 69 例、正负各半,任何有参模型都会过拟合。它更适合当外部验证集、指标复算集,或者小样本假设检验的材料。
Q10:文件名的 -v2 与 -v8 是什么意思?
是访视序号,不是版本号。-v2 对应基线第 2 次访视,-v8 对应两年后的第 8 次访视。把它误读成数据版本,会导致把两个时间点当成同一份数据的两次修订。
Q11:数据里有没有采集日期?
没有。全部日期被替换为访视序号,受试者用四位数编号。这提高了去标识强度,代价是无法计算两次访视之间的真实间隔,也无法研究季节性。
Q12:如果我只想要认知数据,需要下整包吗?
不需要。七张汇总表加数据字典都在 Data_Description 下,合计两兆以内,网页上可以逐个下载。整包两吉字节的大头是波形。
术语表
| 术语 | 英文 | 含义 |
|---|---|---|
| 脑微血管病 | cerebromicrovascular disease | 小动脉与毛细血管层面的脑血流失调与结构损伤 |
| 脑血管反应性 | cerebrovascular reactivity | 血管对二氧化碳等刺激改变口径的能力 |
| 经颅多普勒 | transcranial Doppler | 经颅窗超声测脑动脉血流速度 |
| 中脑动脉 | middle cerebral artery | 多普勒最常用的观测血管 |
| 前脑动脉 | anterior cerebral artery | 本数据同时记录的血管 |
| 呼气末二氧化碳 | end-tidal CO2 | 呼吸末气体中的二氧化碳分压,刺激强度的度量 |
| 高碳酸 | hypercapnia | 二氧化碳升高,血管扩张 |
| 低碳酸 | hypocapnia | 二氧化碳降低,血管收缩 |
| 再呼吸 | rebreathing | 反复吸入自身呼出气体以提高二氧化碳 |
| 过度通气 | hyperventilation | 加快加深呼吸以降低二氧化碳 |
| Valsalva 动作 | Valsalva maneuver | 屏气用力,胸腔内压骤升 |
| 头高位倾斜 | head-up tilt | 倾斜床立起,制造体位应激 |
| 坐立测试 | sit-to-stand | 从坐到站,测体位转换的循环响应 |
| 脑自动调节 | cerebral autoregulation | 血压波动时维持脑血流相对稳定的能力 |
| 动脉自旋标记 | arterial spin labeling | 用磁标记血液作内源示踪剂测灌注 |
| 连续动脉自旋标记 | continuous ASL | 连续标记的一种实现,本数据所用 |
| 弥散张量成像 | diffusion tensor imaging | 用水的弥散方向刻画白质纤维完整性 |
| 液体衰减反转恢复 | FLAIR | 抑制脑脊液信号的 T2 类序列,用来看白质病变 |
| 白质高信号 | white matter hyperintensity | 白质区的异常高信号,小血管病的影像标志 |
| 灰质分割 | gray matter segmentation | 把结构像分成灰质白质脑脊液的步骤 |
| 霍普金斯词语学习 | HVLT | 言语记忆测验,含学习与延迟回忆 |
| 复杂图形测验 | RCFT | 视空间记忆测验,含临摹与回忆 |
| 连线测验 | Trail Making Test | 执行功能测验,分 A 与 B 两段 |
| 简易智能状态检查 | MMSE | 总体认知筛查,天花板效应明显 |
| 糖化血红蛋白 | HbA1c | 近两三个月平均血糖的指标 |
附录 A:核心数字核对表
| 项 | 值 | 来源 | 来源层级 |
|---|---|---|---|
| 招募人数 | 120(60 例糖尿病、60 例对照) | 页面方法段 | 官方页面 |
| 有观测人数 | 69 | 页面摘要 | 官方页面 |
| 完成两年随访 | 41 | 页面摘要 | 官方页面 |
| 年龄范围 | 55 至 75 岁 | 页面摘要 | 官方页面 |
| 伦理批件 | 2008P000286 | 页面方法段与伦理段 | 官方页面 |
| 心电采样率 | 1000 Hz | 页面数据描述 | 官方页面 |
| 场强 | 3 特斯拉 | 页面摘要 | 官方页面 |
| 基线波形记录 | 69 条 | RECORDS 清单 | 官方文件 |
| 两年波形记录 | 41 条 | RECORDS 清单 | 官方文件 |
| 心电记录 | 47 条 | RECORDS 清单 | 官方文件 |
| 记录总数 | 157 条 | RECORDS 清单 | 官方文件 |
| 汇总表数量 | 7 张 | 页面数据描述 | 官方页面 |
| 数据字典规模 | 七百余行、二十六列 | 字典文件本身 | 官方文件 |
| 未压缩体积 | 3.7 GB | 页面文件区 | 官方页面 |
| 压缩包体积 | 2.1 GB | 页面文件区 | 官方页面 |
| 首次发布 | 2020-10-09,v1.0.0 | 版本记录 | 官方页面 |
| 现行版本 | 2022-08-05,v1.0.1 | 版本记录 | 官方页面 |
| 许可 | CC BY 4.0 | 许可文件与页面 | 官方页面 |
附录 B:数字的来源分层
| 层级 | 含义 | 本用的数字 |
|---|---|---|
| 官方页面 | 项目主页正文、摘要、方法段 | 120、69、41、55 至 75、1000 Hz、3T、3.7 GB、2.1 GB、两个版本日期 |
| 官方文件 | 随包 CSV 与清单文件 | 157 条记录、69 与 41 与 47 的分类计数、七张表、字典行列数 |
| 官方未公布 | 页面上查不到,本文明确标注 | 采集起止年份、性别构成、CASL 序列参数、缺失值规则、41 人的分母 |
凡是标为未公布的项,都不做估计。若某张图或某段文字需要这些数字,正确的写法是空着并注明,而不是从别处借一个。
附录 C:完整参考文献
| 编号 | 文献 | 用途 |
|---|---|---|
| 1 | Novak V, Quispe R. CDED v1.0.1. PhysioNet, 2022. doi:10.13026/00bm-0x81 | 数据集本体 |
| 2 | Novak V 等. Adhesion molecules, altered vasoreactivity, and brain atrophy in type 2 diabetes. Diabetes Care, 2011, 34(11):2438-41 | 官方要求同时引用的原文 |
| 3 | Pollard T 等. PhysioNet as a global platform for biomedical research. Nature Health, 2026, 1(8):792-795 | 平台文献 |
| 4 | Zhao 等. 灌注处理方法的原始论文. Neurology, 2009, 72:643-649 | CASL 处理细节 |
| 5 | Novak V 等. Autoregulation of cerebral blood flow in orthostatic hypotension. Stroke, 1998, 29:104-111 | 自动调节方法学源头 |
| 6 | Novak V 等. Cerebral blood flow velocity and periventricular white matter hyperintensities in type 2 diabetes. Diabetes Care, 2006, 29:1529-1534 | 白质与流速的早期结果 |
| 7 | Last D 等. Global and regional effects of type 2 diabetes on brain tissue volumes and cerebral vasoreactivity. Diabetes Care, 2007, 30:1193-1199 | 体积与反应性 |
| 8 | Kadoi Y 等. Diabetic patients have an impaired cerebral vasodilatory response to hypercapnia. Stroke, 2003, 34:2399-2403 | 高碳酸反应性对照 |
| 9 | Brownlee M. The pathobiology of diabetic complications. Diabetes, 2005, 54:1615-1625 | 机制背景 |
| 10 | Papers/ 目录内二十篇 PDF |
基于该库的既有研究 |
附录 D:任务代码
把「下载、解析、合表、出一张图」写成一个可以重复跑的脚本,是把这份数据用起来的最短闭环。下面这段假定已经解压到 data/cded/cded-1.0.1。
#-- 端到端:读清单、筛完成者、算个体内变化
import pandas as pd
from pathlib import Path
root = Path("data/cded/cded-1.0.1")
recs = (root / "RECORDS").read_text().splitlines()
#-- 从清单里分出三类记录
baseline = [r for r in recs if "Labview-v2" in r]
follow = [r for r in recs if "Labview-v8" in r]
ecg = [r for r in recs if "/ECG/" in r]
print(len(recs), len(baseline), len(follow), len(ecg))
def sid(path):
#-- 取文件名后四位数字作为受试者编号
stem = path.rsplit("/", 1)[-1]
return stem[1:5]
done = sorted({sid(p) for p in follow})
print(len(done), done[:5])
#-- 用完成者名单去过滤宽表,得到严格的纵向子集
wide = pd.read_parquet("cded_wide.parquet")
wide["pid"] = wide["pid"].str.extract(r"(\d{4})")[0]
long = wide[wide["pid"].isin(done)].sort_values(["pid", "visit"])
paired = long.groupby("pid").filter(lambda g: g["visit"].nunique() == 2)
print(paired["pid"].nunique(), paired.shape)
#-- 个体内变化:两年减基线,逐列做
num = paired.select_dtypes("number").drop(columns=["visit"])
delta = num.groupby(paired["pid"]).diff().dropna(how="all")
print(delta.shape)
delta.to_csv("cded_delta.csv", index=False)
这段代码有三处需要按你的实际目录调整:宽表文件名、编号列的清洗正则、以及数值列的范围。除此之外可以直接跑。
附录 E:如果只记五件事
| 序号 | 要点 |
|---|---|
| 一 | 三个样本量不要混:120 招募、69 有观测、41 完成两年 |
| 二 | 没有原始影像,只有处理后的区域数值 |
| 三 | 反应性指标要自算,官方用的是过度通气与再呼吸,不是屏气 |
| 四 | 心电只有 47 份,比有观测的人数少 |
| 五 | 与 1023 号、1022 号是同实验室的三条支线,不可合并计数 |
编辑说明
本篇依据 PhysioNet 项目页 v1.0.1、随包的文件清单、七张汇总表表头、数据字典与协议首页核对,核验时间为 2026 年 10 月 27 日。凡官方页面存在两处口径的,本文并列保留并在正文注明,不做取舍;凡官方未公布的,标注为未公布,不以外推填补。文中未对任何字段做分布统计,也未下载全量波形逐条清点,规模数字全部来自官方页面与清单文件的行数。封面提示词按站内模板填写,未生成图片。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- connectomedb — 共享标签:MRI / 脑影像 / 多模态
- ucddb — 共享标签:生理信号 / 多模态
- ixi-brain — 共享标签:MRI / 脑影像
- kiel-cardio — 共享标签:生理信号 / 多模态
- eye-tracking-ecg — 共享标签:生理信号 / 多模态
- vitaldb-arrhythmia — 共享标签:生理信号 / 多模态
- wesad — 共享标签:生理信号 / 多模态
- openneuro — 共享标签:生理信号 / 脑影像
- segthy — 共享标签:MRI / 多模态
- cerebral-perfusion-diabetes — 共享标签:生理信号 / 脑影像
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

