Mercurial > repos > glogobyte > isoread
comparison mirbase.py @ 26:b4eeebc98ab0 draft
Uploaded
| author | glogobyte |
|---|---|
| date | Sun, 05 Dec 2021 12:17:19 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 25:8c1c906b7ccd | 26:b4eeebc98ab0 |
|---|---|
| 1 from mirbase_functions import * | |
| 2 from mirbase_graphs import * | |
| 3 import time | |
| 4 from multiprocessing import Process, Queue, Lock, Pool, Manager, Value | |
| 5 import subprocess | |
| 6 import argparse | |
| 7 import sys | |
| 8 | |
| 9 subprocess.call(['mkdir','-p', 'split1','split2','split3','split4','Counts','Diff/temp_con','Diff/temp_tre','Diff/n_temp_con','Diff/n_temp_tre']) | |
| 10 | |
| 11 parser = argparse.ArgumentParser() | |
| 12 parser.add_argument("-analysis", "--anal", help="choose type of analysis", action="store") | |
| 13 parser.add_argument("-con", "--control", help="input fastq file (controls)", nargs='+', default=[]) | |
| 14 parser.add_argument("-tre", "--treated", help="input fastq file (treated)", nargs='+', default=[] ) | |
| 15 parser.add_argument("-tool_dir", "--tool_directory", help="tool directory path", action="store") | |
| 16 parser.add_argument("-gen", "--org_name", help="Organism", action="store") | |
| 17 parser.add_argument("-f", "--flag", help="choose the database (MirBase,MirGene)", action="store") | |
| 18 parser.add_argument("-percentage", "--per", help="Percentage of Samples", action="store") | |
| 19 parser.add_argument("-counts", "--count", help="Counts for filtering", action="store") | |
| 20 parser.add_argument("-name1", "--group1", help="Samples group 1", action="store") | |
| 21 parser.add_argument("-name2", "--group2", help="Samples group 2", action="store") | |
| 22 args = parser.parse_args() | |
| 23 | |
| 24 | |
| 25 ################################################################################################################################################################################################################# | |
| 26 | |
| 27 if __name__ == '__main__': | |
| 28 | |
| 29 starttime = time.time() | |
| 30 | |
| 31 lock = Lock() | |
| 32 manager = Manager() | |
| 33 | |
| 34 # Download reference miRNA sequences from MirBase | |
| 35 mature_mirnas=manager.list() | |
| 36 ps_mature=Process(target=download_matures,args=(mature_mirnas,args.org_name)) | |
| 37 ps_mature.start() | |
| 38 | |
| 39 | |
| 40 # Keep the names of the files and location paths | |
| 41 args.control[0]=args.control[0][1:] | |
| 42 args.control[len(args.control)-1][:-1] | |
| 43 control = [(args.control[i:i+2]) for i in range(0, len(args.control), 2)] | |
| 44 | |
| 45 | |
| 46 args.treated[0]=args.treated[0][1:] | |
| 47 args.treated[len(args.treated)-1][:-1] | |
| 48 treated = [(args.treated[i:i+2]) for i in range(0, len(args.treated), 2)] | |
| 49 | |
| 50 | |
| 51 ############## Detection of templated isoforms ################ | |
| 52 | |
| 53 | |
| 54 # Initialization of the managers between the proccesses | |
| 55 # First group of samples (controls) | |
| 56 con_samples = manager.list() # Collapsed mirnas with the new names | |
| 57 con_data= manager.list() # keeps all necessary data for the Database | |
| 58 con_file_order=manager.list() # files' names ordered by processes | |
| 59 con_names_seqs=manager.list() # keeps only mirna names and sequences | |
| 60 deseq=manager.list() | |
| 61 con_unmap_seq=manager.Value('i',0) # keeps unmap unique sequnces for the generation of a graph | |
| 62 con_unmap_counts=manager.Value('i',0) # keeps unmap counts of sequnces for the generation of a graph | |
| 63 con_mirna_names=manager.list() # keeps the names of mirnas | |
| 64 ini_con_samples = manager.list() # filtered SAM files | |
| 65 | |
| 66 # Second group of samples (treated) | |
| 67 tre_samples = manager.list() | |
| 68 tre_data = manager.list() | |
| 69 tre_file_order = manager.list() | |
| 70 tre_names_seqs=manager.list() | |
| 71 deseq1=manager.list() | |
| 72 tre_unmap_seq = manager.Value('i',0) | |
| 73 tre_unmap_counts = manager.Value('i',0) | |
| 74 tre_mirna_names=manager.list() | |
| 75 ini_tre_samples = manager.list() | |
| 76 | |
| 77 # Wait for the download of reference miRNA sequences | |
| 78 ps_mature.join() | |
| 79 mature_mirnas=list(mature_mirnas) | |
| 80 | |
| 81 # Processing of the detected miRNAs from SAM files | |
| 82 ps_sam = [Process(target=sam_edit,args=(mature_mirnas,path[1][:-1],path[0].split(",")[0],"c",lock,con_samples,con_data,con_file_order,con_unmap_seq,con_names_seqs,deseq,con_mirna_names,ini_con_samples,con_unmap_counts)) for path in control] | |
| 83 ps_sam.extend([Process(target=sam_edit,args=(mature_mirnas,path[1][:-1],path[0].split(",")[0],"t",lock,tre_samples,tre_data,tre_file_order,tre_unmap_seq,tre_names_seqs,deseq1,tre_mirna_names,ini_tre_samples,tre_unmap_counts)) for path in treated]) | |
| 84 | |
| 85 # Wait for processing of SAM files to finish | |
| 86 [p.start() for p in ps_sam] | |
| 87 [p.join() for p in ps_sam] | |
| 88 | |
| 89 # Generate a histogram | |
| 90 ps_hist=[Process(target=hist_red,args=(ini_con_samples,'c',args.group1))] | |
| 91 ps_hist.extend([Process(target=hist_red,args=(ini_tre_samples,'t',args.group2))]) | |
| 92 [x.start() for x in ps_hist] | |
| 93 | |
| 94 | |
| 95 # Convert managers to lists | |
| 96 con_samples = list(con_samples) | |
| 97 tre_samples = list(tre_samples) | |
| 98 con_file_order=list(con_file_order) | |
| 99 tre_file_order=list(tre_file_order) | |
| 100 deseq=list(deseq) | |
| 101 deseq1=list(deseq1) | |
| 102 | |
| 103 # Remove duplicates and sorting | |
| 104 con_names_seqs=list(con_names_seqs) | |
| 105 con_names_seqs.sort() | |
| 106 con_names_seqs=list(con_names_seqs for con_names_seqs,_ in itertools.groupby(con_names_seqs)) | |
| 107 | |
| 108 tre_names_seqs=list(tre_names_seqs) | |
| 109 tre_names_seqs.sort() | |
| 110 tre_names_seqs=list(tre_names_seqs for tre_names_seqs,_ in itertools.groupby(tre_names_seqs)) | |
| 111 | |
| 112 # initialization of new managers | |
| 113 new_con_file_order=manager.list() | |
| 114 new_tre_file_order=manager.list() | |
| 115 new_deseq=manager.list() | |
| 116 new_deseq1=manager.list() | |
| 117 | |
| 118 # add uncommon detected mirnas among the samples | |
| 119 ps_un_mirnas=[Process(target=uncommon_mirnas,args=(sampp,con_names_seqs,lock,new_deseq,con_file_order[i],new_con_file_order)) for i,sampp in enumerate(deseq)] | |
| 120 ps_un_mirnas.extend([Process(target=uncommon_mirnas,args=(sampp,tre_names_seqs,lock,new_deseq1,tre_file_order[i],new_tre_file_order)) for i,sampp in enumerate(deseq1)]) | |
| 121 | |
| 122 # Wait for processing of uncommon detected mirnas to finish | |
| 123 [z.start() for z in ps_un_mirnas] | |
| 124 [z.join() for z in ps_un_mirnas] | |
| 125 | |
| 126 # Convert managers to lists | |
| 127 new_deseq=list(new_deseq) | |
| 128 new_deseq1=list(new_deseq1) | |
| 129 con_file_order=list(new_con_file_order) | |
| 130 tre_file_order=list(new_tre_file_order) | |
| 131 | |
| 132 # Genereation of count matrices per group (controls - treated) | |
| 133 control_group=[[x[0],x[2]] for x in new_deseq[0]] | |
| 134 [control_group[i].append(y[i][1]) for i,_ in enumerate(control_group) for y in new_deseq] | |
| 135 | |
| 136 treated_group=[[x[0],x[2]] for x in new_deseq1[0]] | |
| 137 [treated_group[i].append(y[i][1]) for i,_ in enumerate(treated_group) for y in new_deseq1] | |
| 138 | |
| 139 # Keep a copy of count matrices | |
| 140 control_group_copy=copy.deepcopy(list(control_group)) | |
| 141 treated_group_copy=copy.deepcopy(list(treated_group)) | |
| 142 | |
| 143 # Initialization of managers | |
| 144 merg_nam_control_group=manager.list() | |
| 145 merg_nam_treated_group=manager.list() | |
| 146 | |
| 147 # Merging of names different names for the same mirna sequence per group (controls, treated) to avoid duplicates | |
| 148 ps_merge = [Process(target=merging_names,args=(control_group_copy,merg_nam_control_group))] | |
| 149 ps_merge.extend([Process(target=merging_names,args=(treated_group_copy,merg_nam_treated_group))]) | |
| 150 [x.start() for x in ps_merge] | |
| 151 | |
| 152 | |
| 153 # Add unique mirna sequences between groups (all groups will have the same amount of sequences) | |
| 154 con_list=manager.list() | |
| 155 tre_list=manager.list() | |
| 156 | |
| 157 ps_bw = [Process(target=black_white,args=(con_names_seqs,tre_names_seqs,treated_group,tre_list))] | |
| 158 ps_bw.extend([Process(target=black_white,args=(tre_names_seqs,con_names_seqs,control_group,con_list))]) | |
| 159 [x.start() for x in ps_bw] | |
| 160 [x.join() for x in ps_bw] | |
| 161 | |
| 162 control_group=list(con_list) | |
| 163 treated_group=list(tre_list) | |
| 164 | |
| 165 # Detection of duplications | |
| 166 dupes=manager.list() | |
| 167 | |
| 168 ps_dupes = Process(target=merging_dupes,args=(control_group,dupes)) | |
| 169 ps_dupes.start() | |
| 170 ps_dupes.join() | |
| 171 | |
| 172 dupes=list(dupes) | |
| 173 | |
| 174 # Merging the duplications in one entry with all different names | |
| 175 con_list=manager.list() | |
| 176 tre_list=manager.list() | |
| 177 | |
| 178 ps_ap_merg_dupes = [Process(target=apply_merging_dupes,args=(control_group,dupes,con_list))] | |
| 179 ps_ap_merg_dupes.extend([Process(target=apply_merging_dupes,args=(treated_group,dupes,tre_list))]) | |
| 180 [x.start() for x in ps_ap_merg_dupes] | |
| 181 | |
| 182 # Preparation of reference sequences (isodforms) for the detection of non template mirnas | |
| 183 if args.anal=="2": | |
| 184 all_iso = manager.list() | |
| 185 ps_non_iso = Process(target=non_template_ref,args=(con_samples,tre_samples,all_iso)) | |
| 186 ps_non_iso.start() | |
| 187 | |
| 188 # Finishing the process for merging | |
| 189 [x.join() for x in ps_merge] | |
| 190 merg_nam_control_group=list(merg_nam_control_group) | |
| 191 merg_nam_treated_group=list(merg_nam_treated_group) | |
| 192 | |
| 193 # Export the database and the graphs | |
| 194 procs = [Process(target=DB_write,args=(x[0],x[1],x[2],x[3],1)) for x in con_data] | |
| 195 procs.extend([Process(target=DB_write,args=(x[0],x[1],x[2],x[3],1)) for x in tre_data]) | |
| 196 procs.extend([Process(target=make_spider,args=(merg_nam_control_group,merg_nam_treated_group,args.group1,args.group2))]) | |
| 197 | |
| 198 if args.anal == "1": | |
| 199 procs.extend([Process(target=pie_temp,args=(merg_nam_control_group,con_unmap_seq.value,con_unmap_counts.value,merg_nam_treated_group,tre_unmap_seq.value,tre_unmap_counts.value,args.group1,args.group2))]) | |
| 200 | |
| 201 [p.start() for p in procs] | |
| 202 | |
| 203 # Export the pdf report file | |
| 204 if args.anal=="1": | |
| 205 [x.join() for x in ps_hist] | |
| 206 [p.join() for p in procs] | |
| 207 ps_pdf = Process(target=pdf_before_DE,args=(args.anal,args.group1,args.group2)) | |
| 208 ps_pdf.start() | |
| 209 | |
| 210 | |
| 211 [x.join() for x in ps_ap_merg_dupes] | |
| 212 control_group=list(con_list) | |
| 213 treated_group=list(tre_list) | |
| 214 | |
| 215 # Filters low count mirnas (otpional) | |
| 216 if int(args.per)!=-1: | |
| 217 if int(args.per)>0 and int(args.per)<=100 and int(args.count)>0: | |
| 218 | |
| 219 fil_con_group=manager.list() | |
| 220 fil_tre_group=manager.list() | |
| 221 | |
| 222 ps_low_counts = Process(target=filter_low_counts,args=(control_group,treated_group,fil_con_group,fil_tre_group,args.per,args.count)) | |
| 223 ps_low_counts.start() | |
| 224 ps_low_counts.join() | |
| 225 | |
| 226 fil_con_group=list(fil_con_group) | |
| 227 fil_tre_group=list(fil_tre_group) | |
| 228 else: | |
| 229 sys.exit("Not acceptable values for filter") | |
| 230 | |
| 231 | |
| 232 if "fil_con_group" not in locals() or "fil_con_group" not in globals(): | |
| 233 fil_con_group=control_group | |
| 234 fil_tre_group=treated_group | |
| 235 | |
| 236 # export count matrices | |
| 237 ps_write = Process(target=write_main,args=(control_group, treated_group, fil_con_group, fil_tre_group, con_file_order,tre_file_order,1,args.group1,args.group2,args.per)) | |
| 238 ps_write.start() | |
| 239 | |
| 240 # export counts files compatible with Deseq2 and EdgeR | |
| 241 ps1_matrix = [Process(target=temp_counts_to_diff,args=(con_file_order,fil_con_group,"Diff/temp_con/"))] | |
| 242 ps1_matrix.extend([Process(target=temp_counts_to_diff,args=(tre_file_order,fil_tre_group,"Diff/temp_tre/"))]) | |
| 243 [p.start() for p in ps1_matrix] | |
| 244 | |
| 245 if args.anal=="1": | |
| 246 ps_pdf.join() | |
| 247 if args.anal=="2": | |
| 248 [p.join() for p in procs] | |
| 249 [x.join() for x in ps_hist] | |
| 250 | |
| 251 ps_write.join() | |
| 252 [p.join() for p in ps1_matrix] | |
| 253 | |
| 254 ############################## Detection of non-template ####################################### | |
| 255 | |
| 256 if args.anal == "2": | |
| 257 | |
| 258 # Initialization of the managers between the proccesses | |
| 259 # First group of samples (controls) | |
| 260 n_con_data= manager.list() | |
| 261 n_con_file_order=manager.list() | |
| 262 n_con_names_seqs=manager.list() | |
| 263 n_deseq=manager.list() | |
| 264 | |
| 265 # Second group of samples (treated) | |
| 266 n_tre_data = manager.list() | |
| 267 n_tre_file_order = manager.list() | |
| 268 n_tre_names_seqs=manager.list() | |
| 269 n_deseq1=manager.list() | |
| 270 | |
| 271 # Preparation of reference sequences | |
| 272 new_ref_mirnas = list(mature_mirnas) | |
| 273 ps_non_iso.join() | |
| 274 | |
| 275 all_iso=list(all_iso) | |
| 276 new_ref_mirnas.extend(all_iso) | |
| 277 | |
| 278 # Processing of non template miRNAs from SAM files | |
| 279 ps_sam = [Process(target=non_sam_edit,args=(new_ref_mirnas,path[1][:-1],path[0].split(",")[0],"c",lock,n_con_data,n_con_file_order,n_deseq,n_con_names_seqs)) for path in control] | |
| 280 ps_sam.extend([Process(target=non_sam_edit,args=(new_ref_mirnas,path[1][:-1],path[0].split(",")[0],"t",lock,n_tre_data,n_tre_file_order,n_deseq1,n_tre_names_seqs)) for path in treated]) | |
| 281 | |
| 282 [p.start() for p in ps_sam] | |
| 283 [p.join() for p in ps_sam] | |
| 284 | |
| 285 # Convert managers to lists | |
| 286 n_con_file_order=list(n_con_file_order) | |
| 287 n_tre_file_order=list(n_tre_file_order) | |
| 288 n_deseq=list(n_deseq) | |
| 289 n_deseq1=list(n_deseq1) | |
| 290 | |
| 291 # Remove duplicates and sorting | |
| 292 n_con_names_seqs=list(n_con_names_seqs) | |
| 293 n_con_names_seqs.sort() | |
| 294 n_con_names_seqs=list(n_con_names_seqs for n_con_names_seqs,_ in itertools.groupby(n_con_names_seqs)) | |
| 295 | |
| 296 n_tre_names_seqs=list(n_tre_names_seqs) | |
| 297 n_tre_names_seqs.sort() | |
| 298 n_tre_names_seqs=list(n_tre_names_seqs for n_tre_names_seqs,_ in itertools.groupby(n_tre_names_seqs)) | |
| 299 | |
| 300 # initialization of new managers | |
| 301 new_n_con_file_order=manager.list() | |
| 302 new_n_tre_file_order=manager.list() | |
| 303 n_new_deseq=manager.list() | |
| 304 n_new_deseq1=manager.list() | |
| 305 | |
| 306 # add uncommon detected mirnas among the samples | |
| 307 ps_deseq=[Process(target=uncommon_mirnas,args=(sampp,n_con_names_seqs,lock,n_new_deseq,n_con_file_order[i],new_n_con_file_order)) for i,sampp in enumerate(n_deseq)] | |
| 308 ps_deseq.extend([Process(target=uncommon_mirnas,args=(sampp,n_tre_names_seqs,lock,n_new_deseq1,n_tre_file_order[i],new_n_tre_file_order)) for i,sampp in enumerate(n_deseq1)]) | |
| 309 | |
| 310 # Wait for processing of uncommon detected mirnas to finish | |
| 311 [x.start() for x in ps_deseq] | |
| 312 [x.join() for x in ps_deseq] | |
| 313 | |
| 314 # Convert managers to lists | |
| 315 n_new_deseq=list(n_new_deseq) | |
| 316 n_new_deseq1=list(n_new_deseq1) | |
| 317 n_con_file_order=list(new_n_con_file_order) | |
| 318 n_tre_file_order=list(new_n_tre_file_order) | |
| 319 | |
| 320 # Genereation of count matrices per group (controls - treated) | |
| 321 n_control_group=[[x[0],x[2]] for x in n_new_deseq[0]] | |
| 322 [n_control_group[i].append(y[i][1]) for i,_ in enumerate(n_control_group) for y in n_new_deseq] | |
| 323 | |
| 324 n_treated_group=[[x[0],x[2]] for x in n_new_deseq1[0]] | |
| 325 [n_treated_group[i].append(y[i][1]) for i,_ in enumerate(n_treated_group) for y in n_new_deseq1] | |
| 326 | |
| 327 # Keep a copy of count matrices | |
| 328 n_control_group_copy=copy.deepcopy(list(n_control_group)) | |
| 329 n_treated_group_copy=copy.deepcopy(list(n_treated_group)) | |
| 330 | |
| 331 # Initialization of managers | |
| 332 merg_nam_n_control_group=manager.list() | |
| 333 merg_nam_n_treated_group=manager.list() | |
| 334 | |
| 335 # Merging of names different names for the same mirna sequence per group (controls, treated) to avoid duplicates\ | |
| 336 ps_merge = [Process(target=merging_names,args=(n_control_group_copy,merg_nam_n_control_group))] | |
| 337 ps_merge.extend([Process(target=merging_names,args=(n_treated_group_copy,merg_nam_n_treated_group))]) | |
| 338 [x.start() for x in ps_merge] | |
| 339 | |
| 340 # Add unique mirna sequences between groups (all groups will have the same amount of sequences) | |
| 341 n_con_list=manager.list() | |
| 342 n_tre_list=manager.list() | |
| 343 | |
| 344 ps_bw = [Process(target=black_white,args=(n_con_names_seqs,n_tre_names_seqs,n_treated_group,n_tre_list))] | |
| 345 ps_bw.extend([Process(target=black_white,args=(n_tre_names_seqs,n_con_names_seqs,n_control_group,n_con_list))]) | |
| 346 [x.start() for x in ps_bw] | |
| 347 [x.join() for x in ps_bw] | |
| 348 | |
| 349 n_control_group=list(n_con_list) | |
| 350 n_treated_group=list(n_tre_list) | |
| 351 | |
| 352 # Detection of duplications | |
| 353 n_dupes=manager.list() | |
| 354 | |
| 355 ps_dupes = Process(target=merging_dupes,args=(n_control_group,n_dupes)) | |
| 356 ps_dupes.start() | |
| 357 ps_dupes.join() | |
| 358 | |
| 359 n_dupes=list(n_dupes) | |
| 360 | |
| 361 # Merging the duplications in one entry with all different names | |
| 362 n_con_list=manager.list() | |
| 363 n_tre_list=manager.list() | |
| 364 | |
| 365 ps_ap_merg_dupes = [Process(target=apply_merging_dupes,args=(n_control_group,n_dupes,n_con_list))] | |
| 366 ps_ap_merg_dupes.extend([Process(target=apply_merging_dupes,args=(n_treated_group,n_dupes,n_tre_list))]) | |
| 367 [x.start() for x in ps_ap_merg_dupes] | |
| 368 | |
| 369 # Finishing the process for merging | |
| 370 [x.join() for x in ps_merge] | |
| 371 merg_nam_n_control_group=list(merg_nam_n_control_group) | |
| 372 merg_nam_n_treated_group=list(merg_nam_n_treated_group) | |
| 373 | |
| 374 # Export the database and the graphs | |
| 375 procs = [Process(target=DB_write,args=(x[0],x[1],x[2],x[3],2)) for x in n_con_data] | |
| 376 procs.extend([Process(target=DB_write,args=(x[0],x[1],x[2],x[3],2)) for x in n_tre_data]) | |
| 377 procs.extend([Process(target=logo_seq_red,args=(merg_nam_n_control_group,'c',args.group1))]) | |
| 378 procs.extend([Process(target=logo_seq_red,args=(merg_nam_n_treated_group,'t',args.group2))]) | |
| 379 procs.extend([Process(target=pie_non_temp,args=(merg_nam_control_group,merg_nam_n_control_group,merg_nam_treated_group,merg_nam_n_treated_group,con_unmap_seq.value,tre_unmap_seq.value,con_unmap_counts.value,tre_unmap_counts.value,args.group1,args.group2))]) | |
| 380 | |
| 381 [p.start() for p in procs] | |
| 382 [p.join() for p in procs] | |
| 383 | |
| 384 procs1 = Process(target=pdf_before_DE,args=(args.anal,args.group1,args.group2)) | |
| 385 procs1.start() | |
| 386 | |
| 387 [x.join() for x in ps_ap_merg_dupes] | |
| 388 n_control_group=list(n_con_list) | |
| 389 n_treated_group=list(n_tre_list) | |
| 390 | |
| 391 | |
| 392 # Filters low count mirnas (otpional) | |
| 393 if int(args.per)!=-1: | |
| 394 if int(args.per)>0 and int(args.per)<=100 and int(args.count)>0: | |
| 395 | |
| 396 n_fil_con_group=manager.list() | |
| 397 n_fil_tre_group=manager.list() | |
| 398 | |
| 399 ps_low_counts = Process(target=filter_low_counts,args=(n_control_group,n_treated_group,n_fil_con_group,n_fil_tre_group,args.per,args.count)) | |
| 400 ps_low_counts.start() | |
| 401 ps_low_counts.join() | |
| 402 | |
| 403 n_fil_con_group=list(n_fil_con_group) | |
| 404 n_fil_tre_group=list(n_fil_tre_group) | |
| 405 | |
| 406 else: | |
| 407 sys.exit("Not acceptable values for filter") | |
| 408 | |
| 409 if "n_fil_con_group" not in locals() or "n_fil_con_group" not in globals(): | |
| 410 n_fil_con_group=n_control_group | |
| 411 n_fil_tre_group=n_treated_group | |
| 412 | |
| 413 ps_write = Process(target=write_main,args=(n_control_group, n_treated_group,n_fil_con_group, n_fil_tre_group, n_con_file_order, n_tre_file_order,2,args.group1,args.group2,args.per)) | |
| 414 ps_write.start() | |
| 415 | |
| 416 ps1_matrix = [Process(target=nontemp_counts_to_diff,args=(n_con_file_order,n_fil_con_group,con_file_order,fil_con_group,"Diff/n_temp_con/"))] | |
| 417 ps1_matrix.extend([Process(target=nontemp_counts_to_diff,args=(n_tre_file_order,n_fil_tre_group,tre_file_order,fil_tre_group,"Diff/n_temp_tre/"))]) | |
| 418 [p.start() for p in ps1_matrix] | |
| 419 | |
| 420 ps_write.join() | |
| 421 [p.join() for p in ps1_matrix] | |
| 422 procs1.join() | |
| 423 print('Running time: {} seconds'.format(round(time.time() - starttime,2))) | |
| 424 |
