graphlan进一步学习笔记
写在前面:
之前在宏基因组公众号上推送:graphlan最美进化树学习笔记,这里我进行代码更新。
总的来说,虽然graphlan入手比ggtree难,但是配合R语言的注释过程,发现之后的工作似乎很简单,而且越是学习,越是自由,随便添加,随便改变,只是目前还无法移植到R中。但是已经有人在尝试了。本次完善graphlan的进化树可视化工作。书写笔记,帮助大家理解代码(代码会在同物种分类树一同更新,并上传github,尽请期待哦!或者添加小编微信进行交流,二维码见文末)
在这几天,我们整个学习室的男丁都到江苏省常熟市收获水稻,经常不干农活,所以大家都显得有些疲惫。本着无处不学习,无时不学习的原则,我在空余时间将graphlan的工作继续完善。
其实基于graphlan的完善,主要分为两个部分,第一个部分就是进化树,这也是本次我做的完善工作。第二部分就是物种分类树,就这一部分,刘永鑫老师的NBT给我很好的示范,这个也就是我完善物种树的参照。
本次工作完善内容: 代码更加优化,将参数统一设置在代码开头,并且无暗病。
1.annot1拆分为两个部分,为:annot1和annot0。分别为全局参数的三列参数设置和 占两列的参数设置。
2.对叶节点按照不同门类上色,包括注释代码改动。具体为:选取 otu表格中丰度最高 的10个tac并且上色,其他定义为other。同时这部分做图例注释很麻烦,所以制作代码一体化出来注释信息,并添加到annot1中。
对注释信息进行添加,并且进行排布: 关于注释信息的添加,存在很多的问题,其中一个就是注释信息的排布,ignore_branch_len 0排布为圆形,ignore_branch_len 不等于0,则按照进化树分支长短进行排布,其实这两种方式都不适合大树的构建,个人觉得注释均无法进行很好的展示:
添加信息随机森林结果,将otu按照重要程度进行分类,并映射成透明度。
样品丰度信息映射在内环中,多少个样品,便映射多少个环,这里我将otu的映射除了使用颜色变化表征不同样品中的otu丰度信息,同时将otu的丰度按照高丰度,中丰度,地丰度,稀有物种,这四个档次映射透明度。因此graphlan图形展示的信息便会更加复杂。
其实很多人都曾思考过这样的问题,我们的进化树使用序列表征otu之间的进化关系,可以通过进化树分支的合并,剪切达到展示某些进化关系的物种层次。例如我们想展示基于属水平的物种进化关系等。本次更新添加对不同分类等级的进化树的合并及其展示:
有很多细节,例如如何该改变进化树展示方式,如何将注释对其,如何调整外环与进化树的相对关系,这次更新都会给出答案。
这里将本次发现的问题统一做一个记录:
问题一:graphlan并没有提供很多树可视化的layout。我觉得出图比较丑。
问题二: 我实在不没有办法更好的将graphlan的注释和外圈环进行很好的结合,怎么弄才会又更好的结合呢?
问题三:环的元素单一。无法使用更多的元素。
问题五:这里修改环与树的大小及其相关关系的参数为annotation_background_separation -0.001 annotation_background_offset -0.2 这两个参数设置注释到环之外的结果。但是这两个参数运作方式任然不是很清晰。
这两个参数同时变大,会从巨大的环变为巨大的树。annotation_background_separation -0.001参数变大,则相应的环逐渐变小,或者annotation_background_offset -0.2 参数逐渐变大,环也逐渐变小。
annotation_background_separation -0.3 annotation_background_offset -0.001这两个参数如上设置得到注释在环内的结果
划重点
clade_separation这个参数设置控制是否环均分大小,如果想要均分大小,则不设置这个参数即可。
设置进化树展示方式
ignore_branch_len 参数进行进化树的有限的布局设置。