CGMacros — 连续血糖监测×营养饮食多模态数据集

45 人(健康/前驱/2 型糖尿病各 15/16/14)× 10 天自由生活:双 CGM + MyFitnessPal 膳食宏量营养素 + 食物照片 + Fitbit 活动 + 血液指标 + 肠道微生物组,首个公开的个性化营养 CGM 数据集,CC BY-NC-SA 4.0,含 XGBoost 餐后血糖响应基线

来源 PhysioNet CGMacros v1.0.0:双 CGM(Abbott FreeStyle Libre Pro 15min + Dexcom G6 Pro 5min)血糖时序 × MyFitnessPal 膳食宏量营养素 × WhatsApp 食物照片 × Fitbit Sense 活动时序 × 血液分析 × 肠道微生物组 × 人口学/人体测量发布时间: 2026-10-10最后更新: 2026-10-20 阅读 41
CGMacros — 连续血糖监测×营养饮食多模态数据集

信息速览

数据集名称CGMacros — 连续血糖监测×营养饮食多模态数据集
数据类型传感器数据,时间序列数据,影像数据,问卷与自报数据
规模45 名参与者(15 健康 HbA1c<5.7% / 16 前驱糖尿病 5.7%≤HbA1c≤6.4% / 14 型 2 糖尿病 HbA1c≥6.5%),年龄 18-69 岁,BMI 21-46 kg
接入方式PhysioNet CGMacros v1.0.0:双 CGM(Abbott FreeStyle Libre Pro 15min + Dexcom G6 Pro 5min)血糖时序 × MyFitnessPal 膳食宏量营养素 × WhatsApp 食物照片 × Fitbit Sense 活动时序 × 血液分析 × 肠道微生物组 × 人口学/人体测量
AI 就绪度

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)× 饮食营养监测」多模态数据集——它把「吃进去的每一口」和「身体随之而来的血糖波动」这两类数据,第一次以可下载、可复现、带基线的形式,交给了全世界的科研者。

三句话:

  1. 它采集了什么——45 名参与者(健康/前驱糖尿病/型 2 糖尿病各 15/16/14)× 连续 10 天自由生活,每人佩戴两只连续血糖监测仪(5 分钟与 15 分钟双采样),用 App 记录每一餐的碳水/蛋白/脂肪/纤维,拍下食物照片,佩戴 Fitbit 记录活动,并额外提供血液指标与肠道微生物组。
  2. 它能回答什么——「为什么同样一碗面,有人血糖飙升、有人纹丝不动?」「能不能只靠血糖曲线,就自动算出你吃了多少?」前者是餐后血糖响应(PPGR)预测,后者是作者提出的**「逆模型」自动饮食监测**。
  3. 为什么稀缺——个性化营养领域最有名的 CGM 数据集(Zeevi et al., Cell 2015,800 人 × 1 周)从未公开;CGMacros 是这一空白的第一个公开填补。

§0 读法三则:

  1. 只想下数据:直奔 §6 获取与许可——公开直链,无需申请,CC BY-NC-SA 4.0(注意 NC 非商业 + SA 相同方式共享双约束)。
  2. 要做建模:直奔 §4 数据构成、§5 任务与基线、§8 使用指南——务必按 participant_id 做 GroupKFold,别踩同人泄漏。
  3. 要评估可用性:直奔 §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 自报)有两个顽疾:

  1. 依赖长时间人工录入,繁琐、易漏记;
  2. 自报误差大,估量与主观偏差显著。

可穿戴传感器(智能手表、智能餐具的内置加速度计)虽能通过手到嘴动作近似检测进食时刻,但这类公开数据集往往只含单一或极少数传感模态,只能支撑很窄的任务(如进食时刻识别、食物照片识别)。

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 PDF 完整字典(合并版)
LICENSE.txt 文本 CC BY-NC-SA 4.0 全文
SHA256SUMS.txt 文本 文件完整性校验和

5.4 数据质量与缺失处理要点

多模态可穿戴数据的质量陷阱集中在「缺失」与「对齐」两处。CGMacros 亦不例外,使用时须显式处理:

  1. CGM 缺失段:传感器脱落后会出现连续 NaN。短缺口(<30 min)可插值;长缺口(数小时)必须打缺失标记,不能盲目填充,否则会在 PPGR 窗口内制造虚假曲线。
  2. 采样率不对称缺失:Libre(15min)与 Dexcom(5min)在任一时点不可能都有值,合并时必须先重采样到统一网格。
  3. 膳食事件缺失:受试者可能有漏记(忘了记餐)。表现为「血糖出现餐后峰但无对应 Meal Type 行」。建模时应把这类「未标记餐」作为负样本或噪声处理,而非当作「没吃」。
  4. 照片缺失:并非每餐都附照片,Image Path 可能为空。视觉-血糖联合任务须先统计照片覆盖率。
  5. 活动缺失:Fitbit 未佩戴时段 HR/Mets 为空,长时间空窗会影响「活动-血糖」关联估计。
  6. 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 使用要点清单

  1. 按参与者分组交叉验证(GroupKFold),避免「同一人泄漏」;
  2. 统一 CGM 采样网格后再算 PPGR;
  3. Amount Consumed <100% 的餐需按比例折算宏量营养素;
  4. 不要用食物照片的背景做捷径特征(隐私 + 泛化双重风险);
  5. 照片时间戳已位移,跨模态对齐以主表相对时序为准;
  6. 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 探索:

  1. 血糖基础模型(CGM Foundation Model):以 CGMacros 为预训练语料之一,学习跨人群的血糖动态表征;
  2. 多模态大模型对齐:把「食物照片 → 营养标签 → 血糖曲线」串成一条可训练的视觉-时序链路;
  3. 零样本膳食识别:用逆模型在未见食物上估计宏量营养素;
  4. 个体化数字孪生:为每名参与者拟合「饮食/活动 → 血糖」的个人化模型,用于饮食处方仿真;
  5. 隐私保护学习:在 NC 约束下做联邦学习风格的跨机构协作;
  6. 偏差审计:以本数据集为例,系统研究自报偏倚、用药混杂对代谢建模的影响。

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 条)

  1. 官方全名:CGMacros: a scientific dataset for personalized nutrition and diet monitoring。
  2. 发布平台:PhysioNet(Database Open Access)。
  3. 版本:1.0.0,唯一的版本。
  4. 发布日期:2025-01-28。
  5. DOI(v1.0.0):10.13026/3z8q-x658。
  6. 官方页另列 latest DOI:10.13026/8mak-rs10。
  7. 许可:CC BY-NC-SA 4.0。
  8. 参与者:45 人。
  9. 健康组:15 人(HbA1c<5.7%)。
  10. 前驱糖尿病组:16 人(5.7%≤HbA1c≤6.4%)。
  11. 型 2 糖尿病组:14 人(HbA1c≥6.5%)。
  12. 连续天数:10 天(自由生活)。
  13. 年龄范围:18-69 岁。
  14. BMI 范围:21-46 kg/m²。
  15. 招募年份:2021-2024。
  16. CGM 设备:Abbott FreeStyle Libre Pro(15min,上臂)。
  17. CGM 设备:Dexcom G6 Pro(5min,腹部)。
  18. 两 CGM 均盲态(blinded)。
  19. 血糖量程:40-400 mg/dL。
  20. 活动设备:Fitbit Sense(HR/Calories/Mets,分钟级)。
  21. 膳食记录 App:MyFitnessPal。
  22. 食物照片采集 App:WhatsApp。
  23. 餐别:早/午/晚三餐。
  24. 早餐:不同配比的蛋白奶昔。
  25. 午餐:Chipotle Mexican Grill。
  26. 血液指标:HbA1c / 空腹血糖 / 空腹胰岛素 / 甘油三酯 / 胆固醇。
  27. 附加模态:肠道微生物组。
  28. 伦理审批:Advarra IRB Pro00049227。
  29. 临床试验注册:NCT04991142。
  30. 资助:NSF award No. 2014475。
  31. 交付体积:未压缩 627.9 MB;ZIP 627.1 MB。
  32. 基线:parse_data.ipynb(XGBoost,预测 AUC/iAUC)。
  33. 官方关键词:continuous glucose monitors / obesity / postprandial glucose response / food macronutrients / metabolic models / food photographs / personalized nutrition。
  34. 数据字典主表字段共 14 列(Timestamp 至 Image Path)。
  35. 心率字段 HR 量程 30-176 bpm(分钟级均值)。
  36. 活动热量字段 Calories (Activity) 量程 0-16.178。
  37. Mets 字段量程 10-176(MET ×10)。
  38. 餐别字段 Meal Type 仅三值:Breakfast/Lunch/Dinner。
  39. 人群按 HbA1c 三分组,是数据集的核心分层变量。
  40. 数据集定位:首个公开的「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 逐餐宏量营养素自报
食物照片 WhatsApp 餐起始/结束各一张
血液分析 (机构实验室) HbA1c/空腹血糖/胰岛素/甘油三酯/胆固醇
微生态 (测序) 肠道微生物组谱

附录 F:PPGR 计算要点速查

  1. 定位餐起点:主表中 Meal Type 非空的行即一餐开始;
  2. 选取窗口:餐后固定时长(如 180 min);
  3. 基线:餐前第一个有效 CGM 读数;
  4. AUC:np.trapz(g, t);
  5. iAUC:np.trapz(clip(g - baseline, 0, None), t);
  6. 设备选择:优先 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

参考文献与来源

  1. 官方数据集页(主源):CGMacros: a scientific dataset for personalized nutrition and diet monitoring, PhysioNet v1.0.0. https://physionet.org/content/cgmacros/1.0.0/
  2. 数据集 DOI(v1.0.0):10.13026/3z8q-x658 — https://doi.org/10.13026/3z8q-x658
  3. 数据字典:DataDictionary_CGMacros-00X.csv(主表字段),PhysioNet 文件区。https://www.physionet.org/content/cgmacros/1.0.0/DataDictionary_CGMacros-00X.csv
  4. PhysioNet 主题检索页(连续血糖监测主题,含作者列表)。https://physionet.org/content/?topic=continuous+glucose+monitors
  5. Google Scholar 引用页(作者 Anurag Das / PhysioNet 2025)。https://scholar.google.fr/citations?citation_for_view=FcFAKFEAAAAJ:GnPB-g6toBAC
  6. 临床试验注册:ClinicalTrials.gov NCT04991142。https://clinicaltrials.gov/ct2/show/NCT04991142
  7. 前作对照:Zeevi D, et al. Personalized Nutrition by Prediction of Glycemic Responses. Cell. 2015;163(5):1079-1094.
  8. 会议论文锚:Improved Calorie Estimation. 2023 IEEE EMBS International Conference on Biomedical and Health Informatics (BHI); 2023-10-15/18.
  9. 许可全文: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:遗留疑点

  1. 利益冲突声明未全抓:官方页 Conflicts of Interest 段提及 Dr. Mortazavi,正文被截断,未获完整声明。
  2. 微生物组细节缺失:样本量、测序平台、丰度矩阵格式官方页未披露,需下载 DataDictionary_Microbes.csv / DataDictionary_Gut_Health_Test.csv 后核对。
  3. 总餐次为推算值:见存照 2,实际有效餐次可能更少。
  4. 字典上限编码含义:多个字段上限共享 176,疑为编码约定,非生理上限。
  5. 论文正式出处:CGMacros 以 PhysioNet 条目本身 + BHI 2023 会议论文为引用锚,数据集条目未自附独立同行评审论文 DOI。
  6. 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 — 共享标签:生理信号 / 可穿戴传感 / 多模态

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

返回 AI-Ready 数据集