Bio.Phylo. Base Tree模块
Bio.Phylo对象的基类。
系统发生树的所有对象表示都应该从这些基本类派生出来,以便使用在它们上定义的常用方法。
- class Bio.Phylo.BaseTree.TreeElement
基类:
object
所有Bio.Phylo类的基本类。
- __repr__() str
显示此对象的构造函数及其原始参数。
- __str__() str
返回url(self)。
- __firstlineno__ = 233
- __static_attributes__ = ()
- class Bio.Phylo.BaseTree.TreeMixin
基类:
object
基于树和分支的类的方法。
这让
Tree
和Clade
支持相同的穿越和搜索操作,而不需要Clade从Tree继承,因此Clade不需要具有Tree的所有属性--只是root
(Clade实例)和is_terminal
.- find_any(*args, **kwargs)
返回通过Find_elements()找到的第一个元素,或无。
这对于检查树中是否存在任何匹配元素也很有用,并且可以在条件表达中使用。
- find_elements(target=None, terminal=None, order='preorder', **kwargs)
查找与给定属性匹配的所有树元素。
任意关键字参数指示子元素的属性名称和要匹配的值:string、integer或boolean。字符串作为正则表达式匹配进行计算;整数直接比较是否相等,布尔值在比较之前计算属性的真值(True或False)。要处理非零浮点数,使用布尔参数搜索,然后手动过滤结果。
如果没有给出关键字参数,则仅使用类类型进行匹配。
通过深度优先搜索,结果可以迭代所有匹配对象。(Not必须与源文件中元素出现的顺序相同!)
- 参数:
- 目标TreeElement实例、类型、dict或可调用
指定要搜索的特征。(The默认为TreeElement,匹配任何标准Bio.Phylo类型。)
- 终端bool
用于选择或反对终端节点的布尔值(又名叶节点)。True仅搜索终端节点,False排除终端节点,默认值“无”同时搜索终端和非终端节点,以及缺乏
is_terminal
法- 秩序“预购”、“后序”、“级别”}
树穿越顺序:'preorder'(默认)是深度优先搜索,'postorder'是DFS,子节点在父节点之前,'level'是广度优先搜索。
示例
>>> from Bio import Phylo >>> phx = Phylo.PhyloXMLIO.read('PhyloXML/phyloxml_examples.xml') >>> matches = phx.phylogenies[5].find_elements(code='OCTVU') >>> next(matches) Taxonomy(code='OCTVU', scientific_name='Octopus vulgaris')
- find_clades(target=None, terminal=None, order='preorder', **kwargs)
查找包含匹配元素的每个进化枝。
也就是说,像Find_elements()一样查找每个元素,但返回相应的分支对象。(This通常是您想要的。)
- 返回:
一个迭代所有匹配对象的可迭代对象,默认情况下搜索深度优先(预排序)。
- get_path(target=None, **kwargs)
列出直接位于此根和给定目标之间的分支。
- 返回:
沿着此路径的所有分支对象的列表,以给定目标结束,但不包括根分支。
- get_nonterminals(order='preorder')
获取此树的所有非终结(内部)节点的列表。
- get_terminals(order='preorder')
获取此树所有终端(叶)节点的列表。
- trace(start, finish)
此树中两个目标之间的所有进化枝对象的列表。
不包括
start
,包括finish
.
- common_ancestor(targets, *more_targets)
所有给定目标的最近共同祖先(进化枝)。
- 边缘案例:
如果没有指定目标,则返回self.root
如果给出1个目标,则返回目标
如果在此树中未找到任何目标,则引发ValueError
- count_terminals()
计算此树中的终端(叶)节点的数量。
- depths(unit_branch_lengths=False)
创建树木分支到深度的映射(按树枝长度)。
- 参数:
- unit_branch_lengthsbool
如果为True,则仅计算分支的数量(树中的级别)。默认情况下,距离是通向进化枝的累积分支长度。
- 返回:
{进化枝:depth},其中键是树中的所有Clade实例,值是从根到每个Clade(包括终端)的距离。
- distance(target1, target2=None)
计算两个目标之间的分支长度之和。
如果仅指定了一个目标,则另一个目标就是此树的根。
- is_bifurcating()
如果节点下游的树严格分叉,则返回True。
即,所有节点都有2个或0个子节点(分别是内部或外部)。根可能有3个后代,并且仍然被认为是分叉树的一部分,因为它没有祖先。
- is_monophyletic(terminals, *more_terminals)
如果终端构成完整的亚进化分支,则对终端进行MRCA,或者为假。
即,存在一个分支,其终端与给定目标相同。
给定的目标必须是树的终端。
为了匹配两者
Bio.Nexus.Trees
以及Bio.Phylo中的其他多目标方法,该方法的参数可以通过两种方式之一指定:(i)作为单个目标列表,或(ii)单独指定的目标,例如is_monophyletic(t1,t2,t3)--但不能两者兼而有之。为了方便起见,如果目标是单系性的,则此方法返回目标的共同祖先(MCRA)(而不是值True),否则返回False。
- 返回:
如果终末是单系的,则为共同祖先,否则为假。
- is_parent_of(target=None, **kwargs)
检查目标是否是此树的后代。
不需要是直系后裔。
要仅检查分支的直接后代,只需使用列表成员资格测试即可:
if subclade in clade: ...
- is_preterminal()
检查所有直系后代是否都是终端。
- total_branch_length()
计算此树中所有分支长度的总和。
- collapse(target=None, **kwargs)
从树中删除目标,将其子级重新链接到其父级。
- 返回:
父母进化枝。
- collapse_all(target=None, **kwargs)
折叠这棵树的所有后代,只留下终端。
总分支长度被保留,即到每个终端的距离保持相同。
例如,这将安全地折叠引导支持较差的节点:
>>> from Bio import Phylo >>> tree = Phylo.read('PhyloXML/apaf.xml', 'phyloxml') >>> print("Total branch length %0.2f" % tree.total_branch_length()) Total branch length 20.44 >>> tree.collapse_all(lambda c: c.confidence is not None and c.confidence < 70) >>> print("Total branch length %0.2f" % tree.total_branch_length()) Total branch length 21.37
此实现通过使用级别顺序穿越并提前测试所有分支属性(相对于目标规范)来避免奇怪的副作用。特别是,如果一个进化枝满足原始树中的目标规范,则它将被折叠。 例如,如果条件是:
>>> from Bio import Phylo >>> tree = Phylo.read('PhyloXML/apaf.xml', 'phyloxml') >>> print("Total branch length %0.2f" % tree.total_branch_length()) Total branch length 20.44 >>> tree.collapse_all(lambda c: c.branch_length < 0.1) >>> print("Total branch length %0.2f" % tree.total_branch_length()) Total branch length 21.13
折叠进化枝的父节点会将父节点的分支长度添加到子节点,因此在执行collapse_all期间,进化枝的分支长度可能会增加。在此实现中,分支根据其在原始树中的属性而不是树穿越到达分支时的属性折叠。(It更容易调试。)如果您想要其他行为(增量测试),修改此函数的源代码很简单。
- ladderize(reverse=False)
根据终端节点的数量对分支进行就地排序。
默认情况下,最深的分支位于最后。使用
reverse=True
从最深到最浅对分支进行排序。
- prune(target=None, **kwargs)
从树上嫁接出末端进化枝。
如果该分类群来自分叉,则连接节点将折叠,并将其分支长度添加到剩余的末端节点上。这可能不再是一个有意义的价值。
- 返回:
修剪目标的亲枝
- split(n=2, branch_length=1.0)
生成n个(默认2)个新后代。
在物种树中,这是一个物种形成事件。
新分支具有给定的branch_size和与该分支的根相同的名称加上一个integer后缀(从0开始计数)。例如,分裂名为“A”的进化枝会产生名为“A0”和“A1”的子进化枝。如果分支没有名称,则将前置“n”用于子节点,例如“n0”和“n1”。
- __firstlineno__ = 258
- __static_attributes__ = ('root',)
- class Bio.Phylo.BaseTree.Tree(root=None, rooted=True, id=None, name=None)
基类:
TreeElement
,TreeMixin
系统发生树,包含系统发生的全球信息。
结构和特定于节点的数据可以通过附加到Tree实例的“根”分支访问。
- 参数:
- 根进化枝
树的开始节点。如果树是根节点,那么这通常是根节点。
- 植根bool
树是否扎根。默认情况下,假设树是根的。
- IDstr
树的标识符(如果有的话)。
- 名称str
树的名字,本质上是一个标签。
- __init__(root=None, rooted=True, id=None, name=None)
初始化系统发生树的参数。
- classmethod from_clade(clade, **kwargs)
在给定进化枝的情况下创建一个新的Tree对象。
关键词争论很常见
Tree
构造函数参数。
- classmethod randomized(taxa, branch_length=1.0, branch_stdev=None)
在给出分类群列表的情况下创建随机分叉树。
- 参数:
taxa -- 指定要创建的分类单元数量的一个整数(自动命名为taxon#),或者是分类单元名称的可迭代对象,作为字符串。
- 返回:
与此类类型相同的树。
- property clade
返回此树中的第一个进化枝(而不是其本身)。
- as_phyloxml(**kwargs)
将此树转换为与PhylloML兼容的系统发育。
这使您可以使用PhyloML定义的其他注释类型,并在将此树编写为“phylloxml”时保存此信息。
- root_with_outgroup(outgroup_targets, *more_targets, outgroup_branch_length=None)
使用包含outgroup_targets的outgroup进化枝重新执行此树。
就地操作。
- 边缘案例:
如果
outgroup == self.root
,没有变化如果外组是终端,则创建新的分支根节点,该分支具有到外组的长度为0的分支
如果outgroup是内部的,则使用给定的outgroup节点作为新的三叉根,保持分支相同
如果原始的根分叉,请将其从树上掉下来,保留总树枝长度
- 参数:
outgroup_branch_length -- 重新生根后通向外群的分支长度。如果未指定(无),那么:-如果外群是内部节点(而不是单个末端分类单元), 然后使用该节点作为新根。- 否则,创建一个新的根节点作为外组的父节点。
- root_at_midpoint()
在两个最远分类群的中点处扎根。
这在原地运作,留下了分叉的根。否则树的布局会被保留,尽管不保证进化枝/节点/分类单元排序的稳定性。
- is_terminal()
检查此树的根是否是终端。
- __format__(format_spec)
将树序列化为指定文件格式的字符串。
该方法支持Python的
format
内置功能。- 参数:
format_spec -- 由以下支持的大小写字符串
Bio.Phylo.write
作为输出文件格式。
- format(fmt=None)
将树序列化为指定文件格式的字符串。
- 参数:
fmt -- 由以下支持的大小写字符串
Bio.Phylo.write
作为输出文件格式。
- __str__() str
返回整个树的字符串表示形式。
使用以下方式将每个子进化枝序列化
repr
创建对象结构的摘要。
- __annotations__ = {}
- __firstlineno__ = 719
- __static_attributes__ = ('id', 'name', 'root', 'rooted')
- class Bio.Phylo.BaseTree.Clade(branch_length=None, name=None, clades=None, confidence=None, color=None, width=None)
基类:
TreeElement
,TreeMixin
一个循环定义的子树。
- 参数:
- branch_lengthstr
通向该分支根节的分支长度。
- 名称str
进化枝的名称(标签)。
- 进化枝列表
子树直接扎根在这棵树的根部下方。
- 信心number
支持.
- 颜色BranchColor
分支和后代的显示颜色。
- 宽度number
分支和后代的显示宽度。
- __init__(branch_length=None, name=None, clades=None, confidence=None, color=None, width=None)
定义Clade树的参数。
- property root
允许TreeMixin方法正确遍历clades。
- is_terminal()
检查这是否是一个终端(叶)节点。
- __getitem__(index)
通过索引(整数或切片)获取进化枝。
- __iter__()
迭代这棵树的直接后代分支(子树)。
- __len__()
返回根下直接的分支数量。
- __bool__()
此类实例的布尔值(True)。
注意:如果此方法未定义,但
__len__
是,那么如果结果为真,则该对象被认为是真__len__()
是非零的。我们希望Clade实例始终被视为True。
- __str__() str
返回类实例的名称。
- property color
树枝颜色。
- __annotations__ = {}
- __firstlineno__ = 1012
- __static_attributes__ = ('_color', 'branch_length', 'clades', 'color', 'confidence', 'name', 'width')
- class Bio.Phylo.BaseTree.BranchColor(red, green, blue)
基类:
object
指示图形渲染时进化枝的颜色。
客户端代码(例如可视化程序)应将颜色解释为适用于整个进化枝,除非被子进化枝的颜色覆盖。
颜色值必须是0到255之间的整数。
- color_names = {'aqua': (0, 255, 255), 'b': (0, 0, 255), 'black': (0, 0, 0), 'blue': (0, 0, 255), 'brown': (165, 42, 42), 'c': (0, 255, 255), 'cyan': (0, 255, 255), 'fuchsia': (255, 0, 255), 'g': (0, 128, 0), 'gold': (255, 215, 0), 'gray': (128, 128, 128), 'green': (0, 128, 0), 'grey': (128, 128, 128), 'k': (0, 0, 0), 'lime': (0, 255, 0), 'm': (255, 0, 255), 'magenta': (255, 0, 255), 'maroon': (128, 0, 0), 'navy': (0, 0, 128), 'olive': (128, 128, 0), 'orange': (255, 165, 0), 'pink': (255, 192, 203), 'purple': (128, 0, 128), 'r': (255, 0, 0), 'red': (255, 0, 0), 'salmon': (250, 128, 114), 'silver': (192, 192, 192), 'tan': (210, 180, 140), 'teal': (0, 128, 128), 'w': (255, 255, 255), 'white': (255, 255, 255), 'y': (255, 255, 0), 'yellow': (255, 255, 0)}
- __init__(red, green, blue)
初始化树的BranchColor。
- classmethod from_hex(hexstr)
从十六进制字符串构造BranchColor对象。
字符串格式与HTML和CSS中使用的样式相同,例如RGB值为(255,128,0)的“#FF8000”。
- classmethod from_name(colorname)
通过颜色的名称构造BranchColor对象。
- to_hex()
返回此颜色的24位十六进制GB表示形式。
返回的字符串适合在HTML/CSS中使用,用作matplotlib中的颜色参数,也许还有其他情况。
示例
>>> bc = BranchColor(12, 200, 100) >>> bc.to_hex() '#0cc864'
- to_rgb()
返回表示此颜色的Ruby值(0到255)的多元组。
示例
>>> bc = BranchColor(255, 165, 0) >>> bc.to_rgb() (255, 165, 0)
- __repr__() str
表示此对象时保留标准的RB顺序。
- __firstlineno__ = 1116
- __static_attributes__ = ('blue', 'green', 'red')
- __str__() str
显示颜色的Ruby值。