Bio.Phylo.TreeConstruction 模块

用于构建树的类和方法。

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

参数:
handle:文件或类文件对象

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

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

基类: object

根据 DNA 或蛋白质序列比对计算距离矩阵。

此类根据 DNA 或蛋白质序列的多序列比对以及给定的替换模型名称计算距离矩阵。

目前仅使用评分矩阵。

参数:
model:字符串

用于计算距离的模型矩阵的名称。属性 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.000000
  Beta    0.230769    0.000000
  Gamma   0.384615    0.230769    0.000000
  Delta   0.538462    0.538462    0.538462    0.000000
  Epsilon 0.615385    0.384615    0.461538    0.153846    0.000000
      Alpha   Beta    Gamma   Delta   Epsilon

使用“blosum62”模型的蛋白质计算器

>>> calculator = DistanceCalculator('blosum62')
>>> dm = calculator.get_distance(aln)
>>> print(dm)  
Alpha   0.000000
Beta    0.369048    0.000000
Gamma   0.493976    0.250000    0.000000
Delta   0.585366    0.547619    0.566265    0.000000
Epsilon 0.700000    0.355556    0.488889    0.222222    0.000000
    Alpha   Beta    Gamma   Delta   Epsilon

相同的计算,使用新的 Alignment 对象

>>> from Bio.Phylo.TreeConstruction import DistanceCalculator
>>> from Bio import Align
>>> aln = Align.read('TreeConstruction/msa.phy', 'phylip')
>>> print(aln)  
Alpha             0 AACGTGGCCACAT 13
Beta              0 AAGGTCGCCACAC 13
Gamma             0 CAGTTCGCCACAA 13
Delta             0 GAGATTTCCGCCT 13
Epsilon           0 GAGATCTCCGCCC 13

使用“identity”模型的 DNA 计算器

>>> calculator = DistanceCalculator('identity')
>>> dm = calculator.get_distance(aln)
>>> print(dm)  
Alpha   0.000000
Beta    0.230769    0.000000
Gamma   0.384615    0.230769    0.000000
Delta   0.538462    0.538462    0.538462    0.000000
Epsilon 0.615385    0.384615    0.461538    0.153846    0.000000
    Alpha   Beta    Gamma   Delta   Epsilon

使用“blosum62”模型的蛋白质计算器

>>> calculator = DistanceCalculator('blosum62')
>>> dm = calculator.get_distance(aln)
>>> print(dm)  
Alpha   0.000000
Beta    0.369048    0.000000
Gamma   0.493976    0.250000    0.000000
Delta   0.585366    0.547619    0.566265    0.000000
Epsilon 0.700000    0.355556    0.488889    0.222222    0.000000
    Alpha   Beta    Gamma   Delta   Epsilon
dna_models = ['benner22', 'benner6', 'benner74', 'blastn', 'dayhoff', 'feng', 'genetic', 'gonnet1992', 'hoxd70', 'johnson', 'jones', 'levin', 'mclachlan', 'mdm78', 'megablast', 'blastn', 'rao', 'risler', 'schneider', 'str', 'trans']
protein_models = ['blastp', 'blosum45', 'blosum50', 'blosum62', 'blosum80', 'blosum90', 'pam250', 'pam30', 'pam70']
models = ['identity', 'benner22', 'benner6', 'benner74', 'blastn', 'dayhoff', 'feng', 'genetic', 'gonnet1992', 'hoxd70', 'johnson', 'jones', 'levin', 'mclachlan', 'mdm78', 'megablast', 'blastn', 'rao', 'risler', 'schneider', 'str', 'trans', 'blastp', 'blosum45', 'blosum50', 'blosum62', 'blosum80', 'blosum90', 'pam250', 'pam30', 'pam70']
__init__(model='identity', skip_letters=None)

使用距离模型初始化。

get_distance(msa)

返回一个针对比对或多序列比对对象的距离矩阵 (DistanceMatrix)。

参数:
msa比对 (Alignment) 或多序列比对 (MultipleSeqAlignment) 对象,表示

DNA 或蛋白质多序列比对。

class Bio.Phylo.TreeConstruction.TreeConstructor

基类: object

所有树构造器的基类。

build_tree(msa)

从比对 (Alignment) 或多序列比对 (MultipleSeqAlignment) 对象构建树的调用器。

这应该在子类中实现。

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

基类:TreeConstructor

基于距离的树构造器。

参数:
methodstr

距离树构建方法,'nj'(默认)或 'upgma'。

distance_calculatorDistanceCalculator

用于多序列比对的距离矩阵计算器。如果要调用 build_tree,则必须提供该计算器。

示例

加载一个小的 PHYLIP 比对文件以计算距离,然后构建一个 UPGMA 树

>>> 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')

构建一个 NJ 树

>>> 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')

相同的例子,使用新的比对类 (Alignment)

>>> from Bio.Phylo.TreeConstruction import DistanceTreeConstructor
>>> from Bio.Phylo.TreeConstruction import DistanceCalculator
>>> from Bio import Align
>>> aln = Align.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')

构建一个 NJ 树

>>> 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)

构建并返回一个树,邻接法 (Neighbor Joining) 或 UPGMA。

upgma(distance_matrix)

构建并返回一个 UPGMA 树。

构建并返回一个使用算术平均值的非加权配对组方法 (UPGMA) 树。

参数:
distance_matrixDistanceMatrix

用于构建树的距离矩阵。

nj(distance_matrix)

构建并返回一个邻接法 (Neighbor Joining) 树。

参数:
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) 算法进行树搜索。

参数:
scorerParsimonyScorer

简约性评分器,用于在 NNI 算法期间计算不同树的简约性评分。

__init__(scorer)

初始化该类。

search(starting_tree, alignment)

实现 TreeSearcher.search 方法。

参数:
starting_treeTree

NNI 方法的起始树。

alignment比对 (Alignment) 或多序列比对 (MultipleSeqAlignment) 对象

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

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

基类:Scorer

带有评分矩阵的简约性评分器。

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

参数:
matrix_Matrix

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

__init__(matrix=None)

初始化该类。

get_score(tree, alignment)

使用 Fitch 算法计算简约性得分。

使用 Fitch 算法(无罚分矩阵)或 Sankoff 算法(有矩阵)计算并返回给定树和多序列比对的简约性得分。

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

基类:TreeConstructor

简约树构造器。

参数:
searcher树搜索器

用于搜索最佳简约树的树搜索器。

starting_treeTree

提供给搜索器的起始树。

示例

我们将加载一个比对,然后加载已经从中计算出的各种树。

>>> 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')

相同的例子,使用新的比对类 (Alignment)

>>> from Bio import Align, Phylo
>>> alignment = Align.read(open('TreeConstruction/msa.phy'), 'phylip')
>>> print(alignment)
Alpha             0 AACGTGGCCACAT 13
Beta              0 AAGGTCGCCACAC 13
Gamma             0 CAGTTCGCCACAA 13
Delta             0 GAGATTTCCGCCT 13
Epsilon           0 GAGATCTCCGCCC 13

加载起始树。

>>> 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(alignment)
>>> 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)

构建树。

参数:
alignment多序列比对

用于计算简约树的多序列比对。