У меня есть список векторов, созданных путем запуска:Конвертирование 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 в Newick строку, которая может быть передана в ete2 Tree() конструктор так что я могу рисовать и манипулировать новым деревом с помощью инструментов, предоставляемых ete2?
Есть ли смысл попробовать и сделать это, и если нет другого способа, которым я могу генерировать дерево/дендрограмму с использованием тех же данных и ete2 (я понимаю, что есть другие пакеты, которые могут рисовать дендрограммы, такие как дендропия и hcluster сам, но предпочли бы использовать ete2 все равно)?
Спасибо!
Упс, обратите внимание, что dist_matrix моя собственная функция для создания массива расстояния. Замените его на собственные значения (то есть vecs) – jhc