jimmy
生信技能树联盟创始人
有这个想法很久了,我教了很多人如何批量下载TCGA数据,以及分析各个癌症的somatic突变信息以及TMB,还有突变的特征频谱。
TCGA计划的4个找somatic mutation的软件使用体验
但是限于时间和知识背景,虽然代码方面问题不大,但是即使把所有的数据全部走一波我的流程我也可能会看不懂,所以希望某些背景相关朋友能根据我教的知识来分析一波。
肿瘤突变分析越来越火了,一起来学习一下吧。今天和大家一起探索TCGA数据中胃癌突变的情况。
今天的探索分为两个部分:
1.Mutation
1)数据下载
目前TCGA突变分析的数据vcf格式数据是受限的,所以我们这应用maf文件进行分析。具体下载方式。 直接去TCGA官网下载数据也不难,都很容易,并且工具都在添加一些新的功能,比如最近添加的CNV的分析,举一反三的看ICGC的应用方式几乎和TCGA的应用方式是一样的。
2)工具
主要用的R包,maftools,deconstructSigs以及他们的依赖包,后面的代码会详细的解释。安装过程有时候会非常痛苦,但是一般都能解决,安装R包的终结方式应该是“耐心”。如果网络安装不太好的话建议大家先下载下来,应用本地安装,安装后加载包时可能出现缺少依赖包,这时再耐心的安装依赖包即可。应用这种方式,目前没有遇到怎么也安装不上的包(当然了版本本身不支持的情况除外)。
3)代码和结果
source("https://bioconductor.org/biocLite.R") chooseBioCmirror() #选择一个就近的镜像 biocLite("maftools")#安装 (maftools:http://bioconductor.org/packages/release/bioc/vignettes/maftools/inst/doc/maftools.html) library(maftools) Mandatory fields(必须字段): Hugo_Symbol, Chromosome, Start_Position, End_Position, Reference_Allele, Tumor_Seq_Allele2, Variant_Classification, Variant_Type and Tumor_Sample_Barcode(样本名,此字段沟通样本的maf文件和临床信息的关键,前者). laml = read.maf(maf="STAD.mutectAdjustBarcode.maf.txt",clinicalData="clinical.STAD.tsv")#read.maf()函数有两个最关键的参数maf,clinicalData,这个两个数据框只需要共同的Tumor_Sample_Barcode,这个一点用起来非常方便,很多帖子并没有提到此处,详细信息可参考maftools的官网。注意:TCGA直接下载的maf文件第16列即为样品名(例如:TCGA-FP-A4BE-11A-11D-A24F-08),但是直接下载的临床数据的样本名(例:TCGA-FP-A4BE)是不同的,此处需要整理成一致后读入。 getFields(laml) #查看有哪些字段,TCGA下载的数据120个字段 getClinicalData(laml) #查看临床信息 getSampleSummary(laml) #查看每个样品发生突变的情况,此处就可以计算tumor mutation load,TML=Missense_Mutation/外显子数。
plotmafSummary(maf = laml, rmOutlier = TRUE, addStat = 'median', dashboard = TRUE, titvRaw=FALSE)#绘制整体的突变情况 #waterfall plot #We will draw oncoplots for top ten mutated genes. oncoplot(maf = laml, top = 20, fontSize = 12) #绘制前20个突变基因的瀑布图。oncoplot()中参数gene=c()可以指定基因名,绘制感兴趣的基因的瀑布图
此图绘制出了胃癌中突变前20的基因。其中可以看到TP53等著名基因的突变。渴望探索的小伙伴可以去TCGA的官网试试一样可以绘制出此图,点选即可。
maftools的最核心的功能可能就介绍完了,但是maftools的功能远不止这些,其实临床信息方面我们还没有进行探索,同时maftools还可以进行某个基因突变情况的生存分析,这个下次带大家进行。网上有很多好的帖子介绍,最好的帖子还是官方的介绍。
2. Mutation Signature
首先了解mutation signature的概念,现在很多生信文章中提到Signature 1 ,Signature 3等,看到这个有点困惑,通读了这篇文章Signatures of mutational processes in human cancer[https://www.nature.com/articles/nature12477]。
文章中提到Different mutational processes often generate different combinations of mutation types, termed ‘signatures’.
(不同的突变过程可以产生不同的突变类型的组合),称为“特征”。
这个概念给我的感觉是在混乱中用数学统计分析查找规律,并应用规律。
那肿瘤的突变特征如何计算呢?
source('http://bioconductor.org/biocLite.R'); chooseBioCmirror() install.packages('deconstructSigs') # dependencies 'BSgenome', 'BSgenome.Hsapiens.UCSC.hg19' BiocInstaller::biocLite('BSgenome') BiocInstaller::biocLite('BSgenome.Hsapiens.UCSC.hg19') BiocInstaller::biocLite('BSgenome.Hsapiens.UCSC.hg38') BiocInstaller::biocLite('BSgenome.Hsapiens.NCBI.GRCh38') #先把这些包装上,后面几个包比较大,建议大家先下载然后本地安装。都可以安装成功的。(BSgenome.Hsapiens.UCSC.hg38 vs BSgenome.Hsapiens.NCBI.GRCh38 https://www.biostars.org/p/340852/) ####这段代码简单可以看出,NCBI的chromosome直接用的数字,而UCSC用的是chrX,这点应该看到。 genome.ncbi <- BSgenome.Hsapiens.NCBI.GRCh38 seqlengths(genome.ncbi) genome.ucsc<-BSgenome.Hsapiens.UCSC.hg38 seqlengths(genome.ucsc) #### suppressPackageStartupMessages(library("deconstructSigs")) suppressPackageStartupMessages(library("BSgenome")) library("BSgenome.Hsapiens.NCBI.GRCh38")#此处加载这个注释包的原因为TCGA的maf文件目前注释GRCh38 options(stringsAsFactors = F) str(laml) #查看数据结构,从maf文件中拿到我们需要的数据 mut = laml@data head(mut) getField(laml@data) a=mut[,c(16,5,6,11,13)] colnames(a)=c( "Sample","chr", "pos","ref", "alt") head(a) a$Sample=as.character(a$Sample) a=a[nchar(a$ref)==1 & nchar(a$alt)==1,] #NCBI.GRCh38染色体号无“chr”,所以要替换掉 a2=cbind(a[,-2],chr=gsub("chr","",a$chr)) dim(a2) head(a2) tail(a2) sigs.input <- mut.to.sigs.input(mut.ref = a2, sample.id = "Sample", chr = "chr", pos = "pos", ref = "ref", alt = "alt", bsg = BSgenome.Hsapiens.NCBI.GRCh38 #此处一定要注意到版本的问题否则结果可能是错的。 ) class(sigs.input) head(t(sigs.input)) #下面的语句,批量计算每个样本的signature。核心的函数就是whichSignatures() w=lapply(unique(a2$Sample), function(i){ ## signatures.cosmic signatures.nature2013 sample_1 = whichSignatures(tumor.ref = sigs.input, signatures.ref = signatures.cosmic, sample.id = i, contexts.needed = TRUE, tri.counts.method = 'default') return(sample_1$weights) }) w=do.call(rbind,w)
plotSignatures(plot_example, sub = 'example') library(pheatmap) #绘制热图 pheatmap(t(w),cluster_rows = F,cluster_cols = T) pheatmap(w,cluster_rows = T,cluster_cols = F)
绘制得到这些突变和突变特征远远不是学习的结束,而是开始,利用这些突变可以挖掘文章探索突变以及突变特征的意义等等,写到这里我感觉把文章都告诉你怎么写了,加油吧,小伙伴们。
参考文献:
1. 下载TCGA所有癌症的maf文件做signature分析
其他参考内容文章内已经有链接。
后记:
写贴子时反复回顾代码感觉,收获很大。感谢技能树!如有错讹望及时批评指正,共同进步。