本文首发于微信公众号 **“ 生信补给站 ”** ,期待您的关注!!!

原文链接:https://mp.weixin.qq.com/s/G-0PtaoO6bYuhx_D_Rlrlw

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

​ 随着癌症基因组学的进步, 突变注释格式+Specification) (MAF) 被广泛用于存储检测到的somatic variants。The Cancer Genome Atlas 项目对30多种不同的癌症进行了测序,每种癌症类型的样本量超过200种。maftools-R包能够有效的汇总,分析和可视化MAF格式的文件。

​ maftools函数主要分为可视化和分析两个模块,其主要功能及简短的描述如下所示,使用时只需读取MAF文件然后降MAF对象传递给所需要的绘图或分析功能即可。

本次主要使用R-maftools包绘制组学突变结果(MAF)的oncoplot或者叫“瀑布图”。

一、 载入R包,数据

1) 载入maftools包

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

2) 载入数据

通过read.maf函数读入MAF文件,将各种数据(组学基因突变,拷贝数变异,临床数据,表达数据等)汇总并将其存储为MAF对象。


  1. #TCGA-LAML MAF file (gz)
  2. laml.maf = system.file('extdata', 'tcga_laml.maf.gz', package = 'maftools')
  3. #clinical information (optional)
  4. laml.clin = system.file('extdata', 'tcga_laml_annot.tsv', package = 'maftools')
  5. laml = read.maf(maf = laml.maf, clinicalData = laml.clin)

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

二、 MAF对象汇总

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

  1. #Shows sample summry.
  2. getSampleSummary(laml)
  3. #Shows gene summary.
  4. getGeneSummary(laml)
  5. #Shows all fields in MAF
  6. getFields(laml)
  7. #shows clinical data associated with samples
  8. getClinicalData(laml)
  9. #Writes maf summary to an output file with basename laml.
  10. write.mafSummary(maf = laml, basename = 'laml')

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

2) 绘制MAF-summary图

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

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

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

三、 绘制oncoplot(瀑布)图

1 绘制基础oncoplots(瀑布图)

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

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

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

2 更改变异类型的颜色

  1. #此处使用RColorBrewer的颜色,当然也可以使用任意颜色
  2. vc_cols = RColorBrewer::brewer.pal(n = 8, name = 'Paired')
  3. names(vc_cols) = c(
  4. 'Frame_Shift_Del',
  5. 'Missense_Mutation',
  6. 'Nonsense_Mutation',
  7. 'Multi_Hit',
  8. 'Frame_Shift_Ins',
  9. 'In_Frame_Ins',
  10. 'Splice_Site',
  11. 'In_Frame_Del'
  12. )
  13. #查看变异类型对应的颜色
  14. print(vc_cols)
  15. #> Frame_Shift_Del Missense_Mutation Nonsense_Mutation Multi_Hit
  16. #> "#A6CEE3" "#1F78B4" "#B2DF8A" "#33A02C"
  17. #> Frame_Shift_Ins In_Frame_Ins Splice_Site In_Frame_Del
  18. #> "#FB9A99" "#E31A1C" "#FDBF6F" "#FF7F00"
  19. 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

  1. #GISTIC results
  2. all.lesions =
  3. system.file("extdata", "all_lesions.conf_99.txt", package = "maftools")
  4. amp.genes =
  5. system.file("extdata", "amp_genes.conf_99.txt", package = "maftools")
  6. del.genes =
  7. system.file("extdata", "del_genes.conf_99.txt", package = "maftools")
  8. scores.gis =
  9. system.file("extdata", "scores.gistic", package = "maftools")
  10. #Read GISTIC results along with MAF
  11. laml.plus.gistic = read.maf(
  12. maf = laml.maf,
  13. gisticAllLesionsFile = all.lesions,
  14. gisticAmpGenesFile = amp.genes,
  15. gisticDelGenesFile = del.genes,
  16. gisticScoresFile = scores.gis,
  17. isTCGA = TRUE,
  18. verbose = FALSE,
  19. clinicalData = laml.clin
  20. )
  21. #绘制含有SCNA信息的oncolpot
  22. oncoplot(maf = laml.plus.gistic, top = 20)

3.2 Custom copy-number table

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

  1. set.seed(seed = 1234)
  2. barcodes = as.character(getSampleSummary(x = laml)[,Tumor_Sample_Barcode])
  3. #Random 20 samples
  4. dummy.samples = sample(x = barcodes,
  5. size = 20,
  6. replace = FALSE)
  7. #Genarate random CN status for above samples
  8. cn.status = sample(
  9. x = c('Amp', 'Del'),
  10. size = length(dummy.samples),
  11. replace = TRUE
  12. )
  13. custom.cn.data = data.frame(
  14. Gene = "DNMT3A",
  15. Sample_name = dummy.samples,
  16. CN = cn.status,
  17. stringsAsFactors = FALSE
  18. )
  19. head(custom.cn.data)
  20. #> Gene Sample_name CN
  21. #> 1 DNMT3A TCGA-AB-2898 Amp
  22. #> 2 DNMT3A TCGA-AB-2879 Amp
  23. #> 3 DNMT3A TCGA-AB-2920 Del
  24. #> 4 DNMT3A TCGA-AB-2866 Amp
  25. #> 5 DNMT3A TCGA-AB-2892 Amp
  26. #> 6 DNMT3A TCGA-AB-2863 Amp
  27. #添加SCNA信息
  28. laml.plus.cn = read.maf(maf = laml.maf,
  29. cnTable = custom.cn.data,
  30. verbose = FALSE)
  31. oncoplot(maf = laml.plus.cn, top = 10)

4 添加 significance values

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

  1. #MutSig results
  2. laml.mutsig = system.file("extdata", "LAML_sig_genes.txt.gz", package = "maftools")
  3. oncoplot(
  4. maf = laml,
  5. mutsig = laml.mutsig,
  6. mutsigQval = 0.01,
  7. )

5 临床信息 annotations

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

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

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

  1. #更改FAB classification的颜色设置
  2. fabcolors = RColorBrewer::brewer.pal(n = 8,name = 'Spectral')
  3. #颜色和变量的种类要一样多
  4. names(fabcolors) = c("M0", "M1", "M2", "M3", "M4", "M5", "M6", "M7")
  5. fabcolors = list(FAB_classification = fabcolors)
  6. oncoplot(
  7. maf = laml,
  8. clinicalFeatures = 'FAB_classification',
  9. sortByAnnotation = TRUE,
  10. annotationColor = fabcolors
  11. )

3)注释多个临床数据

  1. oncoplot(
  2. maf = laml,
  3. clinicalFeatures = c('FAB_classification','SEX','Overall_Survival_Status'),
  4. annotationColor = fabcolors)

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

maftools | 从头开始绘制发表级oncoplot(瀑布图)的更多相关文章

  1. Tableau绘制漏斗图、甘特图、瀑布图、镶边面积图、阴影坡度图

    Tableau绘制漏斗图.甘特图.瀑布图.镶边面积图.阴影坡度图 本文首发于博客冰山一树Sankey,去博客浏览效果更好.直接右上角搜索该标题即可 一. 漏斗图 数据源 1.1 分色直条漏斗图 (1) ...

  2. Excel催化剂图表系列之品味IBCS瀑布图观察企业利润构成

    IBCS图表,每个细节都值得反复琢磨参悟,此篇给大家送上详尽的瀑布图方式下的利润数据观察.请不要拿Excel2016版提供的瀑布图与IBCS版的瀑布图作对比,那完全不是一个级别的,可以类比为拿一辆经济 ...

  3. 教你用Python创建瀑布图

    介绍 对于绘制某些类型的数据来说,瀑布图是一种十分有用的工具.不足为奇的是,我们可以使用Pandas和matplotlib创建一个可重复的瀑布图. 在往下进行之前,我想先告诉大家我指代的是哪种类型的图 ...

  4. 使用highcharts绘制美观的燃尽图

    使用highcharts绘制美观的燃尽图 助教在博客中介绍了两种绘制燃尽图的方法,但是我们组在使用时发现有些任务不适合写进issue,而且网站生成的燃尽图不是很美观,因此我们打算使用其他方法自己绘制燃 ...

  5. C#绘制立体三维饼状图

    转载自原文 C#绘制立体三维饼状图(超酷) 内容原文地址:LINK [翻译]Julijan Sribar著3D Pie Chart一个用于绘制立体三维饼状图的C#类库[简介]本文的想法就是创建一个独立 ...

  6. 绘制3D的托卡马克位形图的matlab脚本文件 ThreeD.m

    % 绘制3D的托卡马克位形图, (V 0.1 by Jiale Chan for Y. H. Huang) % Dee Formula % 特征参数     rzero = 2.0;     rmax ...

  7. [math] 绘制空间几何体的直观图

    这么多年,一直凭着从天而降的神来之灵感画着立体图. 而今才知道在二维平面上绘制空间几何体的直观图也是有方法的.叫做“画法几何” 1. 斜二测图 就是倾斜y轴,使y轴与x轴成45度的夹角.见: http ...

  8. 看懂 Fiddler 的瀑布图

    最近准备给组内的新同学们分享下 Fiddler 这枚神器,可以讲的地方太多,我打算把一节课讲不完的内容写在博客上,大家可以随便看看.今天先介绍下 Fiddler 的瀑布图. 每个网络请求都会经历域名解 ...

  9. Qt绘制简单的风向玫瑰图代码

    1.绘制简单的风向玫瑰图代码2.主要使用QPainter3.在子widget上绘制需要使用widget监视事件 eventfilter update();//更新界面 //镜头12 QPainter ...

随机推荐

  1. AOP 与 Spring中AOP使用(上)

    AOP简介 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程, 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术. AOP是OOP的延续 ...

  2. 使用java写js中类似setTimeout的代码

    javascript目前已经是一门相当主流的编程语言了,它的异步IO特定项目其他编程语言来说,大大减少了cpu在线程切换方面的速度.实现了单线程高并发的奇迹.而java作为老牌编程语言,在很多的项目中 ...

  3. Flutter移动电商实战 --(48)详细页_详情和评论的切换

    增加切换的效果,我们主要是修改这个地方 这样我们的评论的内容就显示出来了 最终代码 details_web.dart import 'package:flutter/material.dart'; i ...

  4. GCC编译流程及常用编辑命令

    GCC 编译器在编译一个C语言程序时需要经过以下 4 步: 将C语言源程序预处理,生成.i文件. 预处理后的.i文件编译成为汇编语言,生成.s文件. 将汇编语言文件经过汇编,生成目标文件.o文件. 将 ...

  5. VS code写stm32

    第一次在知乎写博客,献丑了. VS code写stm32   今天实在觉得KEIL太丑,突然想到VS code也可以实现STM32代码的编写,遂决定写一个文章,把VScode变成一个STM32的IDE ...

  6. 【转】nodejs接收前端formData数据

    很多时候需要利用formdata数据格式进行前后端交互. 前端代码可以是如下所示: <!DOCTYPE html> <html lang="en"> < ...

  7. 使用editplus等编程工具时UTF-8编码去掉BOM头方法(转载备查)

            Unicode规范中有一个BOM的概念.BOM——Byte Order Mark,就是字节序标记.在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做"ZERO WI ...

  8. Java 5-11新特性的整理(转)

    Java 5-11新特性的整理(转) 作者:拔剑少年 简书地址:https://www.jianshu.com/u/dad4d9675892博客地址:https://it18monkey.github ...

  9. Centos7安装zabbix3.4.0以及配置和使用

    一.安装ZABBIX 1.环境和软件版本 注:此次是采用的rpm包方式安装,所以服务器必须要能连接互联网通过yum方式解决依赖关系 ①系统: [root@zabbix ~]# cat /etc/red ...

  10. 阶段5 3.微服务项目【学成在线】_day18 用户授权_13-细粒度授权-细粒度授权介绍

    3 细粒度授权 3.1 需求分析 什么是细粒度授权? 细粒度授权也叫数据范围授权,即不同的用户所拥有的操作权限相同,但是能够操作的数据范围是不一样的.一个 例子:用户A和用户B都是教学机构,他们都拥有 ...