前言
icamp分析后需要对进化树进行注释,把icamp的结果在进化树中表现出来。
本文复现Ning D, Wang Y, Fan Y, et al. Environmental stress mediates groundwater microbial community assembly. Nat Microbiol. 2024;9(2):490-501.doi:10.1038/s41564-023-01573-x中的Fig.4
本文使用的数据保存在https://github.com/Chthollysage/Phylogenetic-tree其中包含一份树文件和两个数据文件,以及一个代码文件。
由于文章还未发表,目前还不公开
一、itol绘制进化树注释
itol是常用的进化树绘制网站,使用的基本操作这里不做展示。
使用itol网站有诸多限制:不充值无法保存已进行的更改,无法导出注释文件,这使工作流程非常麻烦。
二、使用itol.toolkit
itol.toolkit: github
1.引入库
代码如下:
#install
install.packages("pak") #使用pak包下载可以同时下载所有依赖包,十分方便
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor") #设置镜像网站,提高下载速度
pak::pak("TongZhou2017/itol.toolkit") # 如果报错有某些包下载不完的话,多运行几次
#载入所需R包
library(itol.toolkit) # main package
library(dplyr) # data manipulation
library(data.table) # file read
library(ape) # tree operation
library(stringr) # string operation
library(tidyr) # data manipulation
对于这种依赖包很复杂的情况可以使用pak包来下载
2.读入数据
代码如下:
#记得先设置工作文件夹
#读取进化树和文件 注意:文件中序列名必须和进化树文件中的一致
tree1 <- read.tree("Bacteria_Galaxy5-[FastTree.nwk].nwk")#读取进化树
bin <- fread("B_s_groups.txt",header = TRUE)#读取分类文件
binquant <- fread("B_s_parameters_count.txt")#读取所有数据文件(所有数据全都放在一个文件里)
hub1 <- create_hub(tree = tree1)#创建仓库,集成多个单元同时输出
3. 生成注释文件
代码如下:
set.seed(111)#设置随机化种子,复现配色方案
#COLORSTRIP 外圈条带区分不同class,strip格式会同时给进化树的树枝着色。
unit_strip <- create_unit(data = bin %>% select(ID,Class),
key = "colorstrip",
type = "DATASET_COLORSTRIP",
color = "Spectral", #用“Spectral”配色方案”光谱“
tree = tree1)
#多柱状图展示组装因子
unit_multibar <- create_unit(data = binquant %>% select(ID,HeS,HoS,DL,HD,DR),
key = "multibar",
type = "DATASET_MULTIBAR",
tree = tree1)
#单柱状图展示确定性因素DP
unit_simplebar1 <- create_unit(data = binquant %>% select(ID,DP),
key = "simplebar1",
type = "DATASET_SIMPLEBAR",
tree = tree1)
#单柱状图展示随机性因素SP
unit_simplebar2 <- create_unit(data = binquant %>% select(ID,SP),
key = "simplebar2",
type = "DATASET_SIMPLEBAR",
tree = tree1)
#热图,可选
unit_heatmap1 <- create_unit(data = binquant %>% select(ID,HeS,HoS,DL,HD,DR),
key = "5",
type = "DATASET_HEATMAP",
tree = tree1)
#gradient,可选
unit_gradient <- create_unit(data = binquant %>% select(ID,DP),
key = "gradient1",
type = "DATASET_GRADIENT",
tree = tree1)
#集中输出
hub1 <- hub1+
unit_multibar+
unit_simplebar1+
unit_simplebar2+
unit_strip
write_hub(hub1, getwd()) #单个单元输出:write_unit()
4.拖入itol网站
将树文件和生成的注释文件全都拖入itol网站中,用“export”功能导出为所需格式
5.ai美化
使用ai进行美化,加上标签和donuts plot
总结
- itol.toolkit的优势:
- 利用itol的注释文档功能,可重复复现,而且无需充值
- 用代码替换手动操作,效率高可重复执行
- 劣势:
- 出来的图比较简单,大部分美化操作还需要在ai里完成。本文中主要利用它绘制各种代表数值的bar,其他部分都使用ai进行了大量修改
- itol中的图形类别五花八门,有时候很难找到完美满足自己需求的图片样例(这里推荐一下itol.toolkit作者的gallery
,里面展示各种样图及代码),总体来说缺少自由度 - 使用过程中发现scale bar存在明显错误,绘图缺乏严谨性
因此,下次将展示使用r语言中的ape
包绘制进化树并注释的方法。