Biopython如何确定系统发育树的根?

时间:2015-05-14 21:08:56

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

还有其他软件包,特别是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')

我在构建树之后在这里编写了序列,但是这是一个根据该过程构建的有根树。

enter image description here

1 个答案:

答案 0 :(得分:1)

正如@cel所说,这是UPGMA算法的产物。 UPGMA通过从当前向后工作(或者只要数据来自)创建树。它首先找到两个最相似的物种。从理论上讲,这些物种的共同祖先比任何其他物种都更近,因此它们被组合在一起。他们的共同祖先与树中其他物种的相似性通过平均每个物种与该群体所有成员的相似性来进行松散估计。

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