Skip to content

Commit

Permalink
Prevent new fit model from overriding old ws
Browse files Browse the repository at this point in the history
Previously the workspaces for the y-space fit were being overwritten
when the fitting model changed. This change changes the name of the workspace
which makes sure the workspaces do not get overwritten.
  • Loading branch information
GuiMacielPereira committed Dec 10, 2024
1 parent 341e027 commit 1ac1524
Showing 1 changed file with 10 additions and 16 deletions.
26 changes: 10 additions & 16 deletions src/mvesuvio/analysis_fitting.py
Original file line number Diff line number Diff line change
Expand Up @@ -580,9 +580,10 @@ def constrFunc(*pars): # Constrain physical model before convolution
dataYSigma *= chi2 # Weight the confidence band
Residuals = dataY - dataYFit

wsYSpaceSym = CloneWorkspace(wsYSpaceSym, OutputWorkspace=wsYSpaceSym.name()+'_minuit_'+yFitIC.fitting_model)
# Create workspace to store best fit curve and errors on the fit
wsMinFit = createFitResultsWorkspace(
wsYSpaceSym, dataX, dataY, dataE, dataYFit, dataYSigma, Residuals
wsYSpaceSym, dataX, dataY, dataE, dataYFit, dataYSigma, Residuals
)
saveMinuitPlot(yFitIC, wsMinFit, m)

Expand Down Expand Up @@ -851,23 +852,16 @@ def ndata(self):


def createFitResultsWorkspace(
wsYSpaceSym, dataX, dataY, dataE, dataYFit, dataYSigma, Residuals
wsYSpaceSym, dataX, dataY, dataE, dataYFit, dataYSigma, Residuals
):
"""Creates workspace similar to the ones created by Mantid Fit."""

ws_fit_profile = CreateWorkspace(
DataX=dataX,
DataY=dataY,
DataE=dataE,
NSpec=1,
OutputWorkspace=wsYSpaceSym.name() + "_minuit",
)
ws_fit_complete = CreateWorkspace(
DataX=np.concatenate((dataX, dataX, dataX)),
DataY=np.concatenate((dataY, dataYFit, Residuals)),
DataE=np.concatenate((dataE, dataYSigma, np.zeros(len(dataE)))),
NSpec=3,
OutputWorkspace=wsYSpaceSym.name() + "_minuit_Workspace",
OutputWorkspace=wsYSpaceSym.name() + "_Workspace",
)
return ws_fit_complete

Expand Down Expand Up @@ -896,7 +890,7 @@ def saveMinuitPlot(yFitIC, wsMinuitFit, mObj):

def createCorrelationTableWorkspace(wsYSpaceSym, parameters, corrMatrix):
tableWS = CreateEmptyTableWorkspace(
OutputWorkspace=wsYSpaceSym.name() + "_minuit_NormalizedCovarianceMatrix"
OutputWorkspace=wsYSpaceSym.name() + "_NormalizedCovarianceMatrix"
)
tableWS.setTitle("Minuit Fit")
tableWS.addColumn(type="str", name="Name")
Expand Down Expand Up @@ -1178,7 +1172,7 @@ def createFitParametersTableWorkspace(
):
# Create Parameters workspace
tableWS = CreateEmptyTableWorkspace(
OutputWorkspace=wsYSpaceSym.name() + "_minuit_Parameters"
OutputWorkspace=wsYSpaceSym.name() + "_Parameters"
)
tableWS.setTitle("Minuit Fit")
tableWS.addColumn(type="str", name="Name")
Expand Down Expand Up @@ -1267,7 +1261,7 @@ def fitProfileMantidFit(yFitIC, wsYSpaceSym, wsRes):
)

suffix = 'lm' if minimizer=="Levenberg-Marquardt" else minimizer.lower()
outputName = wsYSpaceSym.name() + "_" + suffix
outputName = wsYSpaceSym.name() + "_" + suffix + "_" + yFitIC.fitting_model
CloneWorkspace(InputWorkspace=wsYSpaceSym, OutputWorkspace=outputName)

Fit(
Expand Down Expand Up @@ -1337,19 +1331,19 @@ def __init__(self, ic, yFitIC, wsFinalName, wsYSpaceAvgName):
poptList = []
perrList = []
try:
wsFitMinuit = mtd[wsJoYAvg.name() + "_minuit_Parameters"]
wsFitMinuit = mtd[wsJoYAvg.name() + "_minuit_" + yFitIC.fitting_model + "_Parameters"]
poptList.append(wsFitMinuit.column("Value"))
perrList.append(wsFitMinuit.column("Error"))
except:
pass
try:
wsFitLM = mtd[wsJoYAvg.name() + "_lm_Parameters"]
wsFitLM = mtd[wsJoYAvg.name() + "_lm_" + yFitIC.fitting_model + "_Parameters"]
poptList.append(wsFitLM.column("Value"))
perrList.append(wsFitLM.column("Error"))
except:
pass
try:
wsFitSimplex = mtd[wsJoYAvg.name() + "_simplex_Parameters"]
wsFitSimplex = mtd[wsJoYAvg.name() + "_simplex_" + yFitIC.fitting_model + "_Parameters"]
poptList.append(wsFitSimplex.column("Value"))
perrList.append(wsFitSimplex.column("Error"))
except:
Expand Down

0 comments on commit 1ac1524

Please sign in to comment.