我有一个对我来说太奇怪的问题。
我有一棵新的树:
(((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:
这真的让我发疯了,有人能帮忙吗?
最佳答案
函数Tree()中的format=8。根据the specification这意味着每个节点都需要有一个名称。
要使用格式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,这只要求叶具有名称。您还可以删除格式并只处理第一个参数。
关于python - 手动调整新树和眼睛的用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18230363/