位点组分同质性检验(compositional homogeneity test)——P4

Published at 2020-06-23 15:32

Author:zhixy

View:514


同构模型与异构模型

概括来说,分子进化模型可以分为四部分:

  1. 组成向量 (composition vector),描述了数据 (序列比对结果中包含的一众位点) 中的状态 (碱基/氨基酸) 频率;
  2. 替代速率矩阵 (substitution rate matrix),描述了某一状态 (碱基/氨基酸) 变成其它状态的速率;
  3. 不变位点比例;
  4. 位点间替代速率差异的离散Gamma分布。

分子进化建模主要有两种方法:同构建模(homogeneous modeling)和异构建模(heterogeneous modeling)。 它们的结构/假设和对生物学的解释各不相同。 我们将同构模型定义为那些不考虑不同物种间,或不同位点间,组成变化和替代速率变化的模型。不过,较高级的同构模型可以考虑位点间替代速率差异,但不会考虑组成频率上的差异。

通常,同构模型利用一个替代速率矩阵、一个组成向量,同时利用gamma分布描述位点间速率差异。因此采用同构模型的软件,如RAxML,计算速度都比较快。RAxML用CAT模型表达位点替代速率差异。CAT模型可以对大型数据集快速建模,因为它作为gamma参数的近似,并加快了树搜索。同构模型往往过于简单化,无法解释生物现实。 因此,基于这些模型的系统发育重建可能导致错误的拓扑结构(进化树),特别是如果数据中明显存在组成异质性。

目前可以提供异构模型的软件不多,包括P4PhyloBayes。其中P4提供了组分异质性的检验方法。

P4简介

P4是用于分子序列最大似然和贝叶斯分析的Python软件包。 它的特点是可以使用异构模型,其中模型的特征可以在数据上或在树上不同。

P4也是系统发育工具包。 P4的接口是Python编程语言,因此P4具有高级面向对象编程语言的所有能力。 这是一件好事,但这意味着您需要了解一些Python才能使用它。 它可以用于像对树或数据的编程操作这样的事情。

通常,做组成同质性检验的方法是对数据进行卡方检验。 Paup对数据进行整体处理,Tree-Puzzle对单个序列进行处理。 在后者中,由于有许多同时进行的比较,结论可能会受到影响。在P4中可以用Data.Data.compoChiSquaredTest()方法来进行这种检验。

这种检验使用X^2统计量。 众所周知,这种检验具有II型误差的高概率,因为卡方曲线不是评估X^2统计量的显着性的适当零分布。通过对所讨论的树和模型上的数据进行模拟,并利用从这些模拟中提取的X^2统计量作为零分布,可更好的解决问题。

检验方法

from p4 import * # 导入p4模块

read('test_protein.phy') # 读入检验目标蛋白序列的比对文件,phylip格式
read('test_protein.nwk') # 读入检验目标蛋白序列的的一颗最优树文件,newick格式

# read读取的数据都保存在var对象中

t = var.trees[0] # 从read读取的对象中,获得第一个tree数据
d = Data() # 将var.alignments中的数据转为Data类,并实例化
t.data = d # 将alignment数据赋予tree数据

# 假设该蛋白序列的最优模型为 LGIG4F
t.newComp(free=1, spec='empirical')
# 假设该蛋白序列的最优模型为 LGIG4
t.newComp(free=0, spec='lg')

# 设定替代矩阵
t.newRMatrix(free=0, spec='lg')

# 设定离散gamma分布
t.newGdasrv(free=1, val=0.5)
t.setNGammaCat(nGammaCat=4)

# 设定不变位点 I
t.setPInvar(free=1, val=0.2)

t.optLogLike(verbose=0)

# 检验,模拟次数100
t.compoTestUsingSimulations(doIndividualSequences=0,nSims=100, doChiSquare=0)

# Output would be something like ...
# Composition homogeneity test using simulations.
# P-values are shown.

#             Part Num       0
#            Part Name      all
# --------------------    --------
#        All Sequences     0.0000

# Or using more sims for more precision, and also doing the
# Chi-square test for contrast ...

# 增加模拟次数可以使检验结果更加精确。同时打开doChiSquare参数,可以与普通的卡方检验结果进行比较。
t.compoTestUsingSimulations(doIndividualSequences=0,nSims=1000, doChiSquare=1)

# Output might be something like ...
# Composition homogeneity test using simulations.
# P-values are shown.
# (P-values from Chi-Square are shown in parens.)

#             Part Num       0
#            Part Name      all
# --------------------    --------
#        All Sequences     0.0140
#   (Chi-Squared Prob)    (0.9933)

总结:P4进行组成同质性检验需要两个输入数据文件,1. 序列比对文件,2. 基于该序列比对文件的最优树。且因为P4检验的零分布由基于最优模型生成的模拟数据而来,所以在检验前需要设定该序列集合的最优模型。

参考文献

Foster, P.G. 2004. Modeling compositional heterogeneity. Syst. Biol. 53: 485-495. DOI:10.1080/10635150490445779