we are trying to convert a Phylogenetic tree to networkx previously calculated with
from Bio.Phylo.TreeConstruction import DistanceMatrix
from Bio.Phylo.TreeConstruction import DistanceTreeConstructor
from Bio.Phylo import draw
lower_triangle = []
for i in range(0, len(distance_matrix)):
lower_triangle.append(list(distance_matrix[i][:i+1]))
lower_triangle
# Make a list of strings from '0' to '9'
labels = list(map(str, range(0, len(lower_triangle))))
distance_matrix = DistanceMatrix(names=labels, matrix=lower_triangle)
constructor = DistanceTreeConstructor()
upgma_tree = constructor.upgma(distance_matrix)
and convert with
from pyvis.network import Network
from Bio import Phylo
g=Network(height=500, width=500)
g.toggle_physics(True)
network_x_graph = Phylo.to_networkx(upgma_tree)
g.from_nx(network_x_graph)
It fails with
assert isinstance(n_id, str) or isinstance(n_id, int)
so it seems the nodes are of wrong type? How can I check / adjust it?
print(upgma_tree)
Tree(rooted=True)
Clade(branch_length=0, name='Inner9')
Clade(name='2')
Clade(name='Inner8')
Clade(name='7')
Clade(name='Inner7')
Clade(name='5')
Clade(name='Inner6')
Clade(name='6')
Clade(name='Inner5')
Clade(name='4')
Clade(name='Inner4')
Clade(name='Inner1')
Clade(name='9')
Clade(name='1')
Clade(name='Inner3')
Clade(name='3')
Clade(name='Inner2')
Clade(name='8')
Clade(name='0')