@@ -95,6 +95,7 @@ def eval_contigs(ref_path, contig_path, temp_folder, generate_kmer_spectrum=Fals
9595
9696 avg_accuracy_overall = 0.0 ;
9797 avg_id_overall = 0.0 ;
98+ num_valid_contigs = 0 ;
9899
99100 single_contig_path = '%s/singlecontig.fasta' % (temp_folder );
100101 for i in xrange (0 , len (seqs_contigs )):
@@ -108,6 +109,7 @@ def eval_contigs(ref_path, contig_path, temp_folder, generate_kmer_spectrum=Fals
108109 ### Run nucmer to align the contig to the reference, also, filter the delta file and generate alignment coordinates.
109110 nucmer_out_prefix = '%s/nucmer' % (temp_folder );
110111 log ('Running MUMmer on contig: "%s"' % (contig_name ), sys .stderr , silent = silent );
112+ log ('Contig length: %d' % (len (contig_seq )), sys .stderr , silent = silent );
111113 command = '%s --maxmatch --extend -p %s %s %s; delta-filter -r -q %s.delta > %s.filt.delta; show-coords -r -c %s.filt.delta > %s.filt.coords' % \
112114 (NUCMER_PATH , nucmer_out_prefix , ref_path , single_contig_path , nucmer_out_prefix , nucmer_out_prefix , nucmer_out_prefix , nucmer_out_prefix );
113115 [rc , rstdout , rstderr ] = execute_command_with_ret (DRY_RUN , command , silent = True );
@@ -161,17 +163,25 @@ def eval_contigs(ref_path, contig_path, temp_folder, generate_kmer_spectrum=Fals
161163 avg_accuracy_contig += accuracy ;
162164 avg_id_contig += frag [7 ];
163165
164- avg_accuracy_contig /= float (len (frags ));
165- avg_id_contig /= float (len (frags ));
166- log ('Average ID for contig "%s": %f%%' % (contig_name , avg_id_contig ), sys .stderr , silent = silent );
167- log ('Average accuracy for contig "%s": %f%%' % (contig_name , 100.0 * avg_accuracy_contig ), sys .stderr , silent = silent );
168- log ('' , sys .stderr , silent = silent );
166+ if (len (frags ) > 0 ):
167+ avg_accuracy_contig /= float (len (frags ));
168+ avg_id_contig /= float (len (frags ));
169+ log ('Average ID for contig "%s": %f%%' % (contig_name , avg_id_contig ), sys .stderr , silent = silent );
170+ log ('Average accuracy for contig "%s": %f%%' % (contig_name , 100.0 * avg_accuracy_contig ), sys .stderr , silent = silent );
171+ log ('' , sys .stderr , silent = silent );
172+
173+ avg_accuracy_overall += avg_accuracy_contig ;
174+ avg_id_overall += avg_id_contig ;
175+ num_valid_contigs += 1 ;
176+ else :
177+ log ('ERROR: There are no frags for contig "s"! Continuing, will not be taken into account.' % (contig_name ), sys .stderr , silent = silent );
169178
170- avg_accuracy_overall += avg_accuracy_contig ;
171- avg_id_overall += avg_id_contig ;
172179
173- avg_accuracy_overall /= float (len (seqs_contigs ));
174- avg_id_overall /= float (len (seqs_contigs ));
180+ if (num_valid_contigs > 0 ):
181+ avg_accuracy_overall /= float (num_valid_contigs );
182+ avg_id_overall /= float (num_valid_contigs );
183+ else :
184+ log ('ERROR: There are no valid contigs in file "%s"! None of the contigs had valid MUMmer alignments.\n ' % (contig_path ), sys .stderr , silent = silent );
175185
176186 log ('Draft assembly: "%s"' % (contig_path ), sys .stderr , silent = silent );
177187 log ('Overall average ID for the draft assembly: %f%%' % (avg_id_overall ), sys .stderr , silent = silent );
0 commit comments