def main(): args = parse_args() from_gdb = genome.db.GenomeDB(assembly=args.from_assembly) to_gdb = genome.db.GenomeDB(assembly=args.to_assembly) chain_list = chain.read_chain_file(args.liftover_file, from_gdb, to_gdb) sys.stderr.write("initializing tables\n") track = create_tables(from_gdb, args.tabname) sys.stderr.write("writing to tables\n") for c in chain_list: sys.stderr.write(" current chain: %s\n" % str(c)) tab = track.h5f.getNode("/%s" % c.from_coord.chrom.name) to_chr_id = c.to_coord.chrom.idnum for block in c.blocks: # update table with mappings to new chromosomal locations to_pos = np.arange(block.to_start, block.to_end+1) block_size = block.to_end - block.to_start + 1 to_chr_id = np.repeat(c.to_coord.chrom.idnum, block_size) ori = np.repeat(c.ori, block_size) vals = np.transpose(np.vstack((to_chr_id, to_pos, ori))) tab[block.from_start-1:block.from_end, :] = vals
def liftover_data(chain_file, from_gdb, to_gdb, from_track, rev_from_track, to_track, rev_to_track): sys.stderr.write("reading chain file\n") chain_list = read_chain_file(chain_file, from_gdb, to_gdb) sys.stderr.write("copying data\n") for chain in chain_list: sys.stderr.write(" current chain: %s\n" % str(chain)) for block in chain.blocks: # liftover the data data for this block copy_data(from_track, rev_from_track, chain.from_coord.chrom, block.from_start, block.from_end, to_track, rev_to_track, chain.to_coord.chrom, block.to_start, block.to_end, chain.ori)
def liftover_data(chain_file, from_gdb, to_gdb, from_track, rev_from_track, to_track, rev_to_track): sys.stderr.write("reading chain file\n") chain_list = read_chain_file(chain_file, from_gdb, to_gdb) sys.stderr.write("copying data\n") for chain in chain_list: sys.stderr.write(" current chain: %s\n" % str(chain)) for block in chain.blocks: # liftover the data data for this block copy_data( from_track, rev_from_track, chain.from_coord.chrom, block.from_start, block.from_end, to_track, rev_to_track, chain.to_coord.chrom, block.to_start, block.to_end, chain.ori, )