def build_bowtie2db(ifn_markers, tmp_dir, error_pipe=None): # build bowtie2-index if not os.path.isfile(ifn_markers): error = 'ifn_markers %s does not exist!' % ifn_markers logger.error(error) raise Exception(error) if not os.path.isdir(tmp_dir): ooSubprocess.mkdir(tmp_dir) bt2_base = ooSubprocess.splitext(ifn_markers)[0] index_fns = glob.glob('%s/%s.*' % (tmp_dir, bt2_base)) index_path = os.path.join(tmp_dir, bt2_base) oosp = ooSubprocess.ooSubprocess(tmp_dir) if index_fns == []: oosp.ex('bowtie2-build', ['--quiet', ifn_markers, index_path], stderr=error_pipe) else: logger.warning('bowtie2-indexes of %s are ready, skip rebuilding!' % (bt2_base)) return index_path
def main(args): ooSubprocess.mkdir(args['output_dir']) manager = multiprocessing.Manager() if args['input_type'] == 'fastq': index_path = build_bowtie2db(args['ifn_markers'], args['output_dir']) args['index_path'] = index_path args_list = [] for ifn_sample in args['ifn_samples']: args_list.append([ifn_sample, args]) #ooSubprocess.parallelize(run_sample, args_list, args['nprocs']) pool = multiprocessing.Pool(args['nprocs']) results = [] for a in args_list: r = pool.apply_async(run_sample, [a]) results.append(r) for r in results: try: r.get() except Exception as e: print e