1. 进化树:生物学的“族谱”与实战起点
如果你研究过家谱,或者看过《权力的游戏》里的家族树,那你对进化树就不会太陌生。简单说,进化树就是生物学的“族谱”,它用树状分支结构,直观地展示不同物种、种群甚至基因之间的亲缘关系和进化历史。树根代表共同的祖先,树枝分叉代表演化分歧,枝长往往暗示着进化距离或时间。这玩意儿可不是摆设,从追踪新冠病毒变异的源头,到厘清大熊猫和浣熊到底谁跟谁更亲,再到理解某个关键基因在农作物中的演化路径,都离不开它。
我刚接触生物信息学的时候,觉得构建进化树是个“黑箱”操作——把一堆序列扔进软件,点个按钮,树就出来了。后来自己上手做项目,尤其是分析一批高度相似的病毒序列时,用默认参数跑出来的树怎么看怎么别扭,分支支持率低得可怜,这才意识到算法选择是门大学问。选错了算法,就像用菜刀砍骨头,不是不行,但效率低、效果差,还可能把刀给崩了。今天,我就结合自己踩过的坑和成功的经验,带你彻底搞懂主流进化树构建算法的“脾气秉性”,让你面对任何数据都能快速选出最趁手的那把“刀”。
构建进化树的算法主要分两大门派:基于距离和基于特征。前者先算序列间的“距离”(差异度),再根据距离远近把它们聚成树;后者则直接分析序列每个位点(特征)的变异模式来推导树的结构。下面我们就一个个拆解,看看它们到底怎么干活,又各自适合什么场景。
2. 基于距离的算法:快速绘图的“几何学家”
这类算法的核心思想很直观:先计算所有序列两两之间的进化距离,形成一个距离矩阵,然后基于这个矩阵,通过几何或聚类的方法构建树。它不关心序列具体怎么变,只关心最终“差多远”,所以计算速度快,适合处理大数据量或做初步分析。
2.1 UPGMA法:简单粗暴的“平均主义者”
UPGMA(非加权组平均法)可能是你能遇到的最简单的建树方法。它的基本假设非常强:所有世系的进化速率恒定且相等,也就是假设分子钟是严格准时的。它的工作流程很像我们平时做层次聚类:
- 找到距离矩阵中最近的两个序列(或类群),把它们合并成一个新的“组”。
- 计算这个新组与所有其他组(或序列)的平均距离,更新距离矩阵。
- 重复步骤1和2,直到所有序列都合并到一起,树也就构建完成了。
我最早用UPGMA分析过一批实验室传代培养的细菌菌株,它们的基因组差异很小,进化时间短,基本符合速率恒定的假设。UPGMA跑起来飞快,得到的树形也清晰,能很好地区分不同的传代支系。它的优点就是计算效率极高,实现简单。 但它的缺点也正是来自其强假设。一旦你的数据不符合“分子钟”假设,比如有些物种进化飞快(长枝),有些则异常保守(短枝),UPGMA就会产生严重误差,构建出错误的树拓扑结构。所以,现在它主要用作教学示例,或者在数据量极大、只需一个粗略拓扑关系时进行快速预览。实战中,对于真实的、进化速率不均等的生物数据,我一般不会将它作为最终结论的依据。
2.2 NJ法:应对速率不均的“实用派”
正因为UPGMA的缺陷,邻接法应运而生,并成为了目前最流行、最实用的基于距离的算法,没有之一。它放松了进化速率恒等的假设,允许枝长不同。NJ法的聪明之处在于,它在每次合并时,并不简单地合并距离最近的两个OTU(操作分类单元),而是会先对距离矩阵进行“修正”,试图找出那些在净分歧距离上最接近的“邻居”,然后再进行合并。
你可以这样理解:NJ法在干活前,会先问一句:“你们俩看起来近,是不是因为各自都离别人特别远,才显得你俩近?”它

423

被折叠的 条评论
为什么被折叠?



