Exemple #1
0
def extract_tree_with_taxa(tree, taxa, suppress_unifurcations=True):
    taxon_to_leaf = {}
    for n in tree.preorder_node_iter():
        n.keep = False
        if n.is_leaf():
            taxon_to_leaf[n.taxon] = n
    for t in taxa:
        for n in taxon_to_leaf[t].ancestor_iter(inclusive=True):
            n.keep = True
    out = Tree()
    q_old = Queue()
    q_old.put(tree.seed_node)
    q_new = Queue()
    q_new.put(out.seed_node)
    while not q_old.empty():
        n_old = q_old.get()
        n_new = q_new.get()
        for c_old in n_old.child_node_iter():
            if c_old.keep:
                c_new = Node(taxon=c_old.taxon,
                             label=c_old.label,
                             edge_length=c_old.edge_length)
                n_new.add_child(c_new)
                q_old.put(c_old)
                q_new.put(c_new)
    if suppress_unifurcations:
        out.suppress_unifurcations()
    return out
Exemple #2
0
    results = line.strip().split(',')
    tree = Tree()
    root = Node()
    root.__dict__['label'] = results[0].replace("\"", "")
    nodes_dict[results[0].replace("\"", "")] = root

    prune = ['1']

    #Add root node to tree
    tree.__dict__['_seed_node'].add_child(root)
    for line in lines:
        results = line.strip().split(',')
        node = Node()
        node.__dict__['label'] = results[0].replace("\"", "")
        node.taxon = Taxon(results[0].replace("\"", ""))
        nodes_dict[results[0].replace("\"", "")] = node
        nodes_dict[results[1].replace("\"", "")].add_child(node)
        if results[0].replace("\"", "") not in species:
            prune.append(results[0].replace("\"", ""))

    for taxa in prune:
        nodes_dict[taxa].label = ''
    # tree.delete_outdegree_one_nodes()
    tree.suppress_unifurcations()

    output = open(taxonomyTree, 'w')
    output.write(str(tree) + ";")

    output.close()
    lines.close()