Skip to content
Snippets Groups Projects
Commit 02d49bac authored by Pospelov, Gennady's avatar Pospelov, Gennady
Browse files

More accurate processing of first and last iterations

parent fa6dac6f
No related branches found
No related tags found
No related merge requests found
...@@ -156,6 +156,12 @@ FitSuiteStrategies* FitSuite::fitStrategies() ...@@ -156,6 +156,12 @@ FitSuiteStrategies* FitSuite::fitStrategies()
return m_impl->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 bool FitSuite::isLastIteration() const
{ {
return m_impl->isLastIteration(); return m_impl->isLastIteration();
......
...@@ -127,6 +127,9 @@ public: ...@@ -127,6 +127,9 @@ public:
//! Returns reference to fit parameters //! Returns reference to fit parameters
FitSuiteStrategies* fitStrategies(); 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) //! if the last iteration is done (used by observers to print summary)
bool isLastIteration() const; bool isLastIteration() const;
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "FitSuite.h" #include "FitSuite.h"
#include "GUIHelpers.h" #include "GUIHelpers.h"
#include "MinimizerUtils.h" #include "MinimizerUtils.h"
#include <QDebug>
GUIFitObserver::GUIFitObserver(QObject* parent) GUIFitObserver::GUIFitObserver(QObject* parent)
: QObject(parent) : QObject(parent)
...@@ -44,6 +43,9 @@ void GUIFitObserver::update(FitSuite* subject) ...@@ -44,6 +43,9 @@ void GUIFitObserver::update(FitSuite* subject)
if (m_block_update_plots) if (m_block_update_plots)
m_on_finish_notifier.wait(lock, [this]() { return 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; FitProgressInfo info;
info.m_chi2 = subject->getChi2(); info.m_chi2 = subject->getChi2();
info.m_iteration_count = (int)subject->numberOfIterations(); info.m_iteration_count = (int)subject->numberOfIterations();
...@@ -51,11 +53,12 @@ void GUIFitObserver::update(FitSuite* subject) ...@@ -51,11 +53,12 @@ void GUIFitObserver::update(FitSuite* subject)
emit progressInfoUpdate(info); emit progressInfoUpdate(info);
if (subject->isLastIteration())
emit logInfoUpdate(reportToString(subject));
m_simData.reset(subject->simulationResult().data()); m_simData.reset(subject->simulationResult().data());
emit plotsUpdate(); emit plotsUpdate();
if (subject->isLastIteration())
emit logInfoUpdate(reportToString(subject));
} }
//! Returns true if data could be plotted, when there are resources for it. //! Returns true if data could be plotted, when there are resources for it.
...@@ -66,7 +69,9 @@ bool GUIFitObserver::is_suitable_iteration(FitSuite* fitSuite) ...@@ -66,7 +69,9 @@ bool GUIFitObserver::is_suitable_iteration(FitSuite* fitSuite)
return false; return false;
int n_iter = static_cast<int>(fitSuite->numberOfIterations()); 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. //! Returns true if given iteration should be obligary plotted.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment