查看: 2304|回复: 27

[R语言] ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)

  [复制链接]

版主

Rank: 10Rank: 10Rank: 10

主题
33
注册时间
2016.3.21
在线时间
125 小时

活跃会员突出贡献


发表于 2020.6.17 09:43:55 | 显示全部楼层 |阅读模式
                                                                                                        如果有maf格式的文件,可以直接oncoplot包绘制瀑布图,有多种展示和统计maftools | 从头开始绘制发表级oncoplot(瀑布图)和maftools|TCGA肿瘤突变数据的汇总,分析和可视化,如果只有多个样本的基因突变与否的excel,不用担心,也可以用complexheatmap包绘制。这个包功能很强大,本次只简单的介绍如何绘制基因组景观图(瀑布图)。一 载入R包,数据
[AppleScript] 纯文本查看 复制代码
#if (!requireNamespace("BiocManager", quietly = TRUE))
#  install.packages("BiocManager")
#BiocManager::install("ComplexHeatmap")
#install.packages("openxlsx")
#install.packages("circlize")

#后面直接加载即可
library(openxlsx)
library(ComplexHeatmap)
library(circlize)
#读入数据
mut <- read.xlsx("TCGA_data.xlsx",sheet = "突变信息")
cli <- read.xlsx("TCGA_data.xlsx",sheet = "临床信息")

查看变异数据
[AppleScript] 纯文本查看 复制代码
rownames(mut) <- mut$sample
mat <- mut[,-1]
mat[is.na(mat)]<-""
mat[1:6,1:6]



二 绘制oncoplot图
2.0 绘制“初始”瀑布图
[AppleScript] 纯文本查看 复制代码
oncoPrint(mat)


可以展示结果,但是为了paper,还需要一些调整!
2.1 指定变异类型的颜色和形状大小
[AppleScript] 纯文本查看 复制代码
#指定颜色, 调整颜色代码即可
col <- c( "mutation" = "blue" , "indel" = "green")
#指定变异的样子,x,y,w,h代表变异的位置(x,y)和宽度(w),高度(h)
alter_fun <- list(
  background = function(x, y, w, h) {
    grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.5, "mm"),
              gp = gpar(fill = "#CCCCCC", col = NA))
  },
  mutation = function(x, y, w, h) {
    grid.rect(x, y, w-unit(0.5, "mm"), h-unit(0.5, "mm"),
              gp = gpar(fill = col["mutation"], col = NA))
  },
  indel = function(x, y, w, h) {
    grid.rect(x, y, w-unit(0.5, "mm"), h*0.33,  
              gp = gpar(fill = col["indel"], col = NA))
  }
)

#指定变异类型的标签,和数据中的类型对应
heatmap_legend_param <- list(title = "Alternations",
                             at = c("mutation","indel"),
                             labels = c( "mutation","indel"))

绘制景观图#设定标题
[AppleScript] 纯文本查看 复制代码
column_title <- "This is Oncoplot "  
#画图并去除无突变的样本和基因
oncoPrint(mat,
          alter_fun = alter_fun, col = col,
          column_title = column_title,
          heatmap_legend_param = heatmap_legend_param)


2.2 简单的调整
[AppleScript] 纯文本查看 复制代码
oncoPrint(mat,
          alter_fun = alter_fun, col = col,
          column_title = column_title,
          remove_empty_columns = TRUE, #去掉空列
          remove_empty_rows = TRUE, #去掉空行
          row_names_side = "left", #基因在左
          pct_side = "right",
          heatmap_legend_param = heatmap_legend_param)


三 添加注释
3.1 添加临床注释信息
[AppleScript] 纯文本查看 复制代码
pdata <- cli
head(pdata)



#对应患者
[AppleScript] 纯文本查看 复制代码
pdata <- subset(pdata,pdata$sampleID %in% colnames(mat))
mat <- mat[, pdata$sampleID]
#定义注释信息
ha<-HeatmapAnnotation(Age=pdata$age,                     Gender=pdata$gender,                      GeneExp_Subtype  = pdata$GeneExp_Subtype ,                     censor = pdata$censor,                     os = pdata$os,                     show_annotation_name = TRUE,                     annotation_name_gp = gpar(fontsize = 7))

3.2 瀑布图 + 临床注释
[AppleScript] 纯文本查看 复制代码
oncoPrint(mat,
          bottom_annotation = ha, #注释信息在底部
          alter_fun = alter_fun, col = col,           
 remove_empty_columns = TRUE, #去掉空列         
 remove_empty_rows = TRUE, #去掉空行          
column_title = column_title, 
heatmap_legend_param = heatmap_legend_param )


此处使用默认颜色注释,有时候会比较接近,且“变动”
3.3 自定义注释颜色以及样本顺序#自定义样本顺序
[AppleScript] 纯文本查看 复制代码
s <- pdata[order(pdata$censor,pdata$GeneExp_Subtype),]
sample_order <- as.character(s$sampleID)

#自定义颜色
#连续性变量设置颜色(外)
[AppleScript] 纯文本查看 复制代码
col_os = colorRamp2(c(0, 4000), c("white", "red"))
ha<-HeatmapAnnotation(Age=pdata$age,
                      Gender=pdata$gender,
                      GeneExp_Subtype  = pdata$GeneExp_Subtype ,
                      censor = pdata$censor,
                      os = pdata$os,
                      #指定颜色
                      col = list(censor = c("death" =  "red", "alive" = "blue"),
                                 GeneExp_Subtype = c("Classical" = "orange","Mesenchymal" = "green","Neural" = "skyblue" ),
                                 os = col_os),
                      show_annotation_name = TRUE,
                      annotation_name_gp = gpar(fontsize = 7))

绘制瀑布图
[AppleScript] 纯文本查看 复制代码
oncoplot_anno = oncoPrint(mat,bottom_annotation = ha,
              alter_fun = alter_fun, col = col,
              column_order = sample_order,
              remove_empty_columns = TRUE, #去掉空列
              remove_empty_rows = TRUE, #去掉空行
              column_title = column_title, heatmap_legend_param = heatmap_legend_param) 
oncoplot_anno


注:颜色不一定好看,只是为了当默认的颜色比较接近时,或者有要求时候,可以自定义。
3.4 调整注释的位置
[AppleScript] 纯文本查看 复制代码
draw(oncoplot_anno ,annotation_legend_side = "bottom")


更改注释的位置,方便后续拼图需求。
更多参数:
https://github.com/jokergoo/ComplexHeatmap
PS:觉得内容有帮助的话,可以点点在看和转发,新机制下容易失踪。

               

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1奥币 +30 贡献 +10 收起 理由
基迪奥-周煌凯 + 30 + 10 楼主V5!太强大的包了!

查看全部评分

回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2017.1.13
在线时间
16 小时

发表于 2020.6.17 13:09:38 | 显示全部楼层
回复

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.6.18 16:27:00 | 显示全部楼层
厉害了,强大的代码
回复 支持 反对

使用道具 举报

版主

Rank: 10Rank: 10Rank: 10

主题
33
注册时间
2016.3.21
在线时间
125 小时

活跃会员突出贡献


 楼主| 发表于 2020.6.18 16:56:26 | 显示全部楼层
qinyuan 发表于 2020.6.18 16:27
厉害了,强大的代码

这个包强大,,只介绍了 绘制 全景图的部分,,,有兴趣可以根据链接去github学习
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
5
注册时间
2020.4.11
在线时间
8 小时

发表于 2020.6.22 09:30:19 | 显示全部楼层
学习!!
加油
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2018.6.16
在线时间
33 小时

发表于 2020.6.23 09:11:12 | 显示全部楼层
学习学习
哈哈
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
1
注册时间
2019.7.22
在线时间
5 小时

发表于 2020.6.29 10:18:23 | 显示全部楼层
可以
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2018.9.19
在线时间
6 小时

发表于 2020.6.30 22:23:49 | 显示全部楼层
厉害
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2018.9.19
在线时间
6 小时

发表于 2020.7.1 08:26:05 | 显示全部楼层
好棒好棒好棒
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.6.29
在线时间
4 小时

发表于 2020.7.3 09:00:51 | 显示全部楼层
图很漂亮!
加油!
回复

使用道具 举报

草履虫

Rank: 2

主题
0
注册时间
2020.6.29
在线时间
0 小时

发表于 2020.7.6 18:07:33 | 显示全部楼层
学到了!楼主牛皮
回复 支持 反对

使用道具 举报

版主

Rank: 10Rank: 10Rank: 10

主题
33
注册时间
2016.3.21
在线时间
125 小时

活跃会员突出贡献


 楼主| 发表于 2020.7.6 22:53:18 | 显示全部楼层
Ellipsis 发表于 2020.7.6 18:07
学到了!楼主牛皮

我只是搬运工,,
回复 支持 反对

使用道具 举报

版主

Rank: 10Rank: 10Rank: 10

主题
33
注册时间
2016.3.21
在线时间
125 小时

活跃会员突出贡献


 楼主| 发表于 2020.7.7 10:08:00 | 显示全部楼层
回复 支持 反对

使用道具 举报

版主

Rank: 10Rank: 10Rank: 10

主题
33
注册时间
2016.3.21
在线时间
125 小时

活跃会员突出贡献


 楼主| 发表于 2020.7.7 10:08:45 | 显示全部楼层

参考链接中  包的说明文档中还有更多很强大的功能
回复 支持 反对

使用道具 举报

迅猛龙

Rank: 8Rank: 8

主题
1
注册时间
2016.4.8
在线时间
734 小时

发表于 2020.7.9 09:41:25 | 显示全部楼层
厉害了
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.7.8
在线时间
0 小时

发表于 2020.7.9 11:36:08 | 显示全部楼层
楼主厉害了,图很漂亮
加油
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.6.29
在线时间
4 小时

发表于 2020.7.10 08:41:49 | 显示全部楼层
图很漂亮!
加油!
回复

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
0
注册时间
2020.4.3
在线时间
6 小时

发表于 2020.7.10 23:00:55 | 显示全部楼层
厉害了,又学习了一波
新的一天加油!
回复 支持 反对

使用道具 举报

钵水母

Rank: 3Rank: 3

主题
1
注册时间
2017.11.13
在线时间
42 小时

发表于 2020.7.11 11:23:45 | 显示全部楼层
大佬大佬
加油
回复

使用道具 举报

版主

Rank: 10Rank: 10Rank: 10

主题
33
注册时间
2016.3.21
在线时间
125 小时

活跃会员突出贡献


 楼主| 发表于 2020.7.11 12:01:42 | 显示全部楼层

包的作者顾祖光博士厉害,,,我是搬运工
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表