@@ -314,27 +314,23 @@ namespace BloomDBG {
314314 };
315315
316316 /* * Print an intermediate progress message during assembly */
317- void printProgressMessage (AssemblyCounters counters)
317+ void readsProgressMessage (AssemblyCounters counters)
318318 {
319- #pragma omp critical(cerr)
320319 std::cerr
321320 << " Processed " << counters.readsProcessed << " reads"
322- << " , [ solid: " << counters.solidReads
321+ << " , solid reads : " << counters.solidReads
323322 << " (" << std::setprecision (3 ) << (float )100
324- * counters.solidReads / counters.readsProcessed << " %)"
325- << " , all k-mers visited: " << counters.allKmersVisited
323+ * counters.solidReads / counters.readsProcessed << " %)"
324+ << " , visited reads : " << counters.visitedReads
326325 << " (" << std::setprecision (3 ) << (float )100
327- * counters.allKmersVisited / counters.readsProcessed << " %)"
328- << " , all branch k-mers visited: " << counters.allBranchKmersVisited
329- << " (" << std::setprecision (3 ) << (float )100
330- * counters.allBranchKmersVisited / counters.readsProcessed << " %)"
331- << " , non-branching: " << counters.nonBranchingReads
332- << " (" << std::setprecision (3 ) << (float )100
333- * counters.nonBranchingReads / counters.readsProcessed << " %)"
334- << " , non-branching contigs: " << counters.nonBranchingContigs
335- << " (" << std::setprecision (3 ) << (float )100
336- * counters.nonBranchingContigs / counters.readsProcessed << " %)"
337- << " ], assembled " << counters.basesAssembled << " bp in "
326+ * counters.visitedReads / counters.readsProcessed << " %)"
327+ << std::endl;
328+ }
329+
330+ /* * Print an intermediate progress message during assembly */
331+ void basesProgressMessage (AssemblyCounters counters)
332+ {
333+ std::cerr << " Assembled " << counters.basesAssembled << " bp in "
338334 << counters.contigID + 1 << " contigs"
339335 << std::endl;
340336 }
@@ -793,7 +789,7 @@ namespace BloomDBG {
793789 /* skip reads in previously assembled regions */
794790 if (allKmersInBloom (seq, assembledKmerSet)) {
795791#pragma omp atomic
796- counters.allKmersVisited ++;
792+ counters.visitedReads ++;
797793 return ReadRecord (rec.id , RR_ALL_KMERS_VISITED );
798794 }
799795
@@ -955,8 +951,6 @@ namespace BloomDBG {
955951
956952 /* per-thread I/O buffer (size is in bases) */
957953 const size_t SEQ_BUFFER_SIZE = 1000000 ;
958- /* controls frequency of progress messages */
959- const unsigned PROGRESS_STEP = 1000 ;
960954
961955 if (params.verbose )
962956 std::cerr << " Trimming branches " << params.trim
@@ -970,6 +964,18 @@ namespace BloomDBG {
970964
971965 KmerHash visitedBranchKmers;
972966
967+ /*
968+ * Print a progress message whenever `READS_PROGRESS_STEP`
969+ * reads have been processed or `BASES_PROGRESS_STEP`
970+ * bases have been assembled. The purpose of using
971+ * two measures of progess is to show steady updates
972+ * throughout the assembly process.
973+ */
974+
975+ const size_t READS_PROGRESS_STEP = 100000 ;
976+ const size_t BASES_PROGRESS_STEP = 1000000 ;
977+ size_t basesProgressLine = BASES_PROGRESS_STEP ;
978+
973979 while (true )
974980 {
975981 size_t readsUntilCheckpoint = params.readsPerCheckpoint ;
@@ -1005,10 +1011,23 @@ namespace BloomDBG {
10051011 contigEndKmers, visitedBranchKmers,
10061012 params, counters, streams);
10071013
1008- #pragma omp atomic
1009- counters.readsProcessed ++;
1010- if (params.verbose && counters.readsProcessed % PROGRESS_STEP == 0 )
1011- printProgressMessage (counters);
1014+ #pragma omp critical(readsProgress)
1015+ {
1016+ ++counters.readsProcessed ;
1017+ if (params.verbose && counters.readsProcessed
1018+ % READS_PROGRESS_STEP == 0 )
1019+ readsProgressMessage (counters);
1020+ }
1021+
1022+ if (params.verbose )
1023+ #pragma omp critical(basesProgress)
1024+ {
1025+ if (counters.basesAssembled >= basesProgressLine) {
1026+ basesProgressMessage (counters);
1027+ while (counters.basesAssembled >= basesProgressLine)
1028+ basesProgressLine += BASES_PROGRESS_STEP ;
1029+ }
1030+ }
10121031
10131032 if (!params.readLogPath .empty ()) {
10141033#pragma omp critical(readLog)
@@ -1034,7 +1053,8 @@ namespace BloomDBG {
10341053 assert (in.eof ());
10351054
10361055 if (params.verbose ) {
1037- printProgressMessage (counters);
1056+ readsProgressMessage (counters);
1057+ basesProgressMessage (counters);
10381058 std::cerr << " Assembly complete" << std::endl;
10391059 }
10401060
0 commit comments