if __name__ == '__main__':
args = myParser()
input_fasta_file = judge_input_reference_SNP(args.reference)
input_fastq_file = judge_input_fastq_SNP(args.input)
build_SNP_lastdb_if_needed() #SNP_reference建立必要的索引用于last比对
build_picard_dict_if_needed()
if len(input_fastq_file) == 0:
print("No data")
if len(input_fastq_file) == 1:
input_fastq_file_one = input_fastq_file[0]
SNP_result = run_SNP_module(input_fastq_file_one)
if len(input_fastq_file) > 1:
merge_result_list = [merge_result_SNP(i) for i in input_fastq_file]
'''
多线程
'''
p_l = []
for i in range(len(input_fastq_file)):
p=Process(target=run_SNP_module,kwargs={'input_fastq_file':input_fastq_file[i]})
p_l.append(p)
p.start()
for p in p_l:
p.join()
rm_file()
'''
整理结果
'''
new_list = []
for i in merge_result_list:
dataframe = pd.read_excel(i, index_col = 0)
new_list.append(dataframe)
df = pd.concat(new_list, axis=1) #多个DataFrame合并为一个
df.to_excel(args.output, sheet_name = 'SNP_result', index = True) #写入到一个新excel表中
'''
美化excel结果
'''
beautiful_excel_SNP(args.output)
用multiprocessing模块来多线程
from multiprocessing import Process
先用列表建立一堆Process对象
run_SNP_module是我建立的一个函数方法,这是一个我期望并行的流程
p=Process(target=run_SNP_module,kwargs={'input_fastq_file':input_fastq_file[i]})
用p.start()来启动任务运行
for p in p_l:
p.join()
这段代码是为了能够等待子程序完成再进入主程序
一个简单的内部并行就完成了