Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit bc3574a

Browse files
committed
Handled a case when there were no frags for a contig in evalcontigs.py.
1 parent 17a7f8e commit bc3574a

1 file changed

Lines changed: 19 additions & 9 deletions

File tree

scripts/evalcontigs.py

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)