def test_score_tree(self): """Determine's the tree's fmeasure score""" # set RankNames and RankNameScores # if name in RankNames, check score, look at tips, etc t_str = "(((a,b),(c,d))e,(f,g),h)i;" t = DndParser(t_str) t.RankNames = ['i',None,None,None] # 1.0 * 6 t.RankNameScores = [1.0,None,None,None] t.Children[0].RankNames = [None,'e','foo',None] # 0.5 * 3, 0.6 * 3 t.Children[0].RankNameScores = [None, 0.5, 0.6, None] t.Children[0].Children[0].RankNames = [None] * 7 t.Children[0].Children[1].RankNames = [None] * 7 t.Children[1].RankNames = [None] * 7 t.Children[1].RankNameScores = [None] * 7 tips = t.tips() tips[0].Consensus = [None] * 7 tips[1].Consensus = [1,3,None,None] tips[2].Consensus = [2,4,5,None] tips[3].Consensus = [None,1,None,None] tips[4].Consensus = [None,1,None,None] tips[5].Consensus = [2,None,3,None] tips[6].Consensus = [None,4,None,None] decorate_ntips(t) exp = ((1.0 * 6) + (0.5 * 3) + (0.6 * 3)) / (6 + 3 + 3) obs = score_tree(t) self.assertEqual(obs, exp)
def test_score_tree(self): """Determine's the tree's fmeasure score""" # set RankNames and RankNameScores # if name in RankNames, check score, look at tips, etc t_str = StringIO(u"(((a,b),(c,d))e,(f,g),h)i;") t = TreeNode.read(t_str) t.RankNames = ['i', None, None, None] # 1.0 * 6 t.RankNameScores = [1.0, None, None, None] t.children[0].RankNames = [None, 'e', 'foo', None] # 0.5 * 3, 0.6 * 3 t.children[0].RankNameScores = [None, 0.5, 0.6, None] t.children[0].children[0].RankNames = [None] * 7 t.children[0].children[1].RankNames = [None] * 7 t.children[1].RankNames = [None] * 7 t.children[1].RankNameScores = [None] * 7 tips = list(t.tips()) tips[0].Consensus = [None] * 7 tips[1].Consensus = [1, 3, None, None] tips[2].Consensus = [2, 4, 5, None] tips[3].Consensus = [None, 1, None, None] tips[4].Consensus = [None, 1, None, None] tips[5].Consensus = [2, None, 3, None] tips[6].Consensus = [None, 4, None, None] decorate_ntips(t) exp = ((1.0 * 6) + (0.5 * 3) + (0.6 * 3)) / (6 + 3 + 3) obs = score_tree(t) self.assertEqual(obs, 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