Mantid
Loading...
Searching...
No Matches
FitScriptGeneratorPresenter.cpp
Go to the documentation of this file.
1// Mantid Repository : https://github.com/mantidproject/mantid
2//
3// Copyright © 2020 ISIS Rutherford Appleton Laboratory UKRI,
4// NScD Oak Ridge National Laboratory, European Spallation Source,
5// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6// SPDX - License - Identifier: GPL - 3.0 +
11
13#include "MantidAPI/IFunction.h"
15
16#include <algorithm>
17#include <iterator>
18#include <sstream>
19#include <stdexcept>
20
21using namespace Mantid::API;
22
24
26 QStringList const &workspaceNames, double startX, double endX)
27 : m_warnings(), m_view(view), m_model(model) {
30 setWorkspaces(workspaceNames, startX, endX);
31}
32
34
35void FitScriptGeneratorPresenter::notifyPresenter(ViewEvent const &event, [[maybe_unused]] std::string const &arg1,
36 [[maybe_unused]] std::string const &arg2) {
37 switch (event) {
38 case ViewEvent::ADSDeleteEvent:
40 return;
41 case ViewEvent::ADSClearEvent:
43 return;
44 case ViewEvent::ADSRenameEvent:
45 handleADSRenameEvent(arg1, arg2);
46 return;
47 case ViewEvent::RemoveDomainClicked:
49 return;
50 case ViewEvent::AddDomainClicked:
52 return;
53 case ViewEvent::StartXChanged:
55 return;
56 case ViewEvent::EndXChanged:
58 return;
59 case ViewEvent::SelectionChanged:
61 return;
62 case ViewEvent::FunctionRemoved:
64 return;
65 case ViewEvent::FunctionAdded:
67 return;
68 case ViewEvent::FunctionReplaced:
70 return;
71 case ViewEvent::ParameterChanged:
73 return;
74 case ViewEvent::AttributeChanged:
76 return;
77 case ViewEvent::ParameterTieChanged:
78 handleParameterTieChanged(arg1, arg2);
79 return;
80 case ViewEvent::ParameterConstraintRemoved:
82 return;
83 case ViewEvent::ParameterConstraintChanged:
85 return;
86 case ViewEvent::EditLocalParameterClicked:
88 return;
89 case ViewEvent::EditLocalParameterFinished:
91 return;
92 case ViewEvent::OutputBaseNameChanged:
94 return;
95 case ViewEvent::GenerateScriptToFileClicked:
97 return;
98 case ViewEvent::GenerateScriptToClipboardClicked:
100 return;
101 default:
102 throw std::runtime_error("Failed to notify the FitScriptGeneratorPresenter.");
103 }
104}
105
106void FitScriptGeneratorPresenter::notifyPresenter(ViewEvent const &event, std::vector<std::string> const &vec) {
107 switch (event) {
108 case ViewEvent::GlobalParametersChanged:
110 return;
111 default:
112 throw std::runtime_error("Failed to notify the FitScriptGeneratorPresenter.");
113 }
114}
115
117 switch (event) {
118 case ViewEvent::FittingModeChanged:
119 handleFittingModeChanged(fittingMode);
120 return;
121 default:
122 throw std::runtime_error("Failed to notify the FitScriptGeneratorPresenter.");
123 }
124}
125
127
128void FitScriptGeneratorPresenter::handleADSDeleteEvent(std::string const &workspaceName) {
129 auto const differentWsName = [&](FitDomainIndex index) { return m_view->workspaceName(index) != workspaceName; };
130
131 auto workspaceRows = m_view->allRows();
132 workspaceRows.erase(std::remove_if(workspaceRows.begin(), workspaceRows.end(), differentWsName), workspaceRows.end());
133
134 removeDomains(workspaceRows);
135}
136
138
139void FitScriptGeneratorPresenter::handleADSRenameEvent(std::string const &workspaceName, std::string const &newName) {
140 m_model->renameWorkspace(workspaceName, newName);
141 m_view->renameWorkspace(workspaceName, newName);
142}
143
145
147
148void FitScriptGeneratorPresenter::handleAddDomainAccepted(std::vector<MatrixWorkspace_const_sptr> const &workspaces,
149 FunctionModelSpectra const &workspaceIndices) {
150 if (!workspaces.empty() && !workspaceIndices.empty())
151 addWorkspaces(workspaces, workspaceIndices);
152}
153
163
167
171
175
179
183
189
194
202
207
209 std::string const &constraint) {
212}
213
214void FitScriptGeneratorPresenter::handleGlobalParametersChanged(std::vector<std::string> const &globalParameters) {
215 try {
216 m_model->setGlobalParameters(globalParameters);
217 } catch (std::invalid_argument const &ex) {
218 m_view->displayWarning(ex.what());
219 }
221}
222
224 std::vector<std::string> workspaceNames, domainNames, ties, constraints;
225 std::vector<double> values;
226 std::vector<bool> fixes;
227 insertLocalParameterData(parameter, workspaceNames, domainNames, values, fixes, ties, constraints);
228
229 m_view->openEditLocalParameterDialog(m_model->getAdjustedFunctionIndex(parameter), workspaceNames, domainNames,
230 values, fixes, ties, constraints);
231}
232
234 auto const [parameter, values, fixes, ties, constraints] = m_view->getEditLocalParameterResults();
235
236 auto const domainIndices = getDomainsWithLocalParameter(parameter);
237 for (auto i = 0u; i < values.size(); ++i) {
238 setLocalParameterDataForDomain(domainIndices[i], parameter, values[i], fixes[i], ties[i], constraints[i]);
239 }
240
242}
243
244void FitScriptGeneratorPresenter::handleOutputBaseNameChanged(std::string const &outputBaseName) {
245 m_model->setOutputBaseName(outputBaseName);
246}
247
252
256
260
261void FitScriptGeneratorPresenter::setGlobalTies(std::vector<GlobalTie> const &globalTies) {
262 m_view->setGlobalTies(globalTies);
263}
264
265void FitScriptGeneratorPresenter::setGlobalParameters(std::vector<GlobalParameter> const &globalParameters) {
266 m_view->setGlobalParameters(globalParameters);
267}
268
269void FitScriptGeneratorPresenter::setWorkspaces(QStringList const &workspaceNames, double startX, double endX) {
270 for (auto const &workspaceName : workspaceNames)
271 addWorkspace(workspaceName.toStdString(), startX, endX);
273}
274
275void FitScriptGeneratorPresenter::addWorkspaces(std::vector<MatrixWorkspace_const_sptr> const &workspaces,
276 FunctionModelSpectra const &workspaceIndices) {
277 for (auto const &workspace : workspaces) {
278 auto const maxIndex = workspace->getNumberHistograms() - 1u;
279 for (auto const &workspaceIndex : workspaceIndices) {
280 if (workspaceIndex.value <= maxIndex) {
281 auto const xData = workspace->x(workspaceIndex.value);
282 addWorkspace(workspace, workspaceIndex, xData.front(), xData.back());
283 }
284 }
285 }
287}
288
289void FitScriptGeneratorPresenter::addWorkspace(std::string const &workspaceName, double startX, double endX) {
290 auto &ads = AnalysisDataService::Instance();
291 if (ads.doesExist(workspaceName))
292 addWorkspace(ads.retrieveWS<MatrixWorkspace>(workspaceName), startX, endX);
293}
294
296 double endX) {
297 for (auto index = 0u; index < workspace->getNumberHistograms(); ++index)
299}
300
302 WorkspaceIndex workspaceIndex, double startX, double endX) {
303 addWorkspace(workspace->getName(), workspaceIndex, startX, endX);
304}
305
306void FitScriptGeneratorPresenter::addWorkspace(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
307 double startX, double endX) {
308 try {
309 m_model->addWorkspaceDomain(workspaceName, workspaceIndex, startX, endX);
310 m_view->addWorkspaceDomain(workspaceName, workspaceIndex, startX, endX);
311 } catch (std::invalid_argument const &ex) {
312 m_warnings.emplace_back(ex.what());
313 }
314}
315
316void FitScriptGeneratorPresenter::removeDomains(std::vector<FitDomainIndex> const &domainIndices) {
317 for (auto const &index : domainIndices) {
320 }
321
323}
324
325void FitScriptGeneratorPresenter::updateStartX(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
326 double startX) {
327 if (!m_model->updateStartX(workspaceName, workspaceIndex, startX)) {
329 m_view->displayWarning("The StartX provided must be within the x limits of "
330 "its workspace, and less than the EndX.");
331 }
332}
333
334void FitScriptGeneratorPresenter::updateEndX(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
335 double endX) {
336 if (!m_model->updateEndX(workspaceName, workspaceIndex, endX)) {
338 m_view->displayWarning("The EndX provided must be within the x limits of "
339 "its workspace, and greater than the StartX.");
340 }
341}
342
343void FitScriptGeneratorPresenter::updateParameterValue(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
344 std::string const &parameter, double newValue) {
345 auto const equivalentParameter =
346 m_model->getEquivalentFunctionIndexForDomain(workspaceName, workspaceIndex, parameter);
347 m_model->updateParameterValue(workspaceName, workspaceIndex, equivalentParameter, newValue);
348}
349
350void FitScriptGeneratorPresenter::updateAttributeValue(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
351 std::string const &fullAttribute,
352 IFunction::Attribute const &newValue) {
353 m_model->updateAttributeValue(workspaceName, workspaceIndex, fullAttribute, newValue);
354}
355
356void FitScriptGeneratorPresenter::updateParameterTie(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
357 std::string const &parameter, std::string const &tie) {
358 try {
359 auto const [equivalentParameter, equivalentTie] =
360 convertFunctionIndexOfParameterTie(workspaceName, workspaceIndex, parameter, tie);
361 m_model->updateParameterTie(workspaceName, workspaceIndex, equivalentParameter, equivalentTie);
362 } catch (std::invalid_argument const &ex) {
363 m_warnings.emplace_back(ex.what());
364 }
365}
366
367void FitScriptGeneratorPresenter::removeParameterConstraint(std::string const &workspaceName,
368 WorkspaceIndex workspaceIndex,
369 std::string const &parameter) {
370 m_model->removeParameterConstraint(workspaceName, workspaceIndex, parameter);
371}
372
373void FitScriptGeneratorPresenter::updateParameterConstraint(std::string const &workspaceName,
374 WorkspaceIndex workspaceIndex,
375 std::string const &functionIndex,
376 std::string const &constraint) {
377 auto const equivalentFunctionIndex =
378 m_model->getEquivalentFunctionIndexForDomain(workspaceName, workspaceIndex, functionIndex);
379 m_model->updateParameterConstraint(workspaceName, workspaceIndex, equivalentFunctionIndex, constraint);
380}
381
382void FitScriptGeneratorPresenter::removeFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
383 std::string const &function) {
384 m_model->removeFunction(workspaceName, workspaceIndex, function);
385}
386
387void FitScriptGeneratorPresenter::addFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
388 std::string const &function) {
389 m_model->addFunction(workspaceName, workspaceIndex, function);
390}
391
392void FitScriptGeneratorPresenter::setFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex,
393 std::string const &function) {
394 m_model->setFunction(workspaceName, workspaceIndex, function);
395}
396
398 auto const workspaceName = m_view->workspaceName(domainIndex);
399 auto const workspaceIndex = m_view->workspaceIndex(domainIndex);
400 m_view->setFunction(m_model->getFunction(workspaceName, workspaceIndex));
402}
403
404template <typename GetX, typename UpdateX>
405void FitScriptGeneratorPresenter::updateXLimitForDomain(GetX &&getX, UpdateX &&updateX) {
406 if (m_view->hasLoadedData()) {
407 auto const domainIndex = m_view->currentRow();
408 auto const newValue = std::invoke(std::forward<GetX>(getX), m_view, domainIndex);
409 invokeFunctionForDomain(domainIndex, updateX, newValue);
410 }
411}
412
413template <typename UpdateFunction>
414void FitScriptGeneratorPresenter::updateFunctionStructure(UpdateFunction &&updateFunction,
415 std::string const &function) {
416 if (m_view->hasLoadedData()) {
417 updateFunctionsInModel(updateFunction, function);
418 } else {
419 m_view->displayWarning("Data needs to be loaded using Add Workspace.");
421 }
422}
423
424template <typename UpdateFunction, typename... Args>
425void FitScriptGeneratorPresenter::updateFunctionsInModel(UpdateFunction &&updateFunction, Args... arguments) {
426 for (auto const &rowIndex : getRowIndices()) {
427 invokeFunctionForDomain(rowIndex, updateFunction, arguments...);
428 }
429}
430
431template <typename Function, typename... Args>
433 Args... arguments) {
434 auto const workspaceName = m_view->workspaceName(domainIndex);
435 auto const workspaceIndex = m_view->workspaceIndex(domainIndex);
436
437 std::invoke(std::forward<Function>(func), this, workspaceName, workspaceIndex, arguments...);
438}
439
440std::vector<FitDomainIndex> FitScriptGeneratorPresenter::getRowIndices() const {
442}
443
445 std::vector<std::string> &workspaceNames,
446 std::vector<std::string> &domainNames,
447 std::vector<double> &values, std::vector<bool> &fixes,
448 std::vector<std::string> &ties,
449 std::vector<std::string> &constraints) const {
450 auto domainIndices = m_view->allRows();
451 std::reverse(domainIndices.begin(), domainIndices.end());
452 for (auto const domainIndex : domainIndices) {
453 insertLocalParameterDataForDomain(domainIndex, parameter, workspaceNames, domainNames, values, fixes, ties,
454 constraints);
455 }
456}
457
459 FitDomainIndex domainIndex, std::string const &parameter, std::vector<std::string> &workspaceNames,
460 std::vector<std::string> &domainNames, std::vector<double> &values, std::vector<bool> &fixes,
461 std::vector<std::string> &ties, std::vector<std::string> &constraints) const {
462 if (m_model->hasParameter(domainIndex, parameter)) {
463 workspaceNames.emplace_back(m_view->workspaceName(domainIndex));
464 domainNames.emplace_back(m_model->getDomainName(domainIndex));
465 values.emplace_back(m_model->getParameterValue(domainIndex, parameter));
466 fixes.emplace_back(m_model->isParameterFixed(domainIndex, parameter));
467 ties.emplace_back(m_model->getParameterTie(domainIndex, parameter));
468 constraints.emplace_back(m_model->getParameterConstraint(domainIndex, parameter));
469 }
470}
471
473 std::string const &parameter, double value, bool fix,
474 std::string const &tie,
475 std::string const &constraint) {
476 auto const fullParameter = m_model->getFullParameter(domainIndex, parameter);
477
478 if (m_model->hasParameter(domainIndex, fullParameter)) {
479 m_model->setParameterValue(domainIndex, fullParameter, value);
480 m_model->setParameterTie(domainIndex, fullParameter, tie);
481 m_model->setParameterConstraint(domainIndex, fullParameter, constraint);
482
483 if (tie.empty())
484 m_model->setParameterFixed(domainIndex, fullParameter, fix);
485 }
486}
487
488std::vector<FitDomainIndex>
490 auto const doesNotHaveParameter = [&](FitDomainIndex domainIndex) {
491 return !m_model->hasParameter(domainIndex, m_model->getFullParameter(domainIndex, parameter));
492 };
493
494 auto domainIndices = m_view->allRows();
495 domainIndices.erase(std::remove_if(domainIndices.begin(), domainIndices.end(), doesNotHaveParameter),
496 domainIndices.end());
497 std::reverse(domainIndices.begin(), domainIndices.end());
498 return domainIndices;
499}
500
502 std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &parameter,
503 std::string const &tie) const {
504 auto const equivalentParameter =
505 m_model->getEquivalentFunctionIndexForDomain(workspaceName, workspaceIndex, parameter);
506 auto const equivalentTie = m_model->getEquivalentParameterTieForDomain(workspaceName, workspaceIndex, parameter, tie);
507 return {equivalentParameter, equivalentTie};
508}
509
511 if (!m_warnings.empty()) {
512 std::stringstream ss;
513 std::copy(m_warnings.cbegin(), m_warnings.cend(), std::ostream_iterator<std::string>(ss, "\n"));
514 m_view->displayWarning(ss.str());
515 m_warnings.clear();
516 }
517}
518
519template <typename Generator> void FitScriptGeneratorPresenter::generateFitScript(Generator &&func) const {
520 auto const [valid, message] = m_model->isValid();
521
522 if (!message.empty())
523 m_view->displayWarning(message);
524
525 if (valid)
526 std::invoke(std::forward<Generator>(func), this);
527}
528
530 auto const filepath = m_view->filepath();
531 if (!filepath.empty()) {
533 m_view->setSuccessText("Successfully generated fit script to file '" + filepath + "'");
534 }
535}
536
538 auto const scriptText = m_model->generatePythonFitScript(m_view->fitOptions());
539 if (!scriptText.empty()) {
540 m_view->saveTextToClipboard(scriptText);
541 m_view->setSuccessText("Successfully generated fit script to clipboard");
542 }
543}
544
545} // namespace MantidQt::MantidWidgets
double value
The value of the point.
Definition FitMW.cpp:51
IPeaksWorkspace_sptr workspace
std::map< DeltaEMode::Type, std::string > index
std::vector< T > const * vec
void updateFunctionsInModel(UpdateFunction &&updateFunction, Args... arguments)
void setFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &function)
std::tuple< std::string, std::string > convertFunctionIndexOfParameterTie(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &parameter, std::string const &tie) const
void setGlobalTies(std::vector< GlobalTie > const &globalTies) override
void handleAddDomainAccepted(std::vector< Mantid::API::MatrixWorkspace_const_sptr > const &workspaces, FunctionModelSpectra const &workspaceIndices) override
void updateAttributeValue(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &fullAttribute, Mantid::API::IFunction::Attribute const &newValue)
void notifyPresenter(ViewEvent const &event, std::string const &arg1="", std::string const &arg2="") override
void handleGlobalParametersChanged(std::vector< std::string > const &globalParameters)
void handleADSRenameEvent(std::string const &workspaceName, std::string const &newName)
void addWorkspace(std::string const &workspaceName, double startX, double endX)
void removeDomains(std::vector< FitDomainIndex > const &domainIndices)
void updateFunctionStructure(UpdateFunction &&updateFunction, std::string const &function)
void handleOutputBaseNameChanged(std::string const &outputBaseName)
void invokeFunctionForDomain(FitDomainIndex domainIndex, Function &&func, Args... arguments)
void setWorkspaces(QStringList const &workspaceNames, double startX, double endX)
void updateParameterConstraint(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &functionIndex, std::string const &constraint)
void handleParameterTieChanged(std::string const &parameter, std::string const &tie)
void updateParameterTie(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &parameter, std::string const &tie)
void insertLocalParameterData(std::string const &parameter, std::vector< std::string > &workspaceNames, std::vector< std::string > &domainNames, std::vector< double > &values, std::vector< bool > &fixes, std::vector< std::string > &ties, std::vector< std::string > &constraints) const
void handleParameterConstraintChanged(std::string const &functionIndex, std::string const &constraint)
void removeParameterConstraint(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &parameter)
void setLocalParameterDataForDomain(FitDomainIndex domainIndex, std::string const &parameter, double value, bool fix, std::string const &tie, std::string const &constraint)
void addFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &function)
void setGlobalParameters(std::vector< GlobalParameter > const &globalParameters) override
void updateStartX(std::string const &workspaceName, WorkspaceIndex workspaceIndex, double startX)
void updateEndX(std::string const &workspaceName, WorkspaceIndex workspaceIndex, double endX)
void updateParameterValue(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &parameter, double newValue)
std::vector< FitDomainIndex > getDomainsWithLocalParameter(std::string const &parameter) const
void addWorkspaces(std::vector< Mantid::API::MatrixWorkspace_const_sptr > const &workspaces, FunctionModelSpectra const &workspaceIndices)
void insertLocalParameterDataForDomain(FitDomainIndex domainIndex, std::string const &parameter, std::vector< std::string > &workspaceNames, std::vector< std::string > &domainNames, std::vector< double > &values, std::vector< bool > &fixes, std::vector< std::string > &ties, std::vector< std::string > &constraints) const
void removeFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &function)
FitScriptGeneratorPresenter(IFitScriptGeneratorView *view, IFitScriptGeneratorModel *model, QStringList const &workspaceNames=QStringList(), double startX=0.0, double endX=0.0)
virtual void removeFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &function)=0
virtual void updateParameterTie(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &fullParameter, std::string const &tie)=0
virtual void addFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &function)=0
virtual void updateAttributeValue(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &fullAttribute, Mantid::API::IFunction::Attribute const &newValue)=0
virtual void setParameterTie(FitDomainIndex domainIndex, std::string const &fullParameter, std::string const &tie)=0
virtual std::vector< GlobalParameter > getGlobalParameters() const =0
virtual bool updateStartX(std::string const &workspaceName, WorkspaceIndex workspaceIndex, double startX)=0
virtual void removeParameterConstraint(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &fullParameter)=0
virtual void updateParameterConstraint(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &functionIndex, std::string const &constraint)=0
virtual void addWorkspaceDomain(std::string const &workspaceName, WorkspaceIndex workspaceIndex, double startX, double endX)=0
virtual std::string getEquivalentFunctionIndexForDomain(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &functionIndex) const =0
virtual std::string getParameterConstraint(FitDomainIndex domainIndex, std::string const &fullParameter) const =0
virtual std::string getEquivalentParameterTieForDomain(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &fullParameter, std::string const &fullTie) const =0
virtual void setFittingMode(FittingMode fittingMode)=0
virtual void subscribePresenter(IFitScriptGeneratorPresenter *presenter)=0
virtual std::vector< GlobalTie > getGlobalTies() const =0
virtual std::string generatePythonFitScript(std::tuple< std::string, std::string, std::string, std::string, std::string, bool > const &fitOptions, std::string const &filepath="")=0
virtual bool hasParameter(FitDomainIndex domainIndex, std::string const &fullParameter) const =0
virtual std::string getParameterTie(FitDomainIndex domainIndex, std::string const &fullParameter) const =0
virtual std::string getFullParameter(FitDomainIndex domainIndex, std::string const &parameter) const =0
virtual void renameWorkspace(std::string const &workspaceName, std::string const &newName)=0
virtual void updateParameterValue(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &fullParameter, double newValue)=0
virtual std::string getAdjustedFunctionIndex(std::string const &parameter) const =0
virtual void removeDomain(FitDomainIndex domainIndex)=0
virtual std::tuple< bool, std::string > isValid() const =0
virtual std::string getDomainName(FitDomainIndex domainIndex) const =0
virtual void setGlobalParameters(std::vector< std::string > const &parameters)=0
virtual void setOutputBaseName(std::string const &outputBaseName)=0
virtual bool updateEndX(std::string const &workspaceName, WorkspaceIndex workspaceIndex, double endX)=0
virtual Mantid::API::IFunction_sptr getFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex) const =0
virtual void setParameterFixed(FitDomainIndex domainIndex, std::string const &fullParameter, bool fix)=0
virtual void setParameterConstraint(FitDomainIndex domainIndex, std::string const &fullParameter, std::string const &constraint)=0
virtual void setParameterValue(FitDomainIndex domainIndex, std::string const &fullParameter, double value)=0
virtual void setFunction(std::string const &workspaceName, WorkspaceIndex workspaceIndex, std::string const &function)=0
virtual double getParameterValue(FitDomainIndex domainIndex, std::string const &fullParameter) const =0
virtual bool isParameterFixed(FitDomainIndex domainIndex, std::string const &fullParameter) const =0
virtual std::vector< FitDomainIndex > allRows() const =0
virtual void subscribePresenter(IFitScriptGeneratorPresenter *presenter)=0
virtual void renameWorkspace(std::string const &workspaceName, std::string const &newName)=0
virtual void setSimultaneousMode(bool simultaneousMode)=0
virtual void setGlobalTies(std::vector< GlobalTie > const &globalTies)=0
virtual std::vector< FitDomainIndex > selectedRows() const =0
virtual Mantid::API::IFunction::Attribute attributeValue(std::string const &attribute) const =0
virtual std::tuple< std::string, std::string, std::string, std::string, std::string, bool > fitOptions() const =0
virtual void setSuccessText(std::string const &text)=0
virtual void removeDomain(FitDomainIndex domainIndex)=0
virtual std::string workspaceName(FitDomainIndex index) const =0
virtual void addWorkspaceDomain(std::string const &workspaceName, WorkspaceIndex workspaceIndex, double startX, double endX)=0
virtual FitDomainIndex currentRow() const =0
virtual std::string filepath() const =0
virtual void openEditLocalParameterDialog(std::string const &parameter, std::vector< std::string > const &workspaceNames, std::vector< std::string > const &domainNames, std::vector< double > const &values, std::vector< bool > const &fixes, std::vector< std::string > const &ties, std::vector< std::string > const &constraints)=0
virtual void setGlobalParameters(std::vector< GlobalParameter > const &globalParameter)=0
virtual double endX(FitDomainIndex index) const =0
virtual double startX(FitDomainIndex index) const =0
virtual void displayWarning(std::string const &message)=0
virtual std::tuple< std::string, std::vector< double >, std::vector< bool >, std::vector< std::string >, std::vector< std::string > > getEditLocalParameterResults() const =0
virtual void setFunction(Mantid::API::IFunction_sptr const &function) const =0
virtual WorkspaceIndex workspaceIndex(FitDomainIndex index) const =0
virtual void saveTextToClipboard(std::string const &text) const =0
virtual double parameterValue(std::string const &parameter) const =0
Attribute is a non-fitting parameter.
Definition IFunction.h:285
Base MatrixWorkspace Abstract Class.
std::shared_ptr< const MatrixWorkspace > MatrixWorkspace_const_sptr
shared pointer to the matrix workspace base class (const version)
A struct to impliment strongly typed integers, without implicit conversion.
Definition IndexTypes.h:24