前言
推荐序
进化论的提出是科学史上的一次革命,就像杜布赞斯基说的“如果没有进化之光,生物学的一切都将无法理解”。有趣的是,作为进化关系最直观表述的系统发育树却早于进化论的诞生而被创造出来。人们通过整理达尔文留下的笔记发现,早在1837年达尔文还在为撰写《物种起源》整理旅行日记时,就在笔记本上绘制了第一张“生命之树”,用于描述物种的演变过程。因此可以说,系统发育树与进化论同根同源,既是进化论思想的呈现,又是创造进化论的思维工具。
达尔文的灵光乍现为生命科学的研究提供了一个强大的工具。今天,系统发育树的计算生成和可视化已经成为生命科学研究中不可或缺的分析技术。本书的作者余光创很早就致力于生物信息分析技术的研究,十余年间发布了近30个具有影响力的分析软件,其中很多已经成为生命科学研究中的经典分析工具。在系统发育树分析方面,由余光创团队开发的ggtree软件包获得了巨大成功,成为进化生物学、生态学等领域十分重要的分析工具。
本书详细地介绍了使用R语言及相关软件包进行系统发育树分析及可视化的方法。我相信,与书中介绍的各种知名软件包一样,这本书也将成为从事生命科学相关研究的科学家、研究生和生物信息工程师的必备工具,一定能帮助读者更好地绘制属于自己的“生命之树”。
伯晓晨
军事科学院军事医学研究院
撰写这本书是为了给使用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 软件套组的功能。
余光创
商品简介
本书系统地介绍使用 treeio、tidytree、ggtree 和 ggtreeExtra 等 R 软件包操作系统发育树的全套流程,包括对树文件的解析,以及树与其相关数据的操作、整合、可视化等内容。本书由余光创撰写,旨在为系统发育树的操作与呈现提供指导。如果读者需要进行系统发育树的相关操作,却又觉得无从下手,那么这本书会提供很大的帮助。关于系统发育树的大部分问题,都能在本书中找到答案。
作者简介
余光创,毕业于香港大学公共卫生学院,获得生物信息学博士学位。南方医科大学基础医学院教授,现任生物信息学系系主任。连续两年(2020-2021)入选爱思唯尔中国高被引学者,入选全球前2%很好科学家榜单“年度科学影响力”排行榜(2020-2022)和“终身科学影响力”排行榜(2021-2022)。
目录
目录 第1篇 树数据的输入/输出及操作 第1章 导入带有数据的树文件 .2 1.1 系统发育树构建概述 2 1.2 系统发育树文件格式 4 1.2.1 Newick树文件 4 1.2.2 NEXUS格式 .5 1.2.3 NHX格式 7 1.2.4 Jplace格式 .7 1.2.5 利用软件输出文件 8 1.3 使用treeio导入树及相关数据 .13 1.3.1 treeio简介17 1.3.2 treeio解析函数演示18 1.3.3 将其他树形对象转换为phylo对象或treedata对象 29 1.3.4 从treedata对象中获取信息 .31 1.4 总结 34 1.5 本章练习题 35 参考文献 .35 第2章 操作含有关联数据的树 .38 2.1 使用tidy接口操作树数据 38 2.1.1 phylo对象38 2.1.2 treedata 对象 40 2.1.3 访问相关节点 41 2.2 数据整合 43 2.2.1 整合树数据 ..43 2.2.2 将外部数据关联到系统发育树 46 2.2.3 对分类单元进行分组 48 2.3 重新设定树的根节点 51 2.4 重新调整分支标尺 55 2.5 对包含数据的树取子集 56 2.5.1 删除系统发育树中的叶节点 56 2.5.2 通过叶节点标签对树取子集 58 2.5.3 通过内部节点编号对树取子集 60 2.6 操作树数据以进行可视化 62 2.7 总结 65 2.8 本章练习题 65 参考文献 .65 第3章 导出含有数据的树 67 3.1 简介 67 3.2 将树数据导出为BEAST Nexus 格式的文件.68 3.2.1 软件输出文件的导出与转换 68 3.2.2 将树与外部数据结合 71 3.2.3 合并不同来源的树数据 72 3.3 将树数据导出为jtree 格式的文件 .74 3.4 总结 77 3.5 本章练习题 77 参考文献 .77 第2 篇 树数据的可视化及注释 第4 章 系统发育树可视化 80 4.1 简介 80 4.2 使用ggtree 包对系统发育树进行可视化 81 4.2.1 基本的系统发育树的可视化 82 4.2.2 系统发育树的布局 83 4.3 绘制树的构成部分 89 4.3.1 绘制树的标尺 89 4.3.2 绘制内/ 外部节点.91 4.3.3 绘制标签 91 4.3.4 绘制根分支 93 4.3.5 给树着色 94 4.3.6 调整进化树标尺 98 4.3.7 修改主题组件 100 4.4 对树列表进行可视化 100 4.4.1 使用不同变量的值注释同一棵树 102 4.4.2 密度树 103 4.5 总结 104 4.6 本章练习题 105 参考文献 .105 第5 章 系统发育树注释 107 5.1 使用图形语法对树进行可视化及注释 107 5.2 进化树注释图层 109 5.2.1 彩色条带 109 5.2.2 突出显示进化枝 112 5.2.3 连接分类单元 114 5.2.4 进化推论的不确定性 116 5.3 使用进化软件输出结果注释树 117 5.4 总结 120 5.5 本章练习题 121 参考文献 .121 第6 章 系统发育树的可视化探索 .122 6.1 查看选定的进化枝 122 6.2 缩小选定的进化枝 124 6.3 折叠及展开进化枝 124 6.4 对分类单元进行分组 127 6.5 对系统发育树结构的探索 128 6.6 总结 133 6.7 本章练习题 133 参考文献 .133 第7 章 绘制含有数据的树 134 7.1 将外部数据映射到树结构 134 7.2 基于树的结构将图与树对齐 136 7.3 对含有关联矩阵的树进行可视化 138 7.4 对含有多序列比对结果的树进行可视化 142 7.5 复合图 143 7.6 总结 145 7.7 本章练习题 147 参考文献 .147 第8 章 使用轮廓图和子图注释进化树 148 8.1 使用图像注释进化树 148 8.2 使用phylopic 注释进化树 149 8.3 使用子图注释进化树 150 8.3.1 使用柱状图进行注释 151 8.3.2 使用饼图进行注释 152 8.3.3 使用多种不同类型的图表进行注释 152 8.4 玩转phylomoji .153 8.4.1 在环形布局或扇形布局的树中使用表情符号 155 8.4.2 使用表情符号作为进化枝标签 156 8.4.3 Apple 彩色表情符号 .157 8.4.4 使用ASCII Art 呈现phylomoji 158 8.5 总结 159 8.6 本章练习题 159 参考文献 .159 第3 篇 ggtree 拓展包 第9 章 对其他树形对象使用ggtree 包 .162 9.1 使用ggtree 包绘制系统发育树对象 162 9.1.1 phylo4 对象和phylo4d 对象 162 9.1.2 phylog 对象165 9.1.3 phyloseq 对象 166 9.2 使用ggtree 包绘制树状图 169 9.3 使用ggtree 包绘制树形网络图 171 9.4 使用ggtree 包绘制其他树形结构 172 9.5 总结 173 9.6 本章练习题 174 参考文献 .174 第10 章 使用ggtreeExtra 包在环形布局上呈现数据 175 10.1 简介 175 10.2 基于树的结构将图与树对齐 175 10.3 在多维数据的可视化中将多个图与树对齐 178 10.4 群体遗传学示例 183 10.5 总结 190 10.6 本章练习题 190 参考文献 .191 第11 章 其他ggtree 扩展包 .192 11.1 使用MicrobiotaProcess 包进行分类学注释 193 11.2 使用tanggle 包可视化系统发育网络图 .194 11.3 总结 195 11.4 本章练习题 196 参考文献 .196 第4 篇 杂项 第12 章 ggtree 包中的实用工具 .198 12.1 分面相关实用工具 198 12.1.1 facet_widths() 函数198 12.1.2 facet_labeller() 函数 200 12.2 几何对象图层 201 12.3 布局相关工具 202 12.4 标尺相关工具 203 12.4.1 扩大指定面板的x 轴范围 203 12.4.2 按一定比例扩大绘图边界 204 12.5 树数据相关工具 206 12.5.1 筛选树数据 206 12.5.2 展开嵌套的树数据 207 12.6 树相关工具 208 12.6.1 提取叶节点顺序 208 12.6.2 在分类单元标签前添加填充字符 210 12.7 交互式ggtree 注释 211 12.8 本章练习题 211 第13 章 可重复示例图库 213 13.1 绘制系统发育树与核苷酸序列之间的距离 213 13.2 以不同的符号点呈现自举值 217 13.3 突出显示不同分组 219 13.4 含有基因组位点结构信息的系统发育树 222 参考文献 .223 附录A 常见问题 .224 A.1 安装相关问题 .224 A.2 R 语言相关问题 225 A.3 美学映射相关问题 .225 A.3.1 美学映射的继承 .225 A.3.2 切忌在美学映射中使用“$” .226 A.4 文本和标签相关问题 .226 A.4.1 叶节点标签被截断 .226 A.4.2 修改叶节点标签 .227 A.4.3 修改叶节点标签格式 .229 A.4.4 避免文本标签重叠 .230 A.4.5 Newick 格式中的自举值 .231 A.5 分支设置 .232 A.5.1 绘制与plot.phylo() 函数效果相同的树 232 A.5.2 指定叶节点的顺序 .233 A.5.3 缩短外群长分支 .233 A.5.4 为树添加新的叶节点 .234 A.5.5 更改任意分支的颜色或线条类型 .236 A.5.6 在分支的任意位置添加符号点 .236 A.6 为不同的分面面板设置不同的x 轴标签 237 A.7 在树的底部图层绘制图形 .239 A.8 扩大环形布局或扇形布局树的内部空间 .239 A.9 使用离根最远的叶节点作为时间尺度树的原点 .240 A.10 删除环形布局树的空白边距 .241 A.11 编辑树图的细节 242 参考文献 .242 附录B 相关工具 .243 B.1 MircrobiotaProcess 包:将物种分类表转换为treedata 对象 .243 B.2 rtol 包:Open Tree API 的R 接口 .244 B.3 将ggtree 对象转换为plotly 对象 245 B.4 绘制漫画风格的系统发育树(类似xkcd) .246 B.5 绘制ASCII Art 形式的有根树 .247 B.6 放大树的选定部分 249 XVI R 实战:系统发育树的数据集成操作及可视化 B.7 在ggtree 包中使用ggimage 包的提示 250 B.7.1 示例1:移除图像背景 250 B.7.2 示例2:在背景图像上绘制树 251 B.8 在Jupyter Notebook 中运行ggtree 包 .251 参考文献 .252 附录C 练习题答案 .253
内容摘要
本书系统地介绍使用 treeio、tidytree、ggtree 和 ggtreeExtra 等 R 软件包操作系统发育树的全套流程,包括对树文件的解析,以及树与其相关数据的操作、整合、可视化等内容。本书由余光创撰写,旨在为系统发育树的操作与呈现提供指导。如果读者需要进行系统发育树的相关操作,却又觉得无从下手,那么这本书会提供很大的帮助。关于系统发育树的大部分问题,都能在本书中找到答案。
主编推荐
"系统发育树的计算生成和可视化已经成为生命科学研究中不可或缺的分析技术。 作者余光创教授致力于生物信息分析技术研究十余年,发布了近30个具有影响力的分析软件。 《R实战:系统发育树的数据集成操作及可视化》详细地介绍了使用 R 语言及相关软件包进行系统发育树分析及可视化的方法。我相信,与书中介绍的各种知名软件包一样,这本书也将成为从事生命科学相关研究的科学家、研究生和生物信息工程师的经典工具,更好地能帮助读者绘制属于自己的“生命之树”。"
精彩内容
本书系统地介绍使用 treeio、tidytree、ggtree 和
以下为对购买帮助不大的评价