2013-08-14 4 views
3

У меня проблема, которая кажется слишком странной для меня.ручная настройка нового дерева и использование ETE

У меня есть этот Newick дерево:

(((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: 

и это сводит меня с ума действительно, кто может помочь с этим?

+0

Я не уверен, но я думаю, что у вас есть запятые после), и вы не должны. Подобно ((637,5250), 607) должно быть ((637,5250) 607). – petermlm

+0

@petermlm, если вы сделаете это, тогда '607' будет родительским узлом' 637' и '5250', и я не хочу этого. – ifreak

ответ

3

У вас есть формат = 8 в функции Tree(). Согласно 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, что требует, чтобы листья имели имена. Вы также можете удалить формат и просто работать с первым аргументом.

+1

спасибо :) Это была глупая ошибка с моей стороны. – ifreak

Смежные вопросы