fix: from debugging #180

Merged
perl_d merged 1 commits from fix/beamline_debugging_260827 into main 2026-08-27 17:09:49 +02:00
5 changed files with 79 additions and 87 deletions
+68 -80
View File
@@ -20,7 +20,6 @@ from aarecommon.math.find_xtal import (
raster_highest_score,
)
from aarecommon.math.raster_grid import grid_to_image_id
from aarecommon.math.simulate_raster import generate_no_beam_scan_result
from aarecommon.models.models import BeamlineStateEnum, MLBoxType
from aarecommon.models.raster_grid import (
CompletedRasterGrid,
@@ -460,89 +459,78 @@ class RasterService:
x = None
y = None
if self.ctx.deps.cfg.simulated_detector:
self.logger.info("Simulated detector mode enabled; using fake raster result.")
scan_result = generate_no_beam_scan_result(request)
com = raster_highest_score(scan_result.images)
target_coor = com.get_com_mm(request)
target_coor_offset = self.ctx.sample_geometry.smargon_nudge(target_coor)
target_smargon = SmargonCoordinate(
sh_mm=request.smargon_top_left.sh_mm + target_coor_offset,
phi_deg=request.smargon_top_left.phi_deg,
chi_deg=request.smargon_top_left.chi_deg,
scan_result = self.ctx.deps.jfjoch.wait_till_done(60)
if scan_result is None:
self.logger.error(
"JFJoch returned no ScanResult for raster",
extra=merge_log_context(
sample_log_context(self.ctx.sample),
raster_request_log_context(request),
{"exp_time_s": request.exp_time_s},
),
)
raise RasterScanException("JFJoch returned no ScanResult for raster")
else:
self.logger.info(
f"Raster scan results from JFJoch: file {scan_result.file_prefix} with images {scan_result.images}"
)
com = raster_highest_score(scan_result.images)
if com is None:
self.logger.info("Calcualted COM is None -> using centre image")
if request.n_x == 1:
x = request.grid_size_mm.x / 2.0
else:
x = ((request.n_x - 1) * request.grid_size_mm.x) / 2.0
y = ((request.n_y - 1) * request.grid_size_mm.y) / 2.0
target_coor_offset = self.ctx.sample_geometry.smargon_nudge(Coordinate(x=x, y=y))
self.logger.info(
"Calculated raster centre offset",
extra=merge_log_context(
sample_log_context(self.ctx.sample),
raster_request_log_context(request),
{
"centre_offset_x_mm": target_coor_offset.x,
"centre_offset_y_mm": target_coor_offset.y,
"centre_offset_z_mm": target_coor_offset.z,
"grid_half_width_x_mm": x,
"grid_half_height_y_mm": y,
"top_left_x_mm": getattr(request.smargon_top_left.sh_mm, "x", None),
"top_left_y_mm": getattr(request.smargon_top_left.sh_mm, "y", None),
"top_left_z_mm": getattr(request.smargon_top_left.sh_mm, "z", None),
},
),
)
else:
scan_result = self.ctx.deps.jfjoch.wait_till_done(60)
if scan_result is None:
self.logger.error(
"JFJoch returned no ScanResult for raster",
extra=merge_log_context(
sample_log_context(self.ctx.sample),
raster_request_log_context(request),
{"exp_time_s": request.exp_time_s},
),
)
raise RasterScanException("JFJoch returned no ScanResult for raster")
com = raster_highest_score(scan_result.images)
if com is None:
self.logger.info("Calcualted COM is None -> using centre image")
if request.n_x == 1:
x = request.grid_size_mm.x / 2.0
else:
x = ((request.n_x - 1) * request.grid_size_mm.x) / 2.0
y = ((request.n_y - 1) * request.grid_size_mm.y) / 2.0
target_coor_offset = self.ctx.sample_geometry.smargon_nudge(
Coordinate(x=x, y=y)
)
self.logger.info(
"Calculated raster centre offset",
extra=merge_log_context(
sample_log_context(self.ctx.sample),
raster_request_log_context(request),
{
"centre_offset_x_mm": target_coor_offset.x,
"centre_offset_y_mm": target_coor_offset.y,
"centre_offset_z_mm": target_coor_offset.z,
"grid_half_width_x_mm": x,
"grid_half_height_y_mm": y,
"top_left_x_mm": getattr(request.smargon_top_left.sh_mm, "x", None),
"top_left_y_mm": getattr(request.smargon_top_left.sh_mm, "y", None),
"top_left_z_mm": getattr(request.smargon_top_left.sh_mm, "z", None),
},
),
)
else:
self.logger.info("Calcualted COM is not None, proceeding")
target_coor = com.get_com_mm(request)
target_coor_offset = self.ctx.sample_geometry.smargon_nudge(target_coor)
self.logger.info(
"Calculated raster centre offset",
extra=merge_log_context(
sample_log_context(self.ctx.sample),
raster_request_log_context(request),
{
"centre_offset_x_mm": target_coor_offset.x,
"centre_offset_y_mm": target_coor_offset.y,
"centre_offset_z_mm": target_coor_offset.z,
"grid_half_width_x_mm": x,
"grid_half_height_y_mm": y,
"top_left_x_mm": getattr(request.smargon_top_left.sh_mm, "x", None),
"top_left_y_mm": getattr(request.smargon_top_left.sh_mm, "y", None),
"top_left_z_mm": getattr(request.smargon_top_left.sh_mm, "z", None),
},
),
)
self.logger.info(f"moving Smargon to grid centre offset {target_coor_offset}")
target_smargon = SmargonCoordinate(
sh_mm=request.smargon_top_left.sh_mm + target_coor_offset,
phi_deg=request.smargon_top_left.phi_deg,
chi_deg=request.smargon_top_left.chi_deg,
self.logger.info("Calcualted COM is not None, proceeding")
target_coor = com.get_com_mm(request)
target_coor_offset = self.ctx.sample_geometry.smargon_nudge(target_coor)
self.logger.info(
"Calculated raster centre offset",
extra=merge_log_context(
sample_log_context(self.ctx.sample),
raster_request_log_context(request),
{
"centre_offset_x_mm": target_coor_offset.x,
"centre_offset_y_mm": target_coor_offset.y,
"centre_offset_z_mm": target_coor_offset.z,
"grid_half_width_x_mm": x,
"grid_half_height_y_mm": y,
"top_left_x_mm": getattr(request.smargon_top_left.sh_mm, "x", None),
"top_left_y_mm": getattr(request.smargon_top_left.sh_mm, "y", None),
"top_left_z_mm": getattr(request.smargon_top_left.sh_mm, "z", None),
},
),
)
self.logger.info(f"moving Smargon to grid centre offset {target_coor_offset}")
target_smargon = SmargonCoordinate(
sh_mm=request.smargon_top_left.sh_mm + target_coor_offset,
phi_deg=request.smargon_top_left.phi_deg,
chi_deg=request.smargon_top_left.chi_deg,
)
self.ctx.deps.devs.smargon_pos = target_smargon
self.ctx.deps.devs.smargon_wait(timeout=180)
+2 -1
View File
@@ -305,7 +305,8 @@ class JFJochWrapper:
if self._simulated:
return None
try:
self._api.wait_till_done_post_with_http_info(timeout=math.ceil(timeout))
res = self._api.wait_till_done_post_with_http_info(timeout=math.ceil(timeout))
logger.info(f"wait_till_done response: {res}")
return self._api.result_scan_get()
except Exception as e:
raise self._jfjoch_error(
@@ -1,3 +1,4 @@
import secrets
from pathlib import Path
from aarecommon.config.beamline import cfg_get
@@ -188,7 +189,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
if is_single_image:
r = RotationScanRequest(
file_prefix=str(add_screening_to_path(self._filename)),
file_prefix=str(add_screening_to_path(self._filename)) + "_" + secrets.token_hex(3),
start_omega_deg=self.start_angle.value,
incr_omega_deg=self.screening_image_angle.value,
wedge_omega_deg=screening_settings["omega_step_deg"],
@@ -200,7 +201,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
)
else:
r = RotationScanRequest(
file_prefix=str(add_screening_to_path(self._filename)),
file_prefix=str(add_screening_to_path(self._filename)) + "_" + secrets.token_hex(3),
start_omega_deg=self.start_angle.value,
wedge_omega_deg=self.screening_image_angle.value,
incr_omega_deg=screening_settings["omega_step_deg"],
@@ -224,7 +225,7 @@ class RotationDataCollectionPanel(ScanSettingsPanel):
logger.error("Cannot run measurement because of check")
return
r = RotationScanRequest(
file_prefix=str(add_data_to_path(self._filename)),
file_prefix=str(add_data_to_path(self._filename)) + "_" + secrets.token_hex(3),
start_omega_deg=self.start_angle.value,
steps=self.image_number(),
incr_omega_deg=self.image_angle.value,
+2 -1
View File
@@ -1,4 +1,5 @@
import math
import secrets
from aarecommon.config.logger import setup_logger
from aarecommon.models.models import CrystalSize, DAQStatusModel, SimpleScanParameters
@@ -410,7 +411,7 @@ class SimpleRotationSettingsPanel(QWidget):
@Slot()
def run_measurement(self):
r = RotationScanRequest(
file_prefix=str(add_data_to_path(self._filename)),
file_prefix=str(add_data_to_path(self._filename)) + "_" + secrets.token_hex(3),
start_omega_deg=self.start_angle_enter.value,
steps=self.n_images,
incr_omega_deg=self.image_angle_enter.value,
@@ -1,4 +1,5 @@
import math
import secrets
from enum import Enum
import numpy as np
@@ -458,7 +459,7 @@ class RasterGridManager(QObject):
grid = RasterGridRequest(
dtz=ag.dtz,
transmission=ag.transmission,
file_prefix=ag.file_prefix,
file_prefix=ag.file_prefix + "_" + secrets.token_hex(3),
exp_time_s=ag.exp_time_s,
n_x=ag.n_x,
n_y=ag.n_y,
@@ -484,7 +485,7 @@ class RasterGridManager(QObject):
grid = RasterGridRequest(
dtz=ag.dtz,
transmission=ag.transmission,
file_prefix=ag.file_prefix,
file_prefix=ag.file_prefix + "_" + secrets.token_hex(3),
exp_time_s=ag.exp_time_s,
n_x=ag.n_x,
n_y=ag.n_y,