Преобразование ndarray, сгенерированного hcluster, в строку Newick для использования с пакетом ete2

У меня есть список векторов, созданных при запуске:

import hcluster import numpy as np from ete2 import Tree vecs = [np.array(i) for i in document_list] 

где document_list – это набор веб-документов, которые я анализирую. Затем я выполняю иерархическую кластеризацию:

 Z = hcluster.linkage(vecs, metric='cosine') 

Это генерирует ndarray, например:

 [[ 12. 19. 0. 1. ] [ 15. 21. 0. 3. ] [ 18. 22. 0. 4. ] [ 3. 16. 0. 7. ] [ 8. 23. 0. 6. ] [ 5. 27. 0. 6. ] [ 1. 28. 0. 7. ] [ 0. 21. 0. 2. ] [ 5. 29. 0.18350472 2. ] [ 2. 10. 0.18350472 3. ] [ 47. 30. 0.29289577 9. ] [ 13. 28. 0.29289577 13. ] [ 73. 32. 0.29289577 18. ] [ 26. 12. 0.42264521 5. ] [ 5. 33. 0.42264521 12. ] [ 14. 35. 0.42264521 12. ] [ 19. 35. 0.42264521 18. ] [ 4. 20. 0.31174826 3. ] [ 34. 21. 0.5 19. ] [ 38. 29. 0.31174826 21. ]] 

Можно ли преобразовать этот ndarray в новую строку, которая может быть передана конструктору ete2 Tree (), чтобы я мог рисовать и манипулировать новым деревом с помощью инструментов, предоставляемых ete2?

Имеет ли смысл попробовать и сделать это, и если нет другого способа, которым я могу сгенерировать дерево / дендрограмму с использованием тех же данных и ete2 (я понимаю, что есть другие пакеты, которые могут рисовать дендрограммы, такие как дендропия и сам hcluster, но предпочли бы использовать ete2 все равно)?

Благодаря!

  • subprocess.call с использованием строки vs с использованием списка
  • Ошибка диалогового окна файла wxPython: отсутствует строка «|» в строке подстановочного знака!
  • Как получить значения параметров запроса get в колбе?
  • Сравнение контрольных сумм TCP с Scapy?
  • Завершение вкладки в raw_input () Python
  • Как / где использовать os.path.sep?
  • Питон «Каждый другой элемент» Идиома
  • Как все () в python работает в пустых списках
  • 2 Solutions collect form web for “Преобразование ndarray, сгенерированного hcluster, в строку Newick для использования с пакетом ete2”

    Я использую следующий подход почти для одного и того же:

     from hcluster import linkage, to_tree from ete2 import Tree #hcluster part Y = dist_matrix(items, dist_fn) Z = linkage(Y, "single") T = to_tree(Z) #ete2 section root = Tree() root.dist = 0 root.name = "root" item2node = {T: root} to_visit = [T] while to_visit: node = to_visit.pop() cl_dist = node.dist /2.0 for ch_node in [node.left, node.right]: if ch_node: ch = Tree() ch.dist = cl_dist ch.name = str(ch_node.id) item2node[node].add_child(ch) item2node[ch_node] = ch to_visit.append(ch_node) # This is your ETE tree structure tree = root 

    Обновить:

     from hcluster import linkage, to_tree from ete2 import Tree #hcluster part Y = dist_matrix(items, dist_fn) Z = linkage(Y, "single") R,T = to_tree( mat, rd=True ) #print "ROOT", R, "TREE", T root = Tree() root.dist = 0 root.name = 'root' item2node = {R.get_id(): root} to_visit = T while to_visit: node = to_visit.pop() #print "NODE", node cl_dist = node.dist / 2.0 for ch_node in [node.get_left(), node.get_right()]: if ch_node: ch_node_id = ch_node.get_id() ch_node_name = str(ch_node_id) ch = Tree() ch.dist = cl_dist ch.name = ch_node_name if nodeNames: if ch_node_id < len(nodeNames): ch.name = nodeNames[ ch_node_id ] item2node[ch_node_id] = ch item2node[ch_node_id].add_child(ch) to_visit.append(ch_node) 
    Interesting Posts

    pkg_resources.DistributionNotFound: Django == 1.3.1 при создании нового проекта в Django

    Как я могу построить только дни недели, используя подсвечник matplotlib Python?

    Django формирует множественный выбор

    opencv 3.0 python imshow error

    Как найти все элементы в двумерном массиве numpy, который соответствует определенному списку?

    Скомпилировать интерпретатор Python статически?

    Как можно развертывать проекты Django с минимальной работой по установке?

    Новичок: как преодолеть Javascript кнопку «onclick», чтобы очистить веб-страницу?

    «Локальная переменная, на которую ссылаются до назначения» – только функции?

    Pip / easy_install игнорирует ARCHFLAGS в установке SciPy?

    Как вы принудительно обновляете wx.Panel?

    Почему этот назначенный объект имеет то же пространство памяти, что и исходный объект?

    Python: передача имени класса в качестве параметра функции?

    эквивалент python фильтра (), получающий два выходных списка (т.е. раздел списка)

    Невозможно выделить 1,6 ГБ в Python

    Python - лучший язык программирования в мире.