From 3f2ecf94cac3920987e7b928320272f84f4abded Mon Sep 17 00:00:00 2001 From: ashmeigh Date: Tue, 28 Jan 2025 12:15:08 +0000 Subject: [PATCH] Display normalized values in spectrum viewer image view --- mantidimaging/gui/windows/spectrum_viewer/model.py | 12 ++++++++++++ .../gui/windows/spectrum_viewer/presenter.py | 7 +++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/mantidimaging/gui/windows/spectrum_viewer/model.py b/mantidimaging/gui/windows/spectrum_viewer/model.py index 5a86e30fab8..ec6e2583b49 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/model.py +++ b/mantidimaging/gui/windows/spectrum_viewer/model.py @@ -130,6 +130,18 @@ def set_stack(self, stack: ImageStack | None) -> None: def set_normalise_stack(self, normalise_stack: ImageStack | None) -> None: self._normalise_stack = normalise_stack + def get_normalized_averaged_image(self) -> np.ndarray | None: + """ + Get the normalized averaged image if both sample and normalization stacks are available. + """ + if self._stack is None or self._normalise_stack is None: + return None + + tof_slice = slice(self.tof_range[0], self.tof_range[1] + 1) + sample_data = self._stack.data[tof_slice].mean(axis=0) + norm_data = self._normalise_stack.data[tof_slice].mean(axis=0) + return np.divide(sample_data, norm_data, out=np.zeros_like(sample_data), where=norm_data != 0) + def get_averaged_image(self) -> np.ndarray | None: """ Get the averaged image from the stack in the model returning as a numpy array diff --git a/mantidimaging/gui/windows/spectrum_viewer/presenter.py b/mantidimaging/gui/windows/spectrum_viewer/presenter.py index 34d141b3bc7..1c4306c8792 100644 --- a/mantidimaging/gui/windows/spectrum_viewer/presenter.py +++ b/mantidimaging/gui/windows/spectrum_viewer/presenter.py @@ -169,9 +169,12 @@ def show_new_sample(self) -> None: Show the new sample in the view and update the spectrum and image view accordingly. Resets the ROIs. """ - - averaged_image = self.model.get_averaged_image() + if self.view.normalisation_enabled(): + averaged_image = self.model.get_normalized_averaged_image() + else: + averaged_image = self.model.get_averaged_image() assert averaged_image is not None + self.view.set_image(averaged_image) self.view.spectrum_widget.spectrum_plot_widget.add_range(*self.model.tof_plot_range) self.view.spectrum_widget.spectrum_plot_widget.set_image_index_range_label(*self.model.tof_range)