skbio.stats.evolve.hommola_cospeciation¶
- skbio.stats.evolve.hommola_cospeciation(host_dist, par_dist, interaction, permutations=999)[源代码]¶
执行Hommola等人(2009年)宿主/寄生虫共专一性试验。
状态:从0.4.0开始实验。
对宿主/寄生虫共分类的测试如中所述 [1]. 该测试是对Mantel测试的修改,扩展为接受多个主机映射到单个寄生虫的情况(反之亦然)。
对于基本的曼特尔测试,被比较的距离矩阵必须具有相同数量的值。为了确定两个矩阵中距离之间的相关性的重要性,计算这些距离的相关系数,并将其与从其中行和列已被置换的一组矩阵计算的相关系数进行比较。
在这项测试中,不是直接比较主机-主机与寄生虫-寄生虫的距离(每个寄生虫需要一个主机),而是比较主机和寄生虫之间的每个交互边的距离。因此,与两种不同寄生虫相互作用的宿主将被表示在两条不同的边上,用于在这两条边之间进行比较的宿主-宿主距离等于零,而寄生虫-寄生虫距离等于这两种寄生虫之间的距离。像在Mantel测试中一样,相互作用的重要性是通过排列来评估的,在这种情况下,主机-共生体相互作用链接的排列。
请注意,这里测试的零假设是宿主和寄生虫相互独立地进化。与此相比,另一种可能的情况比通常所暗示的“共种”要弱一些,即寄主物种形成的每一次发生都概括为共生体物种形成的发生(严格的共分支发生)。虽然可能有许多因素可能导致宿主和共生体系统发育的非独立性,但这种解释特异性的丧失伴随着对系统发育不确定性的更强的稳健性。因此,对于寄主和/或共生体系统发育没有得到很好解决的情况,或者当寄主和共生体进化之间的简单相关性比严格的共同分支发生更有意义时,这一测试可能特别有用。
该测试需要主机和共生体的成对距离矩阵,以及指定主机(按列)和共生体(按行)之间的链接的交互矩阵。该相互作用矩阵应该与主机距离矩阵具有相同的列数,并且具有与共生体距离矩阵相同的行数。宿主和共生体之间的相互作用应由
1
或True
的值来指示非交互0
或False
。- 参数:
host_dist (2-D array_like or DistanceMatrix) -- 主机之间m x m成对距离的对称矩阵。
par_dist (2-D array_like or DistanceMatrix) -- 寄生虫之间n×n成对距离的对称矩阵。
interaction (2-D array_like, bool) -- 寄生虫x宿主相互作用的n x m二进制矩阵。主机顺序(列)应与中的主机顺序相同 host_dist ,寄生虫的顺序(行)应与寄生虫在 par_dist 。
permutations (int, optional) -- 用于计算p值的排列数。必须大于或等于零。如果为零,则将跳过统计显著性计算,并且p值将
np.nan
。
- 返回:
corr_coeff ( float )--寄主的皮尔逊相关系数:寄生虫联合。
p_value ( float )--主机的意义:寄生虫关联性计算使用 permutations 以及一种片面的(更大的)替代假设。
perm_stats ( 1-D numpy.ndarray, float )--使用置换宿主:寄生虫相互作用观察到的相关系数。长度将等于用于计算p值的排列的数量(请参见 permutations 参数)。
备注
假设寄生虫的顺序是 par_dist 和东道主 host_dist 分别与它们在交互矩阵的行和列中的排序相同。
该代码松散地基于 [1].
引用
示例
>>> from skbio.stats.evolve import hommola_cospeciation
为主机距离、寄生虫距离及其交互创建阵列(数据来自中的示例 [1]) :
>>> hdist = [[0,3,8,8,9], [3,0,7,7,8], [8,7,0,6,7], [8,7,6,0,3], ... [9,8,7,3,0]] >>> pdist = [[0,5,8,8,8], [5,0,7,7,7], [8,7,0,4,4], [8,7,4,0,2], ... [8,7,4,2,0]] >>> interaction = [[1,0,0,0,0], [0,1,0,0,0], [0,0,1,0,0], [0,0,0,1,0], ... [0,0,0,1,1]]
使用99个排列进行协同指定测试。请注意,观测值的相关系数计入最终报告的p值:
>>> corr_coeff, p_value, perm_stats = hommola_cospeciation( ... hdist, pdist, interaction, permutations=99) >>> print("%.3f" % corr_coeff) 0.832
在这种情况下,寄主距离与共生体距离有相当强的正相关关系。然而,这也可能反映了系统发展中固有的结构,而不是其本身的意义。
>>> p_value <= 0.05 True
在置换宿主:寄生虫的相互作用后,我们发现观察到的相关性确实比我们偶然预期的要大。