fix: user values now should persist between samples, only reset to default on start up.
Build and Publish / test (pull_request) Successful in 2m34s
Build and Publish / build (pull_request) Successful in 24s
Build and Publish / Build and Deploy Docs (pull_request) Successful in 40s

This commit is contained in:
2026-07-09 15:14:59 +02:00
parent 5a9d4a2662
commit 8e45fe5ee7
4 changed files with 26 additions and 30 deletions
@@ -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)
+14 -22
View File
@@ -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
+3 -1
View File
@@ -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
@@ -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] = []