преобразование newick в graphml с использованием python - PullRequest
0 голосов
/ 13 ноября 2018

Я хотел бы преобразовать дерево из newick в формат, такой как graphml, который я могу открыть с помощью cytoscape.

Итак, у меня есть файл "small.newick", который содержит:

((raccoon:1,bear:6):0.8,((sea_lion:11.9, seal:12):7,((monkey:100,cat:47):20, weasel:18):2):3,dog:25);

До сих пор я так и делал (Python 3.6.5 | Anaconda):

from Bio import Phylo
import networkx
Tree = Phylo.read("small.newick", 'newick')
G = Phylo.to_networkx(Tree)
networkx.write_graphml(G, 'small.graphml')

image1

Существует проблема с Клэдом, которую я могу исправить с помощью этого кода:

from Bio import Phylo
import networkx

def clade_names_fix(tree):
    for idx, clade in enumerate(tree.find_clades()):
        if not clade.name:
            clade.name=str(idx)

Tree = Phylo.read("small.newick", 'newick')
clade_names_fix(Tree)
G = Phylo.to_networkx(Tree)
networkx.write_graphml(G, 'small.graphml')

Дайте мне что-то, что кажется достаточно милым:

image2

Мои вопросы:

  • Это хороший способ сделать это? Мне кажется странным, что функция не заботится о внутренних именах узлов

  • Если вы замените одно имя узла на достаточно длинную строку, оно будет обрезано командой Phylo.to_networkx (Tree) . Как этого избежать?

Пример: замена слова "собака" на "test_tring_that_create_some_problem_later_on"

image3

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

После некоторых исследований я действительно нашел решение, которое работает. Я решил предоставить здесь ссылку для вас , дорогой читатель: собирается на github

0 голосов
/ 15 ноября 2018

Похоже, вы уже достаточно далеко продвинулись в этом.Я могу только предложить несколько альтернатив / расширений вашего подхода ...

  1. К сожалению, я не смог найти приложение Cytoscape, которое может читать этот формат.Я пытался найти PHYLIP, NEWICK и PHYLO.Возможно, вам повезет больше:

  2. Существует старый плагин Cytoscape 2.x, который может читать этот формат, но длядля этого вам нужно установить Cytoscape 2.8.3, импортировать сеть, затем экспортировать как xGMML (или сохранить как CYS), а затем попытаться открыть в Cytoscape 3.7 для перехода обратно в страну живого кода.Опять же, если 2.8.3 делает то, что вам нужно для этого конкретного случая, то, возможно, вам не нужно мигрировать:

  3. Лучший подход - программный, который вы уже исследовали.Поиск пакета R или Python, который превращает NEWICK в iGraph или GraphML, является надежной стратегией.Обратите внимание, что обновленные и удобные библиотеки Cytoscape также доступны на этих языках, так что вы можете выполнять всю очистку меток, макет, визуализацию данных, анализ, экспорт и т. Д. В среде сценариев:

...