/FruitPhylo

果实性状的系统发育分析

Primary LanguageR

云南省9370种植物果实类型的系统发育保守性分析

本项目是对发表在《ecology》上的文章「Phylogenetic conservatism explains why plants are more likely to produce fleshy fruits in the tropics」的结果的复现。

本文的问题主要是探讨植物的果实类型(干果或者鲜果)是什么因素决定的,或者说是各个都可能的因子的相对的贡献。目前有着多种因子可能对其影响,例如温度、气候、生活型等,但鲜有研究考虑系统发育在其中的贡献。

这里面有三个包在默认的CRAN中并没有,需要从GitHub上安装:

  • devtools::install_github("arives/rr2")
  • devtools::install_github("daijiang/phyr")
  • devtools::install_github("lamho86/phylolm")

项目结构

  • 根目录是主要的代码;
  • data目录是来源数据,本项目中使用的数据与原始数据略微不同,体现在原始数据中已经进行了名义数据的One-Hot编码,而本项目没有
  • result目录下是生成的结果,以及部分中间文件。

主要内容

描述性分析

这篇文章首先对这9370种云南的植物物种进行了一个描述性的统计分析,包括果实类型在各个因子中的分布情况。并对各个因子之间的相关性进行了分析。 这些分析请参考summary_analysis.R脚本。

系统发育分析

第二块内容则是进行系统发育分析,系统发育分析依赖于系统树的构建。 在维管植物中,有一个非常方便的包V.PhyloMaker2,涵盖了绝大多数已知的维管植物,可以直接构建带有时间年份的系统树,我们用它构建自己的数据子集即可,该包的使用方法参见https://github.com/jinyizju/V.PhyloMaker2

原文中的附件直接附带了系统发育树的文件,但是我重新构建后的树和原本地树有非常大的差异,猜测是由于版本更新带来的影响,推荐还是使用原文附件中现成的系统树文件。

直接生成的系统树在可视化上并不美观,还需要结合性状等数据进行映射。

系统树的解释主要有两种方式,一种是直接看系统树的分支,如果分支上的物种都是同一种果实类型,那么就是保守性状,否则就是不保守,当然更直接的方式是看系统发育信号,详细方法参考phylo_analyses.R脚本。这里面在使用phyloglm()等函数进行分析的时候,需要把名义变量转换为0/1数据,记得数据格式的转换。需要注意的是,原文中的 $\alpha$ 的值是把树文件进行了标准化后的值(即树的枝长缩放到0-1的范围内),因此在值上有会一定程度的差异,但是整体上比较是没有问题的,就我自己的看法,做系统发育信号的时候不标准化枝长也完全没有问题

如果在进行系统发育信号计算时,遇到的性状是连续的,那么可以使用phylolm()函数进行计算,这个函数的使用方法参考phylolm.R脚本。

多性状的权重贡献分析

就这篇文章中讨论的果实性状而言,系统发育信号只是表面了该性状的保守性,但是还是很难说明系统发育保守性在果实类型中的贡献。因此,本文还对各个因子的贡献进行了分析,这里面使用了rr2包,里面的R2_lik()函数可以实现多个模型之间的减法。具体的使用方法参考r2lik.R脚本。