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
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
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()
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
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)
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
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
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))
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)
def _banyan(es, key_type, alg): t = banyan.SortedSet(key_type=key_type, alg=alg) for e in es: t.add(e)
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)