import argparse import json import os def main(args): db_path = os.path.join(args.output_db_path, f"{args.output_db_name}.db") index_path = os.path.join( args.output_db_path, f"{args.output_db_name}.index" ) db_fp = open(db_path, "wb") index = {} db_offset = 0 for chain_alignment_dir in os.listdir(args.alignment_dir): cad_path = os.path.join(args.alignment_dir, chain_alignment_dir) for f in os.listdir(cad_path): f_path = os.path.join(cad_path, f) with open(f_path, "rb") as fp: file_bytes = fp.read() l = len(file_bytes) file_list = index.setdefault(chain_alignment_dir, []) file_list.append((f, db_offset, l)) db_fp.write(file_bytes) db_offset += l db_fp.close() with open(index_path, "w") as fp: json.dump(index, fp) if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument( "alignment_dir", type=str, help="""Path to precomputed alignment directory, with one subdirectory per chain.""" ) parser.add_argument("output_db_path", type=str) parser.add_argument("output_db_name", type=str) args = parser.parse_args() main(args)