diff --git a/gui/src/aaregui/panels/rotation_data_collection.py b/gui/src/aaregui/panels/rotation_data_collection.py index f77c832e..4f4195f5 100644 --- a/gui/src/aaregui/panels/rotation_data_collection.py +++ b/gui/src/aaregui/panels/rotation_data_collection.py @@ -31,18 +31,11 @@ class RotationDataCollectionPanel(ScanSettingsPanel): default_dtz=default_dtz, default_transmission=default_transmission) - self._sample_cell_parameters = None - self._sample_space_group = None - self._sample_pdb_id = None - self._target_dose = None - self._filename = "" - self._last_sample_id = None - self.sample = None - self._params = None self.__omega = 0 self.__dose_mgy = 0 + self._layout.addWidget(QLabel("Start angle", parent=self), 3, 0) self.start_angle = NumberLineEdit(-720, 720.0, 0.0, decimals=3, parent=self) self._layout.addWidget(self.start_angle, 3, 1, 1, 3) @@ -82,7 +75,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self.screening_button.clicked.connect(self.run_screening) self._layout.addWidget(self.screening_button, 8, 0, 1, 6) - self._layout.addWidget(QLabel("
Rotation
", parent=self), 9, 0, 1,6) + self._layout.addWidget(QLabel("
Rotation
", parent=self), 9, 0, 1, 6) self._layout.addWidget(QLabel("Total angle", parent=self), 10, 0) self.total_angle = NumberLineEdit(0, 999.0, 360.0, decimals=3, parent=self) @@ -107,11 +100,9 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self._layout.addWidget(self.dose, 13, 1, 1, 3) self._layout.addWidget(QLabel("MGy", parent=self), 13, 4) - self.reload_params_button = QPushButton("Reload params from DB") - self.reload_params_button.setToolTip("Reload data collection parameters from database") - self.reload_params_button.clicked.connect(self.reload_parameters) + self._layout.removeWidget(self.reload_params_button) self._layout.addWidget(self.reload_params_button, 14, 0, 1, 6) - + self.reload_params_button.setVisible(True) self.measurement_button = QPushButton("Run rotation") self.measurement_button.setStyleSheet("color: rgb(78, 154, 6);") @@ -173,67 +164,19 @@ class RotationDataCollectionPanel(ScanSettingsPanel): beam_area = s.geom.beam_size_mm.x * s.geom.beam_size_mm.y * 1e6 time = self.image_number() * self.image_time_enter.value - 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: - 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: - self.update_data_collection_parameters() @Slot() def update_omega_start(self): self.start_angle.update_value(self.__omega) - @Slot() - def reload_parameters(self): - temp_id = self._last_sample_id - self._last_sample_id = None - self.update_data_collection_parameters() - self._last_sample_id = temp_id - - - def update_data_collection_parameters(self): - if self._sample is None: - 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 - - updates = { - 'totalrange': (self.total_angle, lambda v: float(v)), - 'oscillation': (self.image_angle, None), - 'exposure': (self.image_time_enter, None), - } - - for param_name, (widget, converter) in updates.items(): - value = getattr(self._params, param_name, None) - if value is not None: - widget.update_value(converter(value) if converter else value) - - if (resolution := getattr(self._params, 'targetresolution', None)) is not None: - res_value = resolution - self.set_high_res(res_value) - self._high_res = res_value - 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 - self._transmission = transmission_value - self.transmission_enter.update_value(transmission_value) - - if (target_res := getattr(self._params, 'targetresolution', None)) is not None: - self._high_res = target_res - - self._sample_space_group = getattr(self._params, 'spacegroupnumber', None) - self._sample_cell_parameters = getattr(self._params, 'cellparameters', None) - self._sample_pdb_id = getattr(self._params, 'pdbid', None) - self._target_dose = getattr(self._params, 'dose', None) + def get_parameter_mappings(self): + """Return rotation-specific parameter mappings.""" + return [ + ('totalrange', self.total_angle, lambda v: float(v)), + ('oscillation', self.image_angle, None), + ('exposure', self.image_time_enter, None), + ]