糖尿病脑微血管的两年随访 — CDED 多模态队列

120 招募 / 69 有观测 / 41 走完两年

来源 https://physionet.org/content/cded/1.0.1/发布时间: 2026-10-27最后更新: 2026-10-27 阅读 16
糖尿病脑微血管的两年随访 — CDED 多模态队列

信息速览

数据集名称糖尿病脑微血管的两年随访 — CDED 多模态队列
数据类型时序信号,波形,原始影像,元数据
规模120 人招募 / 69 人有观测 / 41 人完成两年随访
接入方式https://physionet.org/content/cded/1.0.1/
AI 就绪度

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 实验协议全文(根目录) PDF 方法段在第 13 至 20 页
Papers/ 二十篇相关论文 PDF 先读方法学那几篇
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 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

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

返回 AI-Ready 数据集