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')¶
-
基于距离的树构造函数。
- 参数:
- 方法应力
距离树构造方法,‘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)¶
-
简约树构造函数。
- 参数:
- 搜索者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
多序列比对计算简约树。