From 8e45fe5ee7c08056d0effe6d4f2f7c0097b4f2a3 Mon Sep 17 00:00:00 2001 From: appleb_m Date: Thu, 9 Jul 2026 15:14:59 +0200 Subject: [PATCH] fix: user values now should persist between samples, only reset to default on start up. --- src/aare/gui/panels/raster_data_collection.py | 8 +++-- .../gui/panels/rotation_data_collection.py | 36 ++++++++----------- src/aare/gui/panels/scan_settings_panel.py | 4 ++- .../gui/scan_logic/raster_grid_manager.py | 8 ++--- 4 files changed, 26 insertions(+), 30 deletions(-) diff --git a/src/aare/gui/panels/raster_data_collection.py b/src/aare/gui/panels/raster_data_collection.py index 3ff854fe..59663c3e 100644 --- a/src/aare/gui/panels/raster_data_collection.py +++ b/src/aare/gui/panels/raster_data_collection.py @@ -34,10 +34,12 @@ class RasterDataCollectionPanel(ScanSettingsPanel): self, raster_mgr: RasterGridManager, diffraction: DiffractionGeometry, - default_transmission: float = 1.0, parent=None, ): - super().__init__(diffraction, raster_mgr.active_grid.dtz, default_transmission, parent) + super().__init__(diffraction=diffraction, + default_dtz=raster_mgr.active_grid.dtz, + default_transmission=raster_mgr.active_grid.transmission, + parent=parent) self._previous_sample_was_none_raster = True @@ -152,7 +154,7 @@ class RasterDataCollectionPanel(ScanSettingsPanel): self.auto_button.setStyleSheet("color: rgb(78, 154, 6);") self.auto_button.clicked.connect(self._on_evaluate_auto_clicked) self._layout.addWidget(self.auto_button, 13, 0, 1, 5) - + self._reset_to_defaults() self.update_grid_scan_size() @Slot(float) diff --git a/src/aare/gui/panels/rotation_data_collection.py b/src/aare/gui/panels/rotation_data_collection.py index 81dae846..7e050210 100644 --- a/src/aare/gui/panels/rotation_data_collection.py +++ b/src/aare/gui/panels/rotation_data_collection.py @@ -1,5 +1,6 @@ from pathlib import Path +from aarecommon.config.beamline import cfg_get from aarecommon.config.logger import setup_logger from aarecommon.math.diffraction_geometry import DiffractionGeometry from aarecommon.models.models import BeamlineStateEnum, DAQStatusModel @@ -38,14 +39,13 @@ class RotationDataCollectionPanel(ScanSettingsPanel): super().__init__( parent=parent, diffraction=diffraction, - default_dtz=default_dtz, - default_transmission=default_transmission, + default_dtz=cfg_get("daq.data_collection_settings.default_rotation_settings.dtz", default_dtz), + default_transmission=cfg_get("daq.data_collection_settings.default_rotation_settings.transmission", default_transmission), ) self.__beamline_state = None self.__curr_pgroup = "p11206" self._filename = "" - self._previous_sample_was_none_rotation = True self.__omega = 0 self.__dose_mgy = 0 @@ -71,7 +71,8 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self._layout.addWidget(QLabel("°", parent=self), 5, 4) self._layout.addWidget(QLabel("Image time", parent=self), 6, 0) - self.screening_image_time_enter = NumberLineEdit(0.0005, 10.0, 0.1, decimals=4, parent=self) + default_screening_exp_time = cfg_get("daq.data_collection_settings.default_screening_settings.exp_time_s", 0.1) + self.screening_image_time_enter = NumberLineEdit(0.0005, 10.0, default_screening_exp_time, decimals=4, parent=self) self._layout.addWidget(self.screening_image_time_enter, 6, 1, 1, 3) self._layout.addWidget(QLabel("s", parent=self), 6, 4) @@ -95,20 +96,24 @@ class RotationDataCollectionPanel(ScanSettingsPanel): ) self._layout.addWidget(QLabel("Total angle", parent=self), 10, 0) - self.total_angle = DbOverrideLineEdit(0, 9999.0, default=360.0, decimals=3, parent=self) + default_steps = cfg_get("daq.data_collection_settings.default_rotation_settings.steps", 1800) + default_increment_omega = cfg_get("daq.data_collection_settings.default_rotation_settings.increment_omega_deg", 0.2) + default_total_angle = default_steps*default_increment_omega + self.total_angle = DbOverrideLineEdit(0, 9999.0, default=default_total_angle, decimals=3, parent=self) self._layout.addWidget(self.total_angle, 10, 1, 1, 3) self._layout.addWidget(QLabel("°", parent=self), 10, 4) self._register_override_field(self.total_angle) self._layout.addWidget(QLabel("Image angle", parent=self), 11, 0) - self.image_angle = DbOverrideLineEdit(0, 10.0, default=0.2, decimals=3, parent=self) + self.image_angle = DbOverrideLineEdit(0, 10.0, default=default_increment_omega, decimals=3, parent=self) self._layout.addWidget(self.image_angle, 11, 1, 1, 3) self._layout.addWidget(QLabel("°", parent=self), 11, 4) self._register_override_field(self.image_angle) # TODO add protection on X10SA to prevent too short exposure time/ too high detector rep rate self._layout.addWidget(QLabel("Image time", parent=self), 12, 0) + default_image_exp_time = cfg_get("daq.data_collection_settings.default_rotation_settings.exp_time_s", 0.01) self.image_time_enter = DbOverrideLineEdit( - 0.0005, 10.0, default=0.01, decimals=4, parent=self + 0.0005, 10.0, default=default_image_exp_time, decimals=4, parent=self ) self._layout.addWidget(self.image_time_enter, 12, 1, 1, 3) self._layout.addWidget(QLabel("s", parent=self), 12, 4) @@ -139,7 +144,8 @@ class RotationDataCollectionPanel(ScanSettingsPanel): self.measurement_button.setStyleSheet("color: rgb(78, 154, 6);") self.measurement_button.clicked.connect(self.run_measurement) self._layout.addWidget(self.measurement_button, 16, 0, 1, 6) - + self._reset_to_defaults() + @Slot() def run_screening(self): if self.__beamline_state != BeamlineStateEnum.SampleAlignment: @@ -262,20 +268,6 @@ class RotationDataCollectionPanel(ScanSettingsPanel): else: w.setReadOnly(not can_edit) - if s.sample is None and not self._previous_sample_was_none_rotation: - # The DB-sourced fields (total_angle, image_angle, image_time_enter) - # are reset by the base panel (_reset_to_defaults); only reset the - # screening/start widgets that are not part of the source toggle. - for w in ( - self.start_angle, - self.screening_image_angle, - self.screening_image_time_enter, - ): - w.reset_to_default() - self._previous_sample_was_none_rotation = True - elif s.sample is not None: - self._previous_sample_was_none_rotation = False - self.calculate_measurement_time() if s.session.current_pgroup: self.__curr_pgroup = s.session.current_pgroup diff --git a/src/aare/gui/panels/scan_settings_panel.py b/src/aare/gui/panels/scan_settings_panel.py index f506456e..418c3a8a 100644 --- a/src/aare/gui/panels/scan_settings_panel.py +++ b/src/aare/gui/panels/scan_settings_panel.py @@ -108,6 +108,8 @@ class ScanSettingsPanel(QWidget): self.reload_params_button.clicked.connect(self.reload_parameters) self.reload_params_button.setVisible(False) # Child classes should make it visible + self._reset_to_defaults() + # -- source toggle ----------------------------------------------------- def _build_source_toggle(self) -> QWidget: container = QWidget(self) @@ -194,7 +196,7 @@ class ScanSettingsPanel(QWidget): else: if not self._previous_sample_was_none: logger.info("Sample cleared, resetting parameters to defaults") - self._reset_to_defaults() + #self._reset_to_defaults() self._previous_sample_was_none = True # Mark that sample is now None self._sample = None diff --git a/src/aare/gui/scan_logic/raster_grid_manager.py b/src/aare/gui/scan_logic/raster_grid_manager.py index a088d93c..9eaa02b3 100644 --- a/src/aare/gui/scan_logic/raster_grid_manager.py +++ b/src/aare/gui/scan_logic/raster_grid_manager.py @@ -3,7 +3,7 @@ from enum import Enum from typing import List, Tuple import numpy as np -from aarecommon.config.beamline import get_jfjoch_url, mx_beamline +from aarecommon.config.beamline import get_jfjoch_url, mx_beamline, cfg_get from aarecommon.config.logger import setup_logger from aarecommon.math.coordinate import Coordinate, SmargonCoordinate from aarecommon.math.find_xtal import compute_crystal_score_array @@ -140,9 +140,9 @@ class RasterGridManager(QObject): smargon_top_left=self.__geom.smargon, grid_size_mm=Coordinate(x=0.8 * self.__beam_size_mm.x, y=0.8 * self.__beam_size_mm.y), omega_deg=self.__geom.omega_deg, - exp_time_s=0.02, - transmission=1.0, - dtz=200.0, + exp_time_s=cfg_get("daq.data_collection_settings.default_raster_settings.exp_time_s", 0.01), + transmission=cfg_get("daq.data_collection_settings.default_raster_settings.transmission", 1.0), + dtz=cfg_get("daq.data_collection_settings.default_raster_settings.dtz", 200.0), ) self.__completed_grids: List[CompletedRasterGridElem] = []