【问题标题】:How does Biopython determine the root of a phylogenetic tree?Biopython 如何确定系统发育树的根?
【发布时间】:2015-05-14 21:08:56
【问题描述】:

还有其他包,特别是 R 的 ape,它们构建了一个无根树,然后允许您通过 explicitly specifying an outgroup 对其进行根化。

相比之下,在 BioPython 中,我可以直接创建有根树而无需指定根,所以我想知道根是如何确定的,例如从以下代码中。

from Bio import AlignIO
alignment = AlignIO.read('mulscle-msa-aligned-105628a58654.fasta', 'fasta')
from Bio.Phylo.TreeConstruction import DistanceCalculator
calculator = DistanceCalculator('ident')
dm = calculator.get_distance(alignment)
from Bio.Phylo.TreeConstruction import DistanceTreeConstructor
constructor = DistanceTreeConstructor()
tree = constructor.upgma(dm)
from Bio import Phylo
Phylo.write(tree, 'phyloxml-7016bed7d42.xml', 'phyloxml')

我在构建树之后在这里编写了序列,但尽管如此,这是从该过程构建的有根树。

【问题讨论】:

  • 这个问题不是 biopython 特有的。有几种算法可以重建系统发育树。您选择了基于距离的UPGMA 方法。 UPGMA 是最简单的方法之一。它假设一个恒定的分子钟,是一种层次聚类方法。通过算法设计,您将始终获得一棵有根树。
  • 添加@cel say .... 这类问题最好在https://www.biostars.org/ 或发邮件到biopython@biopython.org

标签: bioinformatics biopython dna-sequence phylogeny sequence-alignment


【解决方案1】:

正如@cel 所说,这是 UPGMA 算法的产物。 UPGMA 通过从现在(或无论何时您的数据来自)向后工作来创建一棵树。它首先找到两个最相似的物种。理论上,这些物种的共同祖先比任何其他物种都更近,因此它们被归为一组。它们的共同祖先与树中其他物种的相似性是通过平均每个物种与该组所有成员的相似性来粗略估计的。

此过程继续进行,在每一步将树中最相似的两个物种(或假定的共同祖先)分组,然后重新计算相似度,直到只剩下两组。其中一个群体可能只有一个成员,在这种情况下,它可以有效地被认为是外群体,但它们也可能都有很多成员。树的根是这两组的共同祖先。

【讨论】:

  • 酷,没有意识到这是一个专门的生根算法。大概 ape 正在使用邻居加入算法,并且可以被告知使用 UPGMA,显然反之亦然,使用 Biopython 来实现相同的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多