TCGA 数据分析实战 —— TMB 与免疫浸润联合分析

TCGA 数据分析实战 —— TMB 与免疫浸润联合分析

前言

近年来,随着免疫检查点抑制剂的兴起,大大改变了传统的肿瘤治疗策略,尽管 PD-L1dMMR 的检测都获得了 FDA 的批准,提高了免疫药物的响应和获益,但它们都有自身的不足。

各种检测方法判定的 PD-L1 水平不一致率较高,dMMR 在各种不同的癌种中的携带比例差异较大

而免疫治疗的效果主要是免疫细胞对癌细胞特异性抗原的识别,那么从理论上来说,那些携带基因突变越多的癌症患者,癌细胞产生的新抗原越多,被免疫细胞识别的可能性更高。也就是说,肿瘤组织的突变负荷(tumor mutational burdenTMB)越高,患者或许能从免疫治疗中获得更多的收益。

TMB 是指肿瘤细胞基因组中,基因的外显子编码区每兆碱基中发生置换和插入或缺失突变的总数。

接下来,我们就来看看,如何使用 TCGA 中的数据来分析 TMB 与免疫浸润之间的关系。

TMB

要计算样本的 TBM 值,必须先获取样本的突变数据,TCGA 的突变数据是 MAF 格式的,我们可以使用 TCGAbiolinks 下载对应癌型的突变数据。

TCGA 的突变流程有 4 种,分别是:musevarscan2somaticsnipermutect2。其中 musesomaticsniper 只能计算点突变,无法识别 indel

我们就以 PAAD 为例来进行说明吧

library(TCGAbiolinks)
library(tidyverse)

query <- GDCquery(
    project = "TCGA-PAAD", 
    data.category = "Simple Nucleotide Variation",
    data.type = "Masked Somatic Mutation",
    access = "open"
)
GDCdownload(query)
maf <- GDCprepare(query)

maf 最后一列为该突变在哪种突变 calling 算法中识别出的,可以根据需要利用这一列的数据进行过滤。

有一个叫 maftoolsR 包,可以用来处理 MAF 格式的数据。使用 read.maf 函数读取刚才获取的突变数据。

如果涉及到临床相关的分析,可以为 clinicalData 参数指定对应的临床信息。例如

library(maftools)

paad.clin <- GDCquery_clinic("TCGA-PAAD")
clin <- paad.clin %>% 
  dplyr::select(c(
    "submitter_id", "days_to_last_follow_up", "vital_status",
    "ajcc_pathologic_t", "ajcc_pathologic_n", "ajcc_pathologic_m",
    "ajcc_pathologic_stage", "gender"
    )) %>%
  `names<-`(c("Tumor_Sample_Barcode", "time", "status", "T", "N", "M", "stage", "gender"))

paad.maf <- read.maf(
    maf,
    clinicalData = clin,
    isTCGA = TRUE
)

如果还有 CNV 数据,也可以传递给 cnTable 参数。

有很多函数可以获取对应的信息,如

# 展示样本层面的信息
getSampleSummary(paad.maf)
# 展示基因层面的信息
getGeneSummary(paad.maf)
# 展示临床相关信息
getClinicalData(paad.maf)
# 获取 MAF 文件的所有列字段
getFields(paad.maf)
# 保存为文件
write.mafSummary(maf = paad.maf, basename = 'paad.maf')

1. 绘图

使用 plotmafSummary 来展示 MAF 文件的一些汇总信息,例如

plotmafSummary(maf = paad.maf, rmOutlier = TRUE, addStat = 'median', dashboard = TRUE, titvRaw = FALSE)

从图中可以看到,错义突变占据绝大部分的比例,C>T 的点突变类型是最多的,KRASTP53 两个基因的突变次数最多

绘制 oncoplots 图,只展示前 15 个基因

vc_cols <- RColorBrewer::brewer.pal(n = 8, name = 'Paired')
names(vc_cols) <- c(
  'Frame_Shift_Del',
  'Missense_Mutation',
  'Nonsense_Mutation',
  'Multi_Hit',
  'Frame_Shift_Ins',
  'In_Frame_Ins',
  'Splice_Site',
  'In_Frame_Del'
)
oncoplot(maf = paad.maf, colors = vc_cols, top = 15)

瀑布图展示了突变频率前 15 的基因在样本中的突变情况,上方的条形图展示的是样本的突变负荷,右侧的直方图展示了基因的每种突变类型的情况

图中,有一个样本的突变负荷特别高,在后续分析时应该考虑是否将其作为离群点去除

可以使用 somaticInteractions 函数检测互斥突变或同时突变的基因,该函数使用配对的 Fisher’s Exact 检验识别显著的基因对。

par(oma = c(3, 4, 5, 1))
somaticInteractions(maf = paad.maf, top = 25, pvalue = c(0.05, 0.1))

可以看到突变率前 10 的基因中,同时出现突变的基因对偏多

绘制基因的 Variant Allele Frequencies(VAF) 箱线图可以看出基因的克隆状态,在理想情况下,样本中克隆基因的平均等位基因频率约为 50%

paad.maf@data[["TumorVAF"]] <- paad.maf@data$t_alt_count / paad.maf@data$t_depth
plotVaf(maf = paad.maf, vafCol = 'TumorVAF')

2. 计算 TMB

使用 maftoolstcgaCompare 函数,可以将我们获取的 MAF 文件中的突变负荷与 TCGA MC3 项目中的 33 种癌型的突变负荷进行比较

maf.TMB <- tcgaCompare(
  maf = paad.maf, cohortName = 'PAAD-maf', 
  logscale = TRUE, capture_size = 50
)

可以看到,与 MC3 中胰腺导管腺癌的突变负荷差一些

下面,我们来计算每个样本的 TMB

get_TMB <- function(file) {
   
  # 需要用到的列
  use_cols <- c(
    "Hugo_Symbol", "Variant_Classification", "Tumor_Sample_Barcode", 
    "HGVSc", "t_depth", "t_alt_count"
  )
  # 删除这些突变类型
  mut_type <- c(
    "5'UTR", "3'UTR", "3'Flank", "5'Flank", "Intron", "IGR",
    "Silent", "RNA", "Splice_Region"
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

名本无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值