def get_dendropy_tree_from_break_tree(self, break_tree): nodes = self._extract_break_tree_leaves(break_tree) sorted_break_tree_leaves_sets, max_leaves_set_size = self._sort_break_tree_leaves_sets(break_tree) for leave_set_size in range(max_leaves_set_size): if leave_set_size not in sorted_break_tree_leaves_sets: continue for leave_set in sorted_break_tree_leaves_sets[leave_set_size]: one_step_parents = [] for leaf in leave_set: node = self._find_node_with_same_taxon(nodes, leaf) oldest_parent = self._get_oldest_parent(node) if oldest_parent not in one_step_parents: one_step_parents.append(oldest_parent) new_oldest_parent = Node() if len(one_step_parents) > 1: for parent in one_step_parents: parent.parent_node = new_oldest_parent oldest_parents = [] for node in nodes: oldest_parent = self._get_oldest_parent(node) if oldest_parent not in oldest_parents: oldest_parents.append(oldest_parent) if len(oldest_parents) > 1: seed = Node() for oldest_parent in oldest_parents: oldest_parent.parent_node = seed elif len(oldest_parents) == 1: seed = oldest_parents[0] else: seed = Node() tree = Tree(seed_node=seed) tree.deroot() return tree