Example #1
0
    def test_best_allow_root(self):
        def score_f(global_seq_scores, local_seq_scores, node):
            return len(local_seq_scores)

        exp = {'query1': {'node': self.tree.find('root'), 'score': 2},
               'query2': {'node': self.tree.find('h'), 'score': 2}}

        def score_f(global_seq_scores, local_seq_scores, node):
            return len(local_seq_scores)

        obs = best(score(propagate(decorate(self.tree, self.mock_hits,
                                            threshold=11.0)),
                         score_f))
        self.assertEqual(obs, exp)
Example #2
0
    def test_propagate(self):
        exp = self.tree.copy()
        exp.find('a').hits = {'query1': [95.6]}
        exp.find('b').hits = {}
        exp.find('c').hits = {'query1': [95.6]}
        exp.find('d').hits = {}
        exp.find('e').hits = {'query1': [95.6]}
        exp.find('f').hits = {'query1': [15.7], 'query2': [90.6]}
        exp.find('g').hits = {'query2': [12.7]}
        exp.find('h').hits = {'query1': [15.7], 'query2': [90.6, 12.7]}
        exp.hits = {'query1': [95.6, 15.7], 'query2': [90.6, 12.7]}

        obs = propagate(decorate(self.tree, self.mock_hits, threshold=11.0))

        for o, e in zip(obs.traverse(), exp.traverse()):
            self.assertEqual(o.hits.keys(), e.hits.keys())
            for o_key in o.hits:
                npt.assert_equal(o.hits[o_key], e.hits[o_key])
Example #3
0
    def test_score(self):
        def score_f(global_seq_scores, local_seq_scores, node):
            return len(local_seq_scores)

        exp = self.tree.copy()
        exp.find('a').scores = {'query1': 1}
        exp.find('b').scores = {}
        exp.find('c').scores = {'query1': 1}
        exp.find('d').scores = {}
        exp.find('e').scores = {'query1': 1}
        exp.find('f').scores = {'query1': 1, 'query2': 1}
        exp.find('g').scores = {'query2': 1}
        exp.find('h').scores = {'query1': 1, 'query2': 2}
        exp.scores = {'query1': 2, 'query2': 2}

        obs = propagate(decorate(self.tree, self.mock_hits, threshold=11.0))
        obs = score(obs, score_f)

        for o, e in zip(obs.traverse(), exp.traverse()):
            self.assertEqual(o.scores, e.scores)
Example #4
0
    def test_best_no_root(self):
        def score_f(global_seq_scores, local_seq_scores, node):
            return len(local_seq_scores)

        def battle_f(cur_node, existing_node, cur_score, existing_score):
            if cur_node.is_root():
                return False
            if cur_score > existing_score:
                return True
            if cur_score == existing_score:
                return cur_node.min_tip_dist < existing_node.min_tip_dist
            return False

        exp = {'query1': {'node': self.tree.find('a'), 'score': 1},
               'query2': {'node': self.tree.find('h'), 'score': 2}}

        obs = best(score(propagate(decorate(self.tree, self.mock_hits,
                                            threshold=11.0)),
                         score_f),
                   battle_f=battle_f)
        self.assertEqual(obs, exp)
Example #5
0
    def test_insert(self):
        def battle_f(cur_node, existing_node, cur_score, existing_score):
            if cur_node.is_root():
                return False
            if cur_score > existing_score:
                return True
            if cur_score == existing_score:
                return cur_node.min_tip_dist < existing_node.min_tip_dist
            return False

        def score_f(global_seq_scores, local_seq_scores, node):
            return len(local_seq_scores)

        insert(best(score(propagate(decorate(self.tree, self.mock_hits,
                                             threshold=11.0)),
                          score_f),
                    battle_f=battle_f),
               threshold=2)

        node = self.tree.find('query2')
        self.assertTrue(node.parent is self.tree.find('h'))
        with self.assertRaises(skbio.tree.MissingNodeError):
            self.tree.find('query1')
Example #6
0
 def test_all_seq_scores(self):
     exp = {'query1': [95.6, 10.7, 15.7], 'query2': [90.6, 12.7]}
     obs = _all_seq_scores(propagate(decorate(self.tree, self.mock_hits)))
     self.assertEqual(obs.keys(), exp.keys())
     for k in obs:
         npt.assert_equal(obs[k], exp[k])