コード例 #1
0
def convert_terminal_node_names(tree_newick_name,
                                dictionnary,
                                tree_format='phyloxml',
                                write_corresp_table=True):
    #from Bio import Phylo
    from ete3 import Tree

    if write_corresp_table:
        f = open('corresp_table.tab', 'w')

    print('format', tree_format)
    print('tree', tree_newick_name)
    try:
        tree = Tree(tree_newick_name, tree_format)
        leaf_names = {}
        for leaf in tree:
            #n+=1
            #print species.name
            #print dictionnary[str(species.name)]

            #accession = manipulate_biosqldb.taxon_id2accessions(server, str(species.name), "saureus_01_15")[0]
            try:
                print("%s --> %s" % (leaf.name, dictionnary[str(leaf.name)]))
                if write_corresp_table:
                    f.write("%s\t%s\n" %
                            (leaf.name, dictionnary[str(leaf.name)]))
                if dictionnary[str(leaf.name)] not in leaf_names:
                    leaf_names[dictionnary[str(leaf.name)]] = 1
                    leaf.name = dictionnary[str(
                        leaf.name)]  #+ ' (%s)' % my_accession2st[accession]
                else:
                    leaf_names[dictionnary[str(leaf.name)]] += 1
                    leaf.name = dictionnary[str(
                        leaf.name
                    )] + '%s' % leaf_names[dictionnary[str(
                        leaf.name)]]  #+ ' (%s)' % my_accession2st[accession]
            except:
                print("%s --> ?" % (leaf.name))
                if write_corresp_table:
                    f.write("%s\t?\n" % (leaf.name))
                pass
    except:
        from Bio import Phylo
        tree = Phylo.read(tree_newick_name, tree_format)

        leaves = tree.get_terminals()

        leaf_names = {}
        print(dictionnary)
        for leaf in leaves:

            try:
                print("%s --> %s" % (leaf.name, dictionnary[str(leaf.name)]))
                if write_corresp_table:
                    f.write("%s\t%s\n" %
                            (leaf.name, dictionnary[str(leaf.name)]))
                print("%s --> %s" % (leaf.name, dictionnary[str(leaf.name)]))
                if dictionnary[str(leaf.name)] not in leaf_names:
                    leaf_names[dictionnary[str(leaf.name)]] = 1
                    leaf.name = dictionnary[str(
                        leaf.name)]  #+ ' (%s)' % my_accession2st[accession]
                else:
                    leaf_names[dictionnary[str(leaf.name)]] += 1
                    leaf.name = dictionnary[str(
                        leaf.name
                    )] + '%s' % leaf_names[dictionnary[str(
                        leaf.name)]]  #+ ' (%s)' % my_accession2st[accession]
            except:
                print("%s --> ?" % (leaf.name))
                if write_corresp_table:
                    f.write("%s\t?\n" % (leaf.name))
                print("%s --> ?" % (leaf.name))
                pass
            #species.name = dictionnary[str(species.name)] + ' (%s)' % 8
    return tree