def test_cooler_info(): filename = op.join('data', 'Dixon2012-J1-NcoI-R1-filtered.100kb.multires.cool') info = hgco.tileset_info(filename) tiles = hgco.generate_tiles(filename, ['a.0.0.0']) import base64 r = base64.decodestring(tiles[0][1]['dense'].encode('utf-8')) q = np.frombuffer(r, dtype=np.float32) q = q.reshape((256,256)) filename = op.join('data', 'hic-resolutions.cool')
def test_cooler_info(): filename = op.join("data", "Dixon2012-J1-NcoI-R1-filtered.100kb.multires.cool") hgco.tileset_info(filename) # TODO: Make assertion about info returned. tiles = hgco.generate_tiles(filename, ["a.0.0.0"]) r = base64.decodestring(tiles[0][1]["dense"].encode("utf-8")) q = np.frombuffer(r, dtype=np.float32) q = q.reshape((256, 256)) filename = op.join("data", "hic-resolutions.cool")
def generate_tiles(tileset_tile_ids): ''' Generate a tiles for the give tile_ids. All of the tile_ids must come from the same tileset. This function will determine the appropriate handler this tile given the tileset's filetype and datatype Parameters ---------- tileset: tilesets.models.Tileset object The tileset that the tile ids should be retrieved from tile_ids: [str,...] A list of tile_ids (e.g. xyx.0.0.1) identifying the tiles to be retrieved Returns ------- tile_list: [(tile_id, tile_data),...] A list of tile_id, tile_data tuples ''' tileset, tile_ids, raw = tileset_tile_ids if tileset.filetype == 'hitile': return generate_hitile_tiles(tileset, tile_ids) elif tileset.filetype == 'beddb': return hgbe.tiles(tileset.datafile.path, tile_ids) elif tileset.filetype == 'bed2ddb' or tileset.filetype == '2dannodb': return generate_bed2ddb_tiles(tileset, tile_ids) elif tileset.filetype == 'geodb': return generate_bed2ddb_tiles(tileset, tile_ids, hggo.get_tiles) elif tileset.filetype == 'hibed': return generate_hibed_tiles(tileset, tile_ids) elif tileset.filetype == 'cooler': return hgco.generate_tiles(tileset.datafile.path, tile_ids) elif tileset.filetype == 'bigwig': chromsizes = get_chromsizes(tileset) return hgbi.tiles(tileset.datafile.path, tile_ids, chromsizes=chromsizes) elif tileset.filetype == 'multivec': return generate_1d_tiles( tileset.datafile.path, tile_ids, ctmu.get_single_tile) elif tileset.filetype == 'imtiles': return hgim.get_tiles(tileset.datafile.path, tile_ids, raw) else: return [(ti, {'error': 'Unknown tileset filetype: {}'.format(tileset.filetype)}) for ti in tile_ids]
def generate_tiles(tileset_tile_ids): ''' Generate a tiles for the give tile_ids. All of the tile_ids must come from the same tileset. This function will determine the appropriate handler this tile given the tileset's filetype and datatype Parameters ---------- tileset_tile_ids: tuple A four-tuple containing the following parameters. tileset: tilesets.models.Tileset object The tileset that the tile ids should be retrieved from tile_ids: [str,...] A list of tile_ids (e.g. xyx.0.0.1) identifying the tiles to be retrieved raw: str or False The value of the GET request parameter `raw`. tileset_options: dict or None An optional dict containing tileset options, including aggregation options. Returns ------- tile_list: [(tile_id, tile_data),...] A list of tile_id, tile_data tuples ''' tileset, tile_ids, raw, tileset_options = tileset_tile_ids if tileset.filetype == 'hitile': return generate_hitile_tiles(tileset, tile_ids) elif tileset.filetype == 'beddb': return hgbe.tiles(tileset.datafile.path, tile_ids) elif tileset.filetype == 'bed2ddb' or tileset.filetype == '2dannodb': return generate_bed2ddb_tiles(tileset, tile_ids) elif tileset.filetype == 'geodb': return generate_bed2ddb_tiles(tileset, tile_ids, hggo.get_tiles) elif tileset.filetype == 'hibed': return generate_hibed_tiles(tileset, tile_ids) elif tileset.filetype == 'cooler': return hgco.generate_tiles(tileset.datafile.path, tile_ids) elif tileset.filetype == 'bigwig': chromsizes = get_chromsizes(tileset) return hgbi.tiles(tileset.datafile.path, tile_ids, chromsizes=chromsizes) elif tileset.filetype == 'bigbed': chromsizes = get_chromsizes(tileset) return hgbb.tiles(tileset.datafile.path, tile_ids, chromsizes=chromsizes) elif tileset.filetype == 'multivec': return generate_1d_tiles(tileset.datafile.path, tile_ids, ctmu.get_single_tile, tileset_options) elif tileset.filetype == 'imtiles': return hgim.get_tiles(tileset.datafile.path, tile_ids, raw) elif tileset.filetype == 'bam': return ctb.tiles(tileset.datafile.path, tile_ids, index_filename=tileset.indexfile.path, max_tile_width=hss.MAX_BAM_TILE_WIDTH) else: filetype = tileset.filetype filepath = tileset.datafile.path if filetype in hgti.by_filetype: return hgti.by_filetype[filetype](filepath).tiles(tile_ids) return [(ti, { 'error': 'Unknown tileset filetype: {}'.format(tileset.filetype) }) for ti in tile_ids]