信息速览

cBioPortal — 肿瘤基因组多组学数据平台 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | cBioPortal 肿瘤基因组平台 |
| 英文全称 | cBio Cancer Genomics Portal |
| 别名/简称 | cBioPortal;cBio Portal |
| 疾病分类 | ICD-11 2A00-2F9Z(恶性肿瘤章节,泛癌种覆盖) |
| SNOMED CT | 363346000(Malignant neoplastic disease) |
| 数据模态 | 体细胞突变(MAF)、CNA、mRNA 表达、DNA 甲基化、RPPA 蛋白质、结构变异、临床随访 |
| AI 任务类型 | 突变特征学习、泛癌种分型、生存预测、生物标志物发现、多组学整合 |
| 样本总数 | 200+ 项公开研究;最大单项 25,775 例(MSK MetTropism,Cell 2021) |
| 数据大小 | 单研究 tarball 数 MB 至数 GB;无官方全门户总量数字 |
| 数据格式 | TSV/MAF/SEG(tarball)、JSON(REST API)、MultiAssayExperiment(R) |
| 许可证 | 软件 GNU AGPL-3.0;数据免费开放访问 |
| 访问级别 | 开放(AACR GENIE 子实例需注册) |
| DUO 标签 | GRU(通用研究使用;平台未发布机器可读 DUO 标签) |
| 语言 | 英文 |
| 首发日期 | 2012-04(Cancer Discovery 论文;平台内部可追溯至 2008 年) |
| 最后更新 | 2026-07(本词条检索核实时间) |
| 发布机构 | Memorial Sloan Kettering Cancer Center(MSK)等 |
| 官方主页 | https://www.cbioportal.org |
| 下载地址 | https://cbioportal.org/datasets |
| DOI | 10.1158/2159-8290.CD-12-0095 |
| 引用次数 | Cerami 2012 约 17,900+、Gao 2013 约 16,600+(Google Scholar,截至 2026-07) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方 API、validator 与 R/Python 客户端齐全,单研究即下即用;扣分项:跨研究无统一划分,基因面板覆盖与参考基因组不一致需自行对齐 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11/SNOMED CT 映射、流行病学)、§7 偏倚分析。
数据工程审核者:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面内容仅供研究与教育用途,不构成医疗建议、诊断或治疗方案。任何涉及患者诊疗的决策必须由持证医疗专业人员基于具体临床情况独立做出。因使用本页面信息而产生的任何直接或间接后果,千方病案医数集不承担责任。
技术免责声明:本页面提供的代码片段按"现状"提供,仅用于演示数据加载与分析思路,未经生产环境验证。使用者应在隔离环境中先行测试,并自行承担将其用于实际项目的风险。数据接口可能随平台版本演进而变化,使用前请核对官方文档。
数据使用合规声明:使用 cBioPortal 数据时应遵守平台相关使用条款与原始研究的发表伦理要求。所有临床数据均已去标识化,使用者不得尝试重识别个体,也不得将数据用于商业临床决策系统而未获得相应授权。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? cBioPortal 是一个免费开放的肿瘤基因组数据平台,把 468+ 项已发表的癌症研究"翻译"成普通研究者和临床医生都能看懂的可视化页面:某个基因在肺癌里突变多不多、突变患者活得更久还是更短、哪些基因总是同时出问题——输入基因名,几秒钟出图。截至 2026-07,公共门户累计访问超过 800 万次,月活用户 38,000+(官方介绍页)。
为什么重要? 在 cBioPortal 出现之前,TCGA、ICGC 等大型项目的原始数据散落在不同 FTP 站点,格式互不兼容,解读体细胞突变需要生物信息学团队。cBioPortal 把多组学数据统一到"基因—样本—临床结局"三键查询框架下,成为肿瘤领域被引用最多的数据基础设施之一:两篇核心方法学论文合计被引超过 30,000 次(官方统计)。
我能用它做什么? ①交互式探索基因突变/拷贝数/表达与生存的关系;②用 REST API 批量拉取任意研究的多组学数据训练机器学习模型;③下载整包 tarball 或通过 GitHub datahub 获取带版本记录的原始数据文件;④自部署私有实例托管机构内部队列。注意:跨研究直接比较突变频率是它的头号误用陷阱(见 §6.5 坑点 1、坑点 2)。
§1.1 摘要
cBioPortal 由 Memorial Sloan Kettering Cancer Center(MSK)计算生物学中心主导开发,2012 年以 Cancer Discovery 方法论文公开发布(Cerami et al. 2012),2013 年补充使用指南(Gao et al. 2013)。平台的核心抽象是"研究(study)":每项研究对应一篇论文或一个联盟队列,内含若干分子谱(mutations、CNA、mRNA、methylation、RPPA、SV)与去标识化临床数据。所有数据按基因(Entrez ID/HUGO 符号)与样本(patientId/sampleId)两级主键组织,突变统一经内部 MAF 注释管线处理以保证跨研究可比性(MSK 图书馆指南)。技术栈为 Java Spring 后端 + MySQL(v6)或 ClickHouse(v7)+ React 前端 + Python 格式校验器,软件以 AGPL-3.0 开源,支持 Docker Compose 一键自部署(版本与升级指南)。数据获取有三条通道:Swagger/OpenAPI 描述的 REST API v2、R/Bioconductor 客户端(cBioPortalData/cBioDataPack/cbioportalR)与 per-study tarball(API 文档)。
§1.2 战略价值
维度一:肿瘤 AI 研究的"公共操练场"。 对于多组学机器学习,cBioPortal 提供了门槛最低的正版数据来源:无需 PhysioNet 式的申请审批,REST API 直接返回 JSON,R 客户端可将研究一键转成 MultiAssayExperiment 对象,98% 的研究可经 API 构建(Bioconductor 用户指南)。大型队列如 MSK-IMPACT(10,945 例,Nat Med 2017)、MSK-CHORD(25,040 例,Nature 2024)与中国多中心泛癌种队列(10,194 例,Nature 2022)使罕见癌种与真实世界治疗反应建模成为可能(门户首页研究列表)。
维度二:临床决策与转化研究的公共参照系。 平台内置 OncoKB、CIViC、Genome Nexus 等变异注释服务,使"这个突变是否有药可及"可以在数据浏览时同步回答;93+ 家机构自部署实例将其用作分子肿瘤板(Molecular Tumor Board)工具(官方介绍页)。对 AI 团队而言,这同时意味着数据分布更贴近真实临床谱(晚期、经治患者占比高),在 §7.1 偏倚表中必须显式建模。
维度三:数据治理的"活教材"。 datahub 以 Git 仓库形式保存全部公开研究的 TSV 文件历史,配合 metaImport.py 校验器,构成从原始发表数据到数据库导入的完整可追溯链条;v7 迁移指南明确了数据库换代时的重导入纪律(docs.cbioportal.org)。这种"数据即代码"的治理模式本身就是 MLOps 团队可借鉴的范本(见 §6.10)。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态 | 标注/临床 | 差异化定位 |
|---|---|---|---|---|
| cBioPortal | 468+ 项研究;200+ 项公开 | 突变/CNA/表达/甲基化/RPPA/SV | 去标识化临床随访,逐研究各异 | 可视化 + API + 自部署三位一体,逐研究精选策展 |
| AACR GENIE | 112,000+ 样本、19+ 机构(2021) | 靶向 panel 突变为主 | 注册后开放,Synapse 分发 | 最大公共临床测序队列,8 个版本累计;独立实例 genie.cbioportal.org |
| TCGA(GDC 门户) | 约 11,000 肿瘤、33 癌种 | WGS/WES/RNA-seq/甲基化/影像 | 统一管线重处理 | 原始 FASTQ 级数据,需更强算力;cBioPortal 不加载 GDC 重处理突变 |
| ICGC | 多大洲队列 | WGS/WES/转录组 | 各项目独立 | 国际视角,PCAWG 泛癌全基因组分析入口 |
| CPTAC | 蛋白基因组队列 | 基因组+蛋白质组+磷酸化 | 配对正常对照齐全 | 蛋白质组维度最深,样本量小于 TCGA |
站内词条:AACR GENIE、CPTAC、ICGC(词条生产中)。
§1.4 版本时间轴
| 时间 | 里程碑 | 来源 |
|---|---|---|
| 2008 | 平台在 MSK 内部上线 | about.cbioportal.org |
| 2012-04 | Cancer Discovery 方法论文,公开平台正式亮相 | DOI |
| 2013 | Science Signaling 实用指南论文 | DOI |
| 2017 | MSK-IMPACT 队列(10,945 例)与 AACR GENIE 论文发表 | 门户研究列表 |
| 2020 | 当年新增 21 项研究、约 30,000 样本;TCGA 数据扩充 MSI/微生物组/RPPA | AACR 2021 摘要 |
| 2021 | 公共研究数近 300;Docker Compose 部署方案;GENIE 达 112,000 样本 | AACR 2021 摘要 |
| 2024 | MSK-CHORD(25,040 样本)上线,迄今最大单研究 | 门户研究列表 |
| 2025-2026 | v7 以 ClickHouse 替换 MySQL,v6 进入维护分支 | 版本与升级指南 |
时间轴的两个观察:其一,平台的增长由"巨型研究"驱动——2017 与 2024 两个跃升点分别对应 MSK-IMPACT 与 MSK-CHORD 上线,单研究量级从千级跃至两万级;其二,工程演进明显加速,从论文发表到容器化部署用了 9 年,而数据库换代(v7)距 Docker Compose 仅约 5 年,提示依赖此平台的长期项目需要把平台升级纳入维护预算。
§1.5 典型应用场景
- 药物靶点证据检索:查询候选基因在 468+ 项研究中的 alteration 频率与共突变谱,为靶点立项提供横断面证据。
- 生物标志物-结局关联:在 MSK-IMPACT/GENIE 等大队列上拟合突变状态与总生存的 Cox 模型,复现 TMB(肿瘤突变负荷)类生物标志物研究。
- 多组学整合建模:以突变矩阵 × CNA × 表达 z-score 为输入训练泛癌种分型或生存预测模型(§6.4 提供可运行 PyTorch 代码)。
- 罕见癌种队列聚合:按 OncoTree 分类汇总多个胆道肿瘤或肉瘤研究,扩大罕见病建模样本量(注意坑点 1 的去重纪律)。
- 教学与基准复现:codebook 官方笔记本库提供 Python/R 分析配方,适合作为生信教学与论文复现的起点(GitHub 组织)。
- LLM Agent 数据工具调用:官方 cbioportal-navigator(MCP 服务器)把自然语言查询翻译为 cBioPortal URL,可作为医学大模型 Agent 的基因变异证据检索工具;本词条 §4 字段字典与 §6 代码即为 Agent 工具链的接口规范参考。
§2 医学背景
§2.1 ICD-11 编码映射表
cBioPortal 覆盖泛癌种,未绑定单一 ICD-11 条目;门户内癌种分类采用 OncoTree 本体,可与 ICD-11 恶性肿瘤章节(02 章,2A00-2F9Z)映射(cbioportal-manual)。下表列出平台内研究数最多的代表癌种:
| 平台内癌种(OncoTree) | ICD-11 编码 | ICD-11 中文名 |
|---|---|---|
| 泛癌种章节总览 | 2A00-2F9Z | 恶性肿瘤(02 章全部) |
| Lung(非小细胞肺癌等) | 2C25 | 支气管或肺恶性肿瘤 |
| Breast | 2E65 | 乳腺恶性肿瘤 |
| CNS/Brain(胶质瘤等) | 2A00 | 胶质瘤 |
| Bowel(结直肠) | 2B90 | 结肠恶性肿瘤 |
| Prostate | 2F82 | 前列腺腺癌 |
| Pancreas | 2C10 | 胰腺恶性肿瘤 |
| Ovary/Fallopian Tube | 2C73 | 卵巢恶性肿瘤 |
| Skin(黑色素瘤) | 2C30 | 皮肤恶性黑色素瘤 |
§2.1b SNOMED CT 映射表
| 标签 | ICD-11 | SNOMED CT | 术语 |
|---|---|---|---|
| 恶性肿瘤(总) | 2A00-2F9Z | 363346000 | Malignant neoplastic disease |
| 肺原发恶性肿瘤 | 2C25 | 93880001 | Primary malignant neoplasm of lung |
| 乳腺恶性肿瘤 | 2E65 | 363406005 | Malignant neoplasm of breast |
| 前列腺恶性肿瘤 | 2F82 | 399068003 | Malignant tumor of prostate |
| 其余癌种 | — | — | 通过 OncoTree → ICD-O → SNOMED 三步映射,平台未内置统一码表 |
§2.2 疾病简介与流行病学
cBioPortal 的数据主体是恶性肿瘤的多组学分子画像。据 IARC GLOBOCAN 2022 估计,全球每年新发癌症约 2,000 万例、死亡约 970 万例(IARC 官方发布),肺癌、乳腺癌与结直肠癌位居新发前列——与平台内研究数分布(肺癌 41 项、乳腺癌 37 项、肠癌 29 项研究,截至 2026-09 检索)高度一致(门户首页)。平台同时收录儿科研究 16 项、免疫基因组研究 8 项、细胞系研究 5 项与癌前/健康对照研究 5 项,构成从儿童肿瘤到成人实体瘤、从瘤组织到细胞系的完整谱系。
分子层面,平台数据的底层逻辑是"体细胞变异驱动肿瘤":点突变、拷贝数扩增/缺失、基因融合与表观遗传改变共同重塑信号通路(RB、PI3K、MAPK 等),而 cBioPortal 的基因级聚合视角正是为检验这类通路假说设计的(Cerami et al. 2012)。
对 AI 建模者,理解疾病背景有助于解释模型信号来源:TP53 在多数上皮来源肿瘤中高频突变(平台几乎所有泛癌种研究的突变率榜首),而 MSK-IMPACT 类 panel 队列中,KRAS(肺/胰腺/结直肠)、PIK3CA(乳腺/子宫内膜)、BRAF(皮肤黑色素瘤/甲状腺)等驱动基因的突变分布直接反映组织起源——这类"组织学先验"应作为泛癌种模型的归纳偏置而非需要模型重新学习的噪声。免疫治疗时代的新变量(TMB、MSI 状态)在平台 TCGA 扩充数据与免疫基因组研究(8 项)中有系统覆盖,为构建免疫标志物模型提供了可对齐的锚点(门户首页)。
§2.3 临床任务定义
| 任务 | 定义 | 平台数据支撑 | 典型输出 |
|---|---|---|---|
| 分子分型(诊断辅助) | 依据分子特征将肿瘤归入亚型 | 突变 + 表达 + 甲基化谱 | 亚型标签、通路激活状态 |
| 预后建模 | 用基线分子特征预测生存结局 | OS/PFS 随访 + 多组学 | 风险评分、C-index |
| 生物标志物发现 | 识别与治疗反应或结局关联的变异 | 靶向 panel 突变 + 治疗记录 | ORR 关联、TMB/MSI 分层 |
| 药物可及性评估 | 判断变异是否有获批药物 | OncoKB/CIViC 注释集成 | 变异-药物证据等级 |
| 通路共变分析 | 互斥/共现模式揭示通路关系 | OncoPrint + mutual exclusivity 计算 | 通路网络图 |
§2.4 患者人群表
| 代表研究 | 来源机构 | 发表 | 样本量 | 人群特征 |
|---|---|---|---|---|
| MSK-IMPACT 临床测序队列 | MSK | Nat Med 2017 | 10,945 | 全病种晚期实体瘤,前瞻性临床测序 |
| MSK MetTropism | MSK | Cell 2021 | 25,775 | 转移性实体瘤,多时间点测序 |
| MSK-CHORD | MSK | Nature 2024 | 25,040 | 临床基因组+治疗结局深度整合 |
| 中国泛癌种队列 | OrigiMed(中国多中心) | Nature 2022 | 10,194 | 中国人群靶向 panel 测序 |
| TCGA PanCancer Atlas | TCGA 联盟 | 2018 汇合 | 约 11,000 | 33 癌种、统一管线处理的初治肿瘤 |
| PCAWG 泛癌全基因组 | ICGC/TCGA | Nature 2020 | 2,922 | 全基因组测序,含匹配正常对照 |
(均去标识化;年龄 >89 岁折叠为 “>89” 分箱,不含出生日期与病历号,cbioportal-manual)
人群构成的三个建模要点:①靶向 panel 队列(MSK-IMPACT、中国泛癌种)与 WES 队列(TCGA、PCAWG)的检测深度不同,突变计数不可直接混池;②TCGA 为初治原发肿瘤,MSK/GENIE 类真实世界队列以复发/转移为主(SAMPLE_TYPE 属性可审计),二者合并需按样本类型分层;③儿科研究(16 项)与成人实体瘤应分池建模——儿童肿瘤的突变谱(融合驱动为主)与成人(点突变驱动为主)机制不同。
§2.5 临床价值
对临床研究者,平台把"要不要做这个基因检测"的问题变成可量化的证据检索:输入候选基因即可看到各癌种 alteration 频率、与预后的关联强度及可用药变异分布。对真实世界证据(RWE)研究,MSK-IMPACT/CHORD 与 GENIE 提供了治疗暴露—分子特征—结局三元组,是训练治疗反应预测模型稀缺的正版数据源。对 AI 工程,平台的价值在于提供了一条"从文献到可运行数据集"只需数分钟的路径,显著缩短假设检验周期。
落地路径的三级递进:①分子肿瘤板场景——临床团队在门户内核对变异证据等级,AI 的角色是辅助注释排序而非替代医生;②试验入组筛选场景——用 API 按变异+分期+既往治疗组合过滤患者池,注意样本量审计(罕见变异组合命中常为个位数);③回顾性队列建模场景——把平台数据当作发现集,产生假设后再在机构自有数据上验证。三级场景对数据质量的要求递增,越靠后越需要 §7 的偏倚治理。
§2.6 金标准参考表
| 维度 | 内容 |
|---|---|
| 划分方式 | 平台不设官方 train/val/test 划分;研究内分析以全队列描述统计为主 |
| 标注方式 | 突变调用由各研究测序管线产生,导入时经平台统一 MAF 注释管线标准化 |
| 标注者 | 各研究临床中心 + MSK 策展团队(curation)双层 |
| 性质 | 观察性队列数据(非试验干预数据);生存终点为回顾性/前瞻性随访混合 |
| 结局编码 | OS_STATUS(1:DECEASED / 0:LIVING)+ OS_MONTHS 为最通用的生存标注 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐获取通道 | 大小 | 理由 |
|---|---|---|---|
| 快速交互探索某基因/某通路 | 公共 Web 门户 | 0 | 四步查询 + OncoPrint 即时可视化 |
| 编程获取单研究全量数据 | REST API v2 / cBioPortalData(R) | 按需,MB 级 | JSON 结构化,98% 研究可构建 MultiAssayExperiment |
| 本地批量下载多个研究 | cbioportal.org/datasets tarball / cBioDataPack | 单研究数 MB-数 GB | 保留原始 TSV 文件布局,离线可用 |
| 需要数据文件版本历史 | GitHub datahub | Git 克隆 | 全部公开研究 TSV 的逐版本记录 |
| 临床测序超大队列 | genie.cbioportal.org + Synapse | 数十 GB | GENIE 112,000+ 样本,注册后免费 |
| 机构私有数据托管 | Docker Compose 自部署(v6 或 v7) | 需 MySQL/ClickHouse | AGPL-3.0 开源,validator 保证导入质量 |
§3.1 模态详情
| 模态 | 生成技术 | 分辨率/粒度 | 平台内文件 |
|---|---|---|---|
| 体细胞突变 | WES/WGS 或靶向 panel(MSK-IMPACT 410/461/505 基因等) | 变异级(chr/start/end/ref/alt) | data_mutations.maf |
| 拷贝数改变 | SNP array + GISTIC2 或测序 CNV caller | 基因级离散值(-2/-1/0/1/2)与片段级 SEG | data_cna.txt、data_cna.hg19.seg |
| mRNA 表达 | RNA-seq(RSEM)或微阵列 | 基因级连续值;平台侧预计算 z-score | data_mrna_seq_v2_rsem.txt 等 |
| DNA 甲基化 | Illumina HumanMethylation27/450 | 探针级 β 值 | data_methylation_hm450.txt |
| 蛋白质/磷酸化 | RPPA 反向蛋白芯片 | 抗体级连续值 | data_rppa.txt |
| 结构变异 | WGS/WES SV caller 或 panel | 断点对 | data_sv.txt |
| 临床数据 | 病历抽取 + 随访 | 患者/样本两级属性表 | data_clinical_patient.txt、data_clinical_sample.txt |
并非每项研究都含全部模态——靶向 panel 研究通常只有突变 + CNA + 临床,TCGA 研究模态最全(门户 datasets 页)。
§3.1b 常用临床属性字典
跨研究最通用、最适合作为建模标签或协变量的临床属性如下(属性可用性逐研究而异,使用前用 API clinicalAttributes 端点确认):
| 属性 ID | 层级 | 类型 | 语义 | 建模用途 |
|---|---|---|---|---|
| OS_STATUS | 患者 | 字符串标签 | 总生存状态(0:LIVING / 1:DECEASED) | 生存事件指示 |
| OS_MONTHS | 患者 | 浮点 | 总生存月数 | 生存时间 |
| DFS_STATUS / DFS_MONTHS | 患者 | 标签/浮点 | 无病生存 | 复发建模 |
| PFS_STATUS / PFS_MONTHS | 患者 | 标签/浮点 | 无进展生存 | 治疗反应建模 |
| AGE | 患者 | 整数/分箱 | 诊断年龄(>89 折叠) | 协变量 |
| SEX / GENDER | 患者 | 字符串 | 性别 | 协变量/公平性审计 |
| CANCER_TYPE | 样本 | 字符串 | OncoTree 主癌种 | 分层/分组键 |
| CANCER_TYPE_DETAILED | 样本 | 字符串 | OncoTree 细分亚型 | 亚型标签 |
| TMB (nonsynonymous) | 样本 | 浮点 | 非同义突变负荷(mut/Mb) | 免疫标志物特征 |
| MSI_STATUS | 样本 | 字符串 | 微卫星不稳定状态 | 免疫标志物特征 |
| SAMPLE_TYPE | 样本 | 字符串 | 原发/复发/转移 | 队列构成审计 |
| MUTATION_COUNT | 样本 | 整数 | 体细胞突变计数 | 质量控制协变量 |
| GENE_PANEL | 样本 | 字符串 | 检测所用基因面板 | 覆盖掩码(坑点 2) |
§3.2 按子集样本数表
以下为截至 2026-09 检索的平台首页分类统计(frontend.cbioportal.org):
| 研究类别 | 数量 |
|---|---|
| PanCancer 研究 | 11 |
| 儿科癌症研究 | 16 |
| 免疫基因组研究 | 8 |
| 细胞系研究 | 5 |
| 癌前/健康研究 | 5 |
| 肺癌 | 41 |
| 其他/未分类 | 48 |
| 乳腺癌 | 37 |
| CNS/脑 | 34 |
| 前列腺 | 31 |
| 淋巴系 | 30 |
| 肠 | 29 |
| 皮肤 | 28 |
| 膀胱/泌尿道 | 27 |
| 软组织 | 26 |
| 肾 | 25 |
| 食管/胃 | 22 |
| 胰腺 | 21 |
| 子宫 | 19 |
| 头颈 | 18 |
| 胆道 | 18 |
| 髓系血液 | 18 |
| 其余 20+ 癌种 | 各 1-14 项 |
§3.3 格式表
| 通道 | 格式 | 编码 | 说明 |
|---|---|---|---|
| tarball | TSV/MAF/SEG 纯文本 | 每研究一个 .tar.gz | 表头以 # 起始的 4-5 行显示属性定义 |
| REST API | JSON | UTF-8 | Swagger/OpenAPI 文档驱动,/api/v2/ 前缀 |
| R/Bioconductor | R 对象 | MultiAssayExperiment | 实验列表 + colData 患者元数据 |
| 自部署导入 | TSV + meta 文件 | UTF-8 | metaImport.py 校验后入库 |
§3.4 存储大小
平台未发布全门户数据总量官方数字。可参考的锚点:单研究 tarball 从数百 KB(纯临床小队列)到数 GB(TCGA 全模态研究);MSK-IMPACT 突变表约 10,945 样本 × 数十万变异事件;GENIE 数据库数十 GB 级(Synapse 分发)。磁盘规划建议按"单研究 100 MB-1 GB、全 tarball 镜像 100 GB 级"预留并实测。
存储优化的三个实务建议:①突变表是体积大头,若只做基因级特征可预先聚合为患者×基因稀疏矩阵(.npz/.parquet),体积可压缩 1-2 个数量级;②甲基化探针表仅部分 TCGA 研究提供且行数巨大(数十万探针),无表观需求的研究直接跳过该文件可显著减负;③datahub 走 Git 克隆时注意仓库体积随历史增长,浅克隆(–depth 1)+ 按需检出研究目录是轻量方案。
§3.5 标注方式
突变标注为两级:各研究产生的原始 MAF(变异检测,自动),随后经平台内部注释管线统一变异效应注释(Mutation Assessor/Genome Nexus,自动);临床属性标注为人工(病历抽取)+ 部分 NLP 辅助;OncoKB 证据等级为专家人工策展(MSK 图书馆指南)。
§3.6 标注者资质与一致性
突变检测由各研究机构 CLIA/CAP 或同等资质实验室完成(如 MSK-IMPACT 为 MSK 临床实验室验证流程);临床属性由各研究数据协调员抽取;跨研究一致性由 cBioPortal 策展团队通过 validator 与统一注释管线保障——但突变调用算法本身不跨研究统一(TCGA 三套版本差异即源于此,见坑点 1)。
一致性抽验方法:随机抽取同一癌种的两套 TCGA 版本研究,对齐相同样本后统计基因级突变判定的一致率(Kappa 系数);一致率低于 0.95 的基因建议从跨版本合并分析中剔除。该抽验应写入数据治理手册并随平台更新重跑。
§3.7 采集周期
跨度从 2006 年前后 TCGA 启动至 2026 年(temporalCoverage 2008/2026);MSK-IMPACT 类前瞻性临床测序项目持续滚动入组;TCGA PanCancer Atlas 为 2018 年前后冻结的统一处理快照。
§3.8 地域覆盖
以美国(MSK、TCGA、CPTAC)与欧洲(ICGC 成员)为主,含中国多中心队列(OrigiMed 中国泛癌种 10,194 例,Nature 2022)与澳大利亚等 ICGC 成员队列;机构实例分布于 93+ 家全球单位。地域解读需注意:数据生成地不等于患者国籍——美欧中心的国际患者、跨国药企试验入组者都混入队列,spatialCoverage 应理解为"数据策展方所在地"而非严格的人群地理边界。
§3.9 设备/平台规格
测序平台随研究而异:Illumina HiSeq 系列(WES/WGS)、MSK-IMPACT 定制靶向 panel(Agilent 捕获)、Illumina HumanMethylation27/450 芯片、RPPA 反向蛋白芯片。平台元数据记录 gene_panel 标识(如 IMPACT341/IMPACT461),这是跨研究归一化的关键字段(见坑点 2)。
对建模的两个推论:其一,不同 panel 的测序深度与覆盖均匀度不同,等位基因频率(VAF)阈值效应不一致,用 VAF 做亚克隆推断时必须逐研究设定灵敏度下限;其二,芯片平台(甲基化、RPPA)与测序平台产出的连续值分布不可比,混合建模前必须分平台标准化并把平台标识作为 batch 协变量保留在元数据中,任何"擦除平台信息"的合并都会把工艺差异伪装成生物学信号。
§3.10 深度溯源链
发表论文/联盟项目 (PubMed PMID)
└─ datahub Git 仓库(TSV 文件 + 逐版本提交历史)
└─ metaImport.py 格式校验(Python validator)
└─ cBioPortal 数据库(v6 MySQL / v7 ClickHouse)
├─ REST API v2(JSON)
└─ Web 门户(可视化)
每个研究可通过 API 返回的 pmid、citation 字段回溯至原始论文;tarball 内 meta_study.txt 记录研究元信息。
§4 数据结构
§4.0 目录树
以 TCGA 急性髓系白血病研究 laml_tcga 的 tarball 为例(Bioconductor 用户指南):
laml_tcga/
├── meta_study.txt # 研究元信息(名称、引文、group)
├── meta_clinical_patient.txt # 临床患者表元信息
├── data_clinical_patient.txt # 患者级临床(OS_STATUS、OS_MONTHS…)
├── meta_clinical_sample.txt
├── data_clinical_sample.txt # 样本级临床(CANCER_TYPE、TMB…)
├── meta_mutations.txt
├── data_mutations.maf # 变异级突变表(MAF 扩展格式)
├── meta_CNA.txt
├── data_CNA.txt # 基因级离散 CNA(-2/-1/0/1/2)
├── data_linear_cna.txt
├── meta_methylation_hm27.txt / data_methylation_hm27.txt
├── meta_methylation_hm450.txt / data_methylation_hm450.txt
├── meta_mrna_seq_rpkm.txt / data_mrna_seq_rpkm.txt
├── meta_mrna_seq_v2_rsem.txt / data_mrna_seq_v2_rsem.txt
├── meta_mrna_seq_v2_rsem_zscores_ref_diploid_samples.txt
├── case_lists/ # 预定义样本列表(cases_all、cases_sequenced…)
│ ├── cases_all.txt
│ └── cases_sequenced.txt
└── www/ # 可选:研究截图与附件
§4.1 DAIMS 字段字典(核心 12 列)
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差/坑 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| studyId | str | 研究唯一标识 | laml_tcga | 数据分组键 | 同名研究多版本并存 | — | 任意短横线串 |
| patientId | str | 患者 ID(研究内唯一) | TCGA-AB-2802 | 主键/配对键 | 跨研究非唯一 | — | 中心前缀+编号 |
| sampleId | str | 样本 ID(一患者多样本) | TCGA-AB-2802-01 | 特征矩阵列 | 01/02 代表不同时间点 | — | 患者 ID+标本号 |
| Hugo_Symbol | str | 基因符号 | TP53 | 特征名 | 别名漂移、多对一 | — | HGNC 符号 |
| Entrez_Gene_Id | int | Entrez 基因 ID | 7157 | 稳定主键 | 部分行值为 0(缺失) | 0 | 正整数 |
| Variant_Classification | str | 突变功能分类 | Missense_Mutation | 突变类型特征 | 同义/非编码需过滤 | — | MAF 标准枚举 |
| Protein_position / HGVSp | str | 蛋白质变化 | p.R175H | 热点特征 | 注释管线版本差异 | NA | 字符串 |
| CNA 值 | int | 基因级拷贝数 | -2 | 离散特征 | -2/-1 语义需查 meta | 0=中性 | |
| 表达值/z-score | float | RSEM/微阵列值 | 3.42 | 连续特征 | z-score 基线两套(坑点 3) | NA | 连续 |
| methylation β | float | 探针甲基化率 | 0.87 | 表观特征 | 探针映射版本 | NA | [0,1] |
| OS_STATUS | str | 生存状态标签 | 1:DECEASED | 监督标签 | 字符串格式非整数 | NA | |
| OS_MONTHS | float | 生存月数 | 24.7 | 生存时间 | 删失与随访期差异 | NA | ≥0 连续 |
§4.2 标签分布
生存标签(OS_STATUS)为平台最通用的监督信号:DECEASED 比例随队列治疗背景变化大——初治 TCGA 队列通常 40%-60%,MSK 转移性真实世界队列可达 60%-80%(按各研究随访深度而异,使用前必须逐研究统计,禁止跨研究假定同一先验)。突变标签方面,MSK-IMPACT 类 panel 队列的驱动基因突变率显著高于小队列,属于选择性入组偏倚(见 §7.1)。
标签工程的四条纪律:①事件率先验——任何模型的基线准确率应先按队列事件率校准,事件率 60% 的队列上"全预测死亡"即有 0.60 准确率,不报告 C-index 只报 accuracy 属于误导;②标签时空一致性——同一患者的 01/02 标本共享患者级生存标签,样本级属性(TMB、MSI)则逐标本计算,合并时须按层级取数;③复合标签溯源——MSI_STATUS 等由检测方法(PCR/NGS/IHC)决定的属性在跨研究合并时按检测方法分层或直接弃用;④类别不平衡处置——罕见癌种或罕见变异的二分类任务优先用类权重而非重采样,保留原始分布以便审计。
§4.3 关键统计
- 门户托管 468+ 项 curated 研究;单研究样本量从数十到 25,775(MSK MetTropism)(官方介绍页)。
- API 可构建性:98% 研究可经 cBioPortalData 构建 MultiAssayExperiment;约 76% 可经 cBioDataPack(tarball 全量)构建(Bioconductor 指南)。
- laml_tcga 单研究示例:12 个分子谱、191 个样本、突变表 2,584 行(基因×样本视角)(Bioconductor 指南)。
- 研究规模分布高度右偏:多数研究为数十至数百样本的机构队列,万级样本研究集中在 MSK-IMPACT/CHORD、MetTropism、中国泛癌种与 GENIE 等少数巨型队列——采样设计时应按"巨型队列提供统计功效、中小队列提供癌种覆盖"分层取用。
- 临床属性完备率逐研究差异显著:TCGA 系研究属性最全,机构 panel 研究常缺治疗细节;正式建模前用 API clinicalAttributes 端点输出缺失率矩阵是必做步骤。
§4.4 数据层级
研究 study
└─ 患者 patient (patientId)
└─ 样本 sample (sampleId, 可多个时间点)
├─ 分子谱 molecularProfile ({studyId}_mutations / _cna / _mrna…)
│ └─ 基因级/变异级事件
└─ 临床属性(患者级 + 样本级两张表)
§4.5 缺失值与信息性缺失编码
| 情形 | 编码 | 处理建议 |
|---|---|---|
| 基因未入 panel(靶向研究) | 整基因列缺失/无事件 | 视为"未检测"而非"无突变";用 gene panel 矩阵过滤(坑点 2) |
| Entrez ID 缺失 | 0 | 用 Hugo_Symbol 兜底并警惕多对一(坑点 5) |
| 临床属性未采集 | NA / 空串 / [Not Available] | 建模时列为显式类别或删除,禁止静默填充 |
| 生存删失 | OS_STATUS=0:LIVING | 生存分析按删失处理,禁止当负类丢弃 |
§4.6 落盘后的快速质检脚本
任何研究 tarball 解压后,建议先跑如下五点质检再进入建模(对应 DAIMS 第 1/2/4/5 项):
def qc_study(study):
clin = load_clinical(study) # 复用 §6.3 函数
maf = pd.read_csv(f"{study}/data_mutations.maf", sep="\t", comment="#",
low_memory=False)
checks = {
"患者唯一性": clin["PATIENT_ID"].is_unique,
"样本唯一性": clin.get("SAMPLE_ID", clin["PATIENT_ID"]).is_unique,
"生存标签合法": set(clin["OS_STATUS"].dropna().unique()) <=
{"0:LIVING", "1:DECEASED"},
"突变样本全覆盖": maf["Tumor_Sample_Barcode"].nunique() > 0,
"Entrez 零值占比<5%": (maf["Entrez_Gene_Id"] == 0).mean() < 0.05,
}
print("\n".join(f"[{'PASS' if v else 'FAIL'}] {k}" for k, v in checks.items()))
return checks
qc_study("cbioportal_data/laml_tcga")
§5 划分与使用建议
§5.1 官方划分
不存在。 cBioPortal 是分析平台而非竞赛数据集,官方不提供 train/val/test 划分。所有子集化通过 sample list(cases_all、cases_sequenced 等预定义列表)与虚拟研究(virtual study,用户自选样本组)完成。
§5.2 社区惯例划分
- 研究内划分:按患者随机分层(保持 OS_STATUS 比例),80/10/10 或 5 折交叉验证;同一患者的多时间点样本必须整体归入同一折。
- 研究间划分:以整个研究为外部测试集(如 33 项 TCGA PanCancer Atlas 训练、MSK-IMPACT 外部验证),是对分布漂移最诚实的评估。
- 癌种留一(leave-one-cancer-type-out):评估泛癌种模型的可迁移性。
| 划分策略 | 适用场景 | 样本单元 | 主要风险 |
|---|---|---|---|
| 研究内随机 5 折 | 单研究 ≥500 患者的方法学开发 | patientId | 少;注意多标本同折 |
| 研究内按癌种分层 | 泛癌种研究(PanCancer Atlas) | patientId | 小癌种折内单类 |
| 研究间(外部研究验证) | 目标是临床可迁移性 | 整个研究 | 面板/平台差异数值保守 |
| 时间外推 | 含纵向入组的临床测序队列 | 入组日期切点 | 入组标准随时间变化 |
| 癌种留一 | 跨癌种泛化性论证 | CANCER_TYPE | 罕见癌种信号稀疏 |
§5.3 泄漏风险(重点)
| 泄漏源 | 机制 | 防御 |
|---|---|---|
| 多套 TCGA 版本并存 | PanCancer Atlas / Firehose Legacy / published 三套含相同样本,混入训练与测试即泄漏 | 建立 studyId 白名单,官方 FAQ 明确警告不要同时查询多套(坑点 1) |
| 一患者多标本 | 同患者 01/02 标本分别落入训练与测试 | 所有划分以 patientId 为最小单元 |
| 跨研究重复患者 | 少数患者同时出现在多个研究(同 ID 即同人) | 跨研究合并前去重;API 假定同 ID 为同一人 |
| 预处理统计泄漏 | 全数据集算 z-score 后再划分 | z-score 仅用训练折统计量重算 |
§5.4 交叉验证建议
生存任务用 5 折 CV + concordance index 报点估计与 95% CI;分类任务按癌种分层。对.panel 异质队列,折内样本需共享基因面板超集,否则特征维度本身就是泄漏(坑点 2)。
划分前泄漏自检代码(三道闸:患者唯一、TCGA 版本互斥、面板覆盖一致):
def leak_guard(train_ids, test_ids, whitelist_studies, gene_panel_mask):
"""train_ids/test_ids: 样本 ID 列表;whitelist_studies: 允许的研究 ID 集合;
gene_panel_mask: DataFrame(样本×基因, bool) 表示该基因在该样本中确实被检测。"""
problems = []
# 闸 1: 任何患者不得同时出现在训练与测试
p_train = {i.rsplit("-", 1)[0] for i in train_ids} # 以患者前缀近似,正式实现应查 API patientId
p_test = {i.rsplit("-", 1)[0] for i in test_ids}
if p_train & p_test:
problems.append(f"患者跨折: {len(p_train & p_test)} 名")
# 闸 2: 训练/测试样本必须全部来自白名单研究(排除多套 TCGA 版本混入)
# 闸 3: 测试集特征列必须是训练集特征列的子集且均有 panel 覆盖
uncovered = (gene_panel_mask.loc[train_ids].mean(0) < 0.9) & \
(gene_panel_mask.loc[test_ids].mean(0) < 0.9)
if uncovered.any():
problems.append(f"双侧低覆盖基因 {uncovered.sum()} 个,应剔除")
assert not problems, "泄漏自检未通过: " + "; ".join(problems)
§5.5 外部验证建议
优先用同平台不同研究构成外部集(MSK-IMPACT → 中国泛癌种队列可检验人群迁移),再考虑 GDC 原始 TCGA 或 GENIE Synapse 全量;注意 cBioPortal 与 GDC 管线产物存在系统性差异(官方手册明示),跨管线比较应作为独立实验报告而非复现验证。
外部验证的三层设计:①同源外部——平台内另一研究(最快,但共享注释管线,偏乐观);②同数据异管线——GDC 重处理 TCGA(检验管线敏感性,官方 FAQ 明示两套产物不可混用);③异源异管线——机构自有临床测序数据或独立联盟数据(最接近部署现实,成本最高)。论文审稿人通常要求至少覆盖第②层;临床转化报告应达到第③层。每层验证都应重复 §5.4 的泄漏自检——外部集同样可能包含与训练集重叠的患者。
§5.6 虚拟研究与 sample list 的正确用法
平台提供两类内置子集机制,理解其边界可避免多数划分错误:
| 机制 | 定义 | 适合 | 风险 |
|---|---|---|---|
| sample list(case list) | 研究内预定义样本组(cases_all、cases_sequenced、cases_cna 等) | 单研究内建模取数 | 跨研究 ID 重叠(坑点 1) |
| 虚拟研究(virtual study) | 用户在门户内把多个研究的样本子集组合成一个"自定义研究",保存于 session service | 探索性合并、筛选队列 | 合并时同样本双计;组合规则不随代码走,复现性弱 |
工程化建议:虚拟研究适合人工探索,正式实验一律用 API 拉取原始表 + 自持脚本组合,把样本选择逻辑纳入版本控制;虚拟研究保存的 query 可通过 session 链接分享,但应视为"设计文档"而非数据集本身。
§6 AI 就绪指南
§6.0 云端快速启动
平台无需下载数据即可起步:REST API v2 是网页可视化背后的同一接口,任何能发 HTTPS 请求的环境(Colab、Jupyter、服务器)都能直接查询。若需私有化部署,官方提供 Docker Compose 方案(含 web app、数据校验、导入与迁移全套微服务)(GitHub 组织)。
§6.1 快速上手
目录结构预期与 data_root 拼接关系:本节代码不落盘、直接调 API;若你选择 tarball 路线,约定 data_root = "cbioportal_data/",每项研究解压为 data_root/{studyId}/(内含 §4.0 所列文件);最小可用子集 = 单研究(如 laml_tcga)的突变表 + 临床表两张文件。
# 依赖:pip install requests
# 预期:无需认证即可访问公共 API;私有/GENIE 实例需 Bearer token
# data_root 拼接关系:tarball 解压后 data_root/laml_tcga/data_clinical_patient.txt
import requests
BASE = "https://www.cbioportal.org/api" # Swagger 文档: BASE/v2/api-docs
# 1) 列出全部研究(注意分页:显式传 pageSize,见坑点 6)
studies = requests.get(f"{BASE}/studies",
params={"pageSize": 100000, "pageNumber": 0}).json()
print(f"公开研究数: {len(studies)}")
# 2) 取单研究的临床患者数据(生存标签所在)
r = requests.get(f"{BASE}/studies/laml_tcga/clinical-data",
params={"clinicalDataType": "PATIENT", "projection": "DETAILED"})
patients = {d["patientId"]: {a["clinicalAttributeId"]: a["value"] for a in d["attributes"]}
for d in r.json()}
print(f"患者数: {len(patients)}; 示例属性: {list(next(iter(patients.values())))[:5]}")
§6.2 数据获取
| 通道 | 方式 | 大小 | 门槛 |
|---|---|---|---|
| REST API v2 | GET https://www.cbioportal.org/api/... |
按需 | 无需注册 |
| 单研究 tarball | https://cbioportal.org/datasets 页面下载 .tar.gz |
数 MB-数 GB | 无需注册 |
| R 全量打包 | cBioDataPack("laml_tcga") |
缓存于本地 | Bioconductor |
| R 按基因子集 | cBioPortalData(api, studyId=…) |
按需 | Bioconductor |
| R tidyverse | cbioportalR::get_genetics_by_study() |
按需 | CRAN/GitHub |
| GENIE | Synapse 注册后下载 | 数十 GB | 注册+条款同意 |
| datahub | git clone https://github.com/cBioPortal/datahub.git |
全门户 | Git LFS 容量规划 |
GENIE 专项流程:GENIE 数据不在公共门户匿名 API 内。获取路径为:在 Synapse 注册账号 → 签署数据使用条款 → 按版本下载(数据按发布版本累积,当前由 AACR 定期滚动发布)→ 下载内容为研究级 TSV/MAF + 临床表,结构与门户 tarball 一致,可复用 §6.3 的预处理代码;私有门户访问(含 GENIE 实例的 API)需在门户网页生成 Data Access Token 后以 Bearer 头传入(API 文档)。
# tarball 路线:下载并解压 laml_tcga
curl -O https://cbioportal.org/datasets/laml_tcga.tar.gz
mkdir -p cbioportal_data && tar -xzf laml_tcga.tar.gz -C cbioportal_data/
# 解压后: cbioportal_data/laml_tcga/data_clinical_patient.txt 等
R/Bioconductor 路线(推荐给统计建模用户;98% 研究可构建 MultiAssayExperiment,约 76% 可走 tarball 打包路线,Bioconductor 指南):
# BiocManager::install("cBioPortalData")
library(cBioPortalData)
cbio <- cBioPortal() # 默认连公共门户;私有实例传 hostname+token
studies <- getStudies(cbio, buildReport = TRUE) # api_build/pack_build 列显示可构建性
## 路线 A:按基因/分子谱精细拉取(API 驱动,适合子集分析)
mae_api <- cBioPortalData(cbio, studyId = "acc_tcga",
genePanelId = "IMPACT341",
molecularProfileIds = c("acc_tcga_rppa",
"acc_tcga_linear_CNA",
"acc_tcga_mutations"))
## 路线 B:整包 tarball(适合全研究离线分析;中断可损坏,见坑点 7)
mae_pack <- cBioDataPack("laml_tcga", ask = FALSE)
mae_pack # 12 个实验:突变/CNA/表达/甲基化
assay(mae_pack, "mrna_seq_v2_rsem")[1:5, 1:5] # 表达矩阵样例
colData(mae_pack) # 患者临床元数据
§6.3 预处理全流程
流程:MAF/TSV 读取 → 特征矩阵化(患者×基因)→ 临床标签对齐 → 面板覆盖过滤 → 生存标签编码。
# 预期目录: cbioportal_data/laml_tcga/{data_mutations.maf, data_clinical_patient.txt}
import pandas as pd
STUDY = "cbioportal_data/laml_tcga"
def load_clinical(study):
# 官方 TSV 表头前 4-5 行是 "#" 开头的属性定义,真正的数据从 HEADER 行开始
rows = [l.rstrip("\n") for l in open(f"{study}/data_clinical_patient.txt")]
header_idx = max(i for i, l in enumerate(rows[:6]) if l.startswith("#"))
cols = rows[header_idx + 1].split("\t")
body = [l.split("\t") for l in rows[header_idx + 2:] if l.strip()]
df = pd.DataFrame(body, columns=cols)
# 生存标签: "1:DECEASED"/"0:LIVING" -> 1/0
df["event"] = df["OS_STATUS"].str.split(":").str[0].astype(int)
df["time"] = pd.to_numeric(df["OS_MONTHS"], errors="coerce")
return df
def mutation_matrix(study, top_n=500):
maf = pd.read_csv(f"{study}/data_mutations.maf", sep="\t",
comment="#", low_memory=False)
maf = maf[maf["Variant_Classification"] != "Silent"] # 去同义突变
mat = (maf.assign(v=1)
.pivot_table(index="Tumor_Sample_Barcode",
columns="Hugo_Symbol", values="v", aggfunc="max")
.fillna(0).astype("int8"))
return mat.iloc[:, mat.sum(0).sort_values(ascending=False).index[:top_n]]
clin, X = load_clinical(STUDY), mutation_matrix(STUDY)
X = X[X.index.isin(clin["PATIENT_ID"])] # 对齐患者
print(X.shape, clin[["event", "time"]].describe().loc["mean"])
进阶:多组学联合矩阵组装(在同一研究内拼接离散 CNA、表达 z-score 与突变指示,注意坑点 3 的两套 z-score 只取其一):
def omics_block(study, fname, sep="\t", comment="#", index_col=0):
df = pd.read_csv(f"{study}/{fname}", sep=sep, comment=comment, index_col=index_col)
df.columns = [c.split("_01$|_03$|_06$", regex=False)[0].strip() for c in df.columns]
return df
mut = mutation_matrix(STUDY) # 患者×基因 0/1
cna = omics_block(STUDY, "data_CNA.txt").T # 样本×基因 -2..2
mrna = omics_block(STUDY, "data_mrna_seq_v2_rsem_zscores_ref_all_samples.txt")
cna, mrna = cna[cna.index.isin(mut.index)], mrna[mrna.index.isin(mut.index)]
common = mut.index.intersection(cna.index).intersection(mrna.index)
X_multi = pd.concat([mut.loc[common].add_prefix("mut_"),
cna.loc[common].add_prefix("cna_"),
mrna.loc[common].add_prefix("exp_")], axis=1)
print(f"多组学矩阵: {X_multi.shape}(患者×特征)") # 缺失模态列以 NA 呈现
§6.4 PyTorch DataLoader
<details>
<summary>多组学生存数据集完整代码(点击展开)</summary>
# 目录预期: data_root 下每研究一个文件夹;最小子集: 突变表 + 临床表
# data_root 拼接: data_root/{studyId}/data_mutations.maf
import pandas as pd, torch
from torch.utils.data import Dataset, DataLoader
class CBioSurvivalDataset(Dataset):
"""患者×基因突变矩阵 + (time, event) 生存标签。
患者为最小划分单元,天然规避多标本泄漏。"""
def __init__(self, study_dir, top_n=500):
rows = [l.rstrip("\n") for l in open(f"{study_dir}/data_clinical_patient.txt")]
h = max(i for i, l in enumerate(rows[:6]) if l.startswith("#"))
cols = rows[h + 1].split("\t")
self.clin = pd.DataFrame([l.split("\t") for l in rows[h + 2:] if l.strip()],
columns=cols)
self.clin["event"] = self.clin["OS_STATUS"].str.split(":").str[0].astype(int)
self.clin["time"] = pd.to_numeric(self.clin["OS_MONTHS"], errors="coerce")
self.clin = self.clin.dropna(subset=["time"])
maf = pd.read_csv(f"{study_dir}/data_mutations.maf", sep="\t",
comment="#", low_memory=False)
maf = maf[maf["Variant_Classification"] != "Silent"]
self.mat = (maf.assign(v=1)
.pivot_table(index="Tumor_Sample_Barcode", columns="Hugo_Symbol",
values="v", aggfunc="max").fillna(0).astype("int8"))
top = self.mat.sum(0).sort_values(ascending=False).index[:top_n]
self.mat = self.mat.loc[self.mat.index.isin(self.clin["PATIENT_ID"]), top]
self.clin = self.clin.set_index("PATIENT_ID").loc[self.mat.index]
def __len__(self):
return len(self.mat)
def __getitem__(self, i):
x = torch.tensor(self.mat.iloc[i].values, dtype=torch.float32)
t = torch.tensor(self.clin["time"].iloc[i], dtype=torch.float32)
e = torch.tensor(self.clin["event"].iloc[i], dtype=torch.float32)
return x, t, e
ds = CBioSurvivalDataset("cbioportal_data/laml_tcga")
loader = DataLoader(ds, batch_size=64, shuffle=True, num_workers=2)
for x, t, e in loader: # x: [B, top_n] 突变特征; t: 生存时间; e: 事件指示
break
</details>
§6.5 坑点
⚠️ 坑点 1:多套 TCGA 版本并存导致同一样本重复进入分析(分类:数据泄漏)
问题:平台对同一癌种同时维护 Published(论文配套)、Firehose Legacy(原 Provisional)与 PanCancer Atlas 三套 TCGA 研究,三套包含大量相同样本但管线不同。混合查询会使同一样本被计两次,若训练/测试分属不同版本则构成直接泄漏。官方 FAQ 明确建议不要同时查询含相同样本的多套研究。
症状:OncoPrint 或 Cancer Types Summary 中样本计数与 Mutations 表行数不一致;跨版本统计同一基因突变频率出现 3%-10% 级差异;模型在"测试集"上表现异常好。
解决:
- 简单方法:任一 TCGA 癌种只保留一套——官方推荐 PanCancer Atlas(统一管线处理,最全 harmonization)。
- 进阶方法:用 API 拉取各候选研究的 sampleId 全集做交集检查,把重叠样本从次要研究剔除后再合并:
def sample_ids(study): return {s["sampleId"] for s in requests.get( f"{BASE}/studies/{study}/samples", params={"pageSize": 100000}).json()} keep = sample_ids("acc_tcga_pan_can_atlas_2018") add = sample_ids("acc_tcga") - keep # published 研究仅补 PanCancer 之外样本
- SOTA 方法:以患者为粒度建立全平台去重注册表(API 假定同 ID 即同人),任何 meta-cohort 构建先跑去重报告再入库,并将 studyId 白名单写入数据卡随模型版本管理。
参考:官方 FAQ(GDC/重复样本条目)、cbioportal-manual Datasets
⚠️ 坑点 2:跨研究比较突变频率忽略基因面板覆盖差异(分类:偏倚陷阱)
问题:靶向 panel 研究(如 MSK-IMPACT 410/461/505 基因)只检测 panel 内基因,WES/WGS 研究覆盖全外显子/全基因组。直接比较"基因 X 突变率"时,panel 外基因在小 panel 研究中恒为 0,把"未检测"误当"无突变"。
症状:某基因在 WES 研究中突变率 20%、panel 研究中 0%;聚合多研究绘制 oncoprint 时出现成列假阴性;训练的突变分类器学到"研究来源"而非生物学。
解决:
- 简单方法:分析前用 API
genePanels端点获取每样本 gene panel,仅保留"所有纳入研究均覆盖该基因"的基因集。- 进阶方法:构建样本×基因检测掩码矩阵(
getGenePanelMolecular,R:cBioPortalData),特征矩阵与掩码相乘后再聚合;logistic 回归中加入样本检测基因数作为协变量。- SOTA 方法:按面板分层训练(panel 内子模型)或采用 missingness-aware 模型(如 mask-aware attention / 重加权 EM),并将 panel 结构作为图约束输入。
参考:docs.cbioportal.org API 与客户端、cBioPortalData 参考手册
⚠️ 坑点 3:跨研究合并 mRNA z-score(分类:预处理陷阱)
问题:平台表达谱常同时提供两套 z-score(相对全部样本、相对二倍体样本),且 z-score 是研究内标准化——分属不同研究的 z-score 基线分布不同(各研究的"正常"定义、平台、批次不同),直接横向拼接等价于混合不同单位的测量。
症状:合并矩阵直方图呈多峰;表达主导的模型(如亚型聚类)聚类结果与研究来源完美重合(聚类=元数据);两套 z-score 特征同时入模导致共线性。
解决:
- 简单方法:每个研究内部只用一套 z-score(推荐 ref_all_samples 版本),跨研究分析改用原始 RSEM/微阵列值自行重标准化。
- 进阶方法:
sklearn.preprocessing.StandardScaler按研究分块拟合(z = (x-μ_study)/σ_study),训练折统计量在划分后再算;或对合并矩阵做分位数归一 + ComBat 批次校正(研究 ID 作为 batch)。- SOTA 方法:在深度模型中引入研究嵌入(study embedding)作为条件变量,或使用多任务学习把每个研究当任务域,显式吸收域偏移。
参考:cBioPortalData 用户指南(laml_tcga 两套 z-score 谱)、官方数据上传归一化脚本说明
⚠️ 坑点 4:参考基因组 hg19/hg38 混用(分类:工程陷阱)
问题:公共门户以 hg19/GRCh37 为主,但部分 GDC/ISB-CGC 来源研究用 hg38/GRCh38。跨研究合并 SEG 拷贝数片段或变异坐标时,同一基因组位置有两种坐标表示。
症状:SEG 文件合并后同一染色体区段出现重叠且边界"差一位数"的片段;liftOver 型交叉验证报错;与外部注释(如 GDC 数据)比对时变异对不上。
解决:
- 简单方法:单研究分析无碍;合并前用 API 研究元数据中的
referenceGenome字段过滤出单一基因组版本的研究。- 进阶方法:用 CrossMap/liftOver 链文件把少数 hg38 片段统一到 hg19(注意链转换失败率约 0.5%-1%,需丢弃无法转换的记录)。
- SOTA 方法:统一到 hg38 并用
bcftools norm重标准变异;拷贝数用片段级特征(宽度加权均值)而非精确坐标,降低坐标系统敏感性。
参考:官方 FAQ(参考基因组条目)
⚠️ 坑点 5:Entrez ID 与 Hugo Symbol 的多对一关系(分类:工程陷阱)
问题:平台以 Entrez Gene ID 为基因稳定主键、Hugo Symbol 为显示名。一个 Hugo Symbol 可对应多个 Entrez ID(历史别名/基因拆分),Entrez 缺失时 MAF 中该列为 0。按 Symbol groupby 会把不同基因合并、按 ID groupby 会把同一基因拆开。
症状:特征矩阵行数与预期基因数不符;同一基因名出现多行且值不同;跨研究 join 后计数凭空翻倍或丢失;R 构建报告(api_build 列)显示部分研究因"标识符错配"无法构建。
解决:
- 简单方法:突变矩阵 groupby 用
Entrez_Gene_Id(非 0 时),Symbol 仅作展示标签。- 进阶方法:加载官方 genes 端点建立 Entrez↔Hugo 权威映射;Entrez=0 的行用 Symbol 回查补齐,无法回查的行丢弃并记录。
- SOTA 方法:以 HGNC 主符号做归一层(alias table),每次数据刷新时重跑映射并在数据卡中记录映射版本,避免上游符号漂移静默破坏模型特征集。
参考:cBioPortalData 参考(api_build/pack_build 报告)、API 客户端文档
⚠️ 坑点 6:API 默认分页截断导致数据不全(分类:工程陷阱)
问题:REST API 大多数列表端点默认分页(pageSize 较小),不显式传参时只返回第一页;很多脚本能"跑通"却只拿到几十条记录。缓存了旧响应的 notebook 会进一步固化错误结果。
症状:研究数、突变数远小于页面显示;meta/totalCount字段大于返回数组长度;同一脚本两次运行结果不同(服务端默认值调整)。
解决:
- 简单方法:所有列表调用显式传
pageSize=100000, pageNumber=0,并校验返回头/体中的 total 计数。- 进阶方法:写一个通用分页迭代器,按
pageNumber递增直到取满 totalCount;对超大规模端点(全平台突变)改用 projection=SUMMARY 降带宽、按 molecularProfile 分片。- SOTA 方法:将 API 快照落盘(Parquet + 采集时间戳)作为本地缓存层,模型训练只读快照;用响应 schema 哈希监控 API 版本漂移。
参考:API 与 API Clients 文档、官方 codebook 笔记本
⚠️ 坑点 7:tarball 下载中断产生损坏缓存(分类:工程陷阱)
问题:cBioDataPack/curl 下载的整包 tarball 在网络中断后会留下截断文件;本地缓存(BiocFileCache)默认信任缓存,损坏文件被反复复用。
症状:untar报错或读出的 TSV 行数骤减;R 中同一研究反复构建失败而 API 通道正常;官方文档提示需用removeCache(cancer_study_id)清理(仅对 cBioDataPack 路线生效)。
解决:
- 简单方法:下载后校验
tar -tzf file.tar.gz退出码与文件清单完整;失败即删包重下。- 进阶方法:R 中
cBioPortalData::removeCache(study_id)定向清缓存;curl 加--retry 5 -C -断点续传并比对字节数。- SOTA 方法:改为 datahub Git 通道(git 有内容寻址完整性校验),或自建 S3/镜像源(cBioPortalData 支持
cBio_URL选项指向镜像)并记录 SHA256。
参考:cBioPortalData 手册(removeCache 条目)、社区数据摄取问题汇总
⚠️ 坑点 8:自部署 v6→v7 无原地升级路径(分类:工程陷阱)
问题:v7 将数据库从 MySQL 换为 ClickHouse,schema 根本不同,官方明确不支持原地升级,也不兼容 v6 配置文件与导入工具。按 v6 习惯直升会把整个实例打挂。
症状:升级后应用启动失败或数据不可见;metaImport 旧版工具对 v7 报不兼容错误;机构实例导入流程静默失效。
解决:
- 简单方法:新部署先留在最新 v6 维护版本;跟踪 v7 稳定发布后再迁移。
- 进阶方法:并行搭 v7 Docker Compose 环境,用 metaImport.py(v7 兼容版)重导入全部研究,重建派生表后再切流量。
- SOTA 方法:把研究导入脚本纳入 Git(datahub-study-curation-tools 模式),任何数据库换代以"重放导入流水线"方式完成,导入结果用研究级样本数/突变数断言做回归校验。
参考:Versioning and Upgrade Guide、Docker Compose 仓库
§6.6 数据增强
- ✅ 安全:基因 mask dropout(随机屏蔽 5%-10% 基因特征,模拟 panel 差异);特征 bagging(随机基因子集,类似随机森林的列采样);对表达值加微小高斯噪声(σ=0.05×标准差);SMOTE 类过采样仅作用于训练折。
- ❌ 危险:对生存时间做线性插值"补齐"删失样本(改变标签语义);用测试折统计量做归一化;跨研究混采后按样本打散划分(把域偏移泄漏进训练集);对突变矩阵做"翻转增强"(把无突变改成有突变违背生物学事实)。
组学数据增强的代码骨架(仅作用于训练折):
import torch
class TrainAugment:
"""训练期特征增强;验证/测试期用 identity。"""
def __init__(self, gene_dropout=0.10, noise_sigma=0.05):
self.p, self.sigma = gene_dropout, noise_sigma
def __call__(self, x: torch.Tensor) -> torch.Tensor:
mask = (torch.rand_like(x) > self.p).float() # 基因级随机置零
noise = torch.randn_like(x) * self.sigma * x.std()
return x * mask + noise
# DataLoader 侧: 仅对 train 子集套用 transform;eval 子集直接返回原始张量
§6.7 模型推荐表
| 任务 | 推荐模型 | 输入 | 起步理由 |
|---|---|---|---|
| 生存预测 | Cox-Lasso → DeepSurv | 突变/CNA/表达拼接 | 线性基线强,深度模型需 >1,000 样本 |
| 泛癌种分型 | MOFA+ / 变分自编码器 | 多组学联合 | 潜因子天然处理缺失模态 |
| 突变热点检测 | 轻量 MLP / XGBoost(序列+蛋白域特征) | HGVSp、蛋白位置 | 热点统计效应强于结构复杂度 |
| 跨癌种迁移 | 研究嵌入 + 多任务网络 | 特征+studyId | 显式吸收域偏移(坑点 3) |
| 可解释生物标志物 | 逻辑回归 + SHAP | 事件矩阵 | 临床可解释性优先 |
§6.8 硬件需求
| 阶段 | 最低配置 | 推荐配置 | 说明 |
|---|---|---|---|
| API 抽取 | 2 vCPU / 4 GB | 4 vCPU / 8 GB | 网络带宽为主 |
| 单研究 tarball 分析 | 8 GB RAM | 32 GB RAM | laml_tcga 级研究 16 GB 充足 |
| 多研究聚合(50+ 研究) | 32 GB RAM | 64-128 GB RAM / 512 GB SSD | 建议分批 + Parquet 落盘 |
| 深度模型训练 | 单卡 8 GB VRAM | 单卡 24 GB VRAM | 突变矩阵稀疏,GPU 非必需 |
显存与内存的错配提醒:组学特征的"宽度"(基因数)远小于影像数据的像素数,GPU 收益主要来自批量矩阵运算与交叉验证并行化,而非模型规模——预算有限时优先加 RAM 与 SSD,其次才是 GPU。
§6.9 评估指标代码
# 生存模型评估: concordance index + time-dependent AUC(scikit-survival)
# pip install scikit-survival
import numpy as np
from sksurv.util import Surv
from sksurv.metrics import concordance_index_censored, cumulative_dynamic_auc
y = Surv.from_arrays(event=clin["event"].values.astype(bool),
time=clin["time"].values)
risk = model_risk_scores # 越高越危险
cindex = concordance_index_censored(y["event"], y["time"], risk)[0]
times = np.quantile(y["time"][y["event"]], [0.25, 0.5, 0.75])
auc, mean_auc = cumulative_dynamic_auc(y, y, risk, times)
print(f"C-index={cindex:.3f}; t-AUC(25/50/75%)={np.round(auc, 3)}; mean={mean_auc:.3f}")
分类任务(如泛癌种分型、突变阳性/阴性预测)使用分层 AUC + 按癌种宏平均,避免大类癌种主导总分:
from sklearn.metrics import roc_auc_score, balanced_accuracy_score
import pandas as pd
def per_cancer_auc(y_true, y_score, cancer_type):
df = pd.DataFrame({"y": y_true, "s": y_score, "t": cancer_type})
out = (df.groupby("t")
.filter(lambda g: g["y"].nunique() == 2) # 单类癌种无法算 AUC
.groupby("t").apply(lambda g: roc_auc_score(g["y"], g["s"])))
return out.mean(), out # 宏平均 + 逐癌种明细
macro, detail = per_cancer_auc(y_true, y_score, ct)
print(f"宏平均 AUC={macro:.3f}\n{detail.sort_values(ascending=False).head()}")
§6.10 MLOps 笔记
- 数据版本化:以 datahub Git 提交哈希 + studyId 列表作为数据集版本指纹;API 路线记录采集时间戳与
/api/info返回的版本号。 - 白名单纪律:训练配置文件中显式写入 studyId 白名单与排除理由(如"acc_tcga excluded: duplicate of pan-can atlas"),坑点 1 的审计材料即此文件。
- 面板感知监控:线上/复现时监控每 batch 的 gene panel 覆盖率漂移;覆盖率突变是数据源变更的第一信号。
- API 降级预案:API 版本漂移会破坏客户端(cBioPortalData 文档明示),生产管道应有本地 Parquet 快照兜底(坑点 6/7 的组合解)。
- 评测复现:外部验证固定用另一研究全集 + 固定 random seed;把 C-index 与面板覆盖率一起报告,避免"隐性好成绩"。
- 成本控制:巨型研究(MSK-CHORD/MetTropism 2.5 万级样本)的 API 拉取以小时计,生产管道应在首次成功抽取后立即落 Parquet 快照,后续训练只读快照并按周 diff 增量研究清单。
§7 质量评估与局限性
§7.1 已知偏倚表
| 偏倚类型 | 描述 | 严重程度 | 缓解 |
|---|---|---|---|
| 入组偏倚 | MSK-IMPACT 类前瞻测序队列以晚期/经治患者为主,早癌谱欠代表 | 高 | 分析时按分期分层;避免外推至筛查场景 |
| 机构/地域偏倚 | 队列集中于美欧三级肿瘤中心;中国等新兴队列占比仍小 | 高 | 引入中国泛癌种队列等做迁移检验 |
| 面板覆盖偏倚 | 靶向 panel 研究基因覆盖不一(坑点 2) | 高 | 基因面板掩码过滤 |
| 管线版本偏倚 | TCGA 三套版本突变调用不一致 | 中 | 锁定 PanCancer Atlas 单一版本 |
| 肿瘤-only 测序偏倚 | 部分研究无匹配正常对照,胚系污染抬高变异调用 | 中 | 过滤 germline 标记变异;谨慎解读低 VAF |
| 生存随访偏倚 | 各研究随访期与删失机制不同 | 中 | 按研究报告 C-index,不跨研究合并 KM |
| 注释版本偏倚 | 平台注释管线升级后同一变异的注解字段可能更新 | 低 | 锁定 API 版本号记录;关键结论抽查注释快照 |
§7.2 标注质量
突变标注(自动)经统一注释管线,一致性高但继承各研究检测灵敏度差异;临床标注(人工抽取)属性完备率参差,跨研究联合分析前必须逐属性统计缺失率。生存标签(OS_STATUS/OS_MONTHS)为平台最稳定字段,来自各研究随访记录。
三类标签的可信度梯度(经验排序,供建模参考):①突变事件标签最硬——由测序数据直接产生、经平台统一注释;②分子谱连续值(表达/甲基化/RPPA)次之——受平台批次影响,研究内可比性优于跨研究;③临床属性标签(治疗反应、分期)最弱——抽取口径随研究协议变化,MSI_STATUS 等复合属性甚至存在"检测方法不同导致口径不同"的问题。建议把标签来源层级写进特征工程文档,重要结论只建立在第①类标签上。
§7.3 泛化性表
| 场景 | 失效风险 | 证据 |
|---|---|---|
| TCGA 模型 → 真实世界晚期队列 | 高:分期、经治史分布不同 | MSK-IMPACT 与 TCGA 人群构成差异显著 |
| 美欧队列 → 中国人群 | 中高:突变谱与人群结构差异 | 平台专设中国泛癌种研究(Nature 2022)即为对冲 |
| WES 研究 → 小 panel 临床检测 | 高:特征覆盖缩水 | 面板差异机制(坑点 2) |
| 单癌种模型 → 泛癌种部署 | 中:域偏移 | 官方三套 TCGA 版本间的差异即最小跨版本实验 |
| 原发肿瘤模型 → 复发/转移场景 | 高:演进与治疗选择压 | MetTropism 等纵向研究显示治疗驱动的克隆演变 |
| 成人队列模型 → 儿科肿瘤 | 高:驱动机制不同(融合主导) | 平台单列 16 项儿科研究即为结构隔离 |
§7.4 伦理
平台仅存去标识化数据,不含 PHI(出生日期、病历号);发表类研究(TCGA、GENIE)均要求患者知情同意共享去标识化临床数据(cbioportal-manual)。使用者不得尝试重识别;GENIE 需注册并同意使用条款。
§7.5 公平性
种族/族群属性仅部分研究采集且口径不一, ancestries 元数据不完整限制了公平性审计的粒度;构建跨人群模型时应报告研究来源混淆与亚组样本量,而非直接给出"公平"结论。可操作的公平性检查清单:①用 SELF_REPORTED_RACE/ETHNICITY 类属性统计亚组样本量,缺失即单列"未报告"组,禁止静默丢弃;②按亚组报告 C-index/AUC 差异,差异 >0.05 触发复审;③跨人群外部验证至少包含一个非美欧队列(平台内置中国泛癌种研究可直接充当);④报告亚组样本量下限(如 <30 例不单独出结论),避免小样本偶然差被解读为不公平证据。
§7.6 数据漂移
平台持续新增研究(2020 年即新增 21 项、约 30,000 样本),公共门户数据处于滚动更新状态;固定研究 ID + tarball 快照可冻结分析基线,API 直连则需在每次复现时拉取 /api/info 版本号记录。三类漂移源与监测方法:①供给漂移——新研究入库改变聚合统计分母(监测:研究数量按月 diff);②管线漂移——注释管线/数据库版本升级使同一 MAF 的注释字段变化(监测:抽查固定基因的 mutationType 快照);③架构漂移——v6→v7 数据库换代可能引起 API 细微行为差异(监测:CI 中固定研究集的响应哈希)。三者都应写进生产监控的告警规则。
§7.7 DAIMS 24 项检查
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 基因×样本矩阵 + 临床属性表,天然分析友好 |
| 2 | 唯一标识 | ⚠️ | patientId/sampleId 研究内唯一;跨研究同 ID 即同人,需全局去重 |
| 3 | 特殊字符 | ✅ | TSV 规范转义;临床属性 [Unknown] 类标记统一 |
| 4 | 重复行 | ⚠️ | 多套 TCGA 版本构成结构性"重复",需白名单治理 |
| 5 | 缺失编码 | ✅ | NA/空串/[Not Available] 口径明确 |
| 6 | 标签标识 | ✅ | OS_STATUS/OS_MONTHS 语义文档化,全平台统一 |
| 7 | 罕见类分组 | ⚠️ | 罕见癌种单研究样本量小,需跨研究聚合(引坑点 1 纪律) |
| 8 | 偏倚评估 | ✅ | 入组/面板/管线偏倚官方文档明示,可操作缓解 |
| 9 | 数据字典 | ✅ | validator 强制元文件(meta_*.txt)定义每列语义 |
| 10 | 信息性缺失解释 | ✅ | panel 外基因"未检测≠无突变"机制清晰(坑点 2) |
| 11 | 设备记录 | ⚠️ | 测序平台随研究异质,元数据粒度不统一 |
| 12 | 共线性 | ⚠️ | 两套 z-score 并存需去重(坑点 3) |
| 13 | 编码映射 | ⚠️ | Entrez/Hugo 多对一需显式映射表(坑点 5) |
| 14 | 时间戳处理 | ✅ | 生存以月数记录;API 无时区陷阱 |
| 15 | 划分建议 | ⚠️ | 官方无划分,社区惯例成熟但需自行落实(§5) |
| 16 | 泄漏讨论 | ✅ | 官方 FAQ 直接警告重复样本查询(坑点 1) |
| 17 | 标签分布 | ✅ | 可经 API 瞬时统计;无官方预发布汇总 |
| 18 | 测量偏倚 | ⚠️ | 肿瘤-only 研究、panel 深度差异需协变量校正 |
| 19 | 外部验证建议 | ✅ | 跨研究/跨管线外部集丰富(§7.8) |
| 20 | 版本记录 | ✅ | datahub Git 历史 + v6/v7 版本指南 |
| 21 | 预处理脚本 | ✅ | validator、归一化脚本、codebook 官方供给 |
| 22 | 合规要求 | ✅ | 公开数据无需申请;GENIE 注册条款明确 |
| 23 | 多模态对齐 | ⚠️ | 样本级对齐可靠,但并非每研究全模态覆盖 |
| 24 | 去标识化 | ✅ | 无 PHI、年龄分箱、研究内 ID 体系 |
DAIMS 评分:17.5 / 24
评分解读:单研究数据质量达到基准数据集水准(格式规范、文档完备、官方工具链齐全);扣分集中在"跨研究"维度——多版本并存、面板异质、标识符映射与无官方划分,意味着任何跨研究联合建模都必须自带治理层。
对你意味着什么:①做单研究建模可以直接开跑,预期当天完成数据管线;②做跨研究联合学习前,先把 §5.3 的白名单、面板掩码、按研究重标准化三件事写进代码评审清单;③不要把平台当作"一个大数据集",要当作"468 个带治理要求的小数据集联邦";④交付模型时把 studyId 清单 + datahub 哈希写进数据卡,否则复现者会在三套 TCGA 版本里迷路。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| MSK-IMPACT(Nat Med 2017) | MSK | 大规模临床测序可行性 | 10,945 例验证 | —(平台内部研究,作为 TCGA 的真实世界对照) | 临床级 panel 可复现 TCGA 级发现 |
| GENIE v1(Cancer Discov 2017) | AACR 联盟 | 多机构数据聚合 | 59,000+ 例(v1) | 相对单机构数据均一性下降 | 证明跨机构 panel 数据可统一汇总 |
| PCAWG(Nature 2020) | ICGC/TCGA | WGS 变异检出 | 2,922 全基因组 | 相对 WES 检出更多非编码事件 | WGS 扩展了 portal 数据的变异谱系 |
| MSK-CHORD(Nature 2024) | MSK | 基因组-临床深度整合 | 25,040 样本 | — | 真实世界治疗结局可规模化链接 |
| 中国泛癌种队列(Nature 2022) | OrigiMed 多中心 | 跨人群迁移验证 | 10,194 样本 | 相对美欧队列构成人群对照 | 中国人群泛癌种突变谱的公共参照 |
| TARGET 儿科系列 | NCI/儿童肿瘤协作组 | 儿科肿瘤分子画像 | 数百-千级/癌种 | 与成人队列机制差异显著 | 儿科-成人分层建模的分界证据 |
§8 基准性能与生态
§8.1 基于 cBioPortal 数据的代表性研究(无官方排行榜说明)
cBioPortal 是数据平台而非竞赛基准,不存在官方 SOTA 排行榜。下表列出以平台数据(或其托管研究)为基础设施的里程碑研究,数值不可跨行直接比较(任务、队列、终点各异):
| 研究 | 模型/方法 | 任务 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| Oncogenic Signaling Pathways | 通路分析 | 10 条信号通路泛癌种刻画 | 2018 | PanCancer Atlas 统一管线 | Sanchez-Vega F, et al. Cell. 2018;173(4):806-820. DOI 10.1016/j.cell.2018.03.035 | — |
| MSK-IMPACT | 临床测序框架 | 10,945 例分子画像 | 2017 | 靶向 panel+临床链接 | Zehir A, et al. Nat Med. 2017;23(6):703-713. DOI 10.1038/nm.4333 | — |
| TMB 与免疫治疗 | TMB 分层 | 免疫治疗结局关联 | 2019 | 大队列 TMB 阈值分析 | Samstein RM, et al. Nat Genet. 2019;51(2):202-206. DOI 10.1038/s41588-018-0318-2 | — |
| PCAWG | 多管线 WGS 共识 | 泛癌全基因组图谱 | 2020 | 独立管线+共识聚类 | PCawg Consortium, Nature. 2020;578(7794):82-93. DOI 10.1038/s41586-020-1969-6 | — |
| cBioPortalData | Bioconductor 客户端 | 数据基础设施 | 2020 | MultiAssayExperiment 整合 | Ramos M, et al. JCO Clin Cancer Inform. 2020;(4):899-905. DOI 10.1200/CCI.19.00120 | GitHub |
| GENIE BPC 纵向队列 | 临床-基因组链接 | 治疗轨迹分析 | 2023 | 纵向临床数据模型 | De Bruijn I, et al. Cancer Res. 2023;83(23):3861-3867. DOI 10.1158/0008-5472.CAN-23-1405 | — |
§8.2 SOTA 总结与选型建议
平台内的"最优"取决于任务:描述性探索用门户内置分析(OncoPrint、survival、group comparison 已覆盖 80% 需求);统计建模用 R tidyverse/cbioportalR 管线;深度多组学用 PyTorch 自建(§6.4)。没有理由为单基因查询引入深度模型;也没有理由在 >10,000 样本的生存任务上止步于 Cox-Lasso。
选型决策树:①问题能用"基因 X 在队列 Y 的频率"回答 → 门户查询,零代码;②需要控制混杂(年龄/分期/TMB)→ R 或 Python 回归框架;③特征 >1,000 且样本 >1,000 → 弹性网 → 梯度提升 → 深度模型逐级对比,且必须报告 §5.4 自检通过的划分协议;④跨研究泛化是卖点 → 必须包含研究间外部验证并披露面板覆盖率。
§8.3 评测协议
社区通行协议:固定研究集合 → patientId 分层 5 折 CV → C-index/AUC + 95% CI → 外部研究全集验证 → 报告面板覆盖率与队列构成。禁止跨研究打散划分(§5.3)。
报告清单(投稿/开源前逐项打勾):①训练研究 ID 全集与排除理由;②每折样本量与事件数;③特征数与面板覆盖说明;④主指标 + 95% CI(bootstrap 1,000 次);⑤外部验证集独立报告,不与内部 CV 混排;⑥随机种子与依赖版本。任何一项缺失都会在同行评审中被质疑——这套清单正是把平台"无官方划分"的开放性转化为可审计严谨性的代价。
§8.4 相关数据集表
| 数据集 | 关系 | 官方入口 | 站内词条 |
|---|---|---|---|
| AACR GENIE | 平台最大子项目,独立实例 | genie.cbioportal.org | AACR GENIE |
| TCGA | 最主要上游数据源(三套版本) | gdc.cancer.gov | — |
| ICGC | 国际队列上游(PCAWG) | dcc.icgc.org | ICGC(词条生产中) |
| CPTAC | 蛋白基因组互补队列 | proteomic.datacommons.cancer.gov | CPTAC |
| OncoKB | 变异临床证据注释服务 | onkb.org | — |
| GDC | TCGA 原始数据重处理门户 | gdc.cancer.gov | — |
| OncoTree | 平台癌种分类本体 | oncotree.mskcc.org | — |
| Genome Nexus | 平台默认变异注释引擎 | genomenexus.org | — |
| PCAWG | 泛癌全基因组分析成果集 | dcc.icgc.org/pcawg | — |
§8.5 关键论文 Top 6
- Cerami E, et al. The cBio cancer genomics portal: an open platform for exploring multidimensional cancer genomics data. Cancer Discovery. 2012;2(5):401-404. DOI 10.1158/2159-8290.CD-12-0095 — 平台奠基论文,提出基因级 alteration 抽象。
- Gao J, et al. Integrative analysis of complex cancer genomics and clinical profiles using the cBioPortal. Science Signaling. 2013;6(269):pl1. DOI 10.1126/scisignal.2004088 — 全功能使用指南,定义四步查询范式。
- Zehir A, et al. Mutational landscape of metastatic cancer revealed from prospective clinical sequencing of 10,000 patients. Nature Medicine. 2017;23(6):703-713. DOI 10.1038/nm.4333 — MSK-IMPACT 队列,真实世界临床基因组学模板。
- Sanchez-Vega F, et al. Oncogenic signaling pathways in The Cancer Genome Atlas. Cell. 2018;173(4):806-820. DOI 10.1016/j.cell.2018.03.035 — 基于 PanCancer Atlas 的通路全景分析。
- Ramos M, et al. cBioPortalData: R/Bioconductor data access. JCO Clinical Cancer Informatics. 2020;(4):899-905. DOI 10.1200/CCI.19.00120 — 程序化获取通道的正式方法学。
- De Bruijn I, et al. Analysis and visualization of longitudinal genomic and clinical data from the AACR Project GENIE biopharma collaborative in cBioPortal. Cancer Research. 2023;83(23):3861-3867. DOI 10.1158/0008-5472.CAN-23-1405 — 纵向临床+基因组整合的最新范式。
- AACR Project GENIE Consortium. AACR Project GENIE: powering precision medicine through an international consortium. Cancer Discovery. 2017;7(8):818-831. DOI 10.1158/2159-8290.CD-17-0211 — 平台最大子项目的奠基论文,定义多机构临床测序数据聚合范式。
§8.6 社区活跃度
- GitHub 主仓库约 1,000+ Star、860+ Fork,前端仓库另有独立社区(GitHub 组织,截至 2026-09 检索)。
- 官方 Slack(slack.cbioportal.org)+ 每年美国癌症研究年会(AACR)摘要更新;93+ 机构部署实例构成分布式用户群(about 页)。
- 教学资源:五部分官方 Webinar 系列录像、codebook 分析笔记本库。
- 月活 38,000+ 用户、累计 800 万+ 访问(about 页),公共站点数据仍以每年十余项新研究的速度滚动增长(2020 年新增 21 项,AACR 2021 摘要)。
- AI 生态动向:官方已发布 cbioportal-navigator(自然语言查询→cBioPortal URL 的 MCP 服务器),标志平台开始为 LLM Agent 场景提供原生接口(GitHub 组织)。
§8.7 生态快照表
| 资源 | 类型 | 链接 | Star(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| cBioPortal 后端 | Java Spring 平台 | GitHub | 1,000+ | 核心平台,AGPL-3.0 |
| cBioPortal 前端 | React/TypeScript | GitHub | 140+ | OncoPrint 等可视化组件源 |
| datahub | 数据仓库 | GitHub | 210+ | 全部公开研究 TSV + 版本历史 |
| codebook | 分析笔记本 | GitHub | ~10 | 官方 Python/R 配方 |
| cBioPortalData | R/Bioconductor 包 | Bioconductor | — | MultiAssayExperiment 标准化访问 |
| cbioportalR | R 包(tidyverse) | 文档 | — | 临床研究者友好 |
| cbioportal-navigator | MCP 服务器 | GitHub | — | 自然语言→cBioPortal 查询,AI Agent 接入点 |
§9 相关资源与引用
§9.1 官方资源列表
- 主门户与查询:https://www.cbioportal.org
- 研究清单与 tarball 下载:https://www.cbioportal.org/datasets
- API 文档(Swagger):https://www.cbioportal.org/api + docs.cbioportal.org/web-api-and-clients
- 全套文档:https://docs.cbioportal.org
- 介绍页与统计:https://about.cbioportal.org
- 数据策展手册:cbioportal-manual(Datasets)
- 自部署:cbioportal-docker-compose + 版本与升级指南
- GENIE 子实例:https://genie.cbioportal.org + Synapse
- 官方教学视频:教程页含五部分 Webinar 录像、操作幻灯与 how-to 视频(约数千次观看,AACR 2021 摘要)
- R 工作坊材料:2020 cBioPortal R Workshop + cBioPortalData 用户指南
- 社区支持:slack.cbioportal.org + GitHub issue tracker
§9.2 BibTeX 完整引用
@article{cerami2012cbio,
title = {The cBio cancer genomics portal: an open platform for exploring multidimensional cancer genomics data},
author = {Cerami, Ethan and Gao, Jianjiong and Dogrusoz, Ugur and Gross, Benjamin E and Sumer, S Onur and Aksoy, Bulent Arman and Jacobsen, Anders and Byrne, Caitlin J and Heuer, Michael L and Larsson, Erik and Antipin, Yevgeniy and Reva, Boris and Goldberg, Arthur P and Sander, Chris and Schultz, Nikolaus},
journal = {Cancer Discovery},
volume = {2},
number = {5},
pages = {401--404},
year = {2012},
doi = {10.1158/2159-8290.CD-12-0095}
}
@article{gao2013integrative,
title = {Integrative analysis of complex cancer genomics and clinical profiles using the cBioPortal},
author = {Gao, Jianjiong and Aksoy, B{\"u}lent Arman and Dogrusoz, U{\u{g}}ur and Dresdner, Gideon and Gross, Benjamin and Sumer, S Onur and Sun, Yichao and Jacobsen, Anders and Sinha, Rileen and Larsson, Erik and Cerami, Ethan and Sander, Chris and Schultz, Nikolaus},
journal = {Science Signaling},
volume = {6},
number = {269},
pages = {pl1},
year = {2013},
doi = {10.1126/scisignal.2004088}
}
@article{ramos2020cbioportaldata,
title = {cBioPortalData: a Bioconductor package for accessing and analyzing cBioPortal cancer genomics data},
author = {Ramos, Marcel and Geistlinger, Ludwig and Oh, Sehyun and Schiffer, Levi and Cesario, Angela and Gao, Jianjiong and de Bruijn, Ino and Cetinkaya, Alper and ElAyachi, Imane and Waldron, Levi},
journal = {JCO Clinical Cancer Informatics},
number = {4},
pages = {899--905},
year = {2020},
doi = {10.1200/CCI.19.00120}
}
§9.3 引用指南
数据使用请引用 Cerami 2012 与 Gao 2013;程序化访问(R)请加引 Ramos 2020;所用具体研究的原始论文经 API 的 citation/pmid 字段获取后一并引用。
三条实操规则:①每篇论文的方法节应写明所用研究的 studyId 全集、检索/API 调用日期与数据快照方式(tarball 哈希或 API 版本号),三者缺一不可复现;②引用计数随时间增长,本词条"截至 2026-07"的数字不应被冻结转引,正式发表前请复查 Google Scholar;③GENIE 数据另有独立的引用与条款要求(Cancer Discovery 2017 联盟论文 + Synapse 条款版本),使用 GENIE 时以其实例页面给出的引用格式为准。
§10 AI 使用声明卡
§10.1 本词条使用的 AI 模型列表
| 模型 | 用途 |
|---|---|
| Claude(CodeBuddy Code 内置 fast-model) | 资料整合、结构化写作、代码示例生成 |
§10.2 AI 参与范围
AI 负责检索结果整合、初稿撰写与代码示例组织;全部事实性数字来源于 §0 声明的检索核实流程,最终内容由人工按 §10.4 表格审核。AI 不直接访问 cBioPortal 数据库,未产生任何本词条数字。
AI 未参与的部分:研究选题与章节框架由编辑部定稿规范(写作宪法)预先确定;审核结论与发布决定由人工做出。AI 生成内容中所有定量断言(研究数、样本量、引用数、版本行为)均可在 §10.3 的 16 条来源中溯源;检索未能证实的字段已直接省略而非推测填充。
§10.3 输入来源列表
- Cerami E, et al. Cancer Discovery. 2012;2(5):401-404. DOI 10.1158/2159-8290.CD-12-0095 — https://pmc.ncbi.nlm.nih.gov/articles/PMC3956037/
- Gao J, et al. Science Signaling. 2013;6(269):pl1. DOI 10.1126/scisignal.2004088
- 官方介绍页(研究数/引用/实例统计) — https://about.cbioportal.org/
- 门户首页研究分类统计 — https://frontend.cbioportal.org/
- 官方手册 Datasets 章节 — https://github.com/cBioPortal/cbioportal-manual/blob/master/Datasets.md
- 官方 FAQ(重复样本/参考基因组/GENIE 条目) — https://github.com/cBioPortal/cbioportal/pull/10894/files
- 版本与升级指南(v6/v7) — https://docs.cbioportal.org/versioning-and-upgrades
- API 与 API Clients 文档 — https://docs.cbioportal.org/web-api-and-clients
- cBioPortalData 用户指南 — https://bioconductor.org/packages/release/bioc/vignettes/cBioPortalData/inst/doc/cBioPortalData.html
- cBioPortalData 参考手册 — https://waldronlab.io/cBioPortalData/reference/cBioPortal.html
- cBioPortalData 包手册(缓存/成功率) — Bioconductor 手册 PDF
- MSK 图书馆 cBioPortal 提交指南(组件/策展流程) — https://libguides.mskcc.org/c.php?g=1455488&p=10821493
- AACR 2021 年会摘要(研究数/GENIE 规模) — https://core.ac.uk/works/238138691
- Google Scholar 引用计数(截至 2026-07) — Cerami 主页
- 社区数据摄取挑战汇总 — https://zifo.com/?p=20787/
- GitHub 组织(生态仓库) — https://github.org/cBioPortal
§10.4 人工校验表
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| §2 医学背景(ICD-11/SNOMED 映射、流行病学) | 千方病案医学编辑部 | 对照 IARC/WHO 官方编码复核 | ✅ 已通过 |
| §3-§4 数据规格与 DAIMS 字段字典 | 千方病案医学编辑部数据工程师 | 对照官方手册与 API 文档逐项核对 | ✅ 已通过 |
| §6 全部代码示例 | 千方病案医学编辑部数据工程师 | 沙箱运行验证 | ✅ 已验证 |
| §6.5 坑点 1-8 | 千方病案医学编辑部数据工程师 | 对照官方 FAQ 与客户端文档溯源 | ✅ 已通过 |
| §7.7 DAIMS 24 项评分 | 千方病案医学编辑部 | 集体评审 | ✅ 已通过 |
| 全文事实性数字 | 千方病案医学编辑部 | FACTS.md 溯源核对 | ✅ 已验证 |
§10.5 AI 生成章节标注
初稿全文由 AI 整合生成;§0、§10 为人工主导撰写;其余章节均经 §10.4 所列人工审核后发布。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- pcawg — 共享标签:基因组学与多组学 / 肿瘤学 / 测序数据
- vanderbilt-sd-biovu — 共享标签:基因组学与多组学 / 肿瘤学 / 测序数据
- genomics-england-100k — 共享标签:基因组学与多组学 / 肿瘤学
- target — 共享标签:基因组学与多组学 / 肿瘤学
- gdsc — 共享标签:基因组学与多组学 / 肿瘤学 / 测序数据
- pharmgkb — 共享标签:基因组学与多组学 / 肿瘤学 / 测序数据
- aacr-genie — 共享标签:基因组学与多组学 / 肿瘤学
- gnomad — 共享标签:基因组学与多组学 / 测序数据
- uniprot — 共享标签:基因组学与多组学 / 测序数据
- 1000-genomes — 共享标签:基因组学与多组学 / 测序数据
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
