From 8a0a6ed092910eb885542d33536bea35b712c0b9 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Thu, 20 Nov 2025 09:27:20 +0100 Subject: [PATCH] GUI: update simple panel to correctly send paramerters during automation and to intiailise vA --- .../aaregui/panels/smart_rotation_panel.py | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/gui/src/aaregui/panels/smart_rotation_panel.py b/gui/src/aaregui/panels/smart_rotation_panel.py index f9f41be9..1963c37c 100644 --- a/gui/src/aaregui/panels/smart_rotation_panel.py +++ b/gui/src/aaregui/panels/smart_rotation_panel.py @@ -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"{s.geom.beam_size_mm.x * 1000.0} x {s.geom.beam_size_mm.y * 1000.0}" ) + self.flux_ph_s = s.bl.flux_ph_s self.flux_label.setText(f"{(s.bl.flux_ph_s / 1e9):.2f}") if s.diffraction.wavelength_angstrom is None: self.wavelength_label.setText("N/A") else: self.wavelength_label.setText(f"{s.diffraction.wavelength_angstrom:.3f}") - 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):