Bio.Phylo.Tree构建模块

用于构建树的类和方法。

class Bio.Phylo.TreeConstruction.DistanceMatrix(names, matrix=None)

基类:_Matrix

可用于基于距离的树算法的距离矩阵类。

无论用户提供什么,所有对角线元素都将为零。

__init__(names, matrix=None)

初始化类。

__setitem__(item, value)

将矩阵的项目设置为值。

format_phylip(handle)

将Phylip格式的数据写入给定的类似文件的对象或句柄。

输出流是PHYLIP程序使用的输入距离矩阵格式(例如‘Neighbor’)。请参阅:http://evolution.genetics.washington.edu/phylip/doc/neighbor.html

参数:
手柄文件或类似文件的对象

支持“Write”方法的可写文本模式文件句柄或其他对象,如StringIO或sys.stdout。

class Bio.Phylo.TreeConstruction.DistanceCalculator(model='identity', skip_letters=None)

基类:object

类计算与DNA或蛋白质之间的距离矩阵。

多序列比对(MSA)和替换模型的给定名称。

目前只使用计分矩阵。

参数:
型号应力

要用于计算距离的模型矩阵的名称。该属性 dna_models 包含dna序列和 protein_models 用于蛋白质序列。

示例

加载要从其计算距离的小Phylip对齐:

from Bio.Phylo.TreeConstruction import DistanceCalculator
from Bio import AlignIO
aln = AlignIO.read(open('TreeConstruction/msa.phy'), 'phylip')
print(aln)

输出::

Alignment with 5 rows and 13 columns
AACGTGGCCACAT Alpha
AAGGTCGCCACAC Beta
CAGTTCGCCACAA Gamma
GAGATTTCCGCCT Delta
GAGATCTCCGCCC Epsilon

带有“Identity”型号的DNA计算器::

calculator = DistanceCalculator('identity')
dm = calculator.get_distance(aln)
print(dm)

输出::

Alpha   0
Beta    0.23076923076923073     0
Gamma   0.3846153846153846      0.23076923076923073     0
Delta   0.5384615384615384      0.5384615384615384      0.5384615384615384      0
Epsilon 0.6153846153846154      0.3846153846153846      0.46153846153846156     0.15384615384615385     0
    Alpha       Beta    Gamma   Delta   Epsilon

带‘blosum62’型号的蛋白质计算器::

calculator = DistanceCalculator('blosum62')
dm = calculator.get_distance(aln)
print(dm)

输出::

Alpha   0
Beta    0.36904761904761907     0
Gamma   0.49397590361445787     0.25    0
Delta   0.5853658536585367      0.5476190476190477      0.5662650602409638      0
Epsilon 0.7     0.3555555555555555      0.48888888888888893     0.2222222222222222      0
    Alpha       Beta    Gamma   Delta   Epsilon
dna_models = ['benner22', 'benner6', 'benner74', 'dayhoff', 'feng', 'genetic', 'gonnet1992', 'hoxd70', 'johnson', 'jones', 'levin', 'mclachlan', 'mdm78', 'blastn', 'rao', 'risler', 'schneider', 'str', 'trans']
protein_models = ['blosum45', 'blosum50', 'blosum62', 'blosum80', 'blosum90', 'pam250', 'pam30', 'pam70']
models = ['identity', 'benner22', 'benner6', 'benner74', 'dayhoff', 'feng', 'genetic', 'gonnet1992', 'hoxd70', 'johnson', 'jones', 'levin', 'mclachlan', 'mdm78', 'blastn', 'rao', 'risler', 'schneider', 'str', 'trans', 'blosum45', 'blosum50', 'blosum62', 'blosum80', 'blosum90', 'pam250', 'pam30', 'pam70']
__init__(model='identity', skip_letters=None)

使用距离模型进行初始化。

get_distance(msa)

返回MSA对象的DistanceMatrix。

参数:
MSAMultipleSeqAlignment

DNA或蛋白质多序列比对。

class Bio.Phylo.TreeConstruction.TreeConstructor

基类:object

所有树构造函数的基类。

build_tree(msa)

从MultipleSeqAlignment对象构建树的调用方。

这应该在子类中实现。

class Bio.Phylo.TreeConstruction.DistanceTreeConstructor(distance_calculator=None, method='nj')

基类:TreeConstructor

基于距离的树构造函数。

参数:
方法应力

距离树构造方法,‘nj’(默认值)或‘upgma’。

distance_calculatorDistanceCalculator

用于多序列比对的距离矩阵计算器。如果符合以下条件,则必须提供 build_tree 将会被召唤。

示例

加载要从其计算距离的小Phylip对齐,然后构建升级树::

from Bio.Phylo.TreeConstruction import DistanceTreeConstructor
from Bio.Phylo.TreeConstruction import DistanceCalculator
from Bio import AlignIO
aln = AlignIO.read(open('TreeConstruction/msa.phy'), 'phylip')
constructor = DistanceTreeConstructor()
calculator = DistanceCalculator('identity')
dm = calculator.get_distance(aln)
upgmatree = constructor.upgma(dm)
print(upgmatree)

输出::

Tree(rooted=True)
    Clade(branch_length=0, name='Inner4')
        Clade(branch_length=0.18749999999999994, name='Inner1')
            Clade(branch_length=0.07692307692307693, name='Epsilon')
            Clade(branch_length=0.07692307692307693, name='Delta')
        Clade(branch_length=0.11057692307692304, name='Inner3')
            Clade(branch_length=0.038461538461538464, name='Inner2')
                Clade(branch_length=0.11538461538461536, name='Gamma')
                Clade(branch_length=0.11538461538461536, name='Beta')
            Clade(branch_length=0.15384615384615383, name='Alpha')

构建新泽西州树::

njtree = constructor.nj(dm)
print(njtree)

输出::

Tree(rooted=False)
    Clade(branch_length=0, name='Inner3')
        Clade(branch_length=0.18269230769230765, name='Alpha')
        Clade(branch_length=0.04807692307692307, name='Beta')
        Clade(branch_length=0.04807692307692307, name='Inner2')
            Clade(branch_length=0.27884615384615385, name='Inner1')
                Clade(branch_length=0.051282051282051266, name='Epsilon')
                Clade(branch_length=0.10256410256410259, name='Delta')
            Clade(branch_length=0.14423076923076922, name='Gamma')
methods = ['nj', 'upgma']
__init__(distance_calculator=None, method='nj')

初始化类。

build_tree(msa)

构造并返回树、邻居加入或UPGMA。

upgma(distance_matrix)

构造并返回UPGMA树。

构造并返回算术平均值(UPGMA)树的未加权对组方法。

参数:
distance_matrixDistanceMatrix

用于建树的距离矩阵。

nj(distance_matrix)

构造并返回邻居加入树。

参数:
distance_matrixDistanceMatrix

用于建树的距离矩阵。

class Bio.Phylo.TreeConstruction.Scorer

基类:object

所有树评分方法的基类。

get_score(tree, alignment)

调用方获取给定对齐的树的分数。

这应该在子类中实现。

class Bio.Phylo.TreeConstruction.TreeSearcher

基类:object

所有树搜索方法的基类。

search(starting_tree, alignment)

调用者搜索具有起始树的最佳树。

这应该在子类中实现。

class Bio.Phylo.TreeConstruction.NNITreeSearcher(scorer)

基类:TreeSearcher

使用最近邻交换(NNI)算法进行树搜索。

参数:
记分员ParsimonyScorer

在NNI算法中使用简约记分器计算不同树木的简约得分。

__init__(scorer)

初始化类。

search(starting_tree, alignment)

实现TreeSearcher.search方法。

参数:
starting_tree

NNI方法的起始树。

对齐方式MultipleSeqAlignment

多序列比对用于计算不同NNI树的简约得分。

class Bio.Phylo.TreeConstruction.ParsimonyScorer(matrix=None)

基类:Scorer

简约记分器,带有计分矩阵。

这是Fitch算法和Sankoff算法的结合。有关用法,请参见ParsimonyTreeConstructor。

参数:
矩阵_Matrix

简约评分计算中使用的评分矩阵。

__init__(matrix=None)

初始化类。

get_score(tree, alignment)

使用惠誉算法计算简约分数。

在给定树和MSA的情况下,使用惠誉算法(不带惩罚矩阵)或Sankoff算法(带矩阵)计算并返回简约分数。

class Bio.Phylo.TreeConstruction.ParsimonyTreeConstructor(searcher, starting_tree=None)

基类:TreeConstructor

简约树构造函数。

参数:
搜索者TreeSearcher

树搜索器搜索最好的简约树。

starting_tree

提供给搜索者的起始树。

示例

我们将加载路线,然后加载已从其计算出的各种树:

from Bio import AlignIO, Phylo
aln = AlignIO.read(open('TreeConstruction/msa.phy'), 'phylip')
print(aln)

输出::

Alignment with 5 rows and 13 columns
AACGTGGCCACAT Alpha
AAGGTCGCCACAC Beta
CAGTTCGCCACAA Gamma
GAGATTTCCGCCT Delta
GAGATCTCCGCCC Epsilon

加载起始树::

starting_tree = Phylo.read('TreeConstruction/nj.tre', 'newick')
print(starting_tree)

输出::

Tree(rooted=False, weight=1.0)
    Clade(branch_length=0.0, name='Inner3')
        Clade(branch_length=0.01421, name='Inner2')
            Clade(branch_length=0.23927, name='Inner1')
                Clade(branch_length=0.08531, name='Epsilon')
                Clade(branch_length=0.13691, name='Delta')
            Clade(branch_length=0.2923, name='Alpha')
        Clade(branch_length=0.07477, name='Beta')
        Clade(branch_length=0.17523, name='Gamma')

从起始树构建简约树::

scorer = Phylo.TreeConstruction.ParsimonyScorer()
searcher = Phylo.TreeConstruction.NNITreeSearcher(scorer)
constructor = Phylo.TreeConstruction.ParsimonyTreeConstructor(searcher, starting_tree)
pars_tree = constructor.build_tree(aln)
print(pars_tree)

输出::

Tree(rooted=True, weight=1.0)
    Clade(branch_length=0.0)
        Clade(branch_length=0.19732999999999998, name='Inner1')
            Clade(branch_length=0.13691, name='Delta')
            Clade(branch_length=0.08531, name='Epsilon')
        Clade(branch_length=0.04194000000000003, name='Inner2')
            Clade(branch_length=0.01421, name='Inner3')
                Clade(branch_length=0.17523, name='Gamma')
                Clade(branch_length=0.07477, name='Beta')
            Clade(branch_length=0.2923, name='Alpha')
__init__(searcher, starting_tree=None)

初始化类。

build_tree(alignment)

造一棵树。

参数:
对齐方式MultipleSeqAlignment

多序列比对计算简约树。