maftools画棒棒糖图 (Lollipop chart)-基因突变可视化

maftools是一个很强大的R语言可视化包,上篇“maftools画瀑布图(oncoplot)”(https://www.jianshu.com/p/6cccf7c4bb05)小编给大家介绍了如何利用该包对变异进行样本和基因层面的展示,今天小编就介绍一下如何对单个基因上的变异进行可视化。
注:maftools安装,ANNOVAR注释文件转换成maf文件的步骤与瀑布图一样,对这几步已经熟悉的亲可以跳过这几步直接看下面画图的部分。

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("MyData.anno.hg19_multianno.txt",  Center = NULL,  refBuild = "hg19",  tsbCol = 'Tumor_Sample_Barcode',  table = "ensGene",  ens2hugo =TRUE,  basename = "MyData",  sep = "\t",  MAFobj = FALSE,  sampleAnno = NULL)
annovarToMaf("TCGA.pathogenic.anno.hg19_multianno.txt",  Center = NULL,  refBuild = "hg19",  tsbCol = 'Tumor_Sample_Barcode',  table = "ensGene",  ens2hugo = TRUE,  basename = "TCGA",  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.画单个样本的棒棒糖图

laml = read.maf(maf = "MyData.maf")
lollipopPlot(maf = laml, gene = TP53', AACol = 'AAChange.refGene', showMutationRate = FALSE)

输出图片示例:


image.png

5.画两个样本的对比图

如果你想看一下自己的样本某个基因突变与TCGA该基因突变情况是否有差异,那么对比图将是个很好的选择

#将自己的样本注释结果转换成MAF格式
annovarToMaf("MyData.anno.hg19_multianno.txt",  Center = NULL,  refBuild = "hg19",  tsbCol = 'Tumor_Sample_Barcode',  table = "refGene",  ens2hugo = FALSE,  basename = "MyData",  sep = "\t",  MAFobj = FALSE,  sampleAnno = NULL)
#将TCGA注释结果转换成MAF
annovarToMaf("TCGA.pathogenic.anno.hg19_multianno.final.txt",  Center = NULL,  refBuild = "hg19",  tsbCol = 'Tumor_Sample_Barcode',  table = "ensGene",  ens2hugo = TRUE,  basename = "TCGA",  sep = "\t",  MAFobj = FALSE,  sampleAnno = NULL)
#加载maf文件
laml = read.maf(maf = "TCGA.maf")
lam2 = read.maf(maf = "MyData.maf")
#绘制棒棒糖图
lollipopPlot2(m1 = laml, m2 = lam2, gene = "TP53",AACol1 = "AAChange.refGene", AACol2 = "AAChange.refGene", m1_name = "TCGA", m2_name = "MyData",domainLabelSize = 1,labPosSize=10,legendTxtSize=1)

输出结果如下:


image.png

基因示例图上“头朝上的棒棒糖”是TCGA中该基因的突变情况,“头朝下的棒棒糖”是自己数据该基因的突变情况。且两个数据集的样本数和携带这些变异的样本比例都展示在图片上了。

6. 批量绘制

可能你关注的基因有多个,一个一个去画很浪费时间,那么可以借助于循环批量绘制:

library("maftools")
gene_list <- scan('common_gene.txt', list(''))[[1]]
#annovar to maf
annovarToMaf("MyData.hg19_multianno.final.txt",  Center = NULL,  refBuild = "hg19",  tsbCol = 'Tumor_Sample_Barcode',  table = "ensGene",  ens2hugo = TRUE,  basename = "cancer_related",  sep = "\t",  MAFobj = FALSE,  sampleAnno = NULL)
annovarToMaf("TCGA.pathogenic.anno.hg19_multianno.final.txt",  Center = NULL,  refBuild = "hg19",  tsbCol = 'Tumor_Sample_Barcode',  table = "ensGene",  ens2hugo = TRUE,  basename = "TCGA",  sep = "\t",  MAFobj = FALSE,  sampleAnno = NULL)
#加载maf文件
laml = read.maf(maf = "TCGA.maf")
lam2 = read.maf(maf = "MyData.maf")
#循环绘制棒棒糖图
for (gene in gene_list) {
pdf(paste(gene,".pdf",sep=""), width=6, height=6)
lollipopPlot2(m1 = laml, m2 = lam2, gene = gene,AACol1 = "AAChange.refGene", AACol2 = "AAChange.refGene", m1_name = "TCGA", m2_name = "MyData",domainLabelSize = 0.8,labPosSize = 9,legendTxtSize=1,axisTextSize = c(1, 1),labPosAngle=90)
dev.off()
}

注:上面提到的common_gene.txt文件格式示例如下:


image.png

可见产生了多个PDF文件:


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容