信息速览
CGMacros (cgmacros) — 连续血糖监测×营养饮食多模态数据集
AI-Ready Wikipedia 条目|千方病案医数集编辑部|最后复核:2026-10-10
数据集官方页:https://physionet.org/content/cgmacros/1.0.0/|版本 1.0.0|DOI 10.13026/3z8q-x658
§0 导读:这个数据集解决什么问题
一句话:CGMacros 是人类历史上第一个公开的「连续血糖监测(CGM)× 饮食营养监测」多模态数据集——它把「吃进去的每一口」和「身体随之而来的血糖波动」这两类数据,第一次以可下载、可复现、带基线的形式,交给了全世界的科研者。
三句话:
- 它采集了什么——45 名参与者(健康/前驱糖尿病/型 2 糖尿病各 15/16/14)× 连续 10 天自由生活,每人佩戴两只连续血糖监测仪(5 分钟与 15 分钟双采样),用 App 记录每一餐的碳水/蛋白/脂肪/纤维,拍下食物照片,佩戴 Fitbit 记录活动,并额外提供血液指标与肠道微生物组。
- 它能回答什么——「为什么同样一碗面,有人血糖飙升、有人纹丝不动?」「能不能只靠血糖曲线,就自动算出你吃了多少?」前者是餐后血糖响应(PPGR)预测,后者是作者提出的**「逆模型」自动饮食监测**。
- 为什么稀缺——个性化营养领域最有名的 CGM 数据集(Zeevi et al., Cell 2015,800 人 × 1 周)从未公开;CGMacros 是这一空白的第一个公开填补。
§0 读法三则:
- 只想下数据:直奔 §6 获取与许可——公开直链,无需申请,CC BY-NC-SA 4.0(注意 NC 非商业 + SA 相同方式共享双约束)。
- 要做建模:直奔 §4 数据构成、§5 任务与基线、§8 使用指南——务必按
participant_id做 GroupKFold,别踩同人泄漏。 - 要评估可用性:直奔 §7 坑点清单与 §9 DAIMS 表——自报误差、采样率不对称、用药混杂,是三条必须先想清楚的坎。
§1 数据集速览:十问十答
| # | 问题 | 答案 |
|---|---|---|
| 1 | 官方全名? | CGMacros: a scientific dataset for personalized nutrition and diet monitoring |
| 2 | 在哪发布? | PhysioNet(Database Open Access),v1.0.0 |
| 3 | 多少人? | 45 人(15 健康 / 16 前驱 / 14 T2D) |
| 4 | 多少天? | 连续 10 天自由生活 |
| 5 | 核心模态? | 双 CGM + 膳食宏量营养素 + 食物照片 + Fitbit 活动 + 血液 + 微生物组 |
| 6 | 采样率? | Libre Pro 15 min、Dexcom G6 Pro 5 min |
| 7 | 许可? | CC BY-NC-SA 4.0 |
| 8 | 怎么获取? | PhysioNet 公开直链,无需申请 |
| 9 | 有基线吗? | 有,parse_data.ipynb 内置 XGBoost PPGR 预测 |
| 10 | DOI? | 10.13026/3z8q-x658(v1.0.0) |
§2 名称与身份速查
| 项目 | 内容 |
|---|---|
| 官方英文全名 | CGMacros: a scientific dataset for personalized nutrition and diet monitoring |
| 简称 / slug | CGMacros / cgmacros |
| 发布平台 | PhysioNet(Database Open Access) |
| 版本 | 1.0.0(仅此一版) |
| 发布日期 | 2025-01-28 |
| DOI(v1.0.0) | 10.13026/3z8q-x658 |
| DOI(latest,官方另列) | 10.13026/8mak-rs10(存照,见 §12 存照附录) |
| 许可 | CC BY-NC-SA 4.0 |
| 牵头机构 | Sansum Diabetes Research Institute(SDRI);Texas A&M University CSE |
| 主要作者 | Ricardo Gutierrez-Osuna, David Kerr, Bobak Mortazavi, Anurag Das |
| 伦理审批 | Advarra IRB Pro00049227 |
| 临床试验注册 | ClinicalTrials.gov NCT04991142 |
| 资助 | NSF award No. 2014475 |
| 交付体积 | 未压缩 627.9 MB;ZIP 627.1 MB |
| 去标识 | 食物照片时间戳位移 ±N 天(365<N<720) |
| 关键词(官方) | continuous glucose monitors, obesity, postprandial glucose response, food macronutrients, metabolic models, food photographs, personalized nutrition |
§3 为什么它重要:个性化营养的数据缺口
3.1 饮食是慢性病头号可干预风险,但「测饮食」极难
不良饮食是 2 型糖尿病、肥胖、心血管疾病与部分癌症的主要诱因。既往跨国膳食风险研究指出,改善饮食可预防全球约 五分之一 的死亡——不良饮食导致的死亡数高于包括吸烟在内的其他风险因素。因此,准确监测「吃了什么」 是维持健康饮食、预防慢病的第一步。
然而当前主流饮食监测方法(食物日志、手机 App 自报)有两个顽疾:
- 依赖长时间人工录入,繁琐、易漏记;
- 自报误差大,估量与主观偏差显著。
可穿戴传感器(智能手表、智能餐具的内置加速度计)虽能通过手到嘴动作近似检测进食时刻,但这类公开数据集往往只含单一或极少数传感模态,只能支撑很窄的任务(如进食时刻识别、食物照片识别)。
3.2 「CGM + 膳食宏量营养素」配对数据的公开空白
真正稀缺的是同时含有膳食宏量营养素与其对应 CGM 血糖响应的公开数据。Zeevi et al.(Cell 2015)曾记录 800 名参与者 × 1 周的 CGM 响应与详细饮食记录,并借此训练出可基于人体测量、血液面板、肠道微生物组预测个体餐后血糖响应的机器学习模型——但该数据集从未公开,无法被更广泛的学术界复现与扩展。
CGMacros 的价值正在于此:
- 思路是 Zeevi 的「逆模型」:既然膳食宏量营养素决定餐后血糖曲线,那么反过来,用 CGM 血糖曲线的形态,就能估计这一餐的宏量营养素组成——这让「用 CGM 自动追踪饮食」成为可能。
- 数据是公开的:作者明确将 CGMacros 定位为「此类的第一个公开数据库」,希望借此「democratize(民主化)个性化营养研究与自动化饮食监测算法研究」。
3.3 从「单一模态」到「多模态」的范式跃迁
Zeevi 式研究多依赖「CGM + 自报饮食」;CGMacros 额外加入食物照片(视觉) 与 Fitbit 活动(运动),使血糖响应可以被拆解为「饮食 × 活动 × 个体表型」的联合函数。这为多模态健康建模提供了自然的实验场:
- 视觉 → 营养:照片识别食物 → 估算宏量营养素;
- 营养 → 血糖:宏量营养素 → PPGR 曲线;
- 活动 → 血糖调制:HR/Mets 如何改变同一餐的血糖曲线。
一句话:CGMacros 把过去锁在单一实验室里的「CGM × 膳食」金标准数据,第一次开放给了所有人,并把模态扩展到视觉与活动,打开了多条研究路径。
3.4 为什么是「现在」:代谢病与可穿戴的双重浪潮
CGMacros 出现的时机并非偶然,它踩在两条大趋势的交汇点上:
趋势一:代谢病负担持续攀升。 型 2 糖尿病、肥胖、代谢综合征的全球患病率长期上行,饮食是其中最可干预的一环。这催生了对「精准、可量化、可个体化」饮食监测方法的强烈需求。
趋势二:可穿戴 CGM 从医疗走向消费。 曾经属于糖尿病患者的血糖监测设备,正快速进入「健康人群」市场——人们开始关心「我吃什么血糖会怎么样」。设备普及带来数据洪流,但公开、带标签、有膳食配对的数据依然极度稀缺。
CGMacros 正是在这两股浪潮的交叉处,提供了一个可复现的基准:它既回应了临床与公卫对个性化营养的需求,又为消费级 CGM 数据提供了学术级的「锚」。
3.5 数据集的设计哲学:自然主义 + 半受控
传统研究常陷入两难:
- 要真实 → 自由生活观察研究,但变量失控、混杂重重;
- 要可控 → 实验室代谢研究,但脱离现实、外部效度低。
CGMacros 的取舍是半受控自然主义:受试者在自由生活环境中起居(真实),但早餐(受控奶昔)与午餐(标准化 Chipotle) 被刻意设计以覆盖宏量营养素梯度(可控)。这是一种「在真实世界里植入可控变量」的设计哲学,兼顾了生态效度与统计可辨识性。
这也解释了为什么它能同时支撑:
- 因果方向的推断(受控梯度让「宏量营养素 → 血糖」的效应可辨);
- 真实场景的泛化(自由生活让模型不脱离现实)。
§4 数据构成与规格:七大模态详解
CGMacros 的核心特征不是「数据量大」,而是模态多且同步。同一名参与者在同一段 10 天里,被同时记录了血糖、膳食、照片、活动、临床、微生态六类信息。以下逐模态拆解,并给出官方数据字典(DataDictionary_CGMacros-00X.csv)的字段级规格。
4.1 双连续血糖监测(CGM)
每名参与者佩戴两只盲态(blinded)CGM,一条采集得更密、一条更疏,互为交叉验证:
| 设备 | 佩戴位置 | 采样周期 | 量程 | 说明 |
|---|---|---|---|---|
| Abbott FreeStyle Libre Pro | 上臂 | 15 分钟 | 40-400 mg/dL | 专业版盲态 CGM,受试者不读值 |
| Dexcom G6 Pro | 腹部 | 5 分钟 | 40-400 mg/dL | 专业版盲态 CGM,时间分辨率更高 |
「盲态」这一设计至关重要:受试者看不到自己的血糖读数,因此不会因为「看到血糖高就改变饮食/行为」而污染观测数据——这保证了血糖响应反映的是自然情形,而非被读数反馈调节过的行为。
两条 CGM 采用不同采样周期(5min vs 15min),既是冗余备份,也天然构成「时间分辨率」的对照。对建模者而言,这意味着跨设备时间对齐是一道必须处理的工序(见 §7 坑 2)。
4.2 膳食宏量营养素(MyFitnessPal 自报)
受试者被训练使用 MyFitnessPal 手机 App 记录每一餐。数据字典给出的逐餐字段如下:
| 字段 | 范围 | 含义 |
|---|---|---|
Timestamp |
月/日/年 时:分 | 该 CGM 读数发生的日期位移后时间戳 |
Libre GL |
40-400 mg/dL | Libre Pro 报告血糖值 |
Dexcom GL |
40-400 mg/dL | Dexcom G6 Pro 报告血糖值 |
HR |
30-176 | Fitbit 智能手表报告的上一分钟平均心率(bpm) |
Calories (Activity) |
0-16.178 | Fitbit 估算的上一分钟消耗卡路里 |
Mets |
10-176 | Fitbit 提供的代谢当量(MET)×10 |
Meal Type |
Breakfast / Lunch / Dinner | 该餐的起始标记与餐别 |
Calories |
30-1180 | 该餐估算热量(kcal) |
Carbs |
0-176 | 该餐碳水估算(g) |
Protein |
3-176 | 该餐蛋白估算(g) |
Fat |
0-176 | 该餐脂肪估算(g) |
Fiber |
0-176 | 该餐纤维估算(g) |
Amount Consumed |
0-100 | 该餐被吃掉的比例(%) |
Image Path |
路径 | 该餐起始/结束照片在数据集目录中的位置 |
关键提示:宏量营养素均为 MyFitnessPal 估算 + 受试者自报,不是实验室称重,存在自报偏倚——这是使用该数据时必须叠加的误差项(见 §7 坑 1)。
4.3 食物照片(WhatsApp 采集)
受试者用 WhatsApp 拍摄每餐开始与结束的食物照片,照片存放路径由 Image Path 字段给出。这是 CGMacros 区别于纯「CGM + 数字记录」数据集的视觉模态——它让「图像识别食物 → 估算宏量营养素 → 预测血糖响应」这条全视觉链路具备训练可能。
为保护隐私,所有食物照片的时间戳被随机位移 ±N 天(365<N<720),即至少位移一年以上,使照片拍摄日期与真实生理时序解耦,降低再识别风险。这也意味着「照片时间 ↔ CGM 时间」的严格对齐需要在相对时序中重建(见 §7 坑 5)。
4.4 身体活动(Fitbit Sense)
受试者佩戴 Fitbit Sense 智能手表记录锻炼,数据以分钟级写入主表,包含三项活动派生量:
- HR(心率):30-176 bpm(上一分钟平均);
- Calories (Activity):0-16.178 kcal(上一分钟消耗);
- Mets:10-176(代谢当量 ×10,反映活动强度)。
这为「活动/运动对血糖的即时影响」建模提供了必需的自变量——毕竟血糖变化不只由「吃了什么」决定,也由「动了多少」决定。
4.5 血液分析(静态表型)
在筛选(day 1)阶段,研究者采集并检测了多项血液指标,作为参与者的基线健康参数:
- 糖化血红蛋白 HbA1c(分组依据);
- 空腹血糖(fasting glucose);
- 空腹胰岛素(fasting insulin);
- 甘油三酯(triglyceride);
- 胆固醇(cholesterol)。
这些正是 Zeevi 式「个性化血糖响应」模型中,除饮食外最重要的一类个体化预测因子。
4.6 人口学与人体测量
- 人口学:年龄(18-69 岁)、性别、种族;
- 人体测量:BMI(21-46 kg/m²) 等。
4.7 肠道微生物组
数据集另附 gut microbiome profiles(肠道微生物组谱),并配有数据字典 DataDictionary_Microbes.csv 与 DataDictionary_Gut_Health_Test.csv。微生物组是 Zeevi 式个性化营养模型中被反复强调的关键个体差异来源——它被认为能部分解释「同样的食物、不同的血糖反应」。(其样本量与测序平台细节官方页未披露,见 §12 遗留疑点。)
4.8 模态对齐示意
采集后形成的记录天然是多模态对齐的:
时间线(同一 participant)
├── CGM 血糖时序:Libre GL(15min) ─┬─ Dexcom GL(5min)
├── 活动时序:HR(1min) / CaloriesA(1min) / Mets(1min) ← Fitbit
├── 膳食事件:Meal Type(早/午/晚) + 宏量营养素 + Amount Consumed
├── 视觉:Image Path → 餐起始/结束照片
└── 静态表型:血液指标 + 微生物组 + 人口学/BMI(不随时间变化)
PPGR 的计算:对每一餐,取餐前基线到餐后若干小时的血糖曲线,计算曲线下面积(AUC) 与 增量曲线下面积(iAUC),作为该餐的血糖响应标签。官方附带的 parse_data.ipynb 即演示了这一流程。
§5 规模硬数字与采集协议
5.1 规模硬数字总表
| 维度 | 数值 | 来源口径 |
|---|---|---|
| 参与者总数 | 45 人 | 官方页 Abstract + Data Description |
| 健康组(HbA1c<5.7%) | 15 人 | 官方页 |
| 前驱糖尿病组(5.7%≤HbA1c≤6.4%) | 16 人 | 官方页 |
| 型 2 糖尿病组(HbA1c≥6.5%) | 14 人 | 官方页 |
| 连续监测天数 | 10 天(自由生活) | 官方页 |
| 年龄范围 | 18-69 岁 | 官方页 Data Description |
| BMI 范围 | 21-46 kg/m² | 官方页 Data Description |
| 招募年份 | 2021-2024 | 官方页 Data Description |
| CGM 设备数 | 每人不低于 2 台(Libre Pro + Dexcom G6 Pro) | 官方页 Methods |
| CGM 采样周期 | 15 min / 5 min | 官方页 Methods |
| 血糖量程 | 40-400 mg/dL | DataDictionary |
| 餐别 | 早 / 午 / 晚 3 餐 | 官方页 |
| 估算总餐次 | 约 1,350 餐(45×10×3,推算) | 本条目推算,见 §12 |
| 交付未压缩体积 | 627.9 MB | 官方页 Files |
推算标注:总餐次 1,350 系「45 人 × 10 天 × 3 餐」的设计推算,考虑
Amount Consumed与漏记,实际有效餐次可能更少。官方页未直接给出总餐数,请以实际下载文件为准。
5.2 采集协议(Protocol)
5.2.1 筛选与入组
- 招募地:Sansum Diabetes Research Institute(SDRI,圣巴巴拉,加州);
- day 1:初筛通过后签署知情同意书(Advarra IRB Pro00049227;NCT04991142);
- 筛选期测量:BMI、HbA1c、空腹血糖、空腹胰岛素、甘油三酯、胆固醇,并记录人口学(age/gender/race);
- 分组依据:按 HbA1c 分为无糖尿病、前驱糖尿病、T2D 三组。
5.2.2 设备佩戴与饮食设计
- CGM:Abbott FreeStyle Libre Pro 贴于上臂(15min);Dexcom G6 Pro 贴于腹部(5min);两者均盲态;
- 活动设备:发放 Fitbit Sense 记录锻炼;
- 饮食记录:训练使用 MyFitnessPal 记餐,用 WhatsApp 拍照;
- 餐食设计:每人记录 10 天三餐。
- 早餐:不同碳/蛋白/脂肪/纤维配比的蛋白奶昔;
- 午餐:订购自本地快餐连锁 Chipotle Mexican Grill;
- 晚餐:自由生活记录。
- 早餐与午餐被刻意设计以覆盖宏量营养素梯度(varying and known macronutrient compositions)——这是让模型学到「宏量营养素 → 血糖响应」映射的关键实验设计。
5.2.3 为什么「早餐奶昔 + 午餐 Chipotle」是关键设计
这是 CGMacros 最容易被忽略、却最值得称赞的方法学细节。若让受试者完全自由饮食,宏量营养素分布会高度集中(大家都吃得差不多),模型学不到「碳水从 20g 到 90g 的血糖差异」。通过:
- 早餐奶昔:精确控制碳/蛋白/脂肪/纤维配比,制造受控梯度;
- 午餐 Chipotle:标准化但多样化的快餐菜单,扩大真实食物覆盖;
研究者人为造出了「已知且多样的宏量营养素跨度」。这正是它区别于普通观察性队列的地方——它是带实验设计的自然主义数据集(semi-controlled free-living)。受试者仍处于自由生活环境,但关键餐次被注入了可控变量。
5.3 交付文件清单
| 文件 | 类型 | 内容 |
|---|---|---|
CGMacros_dateshifted365.zip |
ZIP | 主数据(日期位移版) |
DataDictionary_CGMacros-00X.csv |
CSV | 主表字段字典(血糖/活动/膳食) |
DataDictionary_Bio.csv |
CSV | 生物/表型字段字典 |
DataDictionary_Gut_Health_Test.csv |
CSV | 肠道健康检测字典 |
DataDictionary_Microbes.csv |
CSV | 微生物组字典 |
DataDictionary.pdf |
完整字典(合并版) | |
LICENSE.txt |
文本 | CC BY-NC-SA 4.0 全文 |
SHA256SUMS.txt |
文本 | 文件完整性校验和 |
5.4 数据质量与缺失处理要点
多模态可穿戴数据的质量陷阱集中在「缺失」与「对齐」两处。CGMacros 亦不例外,使用时须显式处理:
- CGM 缺失段:传感器脱落后会出现连续
NaN。短缺口(<30 min)可插值;长缺口(数小时)必须打缺失标记,不能盲目填充,否则会在 PPGR 窗口内制造虚假曲线。 - 采样率不对称缺失:Libre(15min)与 Dexcom(5min)在任一时点不可能都有值,合并时必须先重采样到统一网格。
- 膳食事件缺失:受试者可能有漏记(忘了记餐)。表现为「血糖出现餐后峰但无对应
Meal Type行」。建模时应把这类「未标记餐」作为负样本或噪声处理,而非当作「没吃」。 - 照片缺失:并非每餐都附照片,
Image Path可能为空。视觉-血糖联合任务须先统计照片覆盖率。 - 活动缺失:Fitbit 未佩戴时段 HR/Mets 为空,长时间空窗会影响「活动-血糖」关联估计。
Amount Consumed缺失:若该字段缺失,须保守假设为 100% 或按群体均值,并记录假设。
工程建议:在管线早期就建立一张「缺失率表」(每模态 × 每参与者),在做任何建模前先看缺失分布——这是多模态数据集的第一道卫生检查。
5.5 多模态价值矩阵
CGMacros 六模态的组合价值,可用下表理解:每一行是一种研究问题,每一列是所需模态。
| 研究问题 | CGM | 膳食宏量 | 照片 | 活动 | 血液 | 微生物组 |
|---|---|---|---|---|---|---|
| PPGR 预测(正向) | ✓ 标签 | ✓ 特征 | — | ○ 可选 | ✓ 特征 | ○ 可选 |
| 宏量营养素反推(逆向) | ✓ 特征 | ✓ 标签 | ○ | ○ | ○ | — |
| 食物图像识别 | — | ✓ 标签 | ✓ 特征 | — | — | — |
| 活动-血糖调制 | ✓ | ○ | — | ✓ 特征 | ○ | — |
| 个性化营养推荐 | ✓ | ✓ | — | ○ | ✓ | ✓ |
| 代谢表型聚类 | ○ | ○ | — | ○ | ✓ | ✓ |
(✓ = 必需,○ = 有用但非必需,— = 不涉及)
要点:CGMacros 的稀缺性不在单模态精度,而在于同一批人身上同时具备这些模态——这让「跨模态因果/相关研究」第一次在公开数据上成为可能。
5.6 与「纯健身房/纯实验室」数据集的差别
| 类型 | 代表 | 环境 | CGMacros 的不同 |
|---|---|---|---|
| 纯实验室代谢 | 代谢舱、间接测热 | 严格受控 | CGMacros 是自由生活,更贴近真实 |
| 纯观察队列 | 大型流行病学 | 自由但无密集传感 | CGMacros 密集传感(分钟级) |
| 纯设备厂商数据 | 某品牌 App 导出 | 自由但封闭 | CGMacros 公开可下载 |
| 半受控自然主义 | CGMacros | 自由生活 + 关键餐受控 | 独此一家 |
§6 任务与基线
6.1 正向任务:预测餐后血糖响应(PPGR)
给定一餐的膳食宏量营养素 + 人口学 + 健康参数(如 BMI),预测该餐的餐后血糖响应曲线特征——AUC 与 iAUC。
这是「个性化营养」的经典监督学习设定:同样的食物对不同人、甚至同一人在不同状态下,血糖反应可能天差地别;模型要学的正是「什么因素解释这种个体差异」。
官方提供的基线脚本 parse_data.ipynb 内置了 XGBoost 模型来完成这一预测。这是 PhysioNet 少见的「数据集自带可运行基线」设计——使用者下载后可立即跑通「解析 → 训练 → 预测」,无需从零搭特征工程。
6.2 逆向任务:用 CGM 反推膳食宏量营养素
作者明确提出这是 Zeevi 的「inverse(逆)模型」:既然「宏量营养素 → PPGR」可靠,那么反过来说,PPGR 曲线的形态应当可以反推出这一餐的宏量营养素组成。若成立,则意味着「用一根 CGM 就能自动追踪你吃了什么」,无需手动记餐。
CGMacros 的存在价值,正是为这一类逆向膳食监测研究提供公开带标签训练集。作者在 Abstract 中的措辞值得记录:他们把这视为**「democratize(民主化)个性化营养研究」** 的一步。
6.3 可用任务全景
| 任务类型 | 输入 | 输出/标签 | 说明 |
|---|---|---|---|
| PPGR 预测(正) | 宏量营养素 + 人口学 + 血液/BMI | AUC / iAUC | 官方 XGBoost 基线 |
| 宏量营养素反推(逆) | CGM 血糖曲线 | Carbs/Protein/Fat/Fiber | 作者提出的开放方向 |
| 进食时刻/餐别识别 | CGM + 活动时序 | Meal Type | 时序分类 |
| 食物图像识别 | 食物照片 | 食物类别/营养 | 视觉模态 |
| 活动-血糖关联 | HR/Mets + 血糖 | 血糖变化 | 多模态时序建模 |
| 个体化聚类 | 微生物组 + 表型 | 代谢表型分群 | 无监督 |
| 血糖预测(时序) | 历史 CGM | 未来 CGM | 时间序列预测 |
| 缺失模态补全 | 部分模态 | 缺失模态 | 跨模态生成 |
6.4 与 Zeevi 模型的定位对照
| 维度 | Zeevi et al.(Cell 2015) | CGMacros |
|---|---|---|
| 样本 | 800 人 × 1 周 | 45 人 × 10 天 |
| 公开性 | 未公开 | 公开(PhysioNet) |
| 模态 | CGM + 饮食 + 血液 + 微生物组 | CGM + 饮食 + 照片 + 活动 + 血液 + 微生物组 |
| 模型方向 | 正向(因素 → 血糖响应) | 正向 + 逆向(血糖 → 膳食) |
| 视觉模态 | 无 | 有食物照片 |
| 定位 | 学术里程碑但封闭 | 可复现的开放底座 |
结论:CGMacros 不是要「超越」Zeevi 的规模(45 < 800),而是要做 Zeevi 做不到的事——让数据开放、让模态更全、让逆向路径可训练。二者是互补而非替代关系。
§7 坑点清单:十个已踩过的坑
以下坑点基于 CGMacros 的数据设计特征与多模态数据集的通用陷阱,逐条编号,供复现者避雷。
坑 1:把 MyFitnessPal 自报宏量营养素当成「真值」。
Carbs/Protein/Fat/Fiber/Calories 全部是自报估算,非实验室称重。用来训练「宏量营养素 → PPGR」模型时,输入侧本身带噪,会低估模型上限,也让「逆模型」反推的目标带系统偏差。任何结论都应把自报误差作为误差项显式讨论。
坑 2:两路 CGM 采样率不同,直接对齐会错位。
Libre Pro 是 15 min、Dexcom G6 Pro 是 5 min。若直接按行合并或做滚动窗口,两路时间戳根本不在同一网格。必须先统一重采样(如都降到 15min 或都插值到 5min),并处理传感器脱落造成的长缺失段。
坑 3:Amount Consumed 未按比例折算。
该字段是「吃掉的比例(0-100%)」。若一餐只吃了 60%,但你仍用满量宏量营养素去预测血糖,就会系统性高估碳水摄入,污染 PPGR 标签。建模前必须按比例折算实际摄入量。
坑 4:忽略「盲态」设计,误把设备反馈当行为调节。
两只 CGM 都是盲态——受试者看不到读数。这正是数据集的价值所在。切勿在分析时假设存在「读数→行为」反馈回路;相反,盲态保证了观测到的是自然响应。同时也意味着没有「用户主动干预」标注,别去找不存在的事件字段。
坑 5:食物照片时间戳位移,破坏严格跨模态对齐。
照片被位移 ±N 天(365<N<720)做去标识。这意味着照片的绝对时间与 CGM/膳食记录的绝对时间不再严格一致。如果你的任务是「照片 → 该时刻血糖」的严格时间对齐训练,必须改用主表内的相对时序(如以 Meal Type 标记为锚),不能依赖照片文件名里的日期。
坑 6:非均衡队列 + 用药混杂。
三组 15/16/14 接近均衡,但 T2D 组极可能正在服药/胰岛素,而数据字典未单列用药字段。药物对餐后血糖的影响可能主导信号,若模型把「组别」当特征,学到的可能是「用药模式」而非「营养响应」。务必在讨论中声明这一混杂。
坑 7:按行随机划分训练/验证 → 同一人泄漏。
本数据集是面板数据:同一名参与者贡献约 30 餐、数千条 CGM 读数。若用普通 train_test_split,同一人的样本会同时出现在训练与验证集,模型只需记住「这个人」就能虚高准确率。必须按 participant_id 做 GroupKFold。
坑 8:把 Mets/HR 的编码上限当生理上限。
字典中 Protein/Fat/Fiber/Carbs 上限均为 176、Mets 上限 176、HR 上限 176——多个字段共享 176 这一整数,疑为编码/截断约定而非生理边界。直接当生理量做归一化会被误导。
坑 9:CC BY-NC-SA 的「NC + SA」双约束。
许可是非商业(NC)+ 相同方式共享(SA)。用于任何含商业性质的产品/服务前须先解决合规;且衍生物须以相同许可发布。相比 CC BY(如 PANDA-PLUS-Bench),约束更强,落地前务必读 LICENSE.txt。
坑 10:误以为这是「大样本」数据集。
45 人 × 10 天在深度学习的尺度上非常小。它的定位是高质量、多模态、可复现的「种子数据集」,不是「大数据」。追求 SOTA 泛化时,务必考虑其样本量上限,或与其他数据集联合。
附加坑:把「约 1,350 餐」当精确值。
该数字系推算(45×10×3),官方未直接给出,且未扣除 Amount Consumed<100% 与漏记——引用时须标「约 / 推算」。
§8 使用指南(代码示例)
CGMacros 的官方数据以 ZIP 分发(CGMacros_dateshifted365.zip),附四个数据字典 CSV、一个 PDF 字典、LICENSE 与 SHA256SUMS。下面给出典型读取与建模流程示意。
8.1 下载与校验
# 方式一:直接下载 ZIP(浏览器/curl 均可,公开直链无需申请)
curl -O https://physionet.org/files/cgmacros/1.0.0/CGMacros_dateshifted365.zip
# 方式二:wget 递归抓取整版文件
wget -r -N -c -np https://physionet.org/files/cgmacros/1.0.0/
# 校验(先说校验再解压)
# 下载 SHA256SUMS.txt 后:
sha256sum -c SHA256SUMS.txt
许可为 CC BY-NC-SA 4.0:可自由用于非商业用途,但须署名(BY)、非商业(NC)、相同方式共享(SA)。
8.2 载入主表(合成示例)
import pandas as pd
# 主数据字典字段(DataDictionary_CGMacros-00X.csv)
# Timestamp, Libre GL, Dexcom GL, HR, Calories (Activity), Mets,
# Meal Type, Calories, Carbs, Protein, Fat, Fiber, Amount Consumed, Image Path
df = pd.read_csv("CGMacros-001.csv", parse_dates=["Timestamp"])
print(df.columns.tolist())
print(df[["Timestamp", "Libre GL", "Dexcom GL", "HR", "Meal Type"]].head())
# 血糖量程过滤(字典规定 40-400 mg/dL)
glu = df[["Libre GL", "Dexcom GL"]].clip(lower=40, upper=400)
8.3 统一两路 CGM 的采样网格
def resample_cgm(df, target="15min"):
"""将两路不同采样率的 CGM 统一重采样到同一时间网格。"""
out = (df.set_index("Timestamp")[["Libre GL", "Dexcom GL"]]
.resample(target)
.mean() # 15min 桶内取均值
.interpolate(limit=2)) # 短缺失线性插值,长缺失保留 NaN
return out
grid = resample_cgm(df, target="15min")
# 提示:长缺失段(传感器脱落)不要过度插值,应显式打缺失标记。
8.4 构建餐后血糖响应(PPGR)特征
import numpy as np
def ppgr_features(participant_df, meal_ts, horizon_min=180):
"""
对某一餐,取餐后 horizon_min 分钟的 CGM 曲线,
计算 AUC 与增量 AUC(iAUC)。
"""
end_ts = meal_ts + pd.Timedelta(minutes=horizon_min)
w = participant_df[(participant_df["Timestamp"] >= meal_ts) &
(participant_df["Timestamp"] <= end_ts)].copy()
w = w.dropna(subset=["Dexcom GL"]).sort_values("Timestamp")
if len(w) < 3:
return np.nan, np.nan
t = (w["Timestamp"] - meal_ts).dt.total_seconds() / 60.0 # 分钟
g = w["Dexcom GL"].to_numpy()
baseline = g[0]
auc = np.trapz(g, t) # 总 AUC
iauc = np.trapz(np.clip(g - baseline, 0, None), t) # 仅基线以上面积
return auc, iauc
meals = df[df["Meal Type"].notna()]
# for ts in meals["Timestamp"]: auc, iauc = ppgr_features(df, ts)
8.5 按比例折算实际摄入(坑 3 的正解)
# Amount Consumed 是 0-100 的百分比
for col in ["Calories", "Carbs", "Protein", "Fat", "Fiber"]:
df[f"{col}_intake"] = df[col] * df["Amount Consumed"] / 100.0
8.6 XGBoost 基线(对齐官方 parse_data.ipynb 思路)
from xgboost import XGBRegressor
from sklearn.model_selection import GroupKFold
from sklearn.metrics import mean_absolute_error
# 特征:膳食宏量营养素 + 人口学 + 健康参数
FEATS = ["Calories_intake", "Carbs_intake", "Protein_intake", "Fat_intake",
"Fiber_intake", "BMI", "HbA1c", "age"]
def train_baseline(X, y, groups):
gkf = GroupKFold(n_splits=5) # 按参与者分组,防同人泄漏
scores = []
for tr, va in gkf.split(X, y, groups):
model = XGBRegressor(n_estimators=400, max_depth=4,
learning_rate=0.05, subsample=0.8)
model.fit(X.iloc[tr], y[tr])
pred = model.predict(X.iloc[va])
scores.append(mean_absolute_error(y[va], pred))
return float(np.mean(scores))
# 关键:务必 GroupKFold 按 participant_id 分组,
# 否则同一人的多餐会同时进入训练/验证,导致乐观偏差。
8.7 使用要点清单
- 按参与者分组交叉验证(GroupKFold),避免「同一人泄漏」;
- 统一 CGM 采样网格后再算 PPGR;
- Amount Consumed <100% 的餐需按比例折算宏量营养素;
- 不要用食物照片的背景做捷径特征(隐私 + 泛化双重风险);
- 照片时间戳已位移,跨模态对齐以主表相对时序为准;
- NC 条款:任何下游用途若含商业性质,须先解决许可。
8.8 特征工程细节建议
在官方 XGBoost 基线上,可进一步构造的特征族:
| 特征族 | 示例 | 作用 |
|---|---|---|
| 基线血糖 | 餐前 15/30/60 min 均值、餐前斜率 | 捕捉「起跑线」状态 |
| 膳食宏量 | 碳水/蛋白/脂肪/纤维(克 + 占比 + 折算实际摄入) | 主自变量 |
| 膳食复合 | 碳水蛋白比、碳脂比、总热量、纤维/碳水比 | 交互效应 |
| 时间/餐别 | 早/午/晚 one-hot、距上一餐时长 | 昼夜与间隔效应 |
| 活动 | 餐后 30/60 min 的 Mets 峰值、Calories 累计 | 运动调制 |
| 个体表型 | BMI、年龄、HbA1c、性别 | 个体差异主因 |
| 个体化编码 | participant_id 的 target-encoding(仅在训练折内计算) | 捕捉未观测个体偏置(注意泄漏) |
警告:
participant_id的目标编码必须在训练折内拟合,否则会引入泄漏;且若用 GroupKFold,个体编码的意义会大幅降低。
8.9 时间序列建模(进阶)
对「未来血糖预测」任务,可把 CGM 视为多变量时序:
# 伪代码:滑动窗口构造监督样本
# 输入:过去 L 个时间步的 [Libre, Dexcom, HR, Mets]
# 输出:未来 H 个时间步的 Dexcom GL
def make_windows(df, L=12, H=3):
cols = ["Libre GL", "Dexcom GL", "HR", "Mets"]
X = df[cols].to_numpy()
xs, ys = [], []
for i in range(len(X) - L - H):
xs.append(X[i:i+L])
ys.append(X[i+L:i+L+H, 1]) # 预测 Dexcom
return np.array(xs), np.array(ys)
# 可用 LSTM / TCN / Transformer;务必按 participant 分组切分。
# 单一模态缺失(如只有 CGM)时的补全,是多模态研究的天然题目。
8.10 复现检查清单
- [ ] 已用 SHA256SUMS.txt 校验文件;
- [ ] 已重采样两路 CGM 到统一网格;
- [ ] 已按 Amount Consumed 折算宏量营养素;
- [ ] 已按 participant_id 分组切分;
- [ ] 已标注并单独处理长缺失段;
- [ ] 已声明自报偏倚与用药混杂;
- [ ] 已确认用途符合 CC BY-NC-SA(非商业 + 相同方式共享)。
§9 数据可用性与元数据(DAIMS 表)
下表按 DAIMS(Data Asset Information Metadata Standard) 核心字段整理 CGMacros 的元数据快照。
| DAIMS 字段 | 内容 |
|---|---|
| Dataset Title(名称) | CGMacros: a scientific dataset for personalized nutrition and diet monitoring |
| Identifier(标识) | DOI:10.13026/3z8q-x658(latest 另列 10.13026/8mak-rs10);PhysioNet slug:cgmacros |
| Version(版本) | 1.0.0(2025-01-28,唯一版本) |
| Description(描述) | 45 名参与者 × 10 天自由生活的双 CGM 血糖、膳食宏量营养素、食物照片、身体活动、血液分析与肠道微生物组的多模态数据集 |
| Publisher(发布者) | PhysioNet |
| Contact/Study Sponsor(联系/申办) | Sansum Diabetes Research Institute(SDRI);Texas A&M University CSE;NSF award No. 2014475 |
| Created/Temporal Coverage(时间覆盖) | 受试者招募 2021-2024;发布 2025-01-28 |
| Subject/Domain(主题域) | 个性化营养、连续血糖监测、代谢疾病(前驱糖尿病/T2D)、可穿戴传感、多模态健康 |
| Data Modalities(模态) | 时序(CGM 5/15min、Fitbit 1min)、事件表(膳食)、图像(食物照片)、表格(血液/人口学/微生物组) |
| Population(人群) | 45 人;15 健康 / 16 前驱 / 14 T2D;年龄 18-69;BMI 21-46 kg/m² |
| Provenance(来源链) | SDRI 招募 → 设备采集(Libre Pro/Dexcom G6 Pro/Fitbit Sense/MyFitnessPal/WhatsApp)→ 去标识(日期位移 ±365~720 天)→ PhysioNet 发布 |
| Ethics/Consent(伦理) | Advarra IRB Pro00049227;NCT04991142;受试者签署知情同意 |
| License/Access(许可与获取) | CC BY-NC-SA 4.0;Database Open Access,公开直链 |
| Format/Size(格式/体积) | ZIP + CSV + PDF + ipynb;未压缩 627.9 MB,ZIP 627.1 MB |
| Integrity(完整性) | SHA256SUMS.txt |
| De-identification(去标识) | 食物照片时间戳位移 ±N 天(365<N<720);人口学匿名 |
| Redistribution(再分发) | 允许(非商业 + 相同方式共享);须署名 |
| Baseline/Artifacts(基线/工件) | parse_data.ipynb(XGBoost PPGR 基线) |
| Known Limitations(已知局限) | 自报误差、小样本、用药混杂、采样率不对称(详见 §7) |
| AI-Ready 评分(本条目评估) | 可获取性 ★★★★★(公开直链)|文档完整度 ★★★★★(四套字典 + PDF)|可复现性 ★★★★☆(自带基线代码,但缺用药字段)|多模态价值 ★★★★★(六模态同步)|规模 ★★★☆☆(45 人,种子级) |
9.1 AI-Ready 光谱定位
在千方病案医数集的「AI-Ready 可获取性光谱」上,CGMacros 属于**最右侧(最开放)**的一档:
| 档位 | 代表 | 获取方式 |
|---|---|---|
| 完全开放 | CGMacros、PANDA-PLUS-Bench | 公开直链,无需申请 |
| 请求制 | PANDA-PLUS 掩码 | 向通讯作者申请 |
| 认证访问 | MIMIC-IV 系列 | 需 PhysioNet 认证 + 培训 |
| 受限/封闭 | Zeevi 2015 | 未公开 |
意义:CGMacros 落在最开放档,且自带文档与基线代码——这意味着研究者从「看到条目」到「跑出第一个 PPGR 预测」的路径极短,是该数据集对社区最大的贡献之一。
§10 生态与互链点
10.1 上游依赖与资源
- PhysioNet:CGMacros 的托管平台与分发渠道(Database Open Access);
- ClinicalTrials.gov NCT04991142:原始研究的临床试验注册号,可追溯研究设计与终点;
- Zeevi et al., Cell 2015:个性化营养 CGM 研究的奠基性工作(800 人 × 1 周,未公开),CGMacros 在 Abstract 中将其定为「inverse 模型」的参照与空白填补对象;
- 会议论文锚:Improved Calorie Estimation, IEEE EMBS BHI 2023。
10.2 库内可互链条目
| 库内条目(rid) | 互链理由 | 建议 |
|---|---|---|
mimic-iv-ext-ecg-glucose(rid 998/999) |
同为「血糖」主题,构成临床 vs 生活对照 | 强互链 |
wearable-exam-stress(rid 807) |
可穿戴生理信号 × 场景化应激 | 中互链 |
big-ideas-glycemic-wearable(本批,DB 未入库) |
血糖变异度 + 腕戴可穿戴 | 需消歧 + 互链 |
maternal-ultrasound-nutrition(rid 615) |
营养主题 | 弱互链 |
10.3 与 mimic-iv-ext-ecg-glucose 的差异辨析(强互链对象)
两者都含「血糖」,但口径完全不同,是最容易被误认作撞库的一对:
| 维度 | CGMacros | mimic-iv-ext-ecg-glucose(rid 998/999) |
|---|---|---|
| 场景 | 自由生活(院外) | ICU 重症监护(院内) |
| 血糖来源 | 可穿戴 CGM(每 5/15 分钟) | 实验室采血(间断) |
| 血糖性质 | 组织间液葡萄糖 | 血浆葡萄糖 |
| 配对模态 | 膳食 + 照片 + 活动 | 12 导联 ECG |
| 核心问题 | 个性化营养 / 膳食监测 | 危重症血糖-心电关联 |
| 人群 | 健康 + 前驱 + T2D | 危重症患者 |
结论:二者恰好构成「院内临床血糖动力学 vs 院外生活血糖动力学」的互补,是绝佳的对照互链对。
10.4 与 big-ideas-glycemic-wearable 的消歧说明(重要)
本批同时存在另一个血糖/可穿戴条目,必须辨析,避免被误认为撞库:
| 维度 | CGMacros(本条目) | Glycemic Variability and Wearable Device Data |
|---|---|---|
| slug / 负责代理 | cgmacros / agent-d-cgmacros |
big-ideas-glycemic-wearable / agent-f-bigideasgl |
| 官方平台 | PhysioNet | PhysioNet |
| 发布 / 版本 | 2025-01-28 / v1.0.0 | 2023-09-18 / v1.1.2 |
| 作者 / 机构 | Gutierrez-Osuna, Kerr, Mortazavi, Das(SDRI + Texas A&M) | Peter Cho, Juseong Kim, Brinnae Bent, Jessilyn Dunn(BIG IDEAs Lab,Duke) |
| 目标人群 | 健康 + 前驱 + T2D 三组 | 正常血糖(normoglycemic)/ 前驱人群,聚焦血糖变异性 |
| 核心模态 | 双 CGM + 膳食宏量 + 照片 + Fitbit + 血液 + 微生物组 | 血糖 + 腕戴可穿戴(PPG/EDA/温度等) |
| 核心任务 | 个性化营养 / PPGR 预测 / 膳食反推 | 血糖变异性(GV)biomarkers 表征 |
| 规模 | 45 人 × 10 天 | 以官方页为准(本条目不越权描述) |
结论:二者主题同域但任务、人群、模态组合不同,不构成撞库,可同批入库。互链时应在各自正文明确「对方是另一方」,避免读者混淆。
10.5 库内互链关系图
┌─────────────────────────────┐
│ cgmacros (本条目) │
│ CGM × 营养饮食 × 多模态 │
└──────────────┬──────────────┘
强互链 │ 中互链
┌───────────────────────────┼────────────────────────┐
▼ ▼ ▼
┌──────────────────┐ ┌───────────────────────┐ ┌────────────────────┐
│ mimic-iv-ext-ecg │ │ big-ideas-glycemic- │ │ wearable-exam- │
│ -glucose │ │ wearable (本批, 消歧) │ │ stress (rid 807) │
│ rid 998/999 │ │ 血糖变异 × 腕戴 │ │ 可穿戴 × 应激 │
│ 院内血糖 vs 院外 │ └───────────────────────┘ └────────────────────┘
└──────────────────┘
10.6 应用场景蓝本
CGMacros 可支撑的典型科研/产品场景蓝本:
| 场景 | 输入 | 输出 | 目标用户 |
|---|---|---|---|
| 个人血糖顾问 | 当餐宏量营养素 + 个体表型 | 预测 PPGR 曲线 | 消费级 CGM 用户 |
| 膳食自动记账 | CGM 曲线 | 宏量营养素估计 | 数字健康 App |
| 饮食处方仿真 | 候选饮食方案 | 预期血糖影响 | 临床营养师 |
| 食物图像营养估计 | 食物照片 | 卡路里/宏量素 | 减重/慢病管理 |
| 运动-饮食联合建议 | 活动 + 饮食 | 血糖稳定策略 | 运动健康平台 |
| 代谢表型分诊 | 表型 + 微生物组 | 风险分层 | 预防医学 |
| 算法基准 | CGMacros 全量 | 方法对比 | 学术界 |
注意:涉及面向消费者的商业化场景时,须先解决 NC(非商业) 许可约束。
§11 总结
11.1 一段话总括
CGMacros 是第一个公开的「连续血糖 × 饮食营养」多模态数据集。它以 45 名参与者(健康/前驱/T2D 三组)连续 10 天的自由生活为窗口,同步记录了双 CGM 血糖时序、逐餐膳食宏量营养素、食物照片、Fitbit 活动、血液指标与肠道微生物组,并以 CC BY-NC-SA 4.0 完全开放、附 XGBoost 基线。它填补了 Zeevi et al.(Cell 2015)留下的公开空白,为个性化营养、餐后血糖响应预测、以及「用 CGM 反推膳食」的自动饮食监测三类研究提供了可复现的种子底座。
11.2 三类读者的行动建议
- 营养/代谢研究者:这是目前唯一公开的「CGM + 已知宏量营养素梯度」数据,最适合做个体化血糖响应的可复现研究。
- ML/时序建模者:六模态同步 + 自带基线,是练手多模态对齐、面板数据建模、跨模态补全的优质小数据集——但务必 GroupKFold。
- 可穿戴/饮食监测产品团队:注意 NC 非商业许可;要想商用,须先解决合规,或寻求作者授权。
11.3 一句话记忆点
CGMacros = 「第一份公开的『吃了什么 ↔ 血糖怎么变』配对档案」——45 人、10 天、双 CGM、六模态、CC BY-NC-SA 开放。
11.4 面向未来:这个数据集还能长出什么
CGMacros 的价值会随着下游工作累积而放大。以下方向均尚未被官方设限,任何团队都可基于 CC BY-NC-SA 4.0 探索:
- 血糖基础模型(CGM Foundation Model):以 CGMacros 为预训练语料之一,学习跨人群的血糖动态表征;
- 多模态大模型对齐:把「食物照片 → 营养标签 → 血糖曲线」串成一条可训练的视觉-时序链路;
- 零样本膳食识别:用逆模型在未见食物上估计宏量营养素;
- 个体化数字孪生:为每名参与者拟合「饮食/活动 → 血糖」的个人化模型,用于饮食处方仿真;
- 隐私保护学习:在 NC 约束下做联邦学习风格的跨机构协作;
- 偏差审计:以本数据集为例,系统研究自报偏倚、用药混杂对代谢建模的影响。
11.5 数据集在千方病案医数集中的定位
| 维度 | 评价 |
|---|---|
| 主题稀有度 | 极高——库内暂无同类的「CGM × 膳食 × 多模态」公开数据集 |
| 可获取性 | 高——公开直链 |
| 模态丰富度 | 极高——六模态同步 |
| 规模 | 中——种子级,非大数据 |
| 许可宽松度 | 中——NC + SA,弱于 CC BY |
| 最适合角色 | 「代谢可穿戴 × 个性化营养」主题的锚点条目 |
FAQ(高频问答 24 问)
Q1:CGMacros 到底包含多少人的数据?
A:45 名参与者。按糖化血红蛋白(HbA1c)分为三组:15 名健康成人(HbA1c<5.7%)、16 名前驱糖尿病(5.7%≤HbA1c≤6.4%)、14 名型 2 糖尿病(HbA1c≥6.5%)。每人均连续记录 10 天。
Q2:它是「连续」血糖还是「间断」血糖?
A:连续。每人佩戴两只 CGM(连续血糖监测仪):Abbott FreeStyle Libre Pro(15 分钟采样)与 Dexcom G6 Pro(5 分钟采样),量程均为 40-400 mg/dL。
Q3:CGM 为什么是「盲态」的?
A:两只 CGM 均盲态(blinded),受试者看不到自己的血糖读数。这样能防止「看到血糖后改变饮食/行为」的反馈污染,使观测反映自然血糖响应。
Q4:膳食数据从哪来,准吗?
A:来自受试者用 MyFitnessPal App 的自报记录,含 Calories/Carbs/Protein/Fat/Fiber/Amount Consumed。属自报估算,非实验室称重,存在自报偏倚——使用时须显式作为误差项(见 §7 坑 1)。
Q5:有食物照片吗?
A:有。受试者用 WhatsApp 拍摄每餐起始与结束照片,路径存于 Image Path 字段。为隐私,照片时间戳位移 ±N 天(365<N<720)(见 §7 坑 5)。
Q6:活动数据是什么设备采的?
A:Fitbit Sense 智能手表,以分钟级记录 HR(心率)、Calories (Activity)、Mets(代谢当量×10)。
Q7:有没有血液和微生物组数据?
A:有。含 HbA1c、空腹血糖、空腹胰岛素、甘油三酯、胆固醇等血液分析,以及肠道微生物组(gut microbiome) 谱;另有人口学与 BMI 等人体测量。
Q8:数据是什么许可?能商用吗?
A:CC BY-NC-SA 4.0(署名-非商业-相同方式共享)。可自由用于非商业用途,须署名且衍生物须相同许可;商业用途受限(见 §7 坑 9)。
Q9:怎么获取?要申请吗?
A:公开直链,无需申请。在 PhysioNet 页面直接下载 ZIP,或用 wget -r -N -c -np https://physionet.org/files/cgmacros/1.0.0/。
Q10:多大体积?
A:未压缩 627.9 MB;ZIP 下载 627.1 MB。附带数据字典、LICENSE 与 SHA256SUMS。
Q11:DOI 是什么?
A:版本 1.0.0 的 DOI 为 10.13026/3z8q-x658。官方页另列 latest DOI 10.13026/8mak-rs10(详见 §12 存照附录)。
Q12:它和 Zeevi et al.(Cell 2015)什么关系?
A:Zeevi 记录了 800 人 × 1 周的 CGM + 饮食并训练了个性化营养模型,但数据未公开。CGMacros 是其「inverse 模型」思路的公开填补——用「PPGR 反推宏量营养素」实现自动饮食监测(见 §3、§6)。
Q13:官方有现成基线代码吗?
A:有。附带 parse_data.ipynb,内含 XGBoost 基线,用于预测每餐 PPGR 的 AUC / iAUC。
Q14:适合做什么任务?
A:PPGR 预测、宏量营养素反推、进食时刻识别、食物图像识别、活动-血糖关联、代谢表型聚类(见 §6.3)。
Q15:做交叉验证要注意什么?
A:必须按 participant_id 分组(GroupKFold),否则同一人的多餐会同时进入训练/验证,导致乐观偏差(见 §7 坑 7)。
Q16:样本量够吗?
A:45 人 × 10 天在深度学习尺度和「大」沾不上边。它是高质量多模态「种子数据集」,不是大数据(见 §7 坑 10)。
Q17:和库内的 mimic-iv-ext-ecg-glucose 有什么区别?
A:后者是 ICU 场景、12 导联 ECG 与采血血糖的配对;CGMacros 是自由生活的可穿戴 CGM + 饮食。二者是「院内血糖 vs 院外血糖」的对照(见 §10.3)。
Q18:和 big-ideas-glycemic-wearable 会撞库吗?
A:不会。CGMacros 关注个性化营养/膳食,后者关注血糖变异性 biomarkers,人群与模态组合均不同(见 §10.4 消歧表)。
Q19:年龄和 BMI 范围是多少?
A:年龄 18-69 岁,BMI 21-46 kg/m²。边界外人群代表性弱。
Q20:如何确认下载文件完整?
A:用随附的 SHA256SUMS.txt 做 sha256sum -c 校验。
Q21:为什么早餐是「蛋白奶昔」?
A:这是刻意的实验设计——奶昔可精确控制碳/蛋白/脂肪/纤维配比,制造受控的宏量营养素梯度,让模型能学到「宏量营养素跨度 → 血糖差异」的映射(见 §5.2.3)。
Q22:Amount Consumed 怎么用?
A:它是「吃掉的比例(0-100%)」。建模前须把宏量营养素按比例折算为实际摄入量,否则会系统性高估(见 §7 坑 3、§8.5)。
Q23:多个字段上限都是 176,是生理上限吗?
A:不是。多个字段共享 176 这一整数,疑为编码/截断约定(见 §7 坑 8),不要当生理边界归一化。
Q24:T2D 组在服药,会影响建模吗?
A:会影响。数据字典未单列用药字段,药物可能主导血糖信号,模型可能学到「用药模式」而非「营养响应」(见 §7 坑 6)。
Q25:为什么 CGMacros 叫「Macros」?
A:源于 macronutrients(宏量营养素)——碳水、蛋白、脂肪、纤维。数据集的核心正是把「宏量营养素」与「血糖响应」配对,故名。
Q26:它在哪注册了临床试验?
A:ClinicalTrials.gov NCT04991142,伦理审批为 Advarra IRB Pro00049227。
Q27:谁资助的?
A:美国国家科学基金会(NSF),award No. 2014475。
Q28:食物照片是餐前还是餐后拍?
A:餐起始与结束各拍一张,路径由 Image Path 字段给出。
Q29:数据里有几套数据字典?
A:四套 CSV(主表 / Bio / Gut_Health_Test / Microbes)+ 一个合并 PDF。
Q30:能直接拿来跑深度学习大模型吗?
A:规模偏小(45 人),更适合方法验证、特征工程、迁移学习,或作为更大规模预训练数据的一部分。
Q31:有没有官方预训练模型?
A:官方仅提供 XGBoost 基线脚本(parse_data.ipynb),未提供预训练深度模型。
Q32:这个数据集和「糖尿病诊断」有关吗?
A:它不用于诊断,而是用于研究饮食与血糖响应关系、以及饮食监测算法。分组(健康/前驱/T2D)是为了研究不同代谢状态下的差异。
事实清单(硬事实 40 条)
- 官方全名:CGMacros: a scientific dataset for personalized nutrition and diet monitoring。
- 发布平台:PhysioNet(Database Open Access)。
- 版本:1.0.0,唯一的版本。
- 发布日期:2025-01-28。
- DOI(v1.0.0):10.13026/3z8q-x658。
- 官方页另列 latest DOI:10.13026/8mak-rs10。
- 许可:CC BY-NC-SA 4.0。
- 参与者:45 人。
- 健康组:15 人(HbA1c<5.7%)。
- 前驱糖尿病组:16 人(5.7%≤HbA1c≤6.4%)。
- 型 2 糖尿病组:14 人(HbA1c≥6.5%)。
- 连续天数:10 天(自由生活)。
- 年龄范围:18-69 岁。
- BMI 范围:21-46 kg/m²。
- 招募年份:2021-2024。
- CGM 设备:Abbott FreeStyle Libre Pro(15min,上臂)。
- CGM 设备:Dexcom G6 Pro(5min,腹部)。
- 两 CGM 均盲态(blinded)。
- 血糖量程:40-400 mg/dL。
- 活动设备:Fitbit Sense(HR/Calories/Mets,分钟级)。
- 膳食记录 App:MyFitnessPal。
- 食物照片采集 App:WhatsApp。
- 餐别:早/午/晚三餐。
- 早餐:不同配比的蛋白奶昔。
- 午餐:Chipotle Mexican Grill。
- 血液指标:HbA1c / 空腹血糖 / 空腹胰岛素 / 甘油三酯 / 胆固醇。
- 附加模态:肠道微生物组。
- 伦理审批:Advarra IRB Pro00049227。
- 临床试验注册:NCT04991142。
- 资助:NSF award No. 2014475。
- 交付体积:未压缩 627.9 MB;ZIP 627.1 MB。
- 基线:parse_data.ipynb(XGBoost,预测 AUC/iAUC)。
- 官方关键词:continuous glucose monitors / obesity / postprandial glucose response / food macronutrients / metabolic models / food photographs / personalized nutrition。
- 数据字典主表字段共 14 列(Timestamp 至 Image Path)。
- 心率字段
HR量程 30-176 bpm(分钟级均值)。 - 活动热量字段
Calories (Activity)量程 0-16.178。 Mets字段量程 10-176(MET ×10)。- 餐别字段
Meal Type仅三值:Breakfast/Lunch/Dinner。 - 人群按 HbA1c 三分组,是数据集的核心分层变量。
- 数据集定位:首个公开的「CGM × 饮食营养监测」多模态数据集。
术语表(20 条)
| 术语 | 英文 | 释义 |
|---|---|---|
| 连续血糖监测 | CGM, Continuous Glucose Monitoring | 佩戴式传感器,持续测量组织间液葡萄糖 |
| 餐后血糖响应 | PPGR, Postprandial Glucose Response | 进食后血糖随时间的变化曲线 |
| 曲线下面积 | AUC, Area Under the Curve | 血糖曲线下的总面积 |
| 增量曲线下面积 | iAUC, incremental AUC | 仅计基线以上部分的面积,去基线影响 |
| 糖化血红蛋白 | HbA1c | 反映近 2-3 月平均血糖,分组依据 |
| 盲态 | Blinded | 受试者看不到设备读数 |
| 自由生活 | Free-living | 在自然环境而非实验室中的生活方式 |
| 宏量营养素 | Macronutrients | 碳水、蛋白、脂肪(+纤维) |
| 代谢当量 | MET, Metabolic Equivalent of Task | 活动强度单位,1 MET≈静息代谢 |
| 肠道微生物组 | Gut Microbiome | 肠道菌群及其基因组 |
| 人体测量 | Anthropometry | 身高、体重、BMI 等体格测量 |
| 自报偏倚 | Self-report Bias | 依赖自我报告带来的系统性误差 |
| 同一人泄漏 | Subject Leakage | 同一受试者样本同时进训练/验证导致的乐观偏差 |
| 分组交叉验证 | GroupKFold | 按组(如参与者)划分的交叉验证 |
| 数据字典 | Data Dictionary | 描述字段名/范围/含义的文档 |
| 时间戳位移 | Timestamp Shift | 将时间平移以实现去标识 |
| 种子数据集 | Seed Dataset | 规模不大但质量高、可复现的基础数据集 |
| 多模态 | Multimodal | 含多种数据类型(时序/图像/表格) |
| 组织间液葡萄糖 | Interstitial Glucose | CGM 实测的皮下组织液葡萄糖 |
| 个性化营养 | Personalized Nutrition | 基于个体差异定制饮食建议 |
附录
附录 A:相关数据集对照表(库内 rid)
| 库内 url_name | rid | 主题 | 模态组合 | 场景 | 与 cgmacros 关系 | 互链强度 |
|---|---|---|---|---|---|---|
cgmacros |
(本条目,待入库) | CGM × 营养饮食 | CGM+膳食+照片+活动+血液+微生物组 | 自由生活 | 本条目 | — |
mimic-iv-ext-ecg-glucose |
998 | ECG × 实验室血糖 | 12 导联 ECG + 采血血糖 | ICU 临床 | 临床血糖 vs 生活血糖对照 | 强 |
mimic-iv-ext-ecg-glucose |
999 | 同上(重复记录) | 同上 | ICU 临床 | 同上 | 强 |
wearable-exam-stress |
807 | 可穿戴 × 应激 | 可穿戴生理信号 | 考试应激 | 可穿戴方法学交集 | 中 |
big-ideas-glycemic-wearable |
(本批,未入库) | 血糖变异 × 腕戴 | 血糖 + PPG/EDA/温度 | 正常/前驱人群 | 同域需消歧 | 中(消歧) |
maternal-ultrasound-nutrition |
615 | 孕期营养 | 超声 + 营养 | 孕期 | 营养主题弱关联 | 弱 |
说明:
mimic-iv-ext-ecg-glucose在库内有 rid 998 与 999 两条记录(重复条目),互链时以实际发布条目为准。
附录 B:库外相关数据集/资源谱系
| 资源 | 类型 | 与 CGMacros 关系 |
|---|---|---|
| Zeevi et al., Cell 2015(800 人 × 1 周) | 未公开数据集 | CGMacros 的参照与空白填补对象 |
| PANDA-PLUS-Bench | 库内其他公开数据集 | 同属「公开直链」最开放档,许可更宽(CC BY-4.0) |
| ClinicalTrials.gov NCT04991142 | 试验注册 | 原始研究可追溯入口 |
| PhysioNet | 托管平台 | 分发渠道 |
附录 C:字段字典完整清单(DataDictionary_CGMacros-00X.csv)
| 字段 | 类型/范围 | 描述 |
|---|---|---|
Timestamp |
日期 时:分 | 该 CGM 读数发生的日期位移后时间戳 |
Libre GL |
数值 40-400 mg/dL | Libre Pro 传感器提供的血糖读数 |
Dexcom GL |
数值 40-400 mg/dL | Dexcom G6 Pro 传感器提供的血糖读数 |
HR |
数值 30-176 | Fitbit Sense 提供的上一分钟平均心率(bpm) |
Calories (Activity) |
数值 0-16.178 | Fitbit Sense 估算的上一分钟消耗卡路里 |
Mets |
数值 10-176 | Fitbit Sense 提供的代谢当量估计 ×10 |
Meal Type |
因子 Breakfast/Lunch/Dinner | 一餐的开始标记及餐别 |
Calories |
数值 30-1180 | 该餐估算热量(kcal) |
Carbs |
数值 0-176 | 该餐碳水估算(g) |
Protein |
数值 3-176 | 该餐蛋白估算(g) |
Fat |
数值 0-176 | 该餐脂肪估算(g) |
Fiber |
数值 0-176 | 该餐纤维估算(g) |
Amount Consumed |
数值 0-100 | 该餐被消费比例(%) |
Image Path |
路径 | 该餐起始/结束照片在数据集目录中的位置 |
附录 D:其他数据字典文件
| 文件 | 覆盖内容 |
|---|---|
DataDictionary_Bio.csv |
生物/表型字段(人口学、人体测量、血液指标等) |
DataDictionary_Gut_Health_Test.csv |
肠道健康检测字段 |
DataDictionary_Microbes.csv |
微生物组字段 |
DataDictionary.pdf |
上述字典的合并 PDF 版 |
附录 E:采集设备与软件清单
| 环节 | 设备/软件 | 关键参数 |
|---|---|---|
| CGM-1 | Abbott FreeStyle Libre Pro | 15 min 采样,上臂,盲态,40-400 mg/dL |
| CGM-2 | Dexcom G6 Pro | 5 min 采样,腹部,盲态,40-400 mg/dL |
| 活动 | Fitbit Sense | HR 30-176 bpm;Calories 0-16.178;Mets 10-176 |
| 膳食记录 | MyFitnessPal App | 逐餐宏量营养素自报 |
| 食物照片 | 餐起始/结束各一张 | |
| 血液分析 | (机构实验室) | HbA1c/空腹血糖/胰岛素/甘油三酯/胆固醇 |
| 微生态 | (测序) | 肠道微生物组谱 |
附录 F:PPGR 计算要点速查
- 定位餐起点:主表中
Meal Type非空的行即一餐开始; - 选取窗口:餐后固定时长(如 180 min);
- 基线:餐前第一个有效 CGM 读数;
- AUC:
np.trapz(g, t); - iAUC:
np.trapz(clip(g - baseline, 0, None), t); - 设备选择:优先 Dexcom(5min,分辨率高),或用重采样后的统一网格。
附录 G:许可义务速查(CC BY-NC-SA 4.0)
| 义务 | 要求 |
|---|---|
| BY(署名) | 须标注原作者、来源、许可 |
| NC(非商业) | 不得用于商业目的 |
| SA(相同方式共享) | 衍生物须以相同许可发布 |
| 无附加限制 | 不得增加法律/技术限制阻止他人行使许可权利 |
附录 H:数据集行文引用模板
若在论文中引用 CGMacros,可参考如下表述(占位符按需替换):
Gutierrez-Osuna R, Kerr D, Mortazavi B, Das A. CGMacros: a scientific dataset for personalized nutrition and diet monitoring (version 1.0.0). PhysioNet. 2025. DOI: 10.13026/3z8q-x658. License: CC BY-NC-SA 4.0.
要点:
- 必须标注版本号(1.0.0)——PhysioNet 推荐引用具体版本;
- 必须标注 DOI;
- 建议同时声明许可,以满足 CC BY 的署名义务。
附录 I:常见下游流程模板
[1] 下载并校验
curl -O .../CGMacros_dateshifted365.zip
sha256sum -c SHA256SUMS.txt
[2] 读取主表 + 字典
pandas.read_csv + 对照 DataDictionary_CGMacros-00X.csv
[3] 清洗与对齐
时间戳解析 → CGM 重采样统一网格 → Amount Consumed 折算
[4] 构造标签
逐餐定位 Meal Type → 截取餐后窗口 → 计算 AUC / iAUC
[5] 构造特征
宏量营养素 + 人口学 + 血液 + 餐别 + 活动聚合
[6] 分组交叉验证
GroupKFold(groups=participant_id)
[7] 训练与评估(XGBoost 基线)
MAE / RMSE on AUC / iAUC
[8] 报告
声明自报偏倚、用药混杂、样本量局限、NC 许可约束
附录 J:常见错误速查表
| 错误做法 | 后果 | 正确做法 |
|---|---|---|
| 行随机 train_test_split | 同一人泄漏,指标虚高 | GroupKFold by participant_id |
| 两路 CGM 直接按行合并 | 时间错位 | 先重采样统一网格 |
| 忽略 Amount Consumed | 高估摄入 | 按比例折算 |
| 用照片文件名日期对齐血糖 | 位移导致错配 | 以主表相对时序为锚 |
| 把 176 当生理上限 | 归一化失真 | 视为编码约定 |
| 商用却不改许可 | 违反 NC | 寻求授权或换数据 |
| 把 1,350 餐当精确值 | 引用不严谨 | 标「约/推算」 |
附录 K:版本历史
| 版本 | 日期 | 变更 |
|---|---|---|
| 1.0.0 | 2025-01-28 | 首次发布(唯一版本) |
CGMacros 自上架 PhysioNet 以来仅有一个版本。若未来有更新,latest DOI(10.13026/8mak-rs10)可能指向新版本,请以官方页 Versions 段为准。
附录 L:相关研究者与团队速记
| 角色 | 姓名/机构 | 备注 |
|---|---|---|
| 通讯/主导 | Ricardo Gutierrez-Osuna(Texas A&M CSE) | 官方页 Author Info |
| 共同作者 | David Kerr(Sansum Diabetes Research Institute) | 糖尿病血糖监测领域 |
| 共同作者 | Bobak Mortazavi(Texas A&M) | 可穿戴/健康信息学 |
| 共同作者 | Anurag Das | 数据集整理 |
| 招募机构 | Sansum Diabetes Research Institute(SDRI,圣巴巴拉) | 受试者招募与筛选 |
| 资助方 | National Science Foundation(NSF) | award No. 2014475 |
参考文献与来源
- 官方数据集页(主源):CGMacros: a scientific dataset for personalized nutrition and diet monitoring, PhysioNet v1.0.0. https://physionet.org/content/cgmacros/1.0.0/
- 数据集 DOI(v1.0.0):10.13026/3z8q-x658 — https://doi.org/10.13026/3z8q-x658
- 数据字典:
DataDictionary_CGMacros-00X.csv(主表字段),PhysioNet 文件区。https://www.physionet.org/content/cgmacros/1.0.0/DataDictionary_CGMacros-00X.csv - PhysioNet 主题检索页(连续血糖监测主题,含作者列表)。https://physionet.org/content/?topic=continuous+glucose+monitors
- Google Scholar 引用页(作者 Anurag Das / PhysioNet 2025)。https://scholar.google.fr/citations?citation_for_view=FcFAKFEAAAAJ:GnPB-g6toBAC
- 临床试验注册:ClinicalTrials.gov NCT04991142。https://clinicaltrials.gov/ct2/show/NCT04991142
- 前作对照:Zeevi D, et al. Personalized Nutrition by Prediction of Glycemic Responses. Cell. 2015;163(5):1079-1094.
- 会议论文锚:Improved Calorie Estimation. 2023 IEEE EMBS International Conference on Biomedical and Health Informatics (BHI); 2023-10-15/18.
- 许可全文:Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International。https://creativecommons.org/licenses/by-nc-sa/4.0/
存照附录
存照 1:DOI 双口径
PhysioNet 官方页同时列出两串 DOI:
- DOI (v1.0.0):
10.13026/3z8q-x658 - DOI (latest):
10.13026/8mak-rs10
因 CGMacros 仅发布 1.0.0 一个版本,本条目正文以 v1.0.0 具体版 DOI(10.13026/3z8q-x658) 为准,latest 串并存照于此,供检索者比对。若未来发布新版本,latest 串可能变更,请以官方页为准。
存照 2:规模数字口径
| 数字 | 值 | 口径 |
|---|---|---|
| 参与者 | 45(15/16/14) | 官方 Abstract + Data Description |
| 天数 | 10 | 官方 Abstract |
| 年龄 | 18-69 | 官方 Data Description |
| BMI | 21-46 kg/m² | 官方 Data Description |
| 招募年份 | 2021-2024 | 官方 Data Description |
| 未压缩体积 | 627.9 MB | 官方 Files 区 |
| ZIP 体积 | 627.1 MB | 官方 Files 区 |
| 估算总餐次 | 约 1,350 | 本条目推算(45×10×3),官方未直接给出 |
存照 3:许可口径对照
- 数据集许可:CC BY-NC-SA 4.0(PhysioNet License 段实抓)。
- 注意:与 PANDA-PLUS-Bench 的 CC BY-4.0 不同,CGMacros 含 NC(非商业) 约束——检索者若规划商用需格外注意。
存照 4:遗留疑点
- 利益冲突声明未全抓:官方页 Conflicts of Interest 段提及 Dr. Mortazavi,正文被截断,未获完整声明。
- 微生物组细节缺失:样本量、测序平台、丰度矩阵格式官方页未披露,需下载
DataDictionary_Microbes.csv/DataDictionary_Gut_Health_Test.csv后核对。 - 总餐次为推算值:见存照 2,实际有效餐次可能更少。
- 字典上限编码含义:多个字段上限共享 176,疑为编码约定,非生理上限。
- 论文正式出处:CGMacros 以 PhysioNet 条目本身 + BHI 2023 会议论文为引用锚,数据集条目未自附独立同行评审论文 DOI。
big-ideas-glycemic-wearable入库状态:本批同域条目,最终入库后需复核二者标题/标签不撞。
存照 5:抓取存照时点与代理
- 本条目全部事实抓取于 2026-10-10(PhysioNet 官方页 HTTP 200 实抓)。
- 三源互证:① PhysioNet 官方数据集页(主)② PhysioNet 数据字典 CSV + 主题检索页(次)③ Google Scholar 引用页(三)。
- 抓取代理:agent-d-cgmacros。
- 查重结论:库内 cgm/glucose/glyc 命中 rid 998/999(
mimic-iv-ext-ecg-glucose),与本条目本质不同,无撞库;writing/无同名目录。
免责声明:本条目为千方病案医数集编辑部整理的 AI-Ready Wikipedia 数据集档案,用于科研检索与数据发现。所有数字与结论以 PhysioNet 官方页及原始文献为准;使用本数据集须遵守 CC BY-NC-SA 4.0 许可条款与原始研究的伦理约束。条目内容不构成医学建议。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- tame-pain — 共享标签:生理信号 / 可穿戴传感 / 多模态 / 队列研究
- wesad — 共享标签:生理信号 / 可穿戴传感 / 多模态
- visem — 共享标签:生理信号 / 多模态 / 队列研究
- big-ideas-glycemic-wearable — 共享标签:生理信号 / 可穿戴传感 / 队列研究
- tiles-2018-sleep — 共享标签:生理信号 / 可穿戴传感 / 队列研究
- ephnogram — 共享标签:生理信号 / 可穿戴传感 / 多模态
- body-sway-music-vr — 共享标签:生理信号 / 可穿戴传感 / 多模态
- mesa-sleep — 共享标签:生理信号 / 可穿戴传感 / 队列研究
- qol-stress — 共享标签:生理信号 / 可穿戴传感 / 多模态
- cardiowave-portable — 共享标签:生理信号 / 可穿戴传感 / 多模态
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

