跳转至

TCGA 与 ICGC 数据联合挖掘


一句话说明

TCGA 和 ICGC 是全球最大的两个肿瘤基因组数据库,分别由美国和国际联盟主导,联合使用可以增加样本量、跨人群验证结论、覆盖更多癌种。


核心知识点

1. 两大数据库对比

特性TCGAICGC/PCAWG
主导NCI/NHGRI (美国)国际联盟 (18国)
癌种数33 种76+ 种
样本量~11,000~25,000+
主要数据WES + RNA-seq + 甲基化WGS 为主
数据门户GDC PortalICGC 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 泛癌分析