Ejemplo n.º 1
0
def _banyan(es, key_type, alg):
    t = banyan.SortedSet(key_type = key_type, alg = alg)
    for i, e in enumerate(es):
        t.add(e)
        if i % 1 == 0:
            for ee in t:
                pass
Ejemplo n.º 2
0
def build_trees(substacks):
    tx = bn.SortedSet(key_type=(int, int),
                      updator=bn.OverlappingIntervalsUpdator)
    ty = bn.SortedSet(key_type=(int, int),
                      updator=bn.OverlappingIntervalsUpdator)
    tz = bn.SortedSet(key_type=(int, int),
                      updator=bn.OverlappingIntervalsUpdator)
    idx = {}
    for s in substacks.values():
        xx = (s.info['X0'], s.info['X0'] + s.info['Width'] - 1)
        tx.add(xx)
        yy = (s.info['Y0'], s.info['Y0'] + s.info['Height'] - 1)
        ty.add(yy)
        zz = (s.info['Z0'], s.info['Z0'] + s.info['Depth'] - 1)
        tz.add(zz)
        idx[(xx, yy, zz)] = s.substack_id
    return tx, ty, tz, idx
Ejemplo n.º 3
0
def _banyan(es, key_type, alg, updator):
    t = banyan.SortedSet(key_type=key_type, alg=alg, updator=updator)
    if updator is None:
        for e in es:
            t.add(e)
            if len(t) > 1:
                keys = list(t)
                c = min([abs(x - y) for (x, y) in zip_(keys[1:], keys[:-1])])
    else:
        for e in es:
            t.add(e)
            if len(t) > 1:
                c = t.min_gap()
Ejemplo n.º 4
0
 def get_genes_in_region(self, region_start, region_end):
     """
     List of gene_ids of genes that overlap this region
     Inclusive
     """
     if not hasattr(self, '_genetree'):
         import banyan
         self._genetree = banyan.SortedSet([(t[1], t[2]) for t in self.get_ordered_genes()], updator=banyan.OverlappingIntervalsUpdator)
         self._geneposmap = {(t[1], t[2]): t[0] for t in self.get_ordered_genes()}
     ret = []
     for item in self._genetree.overlap((region_start, region_end)):
         ret.append(self._geneposmap[item])
     return ret
Ejemplo n.º 5
0
def _banyan(es, key_type, alg, updator):
    t = banyan.SortedSet(key_type=key_type, alg=alg, updator=updator)
    if updator is None:
        for e in es:
            t.add(e)
            c = 0
            for i in t:
                if i == e:
                    break
                c += 1
    else:
        for e in es:
            t.add(e)
            t.order(e)
Ejemplo n.º 6
0
def run_tests(names, num_items, num_its):
    fns = dict([
        ('bintrees', lambda es: bintrees.FastRBTree([(e, None) for e in es])),
        ('set', lambda es: set(es)),
        ('banyan_red_black_tree', 
            lambda es: banyan.SortedSet(es, alg = banyan.RED_BLACK_TREE)),
        ('banyan_splay_tree', 
            lambda es: banyan.SortedSet(es, alg = banyan.SPLAY_TREE)),
        ('banyan_sorted_list', 
            lambda es: banyan.SortedSet(es, alg = banyan.SORTED_LIST)),
        ('banyan_red_black_tree_gen', 
            lambda es: banyan.SortedSet(es, key_type = int, alg = banyan.RED_BLACK_TREE)),
        ('banyan_splay_tree_gen', 
            lambda es: banyan.SortedSet(es, key_type = int, alg = banyan.SPLAY_TREE)),
        ('banyan_sorted_list_gen', 
        lambda es: banyan.SortedSet(es, key_type = int, alg = banyan.SORTED_LIST))])
    t = dict([])        
    for name in names:        
        t[name] = _run_test(fns[name], int, num_items, num_its)
    return t
Ejemplo n.º 7
0
def run_tests(names, num_items, num_its, mini_num_items = 1, type_ = int):
    fns = dict([
        ('btrees', lambda es: BTrees.OOBTree.OOSet(es)),
        ('btree', lambda es: btree.sorted_btree.bulkload(sorted(es), 128)),
        ('blist', lambda es: blist.sortedset(es)),
        ('bintrees', lambda es: bintrees.FastRBTree([(e, None) for e in es])),
        ('set', lambda es: set(es)),
        ('banyan_red_black_tree', 
            lambda es: banyan.SortedSet(es, key_type = type_, alg = banyan.RED_BLACK_TREE)),
        ('banyan_splay_tree', 
            lambda es: banyan.SortedSet(es, key_type = type_, alg = banyan.SPLAY_TREE)),
        ('banyan_sorted_list', 
            lambda es: banyan.SortedSet(es, key_type = type_, alg = banyan.SORTED_LIST)),
        ('banyan_red_black_tree_gen', 
            lambda es: banyan.SortedSet(es, alg = banyan.RED_BLACK_TREE)),
        ('banyan_splay_tree_gen', 
            lambda es: banyan.SortedSet(es, alg = banyan.SPLAY_TREE)),
        ('banyan_sorted_list_gen', 
            lambda es: banyan.SortedSet(es, alg = banyan.SORTED_LIST))])
    t = dict([])        
    for name in names:        
        t[name] = _run_test(fns[name], type_, num_items, num_its, mini_num_items)
    return t
Ejemplo n.º 8
0
def _banyan(es, key_type, alg):
    t = banyan.SortedSet(es, key_type = key_type, alg = alg)
def _banyan(es, key_type):
    t = banyan.SortedSet(updator = banyan.OverlappingIntervalsUpdator, key_type = key_type)
    for e in es:
        t.add(e)
        c = len(t.overlap(e))
Ejemplo n.º 10
0
def _banyan(es, key_type, alg, updator):
    t = banyan.SortedSet(key_type = key_type, alg = alg, updator = updator)
    for e in es:
        t.add(e)
    for e in es:
        t.remove(e)        
Ejemplo n.º 11
0
def _banyan(es, key_type, alg):
    t = banyan.SortedSet(key_type=key_type, alg=alg)
    for e in es:
        t.add(e)
Ejemplo n.º 12
0
        if node is None:
            return

        _fancy_trace(node.right, path + 'r')

        node_content = ''
        if path:
            for d, nd in itertools.izip(path[:-1], path[1:]):
                node_content += '  ' if d == nd else '| '
            node_content += '/-' if path[-1] == 'r' else '\-'
        node_content += str(node.key)
        if node.metadata is not None:
            node_content += ' [ ' + str(node.metadata) + ' ]'
        print(node_content)

        _fancy_trace(node.left, path + 'l')

    _fancy_trace(node, '')


if __name__ == '__main__':
    keys = [random.randint(1, 100) for i in range(18)]

    simple_trace(banyan.SortedSet(keys).root)

    fancy_trace(banyan.SortedSet(keys).root)

    fancy_trace(banyan.SortedSet(keys, updator=banyan.RankUpdator).root)

    fancy_trace(banyan.SortedSet(keys, updator=banyan.MinMaxUpdator).root)