GUI: update rotation_panel data collection parameters from database
This commit is contained in:
@@ -31,7 +31,15 @@ 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
|
||||
@@ -99,10 +107,16 @@ 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.addWidget(self.reload_params_button, 14, 0, 1, 6)
|
||||
|
||||
|
||||
self.measurement_button = QPushButton("Run rotation")
|
||||
self.measurement_button.setStyleSheet("color: rgb(78, 154, 6);")
|
||||
self.measurement_button.clicked.connect(self.run_measurement)
|
||||
self._layout.addWidget(self.measurement_button, 14, 0, 1, 6)
|
||||
self._layout.addWidget(self.measurement_button, 15, 0, 1, 6)
|
||||
|
||||
@Slot()
|
||||
def run_screening(self):
|
||||
@@ -159,9 +173,67 @@ 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)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user