《R实战:系统发育树的数据集成操作及可视化》系统地介绍使用treeio、tidytree、ggtree 和ggtreeExtra 等R 软件包操作系统发育树的全套流程,包括对树文件的解析,以及树与其相关数据的操作、整合、可视化等内容。
《R实战:系统发育树的数据集成操作及可视化》由余光创撰写,旨在为系统发育树的操作与呈现提供指导。如果读者需要进行系统发育树的相关操作,却又觉得无从下手,那么这本书会提供很大的帮助。关于系统发育树的大部分问题,都能在本书中找到答案。
用R及相关软件包进行系统发育树分析及可视化,适合生命科学相关研究的科学家、研究生、生物信息工程师
余光创,毕业于香港大学公共卫生学院,获得生物信息学博士学位。南方医科大学基础医学院教授,现任生物信息学系系主任。连续两年(2020-2021)入选爱思唯尔中国高被引学者,入选全球前2%顶尖科学家榜单“年度科学影响力”排行榜(2020-2022)和“终身科学影响力”排行榜(2021-2022)。
前言
撰写这本书是为了给使用tidytree、treeio、ggtree与ggtreeExtra这一套R包进行系统发育树数据整合及可视化等操作的用户提供一个指南。因此,我们假定,阅读本书的读者具有一定的R语言及ggplot2包的使用基础。
ggtree包的开发始于我在香港大学攻读博士期间。在那时,我加入了新发传染性疾病国家重点实验室(State Key Laboratory of Emerging Infectious Diseases,SKLEID),并在管轶教授与林讚育副教授的指导下,参与了修改Newick树字符串的工作,使其能在系统发育树的内部节点标签中包含一些额外的信息,如氨基酸替换,以进行可视化。我编写了一个R脚本来实现这个功能,但很快意识到大多数的系统发育树可视化软件只能通过节点标签展示单一类别的数据。在那时,我们基本不可能同时做到展示两个数据变量来进行比较分析。人们往往需要借助图像后期处理软件才能绘制出能同时展示不同分支或节点相关数据(比如自举值或替换信息)的树图,这使得我萌生了开发ggtree包的念头。首先,我认为一个好的用户界面必须要完全支持ggplot2包通过叠加图层来绘图的语法。这样,简单的图绘制很容易,而复杂的图只不过是简单图的组合。
经过数年的开发,ggtree已经进化为一个软件包套组,其中包括通过整洁接口(tidy interface)来操作树及相关数据的tidytree,用于输入及输出含有丰富注释数据的树文件的treeio,用于可视化及注释树的ggtree,以及用于将数据展示在矩形布局树的右侧或环形布局树的外圈的ggtreeExtra。ggtree是一个通用工具,支持多种不同种类的树与树形结构,同时能被应用于多个不同的学科,帮助科研工作者在进化结构或层次结构的背景下呈现并解读数据。
本书的结构
第1 篇 树数据的输入/ 输出及操作。
第1 ~ 3 章:主要介绍用于树数据输入/ 输出的treeio 包,以及用于树数据操作的tidytree 包。
第2 篇 树数据的可视化及注释。
第4 ~ 8 章:主要介绍如何使用在ggtree 包中实现的图形语法进行树的可视化与注释,以及如何将树的关联数据呈现在树上。
第3 篇 ggtree 拓展包。
第9 ~ 11 章:主要介绍用于在环形布局的树上呈现数据的ggtreeExtra 包, 以及其他的一些拓展包,如MicrobiotaProcess 和tanggle 等。
第4 篇 杂项。
第12 ~ 13 章:主要介绍一些由ggtree 套组提供的实用工具,以及一系列可复现的示例。
软件的信息及约定
编译本书时的R 语言及核心包的信息如下。
R.version.string
## [1] "R version 4.1.2 (2021-11-01)"
library(treedataverse)
## Attaching packages treedataverse 0.0.1
## ape 5.5 treeio 1.18.1
## dplyr 1.0.7 ggtree 3.2.1
## ggplot2 3.3.5 ggtreeExtra 1.4.1
## tidytree 0.3.6
其中,treedataverse 是一个元包(meta package),能帮助我们轻松地安装并加载本书中所介绍的用于树的处理及可视化的核心包。我们可以在附录A 中找到安装treedataverse 的指南。
本书的数据集有以下3 个来源。
(1)模拟数据。
(2)R 包中的数据集。
(3)从互联网上下载的数据。
为了使用户更容易地获取互联网中的数据,我们将这些数据集与能获取到其来源的详细信息存储到TDbook 包中,这些信息包括URL、作者信息及引文信息。TDbook 包已经被发布在CRAN 上,而用户可以使用install.packages("TDbook") 命令来安装TDbook 包。
在本书中,函数名的后面都添加了一对括号(如treeio::read.beast()),其中双冒号操作符“::”表示访问一个包中的对象。
致谢
在此,非常感谢徐双斌对ggtree 系列软件包的长期维护,同时感谢李林与罗晓对本书英文版书稿的审译和校对。
我在开发ggtree 软件套组期间获得了许多人的帮助。在此感谢Hadley Wickham,因为他创建了ggtree 包所依赖的ggplot2 包;感谢管轶教授与林讚育副教授,在我攻读博士期间为ggtree 包的开发提供了很多好的建议;感谢Richard Ree 邀请我参加系统发育树可视化的催化会议;感谢William Pearson邀请我在Current Protocols in Bioinformatics 期刊上发表一篇关于ggtree 包的protocol 文章;感谢徐双斌、夏永和、黄瑞珠、Justin Silverman、Bradley Jones、Watal M. Iwasaki、Casey Dunn、Tyler Bradley、Konstantinos Geles、Zebulun Arendsee 与其他许多对源代码做出过贡献或给予过我反馈意见的人;最后,我还想感谢所有ggtree 邮件列表a 组的成员,由于他们提出了很多具有挑战性的问题, 所以才能改进ggtree 软件套组的功能。
余光创