TCGA 与 ICGC 数据联合挖掘¶
一句话说明¶
TCGA 和 ICGC 是全球最大的两个肿瘤基因组数据库,分别由美国和国际联盟主导,联合使用可以增加样本量、跨人群验证结论、覆盖更多癌种。
核心知识点¶
1. 两大数据库对比¶
| 特性 | TCGA | ICGC/PCAWG |
|---|---|---|
| 主导 | NCI/NHGRI (美国) | 国际联盟 (18国) |
| 癌种数 | 33 种 | 76+ 种 |
| 样本量 | ~11,000 | ~25,000+ |
| 主要数据 | WES + RNA-seq + 甲基化 | WGS 为主 |
| 数据门户 | GDC Portal | ICGC DCC / ARGO |
| 人群 | 以欧裔为主 | 更多样化 |
| 访问 | 大部分开放 | 受控访问为主 |
2. 数据下载方式¶
- TCGA: GDC Portal (portal.gdc.cancer.gov) +
gdc-client+ TCGAbiolinks (R包) - ICGC: ICGC DCC (dcc.icgc.org) + ARGO Platform +
icgc-get - cBioPortal: 在线交互式查询两个数据库的突变数据
- UCSC Xena: 统一格式的多来源数据查询
3. 联合分析的挑战¶
- 数据格式不统一:TCGA 用 MAF 格式,ICGC 用自定义 TSV
- 基因组版本:TCGA 混用 hg19/hg38,ICGC 也有版本差异
- 突变检测流程:不同 pipeline 产生的突变集不完全可比
- 批次效应:不同测序平台、不同实验室、不同时间
4. 联合分析策略¶
- 统一重新比对+调用:最理想但计算量巨大(如 PCAWG 项目)
- 统一注释:用相同工具重新注释双方的变异
- Meta 分析:各自分析后做统计合并
- 跨库验证:一方发现 + 另一方验证
实战代码¶
# === 使用 TCGAbiolinks 下载 TCGA 数据 ===
library(TCGAbiolinks) # TCGA数据访问包
# 1. 查询可用项目
projects <- getGDCprojects() # 获取所有项目
tcga_projects <- projects[grep("TCGA", projects$id), ] # 筛选TCGA
# 2. 下载表达数据(以肝癌为例)
query_expr <- GDCquery(
project = "TCGA-LIHC", # 肝细胞癌
data.category = "Transcriptome Profiling", # 转录组
data.type = "Gene Expression Quantification", # 基因表达
workflow.type = "STAR - Counts" # STAR计数
)
GDCdownload(query_expr) # 下载数据
expr_data <- GDCprepare(query_expr) # 整理为 SummarizedExperiment
# 3. 下载突变数据
query_mut <- GDCquery(
project = "TCGA-LIHC", # 肝细胞癌
data.category = "Simple Nucleotide Variation",
data.type = "Masked Somatic Mutation"
)
GDCdownload(query_mut)
maf_data <- GDCprepare(query_mut) # MAF数据
# 4. 下载临床数据
clinical <- GDCquery_clinic("TCGA-LIHC", type = "clinical")
# === ICGC 数据下载与整合 ===
import pandas as pd # 数据处理
import requests # API请求
# 1. ICGC DCC API 查询
base_url = "https://dcc.icgc.org/api/v1"
# 查询肝癌项目(LIRI-JP: 日本肝癌)
resp = requests.get(f"{base_url}/projects/LIRI-JP")
project_info = resp.json() # 获取项目信息
print(f"项目: {project_info['name']}")
print(f"样本数: {project_info['totalDonorCount']}")
# 2. 下载简单体细胞突变
mutations_url = (f"{base_url}/download?fn=/release_28/"
f"Projects/LIRI-JP/simple_somatic_mutation.open.LIRI-JP.tsv.gz")
# 注意:受控数据需要 DACO 访问权限
# 3. 统一格式处理(ICGC → 类MAF格式)
def icgc_to_maf_format(icgc_df):
"""将 ICGC 突变格式转为类 MAF 格式"""
maf = pd.DataFrame({
"Hugo_Symbol": icgc_df["gene_affected"], # 基因名
"Chromosome": icgc_df["chromosome"], # 染色体
"Start_Position": icgc_df["chromosome_start"], # 起始位置
"End_Position": icgc_df["chromosome_end"], # 终止位置
"Reference_Allele": icgc_df["reference_genome_allele"], # 参考等位
"Tumor_Seq_Allele2": icgc_df["mutated_to_allele"], # 突变等位
"Variant_Classification": icgc_df["consequence_type"], # 变异类型
"Tumor_Sample_Barcode": icgc_df["icgc_donor_id"], # 样本ID
})
return maf
# 4. 联合分析:TCGA + ICGC 突变频率比较
def compare_mutation_freq(tcga_maf, icgc_maf, top_n=20):
"""比较两个队列的基因突变频率"""
# TCGA 突变频率
tcga_samples = tcga_maf["Tumor_Sample_Barcode"].nunique()
tcga_freq = (tcga_maf.groupby("Hugo_Symbol")
["Tumor_Sample_Barcode"].nunique() / tcga_samples)
# ICGC 突变频率
icgc_samples = icgc_maf["Tumor_Sample_Barcode"].nunique()
icgc_freq = (icgc_maf.groupby("Hugo_Symbol")
["Tumor_Sample_Barcode"].nunique() / icgc_samples)
# 合并比较
comparison = pd.DataFrame({
"TCGA_freq": tcga_freq, # TCGA频率
"ICGC_freq": icgc_freq # ICGC频率
}).fillna(0) # 缺失填0
# 排序并打印
comparison["mean_freq"] = (comparison["TCGA_freq"] +
comparison["ICGC_freq"]) / 2
comparison = comparison.sort_values("mean_freq", ascending=False)
print(f"\n{'基因':<15} {'TCGA':>8} {'ICGC':>8}")
print("-" * 35)
for gene, row in comparison.head(top_n).iterrows():
print(f"{gene:<15} {row['TCGA_freq']:>7.1%} {row['ICGC_freq']:>7.1%}")
return comparison
# compare_mutation_freq(tcga_maf, icgc_maf)
面试常问点¶
★ TCGA 和 ICGC 的数据怎么联合使用?¶
参考答案:最常见的是"发现+验证"模式:在 TCGA 中发现分子标志物/预后模型,在 ICGC 中验证。联合时要注意:(1) 统一基因组坐标版本(都转到 hg38);(2) 统一基因ID系统(Ensembl/HGNC);(3) 突变数据最好用相同 pipeline 重新处理;(4) 基因表达数据需要去除批次效应(ComBat 或 limma)。直接使用 cBioPortal 或 UCSC Xena 可以方便地交叉查询两个库的数据。
★ 怎么处理跨数据库的批次效应?¶
参考答案:几种策略:(1) 统一预处理——从原始数据开始用相同 pipeline 处理;(2) 归一化——对基因表达用 ComBat/SVA 去除批次效应;(3) 分库分析——各自在自己的数据中做分析,最后用 meta 分析合并 p 值和效应量;(4) 交叉验证——在一个库中训练模型,在另一个库中验证性能下降是否可接受。策略 (3) 和 (4) 最稳健,不会引入新的偏差。
速查卡片¶
| 问题 | 答案 |
|---|---|
| TCGA 样本量 | ~11,000 |
| ICGC 样本量 | ~25,000+ |
| TCGA 数据门户 | GDC Portal |
| ICGC 数据门户 | ICGC DCC |
| R 下载工具 | TCGAbiolinks |
| 在线查询 | cBioPortal, UCSC Xena |
| 格式差异 | TCGA用MAF, ICGC用TSV |
| 批次校正 | ComBat, SVA |
| 联合策略 | 发现+验证 / Meta分析 |
| PCAWG 项目 | ICGC 的 WGS 泛癌分析 |