3

我有一个对我来说似乎太奇怪的问题。

我有这棵新树:

(((637,5250,607,14782)6942,641)6441)0;

当我尝试使用 ETE 阅读它时:

t=Tree("(((637,5250,607,14782)6942,641)6441)0;", format=8)

一切正常,但现在我想让它分叉,所以新树应该是这样的:

(((((637,5250),607),14782)6942,641)6441)0;

现在我尝试使用与上面相同的语法来阅读它:

t=Tree("(((((637,5250),607),14782)6942,641)6441)0;", format=8)

我收到了这个错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/ete2-2.1rev539-py2.7.egg/ete2/coretype/tree.py", line 200, in __init__
    read_newick(newick, root_node = self, format=format)
  File "/usr/lib/python2.7/site-packages/ete2-2.1rev539-py2.7.egg/ete2/parser/newick.py", line 218, in read_newick
    return _read_newick_from_string(nw, root_node, format)
  File "/usr/lib/python2.7/site-packages/ete2-2.1rev539-py2.7.egg/ete2/parser/newick.py", line 280, in _read_newick_from_string
    _read_node_data(closing_internal, current_parent, "internal", format)
  File "/usr/lib/python2.7/site-packages/ete2-2.1rev539-py2.7.egg/ete2/parser/newick.py", line 351, in _read_node_data
    raise NewickError, "Unexpected leaf node format:\n\t"+ subnw[0:50]
ete2.parser.newick.NewickError: Unexpected leaf node format:

这让我真的发疯了,有人可以帮忙吗?

4

1 回答 1

3

您在 Tree() 函数中有 format=8 。根据规范,这意味着每个节点都需要有一个名称。

要使用格式 8,您需要为节点命名,如下所示:

t=Tree("(((((637,5250)a,607)b,14782)6942,641)6441)0;", format=9)

或者

t=Tree("(((((637,5250)0,607)0,14782)6942,641)6441)0;", format=9)

您还可以更改为格式 9:

t=Tree("(((((637,5250),607),14782)6942,641)6441)0;", format=9)

这会将格式更改为 9,它只要求叶子有名称。您还可以删除格式并仅使用第一个参数。

于 2013-08-14T13:28:32.570 回答