GenVisR 绘制全基因组突变景观图

2022-03-29 11:04:36 浏览数 (1)

上期分享了ComplexHeatmap R包中的oncoprint用于绘制全基因组突变景观图(上期精彩点击ComplexHeatmap 绘制全基因组突变景观图),小伙伴们很感兴趣,后台收到很多测试和代码的需求,看来大家都有对美好事物的追求。通过上期分享发现绘制全基因组突变景观图也不是很复杂,理顺了还是比较容易的。今天小编仍带给大家另外一款可以绘制全基因组突变景观图的R包-GenVisR,这款R包可以绘制:

mutation overview graphic

mutation hotspot graphic

sequence coverage graphic

transition/transversion graphic

功能也很丰富,那么接下来就进入正题。

安装

代码语言:javascript复制
if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("GenVisR")

参数释义

代码语言:javascript复制
(1)X:绘图文件,此R包对输入文件格式进行了规定,R包可以通过搜索列文件名来找出作图所需要的信息。文件格式可以为MAF、MGI和custom(自定义文件)三种,每种文件至少包含三列信息,分别如下:
MAF必须包含以"Tumor_Sample_Barcode", "Hugo_Symbol", "Variant_Classification"命名的列;
MGI必须包含"sample","gene_name","trv_type"命名的列;
Custom文件必须包含"sample", "gene", "variant_class"命名的列。
(2)mainRecurCutoff:通过gene突变频率阈值进行筛选,大于阈值的进行绘制,值在[0,1]之间,默认为0,不进行任何过滤。
(3)mainGrid:是否显示网格,默认为TRUE显示网格。
(4)mainXlabel:是否展示横轴的样品名称,默认为FALSE不显示。
(5)main_geneLabSize:基因ID字体大小。默认为8。
(6)mainLabelCol:定义网格内显示内容,默认为null。
(7)mainLabelSize:网格内字体大小,仅当定义了mainLabelCol有效。
(8)mainLabelAngle:定义字体角度,仅当定义了mainLabelCol有效。
(9)mainDropMut:是否从mutation type legend中去除不使用的”mutation type”,默认为FALSE。
(10)mainPalette:用户自定义mutation type的颜色,必须为每一种mutation type指定一种颜色,默认null。
(11)mutBurden:统计并plot每个样本的突变密度(一般分为同义突变密度和非同义突变密度)。默认值为NULL;自定义时:可根据公式:mutation per MB=mutation_total/coverage_space *1000000 进行突变密度计算。
(12)coverageSpace:基因组测序长度(bp),默认是44100000(44.1M),可根据测序芯片类型调整。
(13)plotMutBurden:是否在顶端展示mutBurden的sub-plot,默认为TRUE。
(14)clinData:包含临床信息的data frame,默认为NULL;若进行自定义,列名必须为 "sample", "variable","value";此外,clinData 必须以”long” format的形式存在。
(15)clinLegCol:临床信息legend分为多少列。仅当clinData存在时才有效。
(16)clinVarOrder:按指定顺序绘制临床信息。
(17)clinVarCol:根据clinData中的变量指定颜色。
(18)plotGenes:设定绘制的基因。
(19)geneOrder:设定绘制的基因顺序。
(20)plotSamples:设定绘制的样本。
(21)sampOrder:设定绘制的样本顺序。
(22)section_heights:绘图各部分的高度设置
(23)maxGenes:指定最多可以plot的基因数。
(24)rmvSilent:是否去除沉默突变,默认为FALSE。
(25)fileType:读入X的数据格式,分为:”MGI”, “MAF”, “Custom”。
(26)variant_class_order:当自定义X的数据类型为”Custom”时,指定mutation types的plot顺序。
(27)out:输出“data”, “grob”, 或”plot”的类型,默认为 “plot”。
(28)plot_proportions:是否绘制突变谱,默认FALSE。

绘图

代码语言:javascript复制
library(GenVisR) 
set.seed(383)
waterfall(brcaMAF, mainRecurCutoff = 0.06)
#筛选基因突变频率大于0.06的基因进行绘制
代码语言:javascript复制
waterfall(brcaMAF, mainRecurCutoff = 0.06,mainGrid=FALSE)
#不绘制网格
代码语言:javascript复制
waterfall(brcaMAF, mainRecurCutoff = 0.1,mainGrid=FALSE,mainLabelCol="Variant_Type",mainLabelSize=2)
#网格中设置文字填充,并设置大小
代码语言:javascript复制
waterfall(brcaMAF, plotGenes = c("PIK3CA", "TP53", "USH2A", "MLL3", "BRCA1"))
#绘制感兴趣gene的频谱
代码语言:javascript复制
waterfall(brcaMAF, plotGenes = c("PIK3CA", "TP53", "USH2A", "MLL3", "BRCA1"),plotMutBurden=FALSE,section_heights=c(1,10))
#隐藏上部的plot,注意设置上部的高度,否则绘图时上边由于隐藏plot柱状图而留有大片空白。
代码语言:javascript复制
waterfall(brcaMAF, plotGenes = c("PIK3CA", "TP53", "USH2A", "MLL3", "BRCA1"),section_heights=c(3,10,3),plot_proportions=TRUE)
#绘制突变类型比例柱状图,注意要设置section_heights=c(3,10,3),而不是section_heights=c(3,10),此时section为上、中、下3部分或者默认也可。
代码语言:javascript复制
subtype <- c("lumA", "lumB", "her2", "basal", "normal")
subtype <- sample(subtype, 50, replace = TRUE)
age <- c("20-30", "31-50", "51-60", "61 ")
age <- sample(age, 50, replace = TRUE)
sample <- as.character(unique(brcaMAF$Tumor_Sample_Barcode))
clinical <- as.data.frame(cbind(sample, subtype, age))
# Melt the clinical data into 'long' format.
library(reshape2)
clinical <- melt(clinical, id.vars = c("sample"))
waterfall(brcaMAF, clinDat = clinical, clinVarCol = c(lumA = "blue4", lumB = "deepskyblue", 
     her2 = "hotpink2", basal = "firebrick2", normal = "green4", `20-30` = "#ddd1e7", 
     `31-50` = "#bba3d0", `51-60` = "#9975b9", `61 ` = "#7647a2"), plotGenes = c("PIK3CA", 
      "TP53", "USH2A", "MLL3", "BRCA1"), clinLegCol = 2, clinVarOrder = c("lumA", 
      "lumB", "her2", "basal", "normal", "20-30", "31-50", "51-60", "61 "),plot_proportions=TRUE,section_heights=c(3,6,3,2))
#注意设置section_heights,否则容易出现重叠。
 

今天分享的GenVisR这款R包与上次分享ComplexHeatmap的在代码上理解会更容易一些,并且利用的文件范围相对宽泛,容易操作。ComplexHeatmap需要统计并给出固定格式,对不会编程统计的小伙伴不那么友好,而今天的GenVisR在操作上相对更加容易,小伙伴们你们更喜欢哪一款呢?快来投票吧!

0 人点赞