def parallel_deblur(inputs, params,
                    pos_ref_db_fp, neg_ref_dp_fp, jobs_to_start=1):
    logger = logging.getLogger(__name__)
    logger.info('parallel deblur started for %d inputs' % len(inputs))
    remove_param_list = ['-O', '--jobs-to-start', '--seqs-fp',
                         '--pos-ref-db-fp', '--neg-ref-db-fp']
    skipnext = False
    newparams = []
    for carg in params[2:]:
        if skipnext:
            skipnext = False
            continue
        if carg in remove_param_list:
            skipnext = True
            continue
        newparams.append(carg)
    if pos_ref_db_fp:
        new_pos_ref_db_fp = ','.join(pos_ref_db_fp)
        newparams.append('--pos-ref-db-fp')
        newparams.append(new_pos_ref_db_fp)
    if neg_ref_dp_fp:
        new_neg_ref_db_fp = ','.join(neg_ref_dp_fp)
        newparams.append('--neg-ref-db-fp')
        newparams.append(new_neg_ref_db_fp)
    logger.debug('ready for functor %s' % newparams)
    functor = partial(run_functor, deblur_system_call, newparams)
    logger.debug('ready for pool %d jobs' % jobs_to_start)
    pool = mp.Pool(processes=jobs_to_start)
    logger.debug('almost running...')
    for stdout, stderr, es in pool.map(functor, inputs):
        if es != 0:
            raise RuntimeError("stdout: %s\nstderr: %s\nexit: %d" % (stdout,
                                                                     stderr,
                                                                     es))