diff --git a/daq/src/aaredaq/config.py b/daq/src/aaredaq/config.py index e71dc392..e20782a0 100644 --- a/daq/src/aaredaq/config.py +++ b/daq/src/aaredaq/config.py @@ -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())