MEE在18号出版了今年(第8卷)第1期,ggtree正好在这一期出版,一经出版就有几条推在传播, 我也是在推特上看到,才发现,哦原来我的文章出版了。然后我又发现2017年新鲜出炉有了一篇PNAS的引用。

我以前没接触过进化,来了现在这个实验室,发现可视化是个大问题,大家都在用AI,慢慢地抠,对于一些和进化树相关的数据,自己一点一点地在AI里面加上去。甚至于genotype table是一个框一个框地在AI里面加的。一方面画一顆树可能用掉你几天的时间,另一方面,太容易出错了,再者你花的时间并不能转化为生产力,每一次你都要这么搞!这简直就是水深火热啊!

我也帮师兄写过一些代码,给定进化树上节点的序列,我比较父节点和子节点,把碱基或氨基酸替换写到newick树的node label,然后就可以用软件展示序列的替换情况。教会了师兄,他再去给他的师弟师妹们演示,说以后咱们可以这么干了,一个个觉得很牛逼,我内心想的是,愚蠢的人类啊,node label只能存一个信息,牛逼的方式应该是可以展示多个维度的信息,通过图层自由组合。这个时候我就产生了要写ggtree的想法。

我其实也挺惊讶的,进化这个领域,竟然有这么大的坑,等我这个新手来填。在2014年底开始写,在我写了基本几个图层,可以画树做一些注释的时候,我首要解决的就是你来个数据,我可以加到树上去做注释,所以在最初的版本,就有%<+%这个操作符,使用的是p %<+% d + geom这样的语法,你画了颗树p,有个数据d,可以通过%<+%操作符把数据关联起来,然后这个数据就可以在后续的图层geom里用了。我对这个操作符还是很满意的,主要是傻瓜化,然后它可以解决一大票关联数据做注释的事情。后面一个相关的是facet_plot函数,这个关联的是图,使用的语法是facet_plot(p, panel, data, geom, mapping), 你有数据data,要用geom(mapping, data)来画一个图,我可以把这个图和树p关联起来,画在panel上,而geom(mapping, data)画出来的图,会自动按照树的拓扑结构重新排列。

在之前我跟实验室的小伙伴推荐ggplot2,大家觉得很牛逼,但没人想学。学生物出身的人,天生对命令行是抗拒的,但有了ggtree,很多人都愿意学了,因为用AI搞进化树真心水深火热!学ggtree也需要时间,但花的时间可以转化为生产力啊,越搞越顺手,越来越有能力做出逼格高的图,而且花费的时间越来越少。虽然和我同级的同学都是纯生物出身,但现在已经一个个可以做出很有逼格的图了,当然和作者在同一屋檐下也是很有关系的😜。

ggtree有很多好玩的东西,可以做出非常复杂的图,前阵子推送了我在人大做报告的幻灯片,后台有人问我第一张图中那些小动物的图是那里找来的?显然如果有看我之前的emojifont包,就会知道,这是ggtree+emojifont画出来的。那个幻灯片里面所有的进化树,都是ggtree画的。ggtree有很多的功能,其实大家还不清楚,尽管我写了很详细的文档,写了很多篇博客来介绍,但还是有些细节没讲到,也有些东西可能大家想不到应用场景,或者你有东西想要做,却不知道怎么来实现。我的邮箱里ggtree这个标签下面已经有344封邮件(其实起码要翻倍,因为同一主题的来来往往好多邮只会被当成1封,几乎每天都会有邮件),很多的问题其实反复被问到,所以我后来不直接在邮件里回复,而是要求大家去google group里问。google group其实是邮件列表,有个好处,就如同如何获取文献中说的RSS推送一般,如果用户订阅了,但凡有人提问,有人回答,你都可以收到邮件,这样子,用户可以参与帮忙解决问题,一个问题的解决,大家都可以看到,或者也有收益。别的用户有同样的问题,在网上还能搜到答案,多方收益,我也可以减少回答问题。有兴趣的同学,可以往bioc-ggtree+subscribe@googlegroups.com发邮件订阅。

正好准备过年停止更新,等年后再来,又正好ggtree刚好出版,算是庆祝一下吧。不管你有任何关于ggtree的问题,你都可以在留言区里问我,大家可以分享这篇文章,让更多的人参与,因为别人可能会问出你想不到的问题,而我解答别人的问题,你或许也能学习受益。如果有人提的问题正好也是你关心的,请给他/她点赞,点赞多的问题,我会优先回答。这个过程持续到年后,我会在年后找个时间集中回答。

虽然现在引文不多,但我已经开始在收集论文里用ggtree画的图了,以后肯定会有越来越多有逼格的图出来,也算是一个侧面给大家展示ggtree可以做什么。

请记住一点,投入时间学习是有回报的,因为你的投入可以转化为生产力,而不像AI你搞再多,也只是机械式重复,并不能因为你用AI注释树而让你有能力去做美工-,-,但学ggtree,你会的不止是进化树的可视化,你同时必须还会用ggplot2来展示你其它的各种数据。套用如何获取文献中的梗,如果你还在用AI手工注释你的进化树,你该吞下红色药丸了。ggtree是你的朋友!

G Yu, DK Smith, H Zhu, Y Guan, TTY Lam*. ggtree: an R package for visualization and annotation of phylogenetic trees with their covariates and other associated data. Methods in Ecology and Evolution. 2017, 8(1):28-36.