查看原文
其他

maftools | 从头开始绘制发表级oncoplot(瀑布图)

生信宝典 2022-03-28

The following article is from 生信补给站 Author 生信补给站

对于组学数据的分析和展示来说,maftools算是一个宝藏“R包”,可用于MAF格式的组学数据的汇总,分析和可视化展示。

随着癌症基因组学的进步, 突变注释格式 (MAF)被广泛用于存储检测到的somatic variantsThe Cancer Genome Atlas 项目对30多种不同的癌症进行了测序,每种癌症类型的样本量超过200种。maftools-R包能够有效的汇总,分析和可视化MAF格式的文件。
maftools函数主要分为可视化和分析两个模块,其主要功能及简短的描述如下所示,使用时只需读取MAF文件然后将MAF对象传递给所需要的绘图或分析功能即可。
本次主要使用R-maftools包绘制组学突变结果(MAF)的oncoplot或者叫“瀑布图”

这里还有一份R可视化学习报告,请查收:

R语言学习系列教程汇总

一、 载入R包,数据

1) 载入maftools包

if (!require("BiocManager"))
   install.packages("BiocManager")
BiocManager::install("maftools")


2) 载入数据

通过read.maf函数读入MAF文件,将各种数据(组学基因突变,拷贝数变异,临床数据,表达数据等)汇总并将其存储为MAF对象(R语言学习 - 基础概念和矩阵操作)。

library(maftools)
#TCGA-LAML MAF file (gz)
laml.maf = system.file('extdata', 'tcga_laml.maf.gz', package = 'maftools')
#clinical information (optional)
laml.clin = system.file('extdata', 'tcga_laml_annot.tsv', package = 'maftools')

laml = read.maf(maf = laml.maf, clinicalData = laml.clin)

MAF对象中除了上面基因突变数据和对应的临床数据外,还可以加入拷贝数变异,表达数据等其他数据类型,后面需要的时候会添加。


二、 MAF对象汇总

1) 展示MAF重点变量的summary信息

#Shows sample summry.
getSampleSummary(laml)
#Shows gene summary.
getGeneSummary(laml)
#Shows all fields in MAF
getFields(laml)
#shows clinical data associated with samples
getClinicalData(laml)
#Writes maf summary to an output file with basename laml.
write.mafSummary(maf = laml, basename = 'laml')

上图为临床数据(getClinicalData)的summary结果,其余可自行输入查看结果。

2) 绘制MAF-summary图

使用 plotmafSummary 绘制 maf 文件的summary信息,如下:

#plotmafSummary
plotmafSummary(maf = laml, rmOutlier = TRUE, addStat = 'median', dashboard = TRUE, titvRaw = FALSE)

堆叠的 barplot展示maf 文件中每个样本中的变异数量,并添加中位线,以显示队列间的中位数变异数量。箱线图展示variant_Classification的变异类型。


三、 绘制oncoplot(瀑布)图

1. 绘制基础oncoplots(瀑布图)

oncoplots或者瀑布图可以很好的展示maf文件中的变异信息,侧面条形图和顶部条形图可分别由drawRowBardrawColBar参数控制。

#展示top20的变异genes.
oncoplot(maf = laml, top = 20)

注:变异注释为Multi_Hit表示同一样本中突变多次的基因。

2. 更改变异类型的颜色

#此处使用RColorBrewer的颜色,当然也可以使用任意颜色
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'
)
#查看变异类型对应的颜色
print(vc_cols)
#>   Frame_Shift_Del Missense_Mutation Nonsense_Mutation         Multi_Hit
#>         "#A6CEE3"         "#1F78B4"         "#B2DF8A"         "#33A02C"
#>   Frame_Shift_Ins     In_Frame_Ins       Splice_Site     In_Frame_Del
#>         "#FB9A99"         "#E31A1C"         "#FDBF6F"         "#FF7F00"

oncoplot(maf = laml, colors = vc_cols, top = 20)

3. 添加copy number 信息

可以使用两种方式向maf文件中添加SCNA信息

  • GISTIC result

  • Custom copy number table

3.1 GISTIC results

GISTIC会得到很多结果,此处只需要四个文件即可:all_lesions.conf_XX.txt, amp_genes.conf_XX.txt, del_genes.conf_XX.txt, scores.gistic

#GISTIC results
all.lesions =
 system.file("extdata", "all_lesions.conf_99.txt", package = "maftools")
amp.genes =
 system.file("extdata", "amp_genes.conf_99.txt", package = "maftools")
del.genes =
 system.file("extdata", "del_genes.conf_99.txt", package = "maftools")
scores.gis =
 system.file("extdata", "scores.gistic", package = "maftools")

#Read GISTIC results along with MAF
laml.plus.gistic = read.maf(
 maf = laml.maf,
 gisticAllLesionsFile = all.lesions,
 gisticAmpGenesFile = amp.genes,
 gisticDelGenesFile = del.genes,
 gisticScoresFile = scores.gis,
 isTCGA = TRUE,
 verbose = FALSE,
 clinicalData = laml.clin
)
#绘制含有SCNA信息的oncolpot
oncoplot(maf = laml.plus.gistic, top = 20)

3.2 Custom copy-number table

可以自定义一个copy-number结果,例如,让我们在随机的 20 个样本中创建 DNMT3A 的假 SCNA变异。

set.seed(seed = 1234)
barcodes = as.character(getSampleSummary(x = laml)[,Tumor_Sample_Barcode])
#Random 20 samples
dummy.samples = sample(x = barcodes,
                      size = 20,
                      replace = FALSE)

#Genarate random CN status for above samples
cn.status = sample(
 x = c('Amp', 'Del'),
 size = length(dummy.samples),
 replace = TRUE
)

custom.cn.data = data.frame(
 Gene = "DNMT3A",
 Sample_name = dummy.samples,
 CN = cn.status,
 stringsAsFactors = FALSE
)

head(custom.cn.data)
#>     Gene Sample_name CN
#> 1 DNMT3A TCGA-AB-2898 Amp
#> 2 DNMT3A TCGA-AB-2879 Amp
#> 3 DNMT3A TCGA-AB-2920 Del
#> 4 DNMT3A TCGA-AB-2866 Amp
#> 5 DNMT3A TCGA-AB-2892 Amp
#> 6 DNMT3A TCGA-AB-2863 Amp

#添加SCNA信息
laml.plus.cn = read.maf(maf = laml.maf,
                       cnTable = custom.cn.data,
                       verbose = FALSE)

oncoplot(maf = laml.plus.cn, top = 10)

4. 添加 significance values

输入data.frame格式的数据,包括gene and q值两列即可:

#MutSig results
laml.mutsig = system.file("extdata", "LAML_sig_genes.txt.gz", package = "maftools")

oncoplot(
 maf = laml,
 mutsig = laml.mutsig,
 mutsigQval = 0.01,
)

5. 临床信息 annotations

1)使用存储在 clinical.data 中的变量进行注释

#使用FAB_classification注释
oncoplot(maf = laml, clinicalFeatures = 'FAB_classification')

2)临床信息注释的变量同样可以自定义颜色:

#更改FAB classification的颜色设置
fabcolors = RColorBrewer::brewer.pal(n = 8,name = 'Spectral')
#颜色和变量的种类要一样多
names(fabcolors) = c("M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7")
fabcolors = list(FAB_classification = fabcolors)

oncoplot(
 maf = laml,
 clinicalFeatures = 'FAB_classification',
 sortByAnnotation = TRUE,
 annotationColor = fabcolors
)

3)注释多个临床数据

oncoplot(
   maf = laml,
   clinicalFeatures = c('FAB_classification','SEX','Overall_Survival_Status'),
   annotationColor = fabcolors)


以上就是如何使用R-maftools包完成瀑布图绘制的简单介绍,然后基本上也就完成了文献的Fig1 🤭。

开篇就说了maftools对于组学数据的分析和展示来说,算是一个宝藏“R包”,因此后续还会介绍其他的汇总,分析和可视化功能。


【关注“生信补给站”公众号,更多的精彩内容】


GEO/TCGA数据

易生信系列培训课程,扫码获取免费资料

更多阅读

画图三字经 生信视频 生信系列教程 

心得体会 TCGA数据库 Linux Python 

高通量分析 免费在线画图 测序历史 超级增强子

生信学习视频 PPT EXCEL 文章写作 ggplot2

海哥组学 可视化套路 基因组浏览器

色彩搭配 图形排版 互作网络

自学生信 2019影响因子 GSEA 单细胞 

后台回复“生信宝典福利第一波获取教程合集


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存