TCGA数据库使用详解
一句话概述:TCGA(The Cancer Genome Atlas)是美国NCI和NHGRI联合发起的癌症基因组图谱计划,涵盖33种癌症类型、超过11000例样本的多组学数据,是肿瘤生信研究最重要的公共数据库。
核心知识点速查表
| 概念 | 说明 |
|---|
| TCGA | 癌症基因组图谱计划(白话:癌症的"基因大数据") |
| GDC | Genomic Data Commons,TCGA数据的官方存储平台 |
| 33种癌症 | 如BRCA(乳腺癌)、LUAD(肺腺癌)、COAD(结肠癌)等 |
| 多组学 | 基因表达、突变、甲基化、拷贝数、临床信息等 |
| TCGAbiolinks | R语言TCGA数据下载与分析包 |
| UCSC Xena | TCGA数据可视化平台 |
| 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")) # 获取结果
# === 使用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数据分析的常见套路?
- 差异表达 → 功能富集(GO/KEGG)
- 突变分析 → 驱动基因 → 预后标志物
- 生存分析 → 预后模型(Cox回归/LASSO)
- 免疫浸润分析(CIBERSORT/ESTIMATE)
- 多组学整合 → 分子亚型
常见报错与解决
| 报错 | 原因 | 解决方案 |
|---|
GDCdownload timeout | 网络不稳定 | 重试或用method="client" |
Sample type mismatch | 正常样本数太少 | 用GTEx正常组织数据补充 |
Duplicate samples | 同一患者多个样本 | 用sample.type过滤 |
Gene ID format | Ensembl vs Symbol | 用biomaRt或org.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胶质母细胞瘤