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')
-
基于距离的树构造器。
- 参数:
- 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)
-
简约树构造器。
- 参数:
- 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多序列比对
用于计算简约树的多序列比对。