DAQ: added new properties to redis including crystal size, b_factor and automation_parameters

This commit is contained in:
2025-11-20 09:09:53 +01:00
parent b40b30c13d
commit 1acb69e5f2
+77 -1
View File
@@ -15,7 +15,7 @@ from aaredaqlib.models import (
SampleShortInfo,
SessionStatus,
BeamlineStateEnum, SessionsStateEnum, SampleShortInfoList, CryojetSettingsModel, ZoomModel,
FluorescenceSpectrumOutputModel
FluorescenceSpectrumOutputModel, CrystalSize, SimpleStrategyInputModel, SimpleScanParameters
)
from aaredaqlib.beamline import MXBeamline
@@ -510,3 +510,79 @@ class BeamlineConfig:
x_pxl = np.polyval(model.coeff_x, zoom)
y_pxl = np.polyval(model.coeff_y, zoom)
return float(x_pxl), float(y_pxl)
@property
def crystal_size(self) -> CrystalSize:
tmp = self.__client.get(f"{self.__bl}:crystal_size")
if tmp is None:
return CrystalSize(x=0,y=0,z=0)
data_dict = json.loads(tmp)
return CrystalSize(**data_dict)
@crystal_size.setter
def crystal_size(self, xtal_size: CrystalSize):
self.__client.set(f"{self.__bl}:crystal_size", xtal_size.model_dump_json())
@property
def last_best_res(self) -> float | None:
tmp = self.__client.get(f"{self.__bl}:last_best_res")
if tmp is None:
return None
return float(tmp)
@last_best_res.setter
def last_best_res(self, best_res: float | None):
if best_res is None:
self.__client.delete(f"{self.__bl}:last_best_res")
else:
self.__client.set(f"{self.__bl}:last_best_res", best_res)
@property
def last_best_b_factor(self) -> float | None:
tmp = self.__client.get(f"{self.__bl}:last_best_b_factor")
if tmp is None:
return None
return float(tmp)
@last_best_b_factor.setter
def last_best_b_factor(self, last_best_b_factor: float | None):
if last_best_b_factor is None:
self.__client.delete(f"{self.__bl}:last_best_b_factor")
else:
self.__client.set(f"{self.__bl}:last_best_b_factor", last_best_b_factor)
@crystal_size.setter
def crystal_size(self, xtal_size: CrystalSize):
self.__client.set(f"{self.__bl}:crystal_size", xtal_size.model_dump_json())
@property
def simple_input_parameters(self) -> SimpleStrategyInputModel | None:
tmp = self.__client.get(f"{self.__bl}:simple_input_params")
if tmp is None:
return None
data_dict = json.loads(tmp)
return SimpleStrategyInputModel(**data_dict)
@simple_input_parameters.setter
def simple_input_parameters(self, input_params:SimpleStrategyInputModel | None):
if input_params is None:
self.__client.delete(f"{self.__bl}:simple_input_params")
else:
self.__client.set(f"{self.__bl}:simple_input_params", input_params.model_dump_json())
@property
def auto_params(self) -> SimpleScanParameters | None:
tmp = self.__client.get(f"{self.__bl}:auto_params")
if tmp is None:
return None
data_dict = json.loads(tmp)
return SimpleScanParameters(**data_dict)
@auto_params.setter
def auto_params(self, params:SimpleScanParameters | None):
if params is None:
self.__client.delete(f"{self.__bl}:auto_params")
else:
self.__client.set(f"{self.__bl}:auto_params", params.model_dump_json())