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

基于树和分支的类的方法。

这让 TreeClade 支持相同的穿越和搜索操作,而不需要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值。