Exemple #1
0
    def runTest(self):

        root = ['abcd']  # needs to be mutable for nested access, stupid python
        tree = BKTree.create_tree(root[0])

        def _check_insert(node, tree_depth):
            BKTree.insert(tree, root[0], node, get_distance)
            self.assertEqual(BKTree.get_depth(tree, root[0]), tree_depth)

        def _check_query(query, max_d, num_hit, true_result):
            result, perc_hit = BKTree.find(tree,
                                           root[0],
                                           query,
                                           max_d,
                                           get_distance,
                                           profile=True)
            self.assertEqual(set(result), set(true_result))
            self.assertEqual(perc_hit, num_hit / 7.0)

        # 0 indexed depth
        self.assertEqual(BKTree.get_depth(tree, root[0]), 0)

        #inserts
        nodes = ['abcde', 'bcde', 'abc', 'bc', 'bbcde', 'abcz']
        tree_depths = [1, 1, 2, 2, 2, 3]
        map(_check_insert, nodes, tree_depths)

        #queries
        _check_query('abc', 0, 3, ['abc'])
        _check_query('abc', 1, 6, ['abcd', 'abc', 'abcz', 'bc'])
        _check_query('abcd', 2, 7,
                     ['abcd', 'abcde', 'abc', 'abcz', 'bcde', 'bc', 'bbcde'])
        _check_query('bc', 1, 7, ['bc', 'abc'])

        self.assertEqual(BKTree.get_average_distance(tree), 1.5)
Exemple #2
0
    def runTest(self):

        root = ['abcd']  # needs to be mutable for nested access, stupid python
        tree = BKTree.create_tree(root[0])

        def _check_insert(node, tree_depth):
            BKTree.insert(tree, root[0], node, get_distance)
            self.assertEqual(BKTree.get_depth(tree, root[0]), tree_depth)          

        def _check_query(query, max_d, num_hit, true_result):
            result, perc_hit = BKTree.find(tree, root[0], query, max_d, get_distance, profile = True) 
            self.assertEqual(set(result), set(true_result))
            self.assertEqual(perc_hit, num_hit / 7.0)        

        # 0 indexed depth
        self.assertEqual(BKTree.get_depth(tree, root[0]), 0)

        #inserts
        nodes = ['abcde', 'bcde', 'abc', 'bc', 'bbcde', 'abcz']
        tree_depths = [1, 1, 2, 2, 2, 3]
        map(_check_insert, nodes, tree_depths)

        #queries
        _check_query('abc', 0, 3, ['abc'])
        _check_query('abc', 1, 6, ['abcd', 'abc', 'abcz', 'bc'])
        _check_query('abcd', 2, 7, ['abcd', 'abcde', 'abc', 'abcz', 'bcde', 'bc', 'bbcde'])
        _check_query('bc', 1, 7, ['bc', 'abc'])

        self.assertEqual(BKTree.get_average_distance(tree), 1.5)
Exemple #3
0
 def _check_insert(node, tree_depth):
     BKTree.insert(tree, root[0], node, get_distance)
     self.assertEqual(BKTree.get_depth(tree, root[0]), tree_depth)
Exemple #4
0
 def _check_insert(node, tree_depth):
     BKTree.insert(tree, root[0], node, get_distance)
     self.assertEqual(BKTree.get_depth(tree, root[0]), tree_depth)