Skip to content
Snippets Groups Projects
Commit 666f1867 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

[m.i790] Add button for updating start values when previous fitting cycle is...

[m.i790] Add button for updating start values when previous fitting cycle is done (#790) (Closes #790)

Merging branch 'm.i790'  into 'main'.

See merge request !2149
parents 298865a6 d1edb228
No related branches found
No related tags found
1 merge request!2149Add button for updating start values when previous fitting cycle is done (#790)
Pipeline #120528 passed
......@@ -155,6 +155,21 @@ void FitParameterContainerItem::setValuesInParameterContainer(
}
}
void FitParameterContainerItem::pullValuesFromParameterContainer(
ParameterContainerItem* parameterContainer)
{
ASSERT(parameterContainer);
for (auto* fitPar : fitParameterItems()) {
auto link_list = fitPar->linkItems();
if (link_list.size()) {
FitParameterLinkItem* linkItem = link_list.last(); // update from last added link
if (auto* itemInTuningTree = parameterContainer->findParameterItem(linkItem->link()))
fitPar->setStartValue(itemInTuningTree->valueOfLink());
}
}
}
mumufit::Parameters FitParameterContainerItem::createParameters() const
{
mumufit::Parameters result;
......
......@@ -65,6 +65,8 @@ public:
bool isEmpty();
void setValuesInParameterContainer(const std::vector<double>& values,
class ParameterContainerItem* parameterContainer);
void pullValuesFromParameterContainer(class ParameterContainerItem* parameterContainer);
mumufit::Parameters createParameters() const;
void writeTo(QXmlStreamWriter* w) const;
......
......@@ -165,6 +165,12 @@ void FitSessionController::updateFitParameterValues(const FitProgressInfo& info)
m_jobItem->parameterContainerItem());
}
void FitSessionController::updateStartValuesFromTree()
{
FitParameterContainerItem* fitParContainer = m_jobItem->fitParameterContainerItem();
fitParContainer->pullValuesFromParameterContainer(m_jobItem->parameterContainerItem());
}
void FitSessionController::updateLog(const FitProgressInfo& info)
{
QString message = QString("NCalls:%1 chi2:%2 \n").arg(info.iterationCount()).arg(info.chi2());
......
......@@ -46,6 +46,7 @@ signals:
public slots:
void onStartFittingRequest();
void onStopFittingRequest();
void updateStartValuesFromTree();
private slots:
void onObserverUpdate();
......
......@@ -41,6 +41,9 @@ FitSessionWidget::FitSessionWidget(QWidget* parent)
layout->addWidget(m_tabWidget);
layout->addWidget(m_controlWidget);
connect(m_controlWidget, &RunFitControlWidget::updFromTreePushed, m_fitParametersWidget,
&FitParameterWidget::updateView);
applySettings();
}
......@@ -82,6 +85,8 @@ void FitSessionWidget::setSessionController(FitSessionController* sessionControl
&FitSessionController::onStartFittingRequest);
connect(m_controlWidget, &RunFitControlWidget::stopFittingPushed, m_sessionController,
&FitSessionController::onStopFittingRequest);
connect(m_controlWidget, &RunFitControlWidget::updFromTreePushed, m_sessionController,
&FitSessionController::updateStartValuesFromTree);
}
}
......
......@@ -37,6 +37,7 @@ RunFitControlWidget::RunFitControlWidget(QWidget* parent)
: DataAccessWidget(parent)
, m_startButton(new QPushButton)
, m_stopButton(new QPushButton)
, m_updButton(new QPushButton)
, m_intervalSlider(new QSlider)
, m_updateIntervalLabel(new QLabel)
, m_iterationsCountLabel(new QLabel)
......@@ -53,6 +54,10 @@ RunFitControlWidget::RunFitControlWidget(QWidget* parent)
m_stopButton->setToolTip("Interrupt fitting");
m_stopButton->setMaximumWidth(80);
m_updButton->setText("Update start values");
m_updButton->setToolTip("Set the starting positions to the values from the parameter tree");
m_updButton->setMaximumWidth(130);
m_intervalSlider->setToolTip(slider_tooltip);
m_intervalSlider->setOrientation(Qt::Horizontal);
m_intervalSlider->setRange(0, static_cast<int>(slider_to_interval.size()) - 1);
......@@ -73,6 +78,8 @@ RunFitControlWidget::RunFitControlWidget(QWidget* parent)
layout->addSpacing(5);
layout->addWidget(m_stopButton);
layout->addSpacing(5);
layout->addWidget(m_updButton);
layout->addSpacing(15);
layout->addWidget(m_intervalSlider);
layout->addSpacing(2);
layout->addWidget(m_updateIntervalLabel);
......@@ -81,8 +88,9 @@ RunFitControlWidget::RunFitControlWidget(QWidget* parent)
layout->addWidget(m_iterationsCountLabel);
setLayout(layout);
connect(m_startButton, &QPushButton::clicked, [&]() { startFittingPushed(); });
connect(m_stopButton, &QPushButton::clicked, this, [&]() { stopFittingPushed(); });
connect(m_startButton, &QPushButton::clicked, [&]() { emit startFittingPushed(); });
connect(m_stopButton, &QPushButton::clicked, this, [&]() { emit stopFittingPushed(); });
connect(m_updButton, &QPushButton::clicked, this, [&]() { emit updFromTreePushed(); });
connect(m_intervalSlider, &QSlider::valueChanged, this,
&RunFitControlWidget::onSliderValueChanged);
......
......@@ -37,6 +37,7 @@ public:
signals:
void startFittingPushed();
void stopFittingPushed();
void updFromTreePushed();
public slots:
void onFittingError(const QString& what);
......@@ -57,6 +58,7 @@ private:
QPushButton* m_startButton;
QPushButton* m_stopButton;
QPushButton* m_updButton;
QSlider* m_intervalSlider;
QLabel* m_updateIntervalLabel;
QLabel* m_iterationsCountLabel;
......
......@@ -164,6 +164,11 @@ void FitParameterWidget::onFitParametersSelectionChanged(const QItemSelection& s
}
}
void FitParameterWidget::updateView()
{
m_treeView->update();
}
//! Creates fit parameters for all selected ParameterItem's in tuning widget
void FitParameterWidget::onCreateFitParAction()
......
......@@ -42,6 +42,7 @@ public slots:
void onTuningWidgetContextMenu(const QPoint& point);
void onFitParameterTreeContextMenu(const QPoint& point);
void onFitParametersSelectionChanged(const QItemSelection& selection);
void updateView();
private slots:
void onCreateFitParAction();
......
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