Skip to content

Commit 6499fcb

Browse files
committed
fix issue with mismatched peaklists at assessment time
1 parent a00a324 commit 6499fcb

File tree

5 files changed

+16
-8
lines changed

5 files changed

+16
-8
lines changed

src/snapred/backend/dao/request/CalibrationAssessmentRequest.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ class CalibrationAssessmentRequest(BaseModel):
3737
default_factory=lambda: Pair.model_validate(Config["calibration.parameters.default.FWHMMultiplier"])
3838
)
3939
maxChiSq: float = Field(default_factory=lambda: Config["constants.GroupDiffractionCalibration.MaxChiSq"])
40+
combinedPixelMask: WorkspaceName | None = None
4041

4142
@field_validator("fwhmMultipliers", mode="before")
4243
@classmethod

src/snapred/backend/recipe/algorithm/FitMultiplePeaksAlgorithm.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,11 @@ def PyExec(self):
7878
)
7979
self.chopIngredients(reducedPeakList)
8080
self.unbagGroceries()
81+
82+
numHisto = self.mantidSnapper.mtd[self.inputWorkspaceName].getNumberHistograms()
83+
if numHisto < len(self.groupIDs):
84+
raise ValueError(f"Number of histograms and number of GroupPeakLists do not match: {numHisto} vs {len(self.groupIDs)}")
85+
8186

8287
for index, groupID in enumerate(self.groupIDs):
8388
spectrumInfo = self.mantidSnapper.mtd[self.inputWorkspaceName].spectrumInfo()
@@ -86,9 +91,7 @@ def PyExec(self):
8691
raise ValueError(
8792
f"Spectrum with NO DETECTORS encountered on {self.inputWorkspaceName} at index {index}"
8893
)
89-
if index >= numHisto or spectrumInfo.isMasked(index):
90-
continue
91-
94+
9295
tmpSpecName = mtd.unique_name(prefix=f"__tmp_fitspec_{index}_")
9396
outputNameTmp = mtd.unique_name(prefix=f"__tmp_fitdiag_{index}_")
9497
outputNamesTmp = {x: f"{outputNameTmp}{self.outputSuffix[x]}_{index}" for x in FitOutputEnum}

src/snapred/backend/service/CalibrationService.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -688,8 +688,8 @@ def assessQuality(self, request: CalibrationAssessmentRequest):
688688
maxChiSq=request.maxChiSq,
689689
state=state,
690690
)
691-
pixelGroup = self.sousChef.prepPixelGroup(farmFresh)
692-
detectorPeaks = self.sousChef.prepDetectorPeaks(farmFresh)
691+
pixelGroup = self.sousChef.prepPixelGroup(farmFresh, pixelMask=request.combinedPixelMask)
692+
detectorPeaks = self.sousChef.prepDetectorPeaks(farmFresh, pixelMask=request.combinedPixelMask)
693693

694694
# TODO: We Need to Fit the Data
695695
fitResults = FitMultiplePeaksRecipe().executeRecipe(

src/snapred/backend/service/SousChef.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -337,11 +337,12 @@ def prepDiffractionCalibrationIngredients(
337337
self, ingredients: FarmFreshIngredients, combinedPixelMask: Optional[WorkspaceName] = None
338338
) -> DiffractionCalibrationIngredients:
339339
self.verifyCalibrationExists(ingredients.runNumber, ingredients.useLiteMode)
340-
340+
pixelGroup=self.prepPixelGroup(ingredients, pixelMask=combinedPixelMask)
341+
groupedPeakLists=self.prepDetectorPeaks(ingredients, pixelMask=combinedPixelMask)
341342
return DiffractionCalibrationIngredients(
342343
runConfig=self.prepRunConfig(ingredients.runNumber),
343-
pixelGroup=self.prepPixelGroup(ingredients, pixelMask=combinedPixelMask),
344-
groupedPeakLists=self.prepDetectorPeaks(ingredients, pixelMask=combinedPixelMask),
344+
pixelGroup=pixelGroup,
345+
groupedPeakLists=groupedPeakLists,
345346
peakFunction=ingredients.peakFunction,
346347
convergenceThreshold=ingredients.convergenceThreshold,
347348
maxOffset=ingredients.maxOffset,

src/snapred/ui/workflow/DiffCalWorkflow.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,8 @@ def _renewFocus(self, groupingIndex):
540540
return response
541541

542542
def _renewFitPeaks(self, peakFunction):
543+
logger.info(f"there are {len(self.ingredients.pixelGroup.groupIDs)} groups, and {len(self.ingredients.groupedPeakLists)} peak lists")
544+
543545
payload = FitMultiplePeaksRequest(
544546
inputWorkspace=self.focusedWorkspace,
545547
outputWorkspaceGroup=self.fitPeaksDiagnostic,
@@ -655,6 +657,7 @@ def _triggerDiffractionCalibration(self, workflowPresenter):
655657
nBinsAcrossPeakWidth=self.nBinsAcrossPeakWidth,
656658
fwhmMultipliers=self.prevFWHM,
657659
maxChiSq=self.maxChiSq,
660+
combinedPixelMask=self.combinedPixelMaskName,
658661
)
659662

660663
response = self.request(path="calibration/assessment", payload=payload)

0 commit comments

Comments
 (0)