skbio.tree.TreeNode.to_array

TreeNode.to_array(attrs=None, nan_length_value=None)[源代码]

返回self的数组表示

状态:从0.4.0开始实验。

参数:
  • attrs (list of tuple or None) -- 要返回的属性和类型。期望的形式是 [(attribute_name, type)] .如果 None 然后 namelengthid 返回。

  • nan_length_value (float, optional) -- 如果提供,替换任何 nan 在分支长度向量中(即。, result['length'] )用这个值。 nan 分支长度可能来自没有长度的边(对于根节点父边是常见的),这会导致求和出现问题。

返回:

{id_索引:{id:TreeNode},子项索引:((node_id,left_child_id,right_child_id)),属性1:array(…)。。。属性:数组(…)}

返回类型:

dict of array

备注

属性数组按索引顺序排列,以便特雷诺德.id可以用作对数组的查找。

示例

>>> from pprint import pprint
>>> from skbio import TreeNode
>>> t = TreeNode.read(['(((a:1,b:2,c:3)x:4,(d:5)y:6)z:7);'])
>>> res = t.to_array()
>>> sorted(res.keys())
['child_index', 'id', 'id_index', 'length', 'name']
>>> res['child_index']
array([[4, 0, 2],
       [5, 3, 3],
       [6, 4, 5],
       [7, 6, 6]])
>>> for k, v in res['id_index'].items():
...     print(k, v)
...
0 a:1.0;

1 b:2.0;

2 c:3.0;

3 d:5.0;

4 (a:1.0,b:2.0,c:3.0)x:4.0;

5 (d:5.0)y:6.0;

6 ((a:1.0,b:2.0,c:3.0)x:4.0,(d:5.0)y:6.0)z:7.0;

7 (((a:1.0,b:2.0,c:3.0)x:4.0,(d:5.0)y:6.0)z:7.0);

>>> res['id']
array([0, 1, 2, 3, 4, 5, 6, 7])
>>> res['name']
array(['a', 'b', 'c', 'd', 'x', 'y', 'z', None], dtype=object)