DAQ: added new properties to redis including crystal size, b_factor and automation_parameters
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user