From 5598aed16d6bd3564edd901cc3183d5f3c4bb0f0 Mon Sep 17 00:00:00 2001 From: Thomas Wong Date: Sun, 10 Mar 2024 22:21:25 +1100 Subject: [PATCH] fixed the progress-display issue for PF --- main/phylotesting.cpp | 22 ++++++++++++++-------- utils/progress.cpp | 5 +++-- utils/progress.h | 2 +- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/main/phylotesting.cpp b/main/phylotesting.cpp index 161db2e16..ade799e9e 100644 --- a/main/phylotesting.cpp +++ b/main/phylotesting.cpp @@ -2193,6 +2193,8 @@ void testPartitionModel(Params ¶ms, PhyloSuperTree* in_tree, ModelCheckpoint } size_t num_pairs = closest_pairs.size(); size_t compute_pairs = 0; + progress_display progress(num_pairs, "Calculating subsets"); + progress.setProgressDisplay(true); #ifdef _OPENMP #pragma omp parallel for private(i) schedule(dynamic) if(!params.model_test_and_tree) @@ -2278,13 +2280,14 @@ void testPartitionModel(Params ¶ms, PhyloSuperTree* in_tree, ModelCheckpoint // cout.width(11); // cout << cur_pair.tree_len << " " << cur_pair.set_name; if (num_model >= 10) { - double remain_time = max(total_num_model-num_model, (int64_t)0)*(getRealTime()-start_time)/num_model; - if (remain_time < 0.0) - remain_time = 0.0; - double finish_percent = (double) pair * 100.0 / num_pairs; - cout << " Finished subset " << pair << "/" << num_pairs << " " << finish_percent << " percent done"; - cout << " " << convert_time(getRealTime()-start_time) << " (" - << convert_time(remain_time) << " left) \r" << flush; +// double remain_time = max(total_num_model-num_model, (int64_t)0)*(getRealTime()-start_time)/num_model; +// if (remain_time < 0.0) +// remain_time = 0.0; +// double finish_percent = (double) pair * 100.0 / num_pairs; +// cout << " Finished subset " << pair << "/" << num_pairs << " " << finish_percent << " percent done"; +// cout << " " << convert_time(getRealTime()-start_time) << " (" << convert_time(remain_time) << " left) \r" << flush; + progress += 1; + // progress.reportProgress(getRealTime(), getCPUTime(), false); } // cout << endl; @@ -2296,7 +2299,10 @@ void testPartitionModel(Params ¶ms, PhyloSuperTree* in_tree, ModelCheckpoint } // clear the message previous on this line - cout << blkStr << "\r" << flush; + // cout << blkStr << "\r" << flush; + progress.done(); + progress.hide(); + progress.setProgressDisplay(false); if (better_pairs.size() > 0) { ModelPairSet compatible_pairs; diff --git a/utils/progress.cpp b/utils/progress.cpp index 1d0d2b00b..119223709 100644 --- a/utils/progress.cpp +++ b/utils/progress.cpp @@ -172,13 +172,14 @@ void progress_display::reportProgress(double time, double cpu, bool newline) { } } -progress_display& progress_display::done() { +progress_display& progress_display::done(bool display) { #if _OPENMP #pragma omp critical (io) #endif workDone = totalWorkToDo; isDone = true; - reportProgress(getRealTime(), getCPUTime(), true); + if (display) + reportProgress(getRealTime(), getCPUTime(), true); return *this; } diff --git a/utils/progress.h b/utils/progress.h index 862131036..15153f8b1 100644 --- a/utils/progress.h +++ b/utils/progress.h @@ -33,7 +33,7 @@ class progress_display { progress_display& operator = (double workDoneNow); progress_display& hide (); progress_display& show (); - progress_display& done (); + progress_display& done (bool display = false); void reportProgress(double time, double cpu, bool newline); static void setProgressDisplay(bool displayIt); static bool getProgressDisplay();