最近在使用 ksrates 进行 Ks rate correction 时,遇到了一个比较困惑的问题,也向 ksrates 开发者进行了咨询。开发者的回复很好地解释了这一现象,因此整理出来,希望能给后面如果使用也遇到同样问题的同门一些参考。
一、问题背景
在分析中,我选择了一个 focal species 和多个近缘物种进行 Ks rate correction,并提供了公认且支持度较高的系统发育树作为输入。
按照通常理解:
- 与 focal species 亲缘关系越近,校正后的 Ks 值应越小;
- 亲缘关系越远,校正后的 Ks 值应越大。
然而,在结果中却发现了一个看似矛盾的现象:
部分与 focal species 亲缘关系更近的物种,其校正后的 Ks 值反而略高于更远缘物种。
也就是说,校正后的 Ks 值排序与系统发育树的拓扑关系并不完全一致。
(如图所示)
因此,我向 ksrates 开发者咨询了:为什么经过 rate correction 后,Ks 值仍然可能与系统发育关系不一致?这种情况是否正常?
二、来自开发者Maere教授的解答
他认为,这种现象属于 Ks 估计过程本身的统计特性,尤其是在多个物种分化时间非常接近时,是一种正常现象。
1. Ks 本身就是估计值,而不是精确值
Ks 并不是物种真实分化时间的直接反映,而是根据同义替换(synonymous substitutions)估算得到的统计量。
由于核苷酸替换过程本身具有随机性(stochasticity),因此每个 Ks 值都会存在一定的估计误差(standard error)。
也就是说,即使真实的系统发育关系固定,计算得到的 Ks 仍然会有一定波动。
2. Ks rate correction 同样属于估计过程
ksrates 的校正过程也是基于已有 Ks 数据进行速率修正,因此校正值本身同样属于估计结果,而不是"真实值"。
因此:
- 原始 Ks 有误差;
- 校正后的 Ks 依然存在误差。
rate correction 可以减少不同谱系间进化速率差异带来的影响,但并不能完全消除估计误差。
3. 当多个分化事件发生得非常接近时,更容易出现"顺序颠倒"
开发者特别提到,如果几个物种属于非常近缘物种,且多个分化事件发生在较短时间内,例如两个分支几乎连续分化,那么不同分化事件对应的 Ks 值本身就十分接近。
这时,即使真实的系统发育关系是:
A 比 B 更早分化。
由于 Ks 值之间差异非常小,再加上估计误差,就有可能出现:
A 的 Ks 反而略小于 B。
也就是说,两个非常接近的分化事件,在 Ks 分析中可能表现为顺序互换。
这种情况既可能发生在 rate correction 前,也可能发生在 rate correction 后。
4. 这属于 Ks 估计的固有现象
开发者认为,这并不是 ksrates 算法出现错误,而是 Ks 估计过程中不可避免的统计误差。
当不同物种之间的 Ks 差异已经接近估计误差范围时,仅依据 Ks 数值大小来判断分化先后,本身就存在一定的不确定性。
5. 类似于 Gene Tree 与 Species Tree 的差异
开发者还举了一个比较形象的例子。
不同基因家族构建出的 gene tree,有时会出现与 species tree 不完全一致的拓扑关系,即使这些基因理论上经历了相同的物种演化历史。
造成这种现象的原因,同样来自随机因素和有限数据带来的估计误差。
Ks 分析中出现局部排序与系统树略有不一致,本质上属于类似的问题。
三、总结
- Ks 值本身是估计值,而不是物种真实分化时间。
- Ks rate correction 同样属于统计估计,因此校正后的结果仍存在一定误差。
- 当多个物种分化时间非常接近时,校正后的 Ks 排序可能与系统发育树不完全一致,这是正常现象。
- 这种情况并不意味着 ksrates 算法错误,也不代表输入的系统发育树存在问题。
- 对于近缘物种,若不同分支之间的 Ks 差异很小,应结合系统发育树、支持率及其他证据综合解释,而不宜仅根据 Ks 数值的细微差异判断物种间的演化关系。