@@ -343,38 +343,84 @@ convertMaskingFile(uint64_t numberOfSeqs,
343343template <typename TIndex, typename TText, typename TFibre>
344344inline void
345345createIndexActual (TIndex & index,
346- TText const & text,
347- TFibre const &,
348- SaAdvancedSort<MergeSortTag> const &)
346+ TText const & text,
347+ TFibre const &,
348+ SaAdvancedSort<MergeSortTag> const &,
349+ bool print)
349350{
350351 ComparisonCounter<TText, std::true_type> counter (text);
351- indexCreate (index, text, TFibre (), [&counter] () { counter.inc (); });
352- printProgressBar (counter._lastPercent , 100 );
352+
353+ if (print)
354+ {
355+ indexCreate (index, text, TFibre (), [&counter] () { counter.inc (); });
356+ printProgressBar (counter._lastPercent , 100 );
357+ }
358+ else
359+ {
360+ indexCreate (index, text, TFibre (), [] () {});
361+ }
353362}
354363
355364template <typename TIndex, typename TText, typename TFibre>
356365inline void
357366createIndexActual (TIndex & index,
358- TText const & text,
359- TFibre const &,
360- SaAdvancedSort<QuickSortBucketTag> const &)
367+ TText const & text,
368+ TFibre const &,
369+ SaAdvancedSort<QuickSortBucketTag> const &,
370+ bool print)
361371{
362- uint64_t _lastPercent = 0 ;
363- indexCreate (index, text, TFibre (),
364- [&_lastPercent] (uint64_t curPerc)
365- {
366- if (TID == 0 )
367- printProgressBar (_lastPercent, curPerc);
368- });
369- printProgressBar (_lastPercent, 100 );
372+ if (print)
373+ {
374+ uint64_t _lastPercent = 0 ;
375+
376+ indexCreate (index, text, TFibre (),
377+ [&_lastPercent] (uint64_t curPerc)
378+ {
379+ SEQAN_OMP_PRAGMA (critical (progressBar))
380+ printProgressBar (_lastPercent, curPerc);
381+ });
382+ printProgressBar (_lastPercent, 100 );
383+ }
384+ else
385+ {
386+ indexCreate (index, text, TFibre (), [] (uint64_t ) {});
387+ }
388+ }
389+
390+ // same as above, TODO templatize more intelligently
391+ template <typename TIndex, typename TText, typename TFibre>
392+ inline void
393+ createIndexActual (TIndex & index,
394+ TText const & text,
395+ TFibre const &,
396+ SaAdvancedSort<InPlaceRadixTag> const &,
397+ bool print)
398+ {
399+ if (print)
400+ {
401+ uint64_t _lastPercent = 0 ;
402+ indexCreate (index, text, TFibre (),
403+ [&_lastPercent] (uint64_t curPerc)
404+ {
405+ // SEQAN_OMP_PRAGMA(critical(progressBar))
406+ if (TID == 0 )
407+ printProgressBar (_lastPercent, curPerc);
408+ });
409+ printProgressBar (_lastPercent, 100 );
410+ }
411+ else
412+ {
413+ indexCreate (index, text, TFibre (), [] (uint64_t ) {});
414+ }
370415}
371416
372417template <typename TIndex, typename TText, typename TFibre, typename TAlgo>
373418inline void
374419createIndexActual (TIndex & index,
375- TText const & text,
376- TFibre const &,
377- TAlgo const &)
420+ TText const & text,
421+ TFibre const &,
422+ TAlgo const &,
423+ bool ) // default can't print progress anyway
378424{
379425 indexCreate (index, text, TFibre (), [] () {});
380426}
@@ -419,10 +465,9 @@ generateIndexAndDump(StringSet<TString, TSpec> & seqs,
419465 FibreSALF,
420466 FibreSA>::type;
421467 static bool constexpr
422- hasProgress = std::is_same<TIndexSpecSpec,
423- SaAdvancedSort<QuickSortBucketTag>>::value
424- || std::is_same<TIndexSpecSpec,
425- SaAdvancedSort<MergeSortTag>>::value;
468+ hasProgress = std::is_same<TIndexSpecSpec, SaAdvancedSort<QuickSortBucketTag>>::value ||
469+ std::is_same<TIndexSpecSpec, SaAdvancedSort<MergeSortTag>>::value ||
470+ std::is_same<TIndexSpecSpec, SaAdvancedSort<InPlaceRadixTag>>::value;
426471
427472// using TCountPartial = std::is_same<TIndexSpecSpec,
428473// SaAdvancedSort<MergeSortTag>>;
@@ -455,12 +500,7 @@ generateIndexAndDump(StringSet<TString, TSpec> & seqs,
455500 // instantiate SA
456501
457502 // create SA with progressCallback function
458- if (options.verbosity >= 1 )
459- createIndexActual (dbIndex, redSubjSeqs, TFullFibre (),
460- TIndexSpecSpec ());
461- else // don't print progress (independent of algo)
462- createIndexActual (dbIndex, redSubjSeqs, TFullFibre (),
463- Nothing ());
503+ createIndexActual (dbIndex, redSubjSeqs, TFullFibre (), TIndexSpecSpec (), (options.verbosity >= 1 ));
464504
465505 // instantiate potential rest
466506// std::cout << "\nActualNumComparisons: " << counter._comparisons
0 commit comments