def predict_orfs(file_dict, num_threads=<NUM_LIT:1>):
<EOL>orf_file_dict = dict()<EOL>prodigallist = list()<EOL>for file_name, file_path in file_dict.items():<EOL><INDENT>results = os.path.splitext(file_path)[<NUM_LIT:0>] + '<STR_LIT>'<EOL>prodigal = ['<STR_LIT>', '<STR_LIT>', file_path, '<STR_LIT>', results,  '<STR_LIT>',  '<STR_LIT>']<EOL>if not os.path.isfile(results):<EOL><INDENT>prodigallist.append(prodigal)<EOL><DEDENT>orf_file_dict[file_name] = results<EOL><DEDENT>pool = multiprocessing.Pool(processes=num_threads)<EOL>pool.map(run_prodigal, prodigallist)<EOL>pool.close()<EOL>pool.join()<EOL>return orf_file_dict<EOL>
Use prodigal to predict the number of open reading frames (ORFs) in each strain
:param file_dict: dictionary of strain name: /sequencepath/strain_name.extension
:param num_threads: number of threads to use in the pool of prodigal processes
:return: orf_file_dict: dictionary of strain name: /sequencepath/prodigal results.sco