maftools画瀑布图(oncoplot)
什么是瀑布图
这种由麦肯锡顾问公司所独创的图表类型,因为形似瀑布流水而被称之为瀑布图( Waterfall Plot)。瀑布图具有自上而下的流畅效果,也可以称为阶梯图(Cascade Chart)或桥图(Bridge Chart)。对于生命科学领域的学者来说改良后的瀑布图(也有成为组图的)可直观展示多个维度的数据,对于组学分析结果的展示就比较有优势,肿瘤相关的文章使用这种图的特别多。下面小编就带着大家用maftoos这个R语言包从变异的注释结果出发绘制可直接用于文章发表的组图。
1.安装包,加载包
> source("http://bioconductor.org/biocLite.R")
> biocLite("maftools")
> library(maftools)
注:安装比较耗时(网速好的话会快些),R版本要求3.3以上。个人经验最好也不要使用最新版本,新版R总会对那么一些“老包”不够友好。亲测3.6.1可行。
2.数据准备
其实如果你对MAF格式足够了解,并且熟练一门文本处理语言,那么无论你的变异数据(已完成基本的注释)用什么格式存储都无所谓,自己写个脚本处理就好。但实际上变异一般以VCF格式存储,而我们最常用的变异注释工具还是ANNOVAR。那么我们今天就仅介绍适合大多数人的情况--从ANNOVAR注释的结果文件开始。需要注释以下几点:
1,ANNOVAR注释的结果相信大家都见过,我们这里用TXT格式的而不是vcf格式的!
2,maftools仅能识别注释为insertion或者deletion的InDel,substitution则不能有效识别,所以如果substitution丢了别感到意外。
3,注释文件需要额外加一列样本名(head可以为Tumor_Sample_Barcode,当然你不用样本名称而用其他ID来区分样本也可以),如果多个样本中都有这个变异,那么分成多行展示。
3,对于InDel的注释还要注意一点,如果ANNOVAR注释是输入的不是VCF文件而是“avinput”,那么需要注意ref和alt的书写。VCF文件一般ref和alt两列都是碱基,但如果avinput也这么写的话注释结果都将是substitution,而没有insertion和deletion。所以对于insertion来说ref列应为“-”,而deletion的alt列应为“-”,坐标位置也要相应的调整。
4,还有一个坑,在ANNOVAR注释完大家看看Func_refGene列和ExonicFunc_refGene列有没有出现用“;”隔开重复多次的现象(如下图),如果有一定要去掉这种重复,否则会把这样的变异都处理成RNA。
image.png
3.maf格式转换
将加上“Tumor_Sample_Barcode”,的注释文件转换成maf格式:
library("maftools")
annovarToMaf("All.anno.hg19_multianno.txt", Center = NULL, refBuild = "hg19", tsbCol = 'Tumor_Sample_Barcode', table = "refGene", ens2hugo = FALSE, basename = "All", sep = "\t", MAFobj = FALSE, sampleAnno = NULL)
#说一下几个重要的参数:
#第一个参数是输入文件(处理后的注释文件)
# refBuild参考基因组版本
#tsbCol样本名那一列的列名
#table注释基因名使用的数据库,可以是refGene,也可以是ensGene(ensemble数据库)
#ens2hugo,如果table是refGene,这个参数给FALSE,如果是ensGene则需要给TRUE(将ensemble ID转换成hugo symbols)
#basename输出文件名前缀
#sep输出文件分隔符
4.展示summary信息
maf <- read.maf(maf = "All.maf")#读入上一步输出的maf文件
pdf("summary.pdf", width=6, height=6)#图片输出文件名
plotmafSummary(maf =maf, rmOutlier = TRUE, addStat = 'median', dashboard = TRUE, titvRaw = FALSE)#绘制maf的总结文件
dev.off()
输出的图示例如下:
image.png
5.初版瀑布图绘制
pdf("oncoplot.pdf", width=6, height=6)#图片输出文件名
oncoplot(maf =maf, fontSize = 0.45 ,showTumorSampleBarcodes = T,SampleNamefontSize=0.7,titleFontSize=1.2,legendFontSize=0.7,removeNonMutated=F,writeMatrix=T)#绘制maf的总结文件
dev.off()
输出的图示例如下:
image.png
介绍一下上面用到的参数:
fontSize :基因名的字体大小
showTumorSampleBarcodes:是否展示样本名/样本ID
SampleNamefontSize:样本名字体大小
titleFontSize:图题头的字体大小
legendFontSize:图例字体大小
removeNonMutated:是否删除没有突变的样本
writeMatrix:是否把突变矩阵输出成表格(与图的突变对应)
6.添加临床信息
很多情况我们需要把临床信息(分组,OS值等)添加到图上,先整理临床信息表格,这个表格中一定要有与maf的“Tumor_Sample_Barcode”一致的样本信息列,格式示例如下:
image.png
将该数据读入R
clin <- read.table("All.clinical_feature",header=TRUE)
maf <- read.maf(maf = "All.maf", clinicalData = clin)#注意读取maf时需要增加临床表型信息
pdf("All.oncoplot.clin.pdf", width=6, height=6)
oncoplot(maf =maf, fontSize = 0.45 ,showTumorSampleBarcodes = T ,clinicalFeatures = 'ORR',titleFontSize=1.2,legendFontSize=0.7,removeNonMutated=F,writeMatrix=T,annotationFontSize=0.7)
dev.off()
输出的图片示例:
image.png
7.其他调整
1)按照临床信息进行排序
oncoplot(maf =maf, fontSize = 0.45 ,showTumorSampleBarcodes = T ,clinicalFeatures = 'ORR',titleFontSize=1.2,legendFontSize=0.7,removeNonMutated=F,writeMatrix=T,annotationFontSize=0.7,sortByAnnotation = TRUE)
image.png
可以看到按照ORR值进行了排序;
2)仅展示部分基因及基因排序
默认的情况下会展示maf值排序后的top20,如果你仅关注某个通路上的基因,可以制定自己的gene list
gene<-c("KEAP1","NFE2L2","STK11","PTEN","PIK3CA","PIK3CB","AKT1","AKT2","AKT3","MTOR","PIK3R1","PPP2R1A","TSC1","TSC2","RICTOR","RPTOR")
oncoplot(maf =maf, fontSize = 0.45 ,showTumorSampleBarcodes = T ,clinicalFeatures = 'ORR',titleFontSize=1.2,legendFontSize=0.7,removeNonMutated=F,writeMatrix=T,annotationFontSize=0.7,sortByAnnotation = TRUE,genes=gene,keepGeneOrder=TRUE)
输出图片示例:
image.png
也可以对这些进行的顺序进行控制
gene<-c("KEAP1","NFE2L2","STK11","PTEN","PIK3CA","PIK3CB","AKT1","AKT2","AKT3","MTOR","PIK3R1","PPP2R1A","TSC1","TSC2","RICTOR","RPTOR")
oncoplot(maf =maf, fontSize = 0.45 ,showTumorSampleBarcodes = T ,clinicalFeatures = 'ORR',titleFontSize=1.2,legendFontSize=0.7,removeNonMutated=F,writeMatrix=T,annotationFontSize=0.7,sortByAnnotation = TRUE,genes=gene,keepGeneOrder=TRUE)
image.png
2)样本排序
如果你想按照表达量高低对样本进行排序,也可以指定样本顺序:
sampeOrder<-c("A","AA","AB","AC","AD","AE","AF","AG","AH","AI","AJ","AK","AL","AM","AN","AO","AP","AQ","AR","AS","AT","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z")
oncoplot(maf =maf, fontSize = 0.45 ,showTumorSampleBarcodes = T ,clinicalFeatures = 'ORR',titleFontSize=1.2,legendFontSize=0.7,removeNonMutated=F,writeMatrix=T,annotationFontSize=0.7,sortByAnnotation = TRUE,genes=gene,keepGeneOrder=TRUE,sampleOrder=sampeOrder)
image.png
8.其他需要注意的
maftools画瀑布图很方便,但对于临床表型仅能展示离散型的,对于连续型的不是很友好,不能画成barplot的形式,只能单独用连续表型画个barplot然后在AI拼到一起。为了解决这个问题推荐使用ComplexHeatmap