5
Jak mogę zapisać dendrogram wygenerowany przez scipy w Newick format?Zapisz dendrogram w formacie Newick
Jak mogę zapisać dendrogram wygenerowany przez scipy w Newick format?Zapisz dendrogram w formacie Newick
Potrzebujesz macierzy powiązań Z, która jest wejściem do funkcji scipy dendrogram, i przekonwertuj ją do formatu Newick. Dodatkowo potrzebna jest lista "leaf_names" z nazwami liści. Oto funkcja, która wykona zadanie:
from scipy.cluster import hierarchy
def getNewick(node, newick, parentdist, leaf_names):
if node.is_leaf():
return "%s:%.2f%s" % (leaf_names[node.id], parentdist - node.dist, newick)
else:
if len(newick) > 0:
newick = "):%.2f%s" % (parentdist - node.dist, newick)
else:
newick = ");"
newick = getNewick(node.get_left(), newick, node.dist, leaf_names)
newick = getNewick(node.get_right(), ",%s" % (newick), node.dist, leaf_names)
newick = "(%s" % (newick)
return newick
tree = hierarchy.to_tree(Z,False)
getNewick(tree, "", tree.dist, leaf_names)