GUI: update simple panel to correctly send paramerters during automation and to intiailise vA

This commit is contained in:
2025-11-20 09:27:20 +01:00
parent 19858b8fe5
commit 8a0a6ed092
+24 -8
View File
@@ -4,7 +4,7 @@ from PySide6.QtCore import Slot, Qt, Signal
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QFrame, QPushButton, QSpacerItem, QSizePolicy
from aaredaqlib.logger_config import setup_logger
from aaredaqlib.models import DAQStatusModel, SimpleScanParameters
from aaredaqlib.models import DAQStatusModel, SimpleScanParameters, CrystalSize
from aaredaqlib.rotation_scan import RotationScanRequest
from aaregui.panels.rotation_data_collection import add_data_to_path
from aaregui.widgets.number_line_edit import NumberLineEdit
@@ -22,6 +22,7 @@ class SimpleRotationSettingsPanel(QWidget):
self.n_images = 1
self.xtal_size_dose_rate_MGy_s = None
self.xtal_size = CrystalSize(x=0,y=0,z=0)
self.xtal_x = None
self.xtal_y = None
self.xtal_z = None
@@ -34,6 +35,7 @@ class SimpleRotationSettingsPanel(QWidget):
self._temperature = 100
self.__omega = 0
self._wilson_b = None
self.flux_ph_s = None
self.parameters = SimpleScanParameters()
self._prev_params = SimpleScanParameters()
@@ -197,17 +199,18 @@ class SimpleRotationSettingsPanel(QWidget):
self.visible_res_enter.update_value(v)
self.set_visible_resolution(v)
self._wilson_b = s.last_best_b_factor
if self._wilson_b is not None:
self.wilson_b_label.setText(f"{self._wilson_b:.2f}")
xtal_size = s.crystal_size
if xtal_size is not None:
self.xtal_size = s.crystal_size
if self.xtal_size is not None:
# clamp to control limits and update field; this will also trigger recalculation
self.xtal_x = xtal_size.x
self.xtal_y = xtal_size.y
self.xtal_z = xtal_size.z
self.xtal_x = self.xtal_size.x
self.xtal_y = self.xtal_size.y
self.xtal_z = self.xtal_size.z
self.xtal_x_label.setText(f"{self.xtal_x:.2f}")
self.xtal_y_label.setText(f"{self.xtal_y:.2f}")
self.xtal_z_label.setText(f"{self.xtal_z:.2f}")
@@ -216,12 +219,12 @@ class SimpleRotationSettingsPanel(QWidget):
self.beam_size_label.setText(
f"<b>{s.geom.beam_size_mm.x * 1000.0}</b> x <b>{s.geom.beam_size_mm.y * 1000.0}</b>"
)
self.flux_ph_s = s.bl.flux_ph_s
self.flux_label.setText(f"<b>{(s.bl.flux_ph_s / 1e9):.2f}</b>")
if s.diffraction.wavelength_angstrom is None:
self.wavelength_label.setText("<b>N/A</b>")
else:
self.wavelength_label.setText(f"<b>{s.diffraction.wavelength_angstrom:.3f}</b>")
self.update_calculated_labels()
@Slot(float)
@@ -322,11 +325,24 @@ class SimpleRotationSettingsPanel(QWidget):
start_omega_deg=self.start_angle_enter.value,
incr_omega_deg=image_angle,
steps=self.n_images,
transmission=self.transmission
transmission=self.transmission,
last_best_b_factor = self._wilson_b,
crystal_size = self.xtal_size,
flux_ph_s = self.flux_ph_s,
calculated_dose_rate_MGy_s = self.dose_rate_MGy_s,
xtal_size_dose_rate_MGy_s = self.xtal_size_dose_rate_MGy_s,
target_dose_MGy = self.target_dose_MGy,
beam_size_x_um = beam_size_um_x,
beam_size_y_um = beam_size_um_y,
d_vis = d_vis,
d_tar = d_tar
)
#logger.debug("updated labels")
self._prev_params = self.parameters
if self._prev_params != self.parameters:
self.parameters_changed.emit(self.parameters)
logger.debug("emitted parameters")
@Slot()
def run_measurement(self):