跳转至

TCGA数据库使用详解

一句话概述:TCGA(The Cancer Genome Atlas)是美国NCI和NHGRI联合发起的癌症基因组图谱计划,涵盖33种癌症类型、超过11000例样本的多组学数据,是肿瘤生信研究最重要的公共数据库。

核心知识点速查表

概念说明
TCGA癌症基因组图谱计划(白话:癌症的"基因大数据")
GDCGenomic Data Commons,TCGA数据的官方存储平台
33种癌症如BRCA(乳腺癌)、LUAD(肺腺癌)、COAD(结肠癌)等
多组学基因表达、突变、甲基化、拷贝数、临床信息等
TCGAbiolinksR语言TCGA数据下载与分析包
UCSC XenaTCGA数据可视化平台
cBioPortal癌症基因组数据交互式探索平台
Level 3标准化处理后的数据(最常用)

一、数据获取方式

1.1 TCGAbiolinks(R语言推荐)

# === 安装 ===
BiocManager::install("TCGAbiolinks")
library(TCGAbiolinks)

# === 查询可用数据 ===
# 列出所有TCGA项目
projects <- getGDCprojects()                  # 获取所有项目列表
tcga_projects <- projects[grep("TCGA", projects$id), ]  # 筛选TCGA
print(tcga_projects[, c("id", "name")])        # 显示项目ID和名称

# === 下载基因表达数据 ===
# 第1步:查询
query <- GDCquery(
  project = "TCGA-BRCA",                      # 项目:乳腺癌
  data.category = "Transcriptome Profiling",    # 数据类型:转录组
  data.type = "Gene Expression Quantification", # 基因表达定量
  workflow.type = "STAR - Counts"               # 流程:STAR计数
)

# 第2步:下载
GDCdownload(query, method="api")               # 通过API下载数据

# 第3步:整理
data <- GDCprepare(query)                       # 整理为SummarizedExperiment对象

# 提取表达矩阵
expr_matrix <- assay(data)                      # 基因表达矩阵
clinical <- colData(data)                        # 临床信息

# 保存
write.csv(expr_matrix, "TCGA_BRCA_expression.csv")
write.csv(as.data.frame(clinical), "TCGA_BRCA_clinical.csv")
# === 下载突变数据 ===
query_mut <- GDCquery(
  project = "TCGA-BRCA",
  data.category = "Simple Nucleotide Variation",  # 简单核苷酸变异
  data.type = "Masked Somatic Mutation",            # 体细胞突变
  access = "open"                                    # 开放获取
)
GDCdownload(query_mut)
maf <- GDCprepare(query_mut)                        # 返回MAF格式数据
# === 下载临床数据 ===
clinical <- GDCquery_clinic("TCGA-BRCA", type="clinical")  # 获取临床信息
head(clinical[, c("submitter_id", "vital_status", "days_to_death",
                   "days_to_last_follow_up", "gender", "tumor_stage")])

1.2 UCSC Xena浏览器

# === UCSC Xena:交互式可视化和数据下载 ===
# 访问: https://xenabrowser.net/
# 特点:
# - 直接在线可视化,不需要编程
# - 可以查看基因在各癌种中的表达
# - 支持生存分析、相关性分析
# - 可以下载标准化后的数据

# 使用步骤:
# 1. 进入 https://xenabrowser.net/datapages/
# 2. 选择 TCGA Hub
# 3. 选择癌症类型
# 4. 选择数据类型(表达/突变/临床等)
# 5. 下载或在线分析

1.3 cBioPortal

# === cBioPortal:交互式癌症基因组探索 ===
# 访问: https://www.cbioportal.org/
# 功能:
# - 基因突变频率查询
# - 共突变/互斥突变分析
# - 生存分析
# - 多基因联合分析

# 快速查询:
# 1. 进入网站
# 2. 选择Study(如TCGA-BRCA)
# 3. 输入基因名(如TP53, BRCA1)
# 4. 查看OncoPrint、突变图谱、生存分析等

二、常用分析

2.1 差异表达分析

# === TCGA肿瘤vs正常差异分析 ===
library(TCGAbiolinks)
library(DESeq2)

# 查询肿瘤和正常样本
query <- GDCquery(
  project = "TCGA-BRCA",
  data.category = "Transcriptome Profiling",
  data.type = "Gene Expression Quantification",
  workflow.type = "STAR - Counts",
  sample.type = c("Primary Tumor", "Solid Tissue Normal")  # 肿瘤+正常
)
GDCdownload(query)
data <- GDCprepare(query)

# 用DESeq2做差异分析
dds <- DESeqDataSetFromMatrix(
  countData = assay(data),                         # 表达矩阵
  colData = data.frame(
    condition = ifelse(                             # 分组
      data$sample_type == "Primary Tumor",
      "Tumor", "Normal"
    )
  ),
  design = ~ condition                              # 设计公式
)
dds <- DESeq(dds)                                   # 运行DESeq2
results <- results(dds, contrast=c("condition", "Tumor", "Normal"))  # 获取结果

2.2 突变分析(maftools)

# === 使用maftools分析TCGA突变数据 ===
library(maftools)

# 读取MAF文件
maf <- read.maf(maf = "TCGA_BRCA_mutations.maf")   # 读取MAF数据

# 基本统计
getSampleSummary(maf)                                # 样本突变统计
getGeneSummary(maf)                                  # 基因突变统计

# 可视化
plotmafSummary(maf)                                  # 突变总览图
oncoplot(maf, top=20)                                # ★OncoPrint图(前20基因)
lollipopPlot(maf, gene="TP53")                       # 棒棒糖图(突变位点分布)

# 驱动基因预测
sig <- oncodrive(maf, minMut=5)                      # 驱动基因分析
plotOncodrive(sig)                                    # 可视化驱动基因

# 突变互斥/共现分析
somaticInteractions(maf, top=20)                     # 基因互作分析

2.3 生存分析

# === TCGA生存分析 ===
library(survival)
library(survminer)

# 准备数据
clinical <- GDCquery_clinic("TCGA-BRCA")             # 临床数据

# 合并表达数据
# 假设已有基因表达数据,选择TP53表达分高低组
tp53_expr <- expr_matrix["TP53", ]                    # TP53表达量
median_expr <- median(tp53_expr, na.rm=TRUE)          # 中位数
group <- ifelse(tp53_expr > median_expr, "High", "Low")  # 分组

# 生存分析
surv_data <- data.frame(
  time = clinical$days_to_last_follow_up,             # 随访时间
  status = ifelse(clinical$vital_status == "Dead", 1, 0),  # 生存状态
  group = group                                        # 表达分组
)
surv_data <- na.omit(surv_data)                        # 去除缺失值

# Kaplan-Meier曲线
fit <- survfit(Surv(time, status) ~ group, data=surv_data)  # KM拟合
ggsurvplot(
  fit,
  data = surv_data,
  pval = TRUE,                                         # 显示p值
  risk.table = TRUE,                                    # 显示风险表
  palette = c("#E7B800", "#2E9FDF"),                    # 颜色
  xlab = "Days",                                        # x轴
  ylab = "Overall Survival"                              # y轴
)

三、TCGA样本ID解读

# TCGA样本ID格式: TCGA-XX-XXXX-XXA-XXX-XXXX-XX
# 示例: TCGA-A7-A0CE-01A-11R-A00Z-07
#
# TCGA-A7    : 采集中心代码
# A0CE       : 参与者ID
# 01         : ★样本类型代码(最重要!)
#   01-09 : 肿瘤样本(01=原发肿瘤,06=转移)
#   10-19 : 正常样本(11=实体正常组织)
#   20-29 : 对照样本
# A          : 小瓶编号
# 11R        : 分析物类型(R=RNA, D=DNA)
# A00Z       : 平台/中心代码
# 07         : 数据类型

# 重要:01=肿瘤, 11=正常, 用于区分配对样本

四、面试高频考点

Q1: TCGA数据包含哪些组学?

  • 基因表达(RNA-seq)
  • 体细胞突变(WES)
  • 拷贝数变异(SNP array)
  • DNA甲基化(450K/EPIC array)
  • miRNA表达
  • 临床信息(分期、生存、治疗等)
  • 33种癌症类型,>11000例样本

Q2: TCGA样本ID中01和11的区别?

  • 01:原发肿瘤(Primary Tumor)样本
  • 11:实体正常组织(Solid Tissue Normal)样本
  • 同一患者可能同时有01和11,形成配对样本
  • 做差异分析时用01 vs 11

Q3: TCGA数据分析的常见套路?

  1. 差异表达 → 功能富集(GO/KEGG)
  2. 突变分析 → 驱动基因 → 预后标志物
  3. 生存分析 → 预后模型(Cox回归/LASSO)
  4. 免疫浸润分析(CIBERSORT/ESTIMATE)
  5. 多组学整合 → 分子亚型

常见报错与解决

报错原因解决方案
GDCdownload timeout网络不稳定重试或用method="client"
Sample type mismatch正常样本数太少用GTEx正常组织数据补充
Duplicate samples同一患者多个样本sample.type过滤
Gene ID formatEnsembl vs SymbolbiomaRtorg.Hs.eg.db转换

速查表

# === TCGA分析速查 ===
library(TCGAbiolinks)

# 查询+下载+整理
query <- GDCquery(project="TCGA-BRCA", 
                  data.category="Transcriptome Profiling",
                  data.type="Gene Expression Quantification",
                  workflow.type="STAR - Counts")
GDCdownload(query)
data <- GDCprepare(query)

# 临床数据
clinical <- GDCquery_clinic("TCGA-BRCA")

# 突变分析
library(maftools)
oncoplot(maf, top=20)

# 生存分析
library(survminer)
ggsurvplot(fit, pval=TRUE, risk.table=TRUE)

# 常用癌种代码:
# BRCA乳腺 | LUAD肺腺 | COAD结肠 | LIHC肝 | STAD胃
# BLCA膀胱 | PRAD前列腺 | KIRC肾透明细胞 | GBM胶质母细胞瘤