diff --git a/Core/Fitting/FitSuite.cpp b/Core/Fitting/FitSuite.cpp index 63df8faafdb45d12492d90b37837c887b405a87a..0c225d88b27781c90ac38fe36556e175422803a5 100644 --- a/Core/Fitting/FitSuite.cpp +++ b/Core/Fitting/FitSuite.cpp @@ -156,6 +156,12 @@ FitSuiteStrategies* FitSuite::fitStrategies() return m_impl->fitStrategies(); } +bool FitSuite::isFirstIteration() const +{ + // FIXME temporary method: before refactoring first iteration had index 0 + return m_impl->numberOfIterations() == 1; +} + bool FitSuite::isLastIteration() const { return m_impl->isLastIteration(); diff --git a/Core/Fitting/FitSuite.h b/Core/Fitting/FitSuite.h index a914fdcf2653522c6f5785e5e4b7806d7109091c..c2661c52fbcc9a4efda0caf3be5386e1c7725d66 100644 --- a/Core/Fitting/FitSuite.h +++ b/Core/Fitting/FitSuite.h @@ -127,6 +127,9 @@ public: //! Returns reference to fit parameters FitSuiteStrategies* fitStrategies(); + //! temporary method to check if it is first iteration + bool isFirstIteration() const; + //! if the last iteration is done (used by observers to print summary) bool isLastIteration() const; diff --git a/GUI/coregui/Views/FitWidgets/GUIFitObserver.cpp b/GUI/coregui/Views/FitWidgets/GUIFitObserver.cpp index fd4588837b8adf600ea8a0620bcedde87fdc3d84..4827d3458023ebbab577a41c7976e16978a7f8aa 100644 --- a/GUI/coregui/Views/FitWidgets/GUIFitObserver.cpp +++ b/GUI/coregui/Views/FitWidgets/GUIFitObserver.cpp @@ -18,7 +18,6 @@ #include "FitSuite.h" #include "GUIHelpers.h" #include "MinimizerUtils.h" -#include <QDebug> GUIFitObserver::GUIFitObserver(QObject* parent) : QObject(parent) @@ -44,6 +43,9 @@ void GUIFitObserver::update(FitSuite* subject) if (m_block_update_plots) m_on_finish_notifier.wait(lock, [this]() { return m_block_update_plots; }); + if (subject->isFirstIteration()) + emit logInfoUpdate(QString::fromStdString(subject->setupToString())); + FitProgressInfo info; info.m_chi2 = subject->getChi2(); info.m_iteration_count = (int)subject->numberOfIterations(); @@ -51,11 +53,12 @@ void GUIFitObserver::update(FitSuite* subject) emit progressInfoUpdate(info); + if (subject->isLastIteration()) + emit logInfoUpdate(reportToString(subject)); + m_simData.reset(subject->simulationResult().data()); emit plotsUpdate(); - if (subject->isLastIteration()) - emit logInfoUpdate(reportToString(subject)); } //! Returns true if data could be plotted, when there are resources for it. @@ -66,7 +69,9 @@ bool GUIFitObserver::is_suitable_iteration(FitSuite* fitSuite) return false; int n_iter = static_cast<int>(fitSuite->numberOfIterations()); - return n_iter == 0 || n_iter % m_update_interval == 0 || n_iter == fitSuite->isLastIteration(); + return n_iter == fitSuite->isFirstIteration() || + n_iter % m_update_interval == 0 || + fitSuite->isLastIteration(); } //! Returns true if given iteration should be obligary plotted.