Skip to content

Commit

Permalink
Merge pull request #36389 from robertapplin/0-refactor-by-removing-in…
Browse files Browse the repository at this point in the history
…dividual-analysis-tab-classes

Remove old Data analysis tab classes
MialLewis authored Nov 30, 2023
2 parents 9a5e61c + 75e2a07 commit a35511e
Showing 58 changed files with 832 additions and 1,074 deletions.
35 changes: 1 addition & 34 deletions qt/scientific_interfaces/Indirect/IndirectAddWorkspaceDialog.ui
Original file line number Diff line number Diff line change
@@ -132,40 +132,7 @@
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>pbAdd</sender>
<signal>clicked()</signal>
<receiver>IndirectAddWorkspaceDialog</receiver>
<slot>addData()</slot>
<hints>
<hint type="sourcelabel">
<x>283</x>
<y>157</y>
</hint>
<hint type="destinationlabel">
<x>248</x>
<y>294</y>
</hint>
</hints>
</connection>
<connection>
<sender>pbClose</sender>
<signal>clicked()</signal>
<receiver>IndirectAddWorkspaceDialog</receiver>
<slot>closeDialog()</slot>
<hints>
<hint type="sourcelabel">
<x>358</x>
<y>160</y>
</hint>
<hint type="destinationlabel">
<x>354</x>
<y>227</y>
</hint>
</hints>
</connection>
</connections>
<connections/>
<slots>
<slot>addData()</slot>
<slot>closeDialog()</slot>
Original file line number Diff line number Diff line change
@@ -5,14 +5,15 @@
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once
#include "DllConfig.h"
#include "IAddWorkspaceDialog.h"
#include "ui_ConvFitAddWorkspaceDialog.h"

namespace MantidQt {
namespace CustomInterfaces {
namespace IDA {

class ConvFitAddWorkspaceDialog : public IAddWorkspaceDialog {
class MANTIDQT_INELASTIC_DLL ConvFitAddWorkspaceDialog : public IAddWorkspaceDialog {
Q_OBJECT
public:
explicit ConvFitAddWorkspaceDialog(QWidget *parent);
Original file line number Diff line number Diff line change
@@ -14,6 +14,15 @@ namespace MantidQt::CustomInterfaces::IDA {
ConvFitDataPresenter::ConvFitDataPresenter(IIndirectFitDataModel *model, IIndirectFitDataView *view)
: IndirectFitDataPresenter(model, view) {}

bool ConvFitDataPresenter::addWorkspaceFromDialog(IAddWorkspaceDialog const *dialog) {
if (const auto convDialog = dynamic_cast<ConvFitAddWorkspaceDialog const *>(dialog)) {
addWorkspace(convDialog->workspaceName(), convDialog->workspaceIndices());
setResolution(convDialog->resolutionName());
return true;
}
return false;
}

std::unique_ptr<IAddWorkspaceDialog> ConvFitDataPresenter::getAddWorkspaceDialog(QWidget *parent) const {
auto dialog = std::make_unique<ConvFitAddWorkspaceDialog>(parent);
dialog->setResolutionWSSuffices(getResolutionWSSuffices());
Original file line number Diff line number Diff line change
@@ -20,6 +20,8 @@ class MANTIDQT_INELASTIC_DLL ConvFitDataPresenter : public IndirectFitDataPresen
public:
ConvFitDataPresenter(IIndirectFitDataModel *model, IIndirectFitDataView *view);

bool addWorkspaceFromDialog(IAddWorkspaceDialog const *dialog) override;

signals:
void modelResolutionAdded(std::string const &name, WorkspaceID const &workspaceID);

Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright &copy; 2023 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source,
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#include "DataAnalysisTabFactory.h"

#include "ConvFitDataPresenter.h"
#include "FitTabConstants.h"
#include "FqFitDataPresenter.h"
#include "FqFitModel.h"
#include "FunctionBrowser/ConvFunctionModel.h"
#include "FunctionBrowser/ConvTemplateBrowser.h"
#include "FunctionBrowser/FqFunctionModel.h"
#include "FunctionBrowser/IqtFunctionModel.h"
#include "FunctionBrowser/IqtTemplateBrowser.h"
#include "FunctionBrowser/MSDFunctionModel.h"
#include "IndirectDataAnalysisTab.h"
#include "IndirectFitDataPresenter.h"
#include "IqtFitModel.h"
#include "MSDFitModel.h"

namespace MantidQt::CustomInterfaces::IDA {

DataAnalysisTabFactory::DataAnalysisTabFactory(QTabWidget *tabWidget) : m_tabWidget(tabWidget) {}

IndirectDataAnalysisTab *DataAnalysisTabFactory::makeMSDFitTab(int const index) const {
auto tab = new IndirectDataAnalysisTab(MSDFit::TAB_NAME, MSDFit::HAS_RESOLUTION, m_tabWidget->widget(index));
tab->setupFittingModel<MSDFitModel>();
tab->setupFitPropertyBrowser<SingleFunctionTemplateBrowser, MSDFunctionModel>(MSDFit::HIDDEN_PROPS);
tab->setupFitDataView<IndirectFitDataView>();
tab->setupOutputOptionsPresenter();
tab->setUpFitDataPresenter<IndirectFitDataPresenter>();
tab->setupPlotView();
return tab;
}

IndirectDataAnalysisTab *DataAnalysisTabFactory::makeIqtFitTab(int const index) const {
auto tab = new IndirectDataAnalysisTab(IqtFit::TAB_NAME, IqtFit::HAS_RESOLUTION, m_tabWidget->widget(index));
tab->setupFittingModel<IqtFitModel>();
tab->setupFitPropertyBrowser<IqtTemplateBrowser, IqtFunctionModel>(IqtFit::HIDDEN_PROPS);
tab->setupFitDataView<IndirectFitDataView>();
tab->setupOutputOptionsPresenter(true);
tab->setUpFitDataPresenter<IndirectFitDataPresenter>();
tab->setupPlotView();
return tab;
}

IndirectDataAnalysisTab *DataAnalysisTabFactory::makeConvFitTab(int const index) const {
auto tab = new IndirectDataAnalysisTab(ConvFit::TAB_NAME, ConvFit::HAS_RESOLUTION, m_tabWidget->widget(index));
tab->setupFittingModel<ConvFitModel>();
tab->setupFitPropertyBrowser<ConvTemplateBrowser, ConvFunctionModel>(ConvFit::HIDDEN_PROPS, true);
tab->setupFitDataView<ConvFitDataView>();
tab->setupOutputOptionsPresenter(true);
tab->setUpFitDataPresenter<ConvFitDataPresenter>();
tab->setupPlotView();
return tab;
}

IndirectDataAnalysisTab *DataAnalysisTabFactory::makeFqFitTab(int const index) const {
auto tab = new IndirectDataAnalysisTab(FqFit::TAB_NAME, FqFit::HAS_RESOLUTION, m_tabWidget->widget(index));
tab->setupFittingModel<FqFitModel>();
tab->setupFitPropertyBrowser<SingleFunctionTemplateBrowser, FqFunctionModel>(FqFit::HIDDEN_PROPS);
tab->setupFitDataView<FqFitDataView>();
tab->setupOutputOptionsPresenter();
tab->setUpFitDataPresenter<FqFitDataPresenter>();
tab->setupPlotView(FqFit::X_BOUNDS);
return tab;
}

} // namespace MantidQt::CustomInterfaces::IDA
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright &copy; 2023 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source,
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once

#include <QTabWidget>

namespace MantidQt::CustomInterfaces::IDA {

class IndirectDataAnalysisTab;

class DataAnalysisTabFactory {
public:
explicit DataAnalysisTabFactory(QTabWidget *tabWidget);
IndirectDataAnalysisTab *makeMSDFitTab(int const index) const;
IndirectDataAnalysisTab *makeIqtFitTab(int const index) const;
IndirectDataAnalysisTab *makeConvFitTab(int const index) const;
IndirectDataAnalysisTab *makeFqFitTab(int const index) const;

private:
QTabWidget *m_tabWidget;
};

} // namespace MantidQt::CustomInterfaces::IDA
54 changes: 0 additions & 54 deletions qt/scientific_interfaces/Inelastic/Analysis/FQFitConstants.h

This file was deleted.

118 changes: 118 additions & 0 deletions qt/scientific_interfaces/Inelastic/Analysis/FitTabConstants.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
// Mantid Repository : https://github.com/mantidproject/mantid
//
// Copyright &copy; 2023 ISIS Rutherford Appleton Laboratory UKRI,
// NScD Oak Ridge National Laboratory, European Spallation Source,
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once

#include <map>
#include <string>
#include <unordered_map>

namespace MantidQt::CustomInterfaces::IDA {

static const auto FUNCTION_STRINGS =
std::unordered_map<std::string, std::string>({{"ExpDecay", "E"},
{"StretchExp", "S"},
{"Lorentzian", "L"},
{"StretchedExpFT", "SFT"},
{"TeixeiraWater", "TxWater"},
{"TeixeiraWaterSQE", "TxWater"},
{"FickDiffusionSQE", "FickDiff"},
{"ChudleyElliotSQE", "ChudElliot"},
{"HallRoss", "HallRoss"},
{"HallRossSQE", "HallRoss"},
{"DiffRotDiscreteCircle", "DC"},
{"ElasticDiffRotDiscreteCircle", "EDC"},
{"InelasticDiffRotDiscreteCircle", "IDC"},
{"DiffSphere", "DS"},
{"ElasticDiffSphere", "EDS"},
{"InelasticDiffSphere", "IDS"},
{"IsoRotDiff", "IRD"},
{"ElasticIsoRotDiff", "EIRD"},
{"InelasticIsoRotDiff", "IIRD"},
{"MsdGauss", "Gauss"},
{"MsdPeters", "Peters"},
{"MsdYi", "Yi"},
{"FickDiffusion", "FickDiffusion"},
{"ChudleyElliot", "ChudleyElliot"},
{"EISFDiffCylinder", "EISFDiffCylinder"},
{"EISFDiffSphere", "EISFDiffSphere"},
{"EISFDiffSphereAlkyl", "EISFDiffSphereAlkyl"}});

namespace MSDFit {
static const auto TAB_NAME = "MSDFit";
static const auto HAS_RESOLUTION = false;
static const auto HIDDEN_PROPS =
std::vector<std::string>({"CreateOutput", "LogValue", "PassWSIndexToFunction", "ConvolveMembers",
"OutputCompositeMembers", "OutputWorkspace", "Output", "PeakRadius", "PlotParameter"});

static const auto ALL_FITS =
std::map<std::string, std::string>({{"None", ""},
{"Gauss", "name=MsdGauss,Height=1,Msd=0.05,constraints=(Height>0, Msd>0)"},
{"Peters", "name=MsdPeters,Height=1,Msd=0.05,Beta=1,constraints=(Height>0, "
"Msd>0, Beta>0)"},
{"Yi", "name=MsdYi,Height=1,Msd=0.05,Sigma=1,constraints=(Height>0, Msd>0, "
"Sigma>0)"}});
} // namespace MSDFit

namespace IqtFit {
static const auto TAB_NAME = "IqtFit";
static const auto HAS_RESOLUTION = false;
static const auto HIDDEN_PROPS =
std::vector<std::string>({"CreateOutput", "LogValue", "PassWSIndexToFunction", "ConvolveMembers",
"OutputCompositeMembers", "OutputWorkspace", "Output", "PeakRadius", "PlotParameter"});
} // namespace IqtFit

namespace ConvFit {
static const auto TAB_NAME = "ConvFit";
static const auto HAS_RESOLUTION = true;
static const auto HIDDEN_PROPS = std::vector<std::string>(
{"CreateOutput", "LogValue", "PassWSIndexToFunction", "OutputWorkspace", "Output", "PeakRadius", "PlotParameter"});

} // namespace ConvFit

namespace FqFit {
static const auto TAB_NAME = "FQFit";
static const auto HAS_RESOLUTION = false;
static const auto HIDDEN_PROPS =
std::vector<std::string>({"CreateOutput", "LogValue", "PassWSIndexToFunction", "ConvolveMembers",
"OutputCompositeMembers", "OutputWorkspace", "Output", "PeakRadius", "PlotParameter"});
static const auto X_BOUNDS = std::pair<double, double>{0.0, 2.0};

enum class DataType {
WIDTH,
EISF,
ALL,
};

static const auto WIDTH_FITS = std::map<std::string, std::string>(
{{"None", ""},
{"ChudleyElliot", "name=ChudleyElliot, Tau=1, L=1.5, constraints=(Tau>0, L>0)"},
{"HallRoss", "name=Hallross, Tau=1, L=0.2, constraints=(Tau>0, L>0)"},
{"FickDiffusion", "name=FickDiffusion, D=1, constraints=(D>0)"},
{"TeixeiraWater", "name=TeixeiraWater, Tau=1, L=1.5, constraints=(Tau>0, L>0)"}});

static const auto EISF_FITS = std::map<std::string, std::string>(
{{"None", ""},
{"EISFDiffCylinder", "name=EISFDiffCylinder, A=1, R=1, L=2, constraints=(A>0, R>0, L>0)"},
{"EISFDiffSphere", "name=EISFDiffSphere, A=1, R=1, constraints=(A>0, R>0)"},
{"EISFDiffSphereAlkyl", "name=EISFDiffSphereAlkyl, A=1, Rmin=1, Rmax=2, constraints=(A>0, Rmin>0, Rmax>0)"}});

static const auto ALL_FITS = std::map<std::string, std::string>(
{{"None", ""},
{"ChudleyElliot", "name=ChudleyElliot, Tau=1, L=1.5, constraints=(Tau>0, L>0)"},
{"HallRoss", "name=Hallross, Tau=1, L=0.2, constraints=(Tau>0, L>0)"},
{"FickDiffusion", "name=FickDiffusion, D=1, constraints=(D>0)"},
{"TeixeiraWater", "name=TeixeiraWater, Tau=1, L=1.5, constraints=(Tau>0, L>0)"},
{"EISFDiffCylinder", "name=EISFDiffCylinder, A=1, R=1, L=2, constraints=(A>0, R>0, L>0)"},
{"EISFDiffSphere", "name=EISFDiffSphere, A=1, R=1, constraints=(A>0, R>0)"},
{"EISFDiffSphereAlkyl", "name=EISFDiffSphereAlkyl, A=1, Rmin=1, Rmax=2, constraints=(A>0, Rmin>0, Rmax>0)"}});

static const std::unordered_map<DataType, std::map<std::string, std::string>> availableFits{
{{DataType::WIDTH, WIDTH_FITS}, {DataType::EISF, EISF_FITS}, {DataType::ALL, ALL_FITS}}};

} // namespace FqFit

} // namespace MantidQt::CustomInterfaces::IDA
Original file line number Diff line number Diff line change
@@ -6,14 +6,15 @@
// SPDX - License - Identifier: GPL - 3.0 +
#pragma once

#include "DllConfig.h"
#include "IAddWorkspaceDialog.h"
#include "ui_FqFitAddWorkspaceDialog.h"

namespace MantidQt {
namespace CustomInterfaces {
namespace IDA {

class FqFitAddWorkspaceDialog : public IAddWorkspaceDialog {
class MANTIDQT_INELASTIC_DLL FqFitAddWorkspaceDialog : public IAddWorkspaceDialog {
Q_OBJECT
public:
explicit FqFitAddWorkspaceDialog(QWidget *parent);
Loading

0 comments on commit a35511e

Please sign in to comment.