To collapse nodes in a treeΒΆ

To collapse nodes, don’t do it this way:

for n in t.iterInternalsNoRoot():
    t.collapseNode(n)

because it modifies the tree as it iterates, and so it does not work. Do it this way instead:

# First make a list of nodes that you want to collapse
toCollapse = [n for n in t.iterInternalsNoRoot()]

# Then collapse them
for n in toCollapse:
    t.collapseNode(n)

Or perhaps more realistically:

toCollapse = [n for n in t.iterInternalsNoRoot() if n.br.support < 0.7]
for n in toCollapse:
    t.collapseNode(n)