From 9f140dc08bdc936149e91b12a32a24347b589b9a Mon Sep 17 00:00:00 2001 From: appleb_m Date: Tue, 4 Nov 2025 15:09:44 +0100 Subject: [PATCH] GUI: rotation_data_collection.py fixedbug where self.sample was initialised not self._sample, if sample is None return to default parameters or if aaredb_params is None/doesn't exist. Also correct transmisison from percentage to decimal --- .../panels/rotation_data_collection.py | 38 +++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/gui/src/aaregui/panels/rotation_data_collection.py b/gui/src/aaregui/panels/rotation_data_collection.py index f77c832e..ca29f728 100644 --- a/gui/src/aaregui/panels/rotation_data_collection.py +++ b/gui/src/aaregui/panels/rotation_data_collection.py @@ -38,7 +38,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self._filename = "" self._last_sample_id = None - self.sample = None + self._sample = None self._params = None self.__omega = 0 @@ -176,11 +176,11 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self.__dose_mgy = time * s.bl.flux_ph_s / (beam_area * kdose) self.__dose_mgy = time * s.bl.flux_ph_s / (beam_area * kdose) self.dose.setText(f"{(self.__dose_mgy / 1e6):.1f}") - if s.sample is not None: + if s.sample is not None and hasattr(s.sample, 'db_id'): self._sample = s.sample self._params = s.sample.aaredb_params if hasattr(s.sample, 'aaredb_params') else None - if self._last_sample_id != self.sample.db_id: + if self._last_sample_id != self._sample.db_id: self.update_data_collection_parameters() @Slot() @@ -196,13 +196,37 @@ class RotationDataCollectionPanel(ScanSettingsPanel): def update_data_collection_parameters(self): - if self._sample is None: + if self._sample is None or self._params is None: + self.start_angle.update_value(0.0) + self.screening_image_angle.update_value(0.5) + self.screening_image_time_enter.update_value(0.1) # default 0.1 s + + self.total_angle.update_value(360.0) + self.image_angle.update_value(0.2) + self.image_time_enter.update_value(0.01) + + try: + + self.transmission_enter.update_value( + self._default_transmission if hasattr(self, "_default_transmission") else 1.0) + except Exception: + pass + try: + self.dtz_enter.update_value(self._default_dtz if hasattr(self, "_default_dtz") else 200.0) + except Exception: + pass + + self._last_sample_id = None + self._params = None + + self.__dose_mgy = 0 + self.dose.setText("0.0") return - # Update the last sample ID to prevent repeated updates + self._last_sample_id = self._sample.db_id - # If no parameters exist, we keep the current (default) values + if self._params is None: return @@ -224,7 +248,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self.high_res_enter.update_value(res_value) if (transmission := getattr(self._params, 'transmission', None)) is not None: - transmission_value = transmission #/ 100.0 if transmission > 1.0 else transmission + transmission_value = transmission / 100.0 if transmission > 1.0 else transmission self._transmission = transmission_value self.transmission_enter.update_value(transmission_value)