Ручная настройка newick tree и использование ETE

У меня есть проблема, которая кажется мне слишком странной.

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

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

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

1 ответ

Решение

У вас есть формат =8 в функции Tree(). Согласно спецификации это означает, что каждый узел должен иметь имя.

Для работы с форматом 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, что требует только листьев иметь имена. Вы также можете удалить формат и просто работать с первым аргументом.

Другие вопросы по тегам