def test_commonname_promotion(self): """correctly promote names if possible""" consensus_tree = TreeNode.read(StringIO(u"(((s1,s2)g1,(s3,s4)g2,(s5,s6)g3)f1)o1;")) rank_lookup = {'s': 6, 'g': 5, 'f': 4, 'o': 3, 'c': 2, 'p': 1, 'k': 0} for n in consensus_tree.traverse(include_self=True): n.Rank = rank_lookup[n.name[0]] data = StringIO(u"((((1)s1,(2)s2),((3)s3,(4)s5)))o1;") lookup = dict([(n.name, n) for n in consensus_tree.traverse(include_self=True)]) exp = "((((1)s1,(2)s2)g1,((3)'g2; s3',(4)'g3; s5')))'o1; f1';" t = TreeNode.read(data) t.Rank = 3 t.children[0].Rank = None t.children[0].children[0].Rank = None t.children[0].children[1].Rank = None t.children[0].children[0].children[0].Rank = 6 t.children[0].children[0].children[1].Rank = 6 t.children[0].children[1].children[0].Rank = 6 t.children[0].children[1].children[1].Rank = 6 backfill_names_gap(t, lookup) commonname_promotion(t) fp = StringIO() t.write(fp) self.assertEqual(fp.getvalue().strip(), exp)
def test_commonname_promotion(self): """correctly promote names if possible""" consensus_tree = DndParser("(((s1,s2)g1,(s3,s4)g2,(s5,s6)g3)f1)o1;") rank_lookup = {'s':6,'g':5,'f':4,'o':3,'c':2,'p':1,'k':0} for n in consensus_tree.traverse(include_self=True): n.Rank = rank_lookup[n.Name[0]] input = "((((1)s1,(2)s2),((3)s3,(4)s5)))o1;" lookup = dict([(n.Name, n) for n in consensus_tree.traverse(include_self=True)]) exp = "((((1)s1,(2)s2)g1,((3)'g2; s3',(4)'g3; s5')))'o1; f1';" t = DndParser(input) t.Rank = 3 t.Children[0].Rank = None t.Children[0].Children[0].Rank = None t.Children[0].Children[1].Rank = None t.Children[0].Children[0].Children[0].Rank = 6 t.Children[0].Children[0].Children[1].Rank = 6 t.Children[0].Children[1].Children[0].Rank = 6 t.Children[0].Children[1].Children[1].Rank = 6 backfill_names_gap(t, lookup) commonname_promotion(t) self.assertEqual(t.getNewick(with_distances=False), exp)
def test_commonname_promotion(self): """correctly promote names if possible""" consensus_tree = TreeNode.read(StringIO(u"(((s1,s2)g1,(s3,s4)g2,(s5,s6)g3)f1)o1;")) rank_lookup = {'s': 6, 'g': 5, 'f': 4, 'o': 3, 'c': 2, 'p': 1, 'k': 0} for n in consensus_tree.traverse(include_self=True): n.Rank = rank_lookup[n.name[0]] data = StringIO(u"((((1)s1,(2)s2),((3)s3,(4)s5)))o1;") lookup = dict([(n.name, n) for n in consensus_tree.traverse(include_self=True)]) exp = "((((1)s1,(2)s2)g1,((3)'g2; s3',(4)'g3; s5')))'o1; f1';" t = TreeNode.read(data) t.Rank = 3 t.children[0].Rank = None t.children[0].children[0].Rank = None t.children[0].children[1].Rank = None t.children[0].children[0].children[0].Rank = 6 t.children[0].children[0].children[1].Rank = 6 t.children[0].children[1].children[0].Rank = 6 t.children[0].children[1].children[1].Rank = 6 backfill_names_gap(t, lookup) commonname_promotion(t) self.assertEqual(str(t).rstrip(), exp)
def test_commonname_promotion(self): """correctly promote names if possible""" consensus_tree = TreeNode.from_newick( "(((s1,s2)g1,(s3,s4)g2,(s5,s6)g3)f1)o1;") rank_lookup = {'s': 6, 'g': 5, 'f': 4, 'o': 3, 'c': 2, 'p': 1, 'k': 0} for n in consensus_tree.traverse(include_self=True): n.Rank = rank_lookup[n.name[0]] input = "((((1)s1,(2)s2),((3)s3,(4)s5)))o1;" lookup = dict([(n.name, n) for n in consensus_tree.traverse(include_self=True)]) exp = "((((1)s1,(2)s2)g1,((3)'g2; s3',(4)'g3; s5')))'o1; f1';" t = TreeNode.from_newick(input) t.Rank = 3 t.children[0].Rank = None t.children[0].children[0].Rank = None t.children[0].children[1].Rank = None t.children[0].children[0].children[0].Rank = 6 t.children[0].children[0].children[1].Rank = 6 t.children[0].children[1].children[0].Rank = 6 t.children[0].children[1].children[1].Rank = 6 backfill_names_gap(t, lookup) commonname_promotion(t) self.assertEqual(t.to_newick(with_distances=False), exp)
def generate_constrings(tree, tipname_map, verbose=False): """Assigns taxonomy to unidentified sequences in tree. Returns all sequence IDs on tree.""" counts = nlevel.collect_names_at_ranks_counts(tree) min_count = 2 nlevel.decorate_ntips(tree) nlevel.decorate_name_relative_freqs(tree, counts, min_count) nlevel.set_ranksafe(tree) nlevel.pick_names(tree) nlevel.name_node_score_fold(tree) if verbose: print "Tree score: ", nlevel.score_tree(tree) nlevel.set_preliminary_name_and_rank(tree) contree, contree_lookup = nlevel.make_consensus_tree(tipname_map.values()) nlevel.backfill_names_gap(tree, contree_lookup) nlevel.commonname_promotion(tree) nlevel.make_names_unique(tree, append_suffix=False) constrings = nlevel.pull_consensus_strings(tree) return constrings