FastTree 是一款从核酸或蛋白质序列比对中推断系统发育树的开源软件,由美国劳伦斯伯克利国家实验室的研究人员开发。它采用近似最大似然方法,用内部节点的序列谱代替距离矩阵,可处理多达上百万条序列的比对,对大型数据集的速度比 PhyML 3.0、RAxML 7 等最大似然方法快 100 至 1000 倍,因而广泛用于微生物与宏基因组研究中的大规模进化关系重建。
定义
FastTree 是一款用于推断系统发育树的计算程序,输入是核酸或蛋白质序列的多序列比对,输出是 Newick 格式的进化树[1]。它推断的是"近似最大似然"树,也就是说在搜索过程中每一步都保证似然值不下降,但由于采用了大量启发式策略,并不保证收敛到搜索空间中的局部最优解[2]。该软件属于开源软件,采用 GPL 第 2 版许可发布[1]。
FastTree 的设计目标是可扩展性:它能够处理最多约 100 万条序列的比对,在时间和内存上保持在可接受范围之内[3]。对于大型比对,它的速度比 PhyML 3.0 或 RAxML 7 快 100 至 1000 倍,同时精度高于采用默认设置的 PhyML 3,也明显优于传统上用于大比对的 距离矩阵法。
原理
FastTree 的核心思路是避免构建完整的距离矩阵。传统的 邻接法(Neighbor-Joining)需要存储 $O(N^2)$ 的距离矩阵,而 FastTree 改为在每个内部节点上保存"序列谱"——即该节点每个位点上各字符的频率向量,内部节点的谱由其子节点的谱加权平均得到[4]。这样,两个子树之间的平均距离就等于两个谱之间的距离,存储需求降为 $O(NLa)$,其中 $N$ 为序列数,$L$ 为比对宽度,$a$ 为字符表大小(蛋白质为 20,核酸为 4)[4]。
在搜索策略上,FastTree 使用了 "top-hits" 等启发式方法,把需要考虑的合并数从 $O(N^2)$ 降到 $O(N\log N)$,因此理论时间复杂度为 $O(N\log(N)La)$[4]。得到初始拓扑后,FastTree 2 进一步用最小进化准则下的最近邻交换(NNI)与子树修剪重接(SPR)来改进拓扑,并加入最大似然 NNI;其中"线性 SPR"只考察 $O(N)$ 个候选移动而非 $O(N^2)$ 个,每个子树只搜索两轮 SPR,最大似然 NNI 的轮数也被限制在 $2\log(N)$ 轮以内,以保证运行时间可预测[5]。
为了处理位点间进化速率的差异,FastTree 使用称为 CAT 的近似方法,而不是常见的离散伽马模型。它从 20 个固定速率档位中为每个位点挑选最可能的速率,从而在几乎不损失精度的前提下,避免伽马模型所需的额外 CPU 时间与内存开销[2]。树的可靠性通过 Shimodaira-Hasegawa 检验计算的局部支持值来快速评估,这些支持值等价于 PhyML 3 的 "SH-like local supports"。
发展历程
FastTree 1.0 由 Morgan N. Price、Paramvir S. Dehal 与 Adam P. Arkin 提出,基于最小进化原理,通过寻找使枝长总和最小的拓扑来构建进化树,相关论文于 2009 年发表在《Molecular Biology and Evolution》上[6]。第一版已经可以处理数十万条序列的比对,但在精度上仍不及最大似然方法。
2010 年 3 月 10 日,研究团队在《PLoS ONE》上发表了 FastTree 2 的论文,描述了在保持可扩展性的同时提高精度的改进。相对第一版,FastTree 2 增加了最小进化 SPR 移动与最大似然 NNI,并引入 CAT 近似来估计每个位点的进化速率。作者用它在台式计算机上用 22 小时、5.8 GB 内存推断出 237882 条 16S 核糖体 RNA 序列的拓扑与基于似然的局部支持值[2]。此后该软件持续维护,2.1 系列被 Debian、Ubuntu、NetBSD 等发行版收录,NetBSD pkgsrc 中记录的版本为 FastTree 2.1.11[7]。软件同时提供单线程版本 FastTree 和使用 OpenMP 的多线程版本 FastTreeMP。
应用
FastTree 的主要用途是从多序列比对推断进化关系,可处理核酸或蛋白质序列,既能构建基因树也能构建物种树[8]。它能承载细菌基因组规模的比对,因此常用于微生物基因组学与系统发育基因组学中的大规模建树任务[1]。
在科研工作流中,FastTree 常被集成到在线分析平台与流程工具中。例如美国能源部联合基因组研究院开发的 KBase 平台将其封装为 "Build Phylogenetic Tree from MSA using FastTree2" 应用,用户提供比对后即可生成树对象,并以 Newick、PNG、PDF 等格式下载结果[8]。此外,它也被用于覆盖整个生命之树的大规模建树,以及分析海量未培养微生物序列[9]。
由于运行速度快,FastTree 也适合进行自助法(bootstrap)分析;在比对含 500 条以上序列时,它比 PhyML 3.0 或 RAxML 7.2.1 快至少 100 倍[2]。默认情况下软件按蛋白质比对处理,需分析核苷酸数据时要显式指定相应参数[10]。
局限
FastTree 是近似方法,由于大量启发式的使用,它不保证在树空间中找到局部最优的似然值,只是在每一步保证似然值上升[2]。论文作者指出,在精度上它明显不及使用 SPR 移动的最大似然方法,如采用较慢设置的 PhyML 或 RAxML[2]。
不过作者同时说明,FastTree 与这些方法出现分歧的多数分支本身支持度很低[2]。在模拟比对上,FastTree 2 恢复真实分支的比例低于 RAxML 7 与使用 SPR 的 PhyML 3.0,例如在 250 条氨基酸序列的模拟数据上为 86.9%,而 RAxML 7 为 90.5%[11]。此外,局部支持值的解释需要比传统自助法更保守:它估计的是在假定四个子树均为真实树子树的前提下该分支正确的概率[4]。为降低内存占用,处理超过 5 万条序列时通常建议启用更快但更粗略的邻接阶段选项[12]。
参见
参考资料
- modules/fasttree [引用日期2026-10-14]
- article [引用日期2026-10-14]
- FastTree on Biowulf [引用日期2026-10-14]
- ncbi.xyz 上的网页 [引用日期2026-10-14]
- ft2-Oct15(PDF) [引用日期2026-10-14]
- UC Berkeley [引用日期2026-10-14]
- biology/fasttree - The NetBSD Packages Collection [引用日期2026-10-14]
- Build Phylogenetic Tree from MSA using FastTree2 [引用日期2026-10-14]
- articlerender [引用日期2026-10-14]
- fasttree.1.en [引用日期2026-10-14]
- binghui(PDF) [引用日期2026-10-14]
- fasttree [引用日期2026-10-14]