rewrote timetools as device; add base class
This commit is contained in:
@@ -1,106 +1,84 @@
|
||||
from cam_server_client import PipelineClient
|
||||
from psen_processing import PsenProcessingClient
|
||||
|
||||
from slic.core.device import Device, SimpleDevice
|
||||
from slic.devices.general.motor import Motor
|
||||
from slic.devices.general.delay_stage import DelayStage
|
||||
|
||||
|
||||
class SpectralEncoder:
|
||||
def make_dev(ID, cls, chans):
|
||||
d = {name: cls(ch) for name, ch in chans.items()}
|
||||
return SimpleDevice(ID, **d)
|
||||
|
||||
def __init__(self, pvname, name=None, reduction_client_address="http://sf-daqsync-02:12002/", delay_stages={"spect_tt": "SLAAR21-LMOT-M553:MOT", "retroreflector": "SLAAR21-LMOT-M561:MOT"}):
|
||||
self.pvname = pvname
|
||||
self.name = name
|
||||
self.x_target = Motor(pvname + ":MOTOR_X1")
|
||||
self.y_target = Motor(pvname + ":MOTOR_Y1")
|
||||
if delay_stages:
|
||||
for key, pv in delay_stages.items():
|
||||
ds = DelayStage(pv)
|
||||
setattr(self, ds, key)
|
||||
|
||||
#self.delay = Motor(self.ID + "-M424:MOT")
|
||||
#self.delayTime = DelayStage(self.delay)
|
||||
self.data_reduction_client = PsenProcessingClient(address=reduction_client_address)
|
||||
class TimeTool(Device):
|
||||
|
||||
def __init__(self, ID, pipeline_name=None, delay_stages=None, target_stages=None, **kwargs):
|
||||
super().__init__(ID, **kwargs)
|
||||
|
||||
self.pipeline_name = pipeline_name
|
||||
self.pipeline_client = PipelineClient() if pipeline_name else None
|
||||
|
||||
self.delay_stages = make_dev(ID + "-DS", DelayStage, delay_stages) if delay_stages else None
|
||||
self.target_stages = make_dev(ID + "-TS", Motor, target_stages) if target_stages else None
|
||||
|
||||
|
||||
@property
|
||||
def roi(self):
|
||||
return self.data_reduction_client.get_roi_signal()
|
||||
def roi_signal(self):
|
||||
return self._get_cfg("roi_signal")
|
||||
|
||||
@roi.setter
|
||||
def roi(self, values):
|
||||
self.data_reduction_client.set_roi_signal(values)
|
||||
@roi_signal.setter
|
||||
def roi_signal(self, values):
|
||||
return self._set_cfg("roi_signal", values)
|
||||
|
||||
@property
|
||||
def roi_background(self):
|
||||
return self.data_reduction_client.get_roi_background()
|
||||
return self._get_cfg("roi_background")
|
||||
|
||||
@roi_background.setter
|
||||
def roi_background(self, values):
|
||||
self.data_reduction_client.set_roi_background(values)
|
||||
return self._set_cfg("roi_background", values)
|
||||
|
||||
def _get_cfg(self, name):
|
||||
if self.pipeline_name is None:
|
||||
return None
|
||||
return self.pipeline_client.get_instance_config(self.pipeline_name)[name]
|
||||
|
||||
def _set_cfg(self, name, value):
|
||||
if self.pipeline_name is None:
|
||||
return None
|
||||
return self.pipeline_client.set_instance_config(self.pipeline_name, {name: value})
|
||||
|
||||
|
||||
def __repr__(self):
|
||||
s = [f"Status {self.name}"]
|
||||
s.append(str(self.x_target))
|
||||
s.append(str(self.y_target))
|
||||
s.append(f"Data reduction is on")
|
||||
s.append(f" roi {self.roi}")
|
||||
s.append(f" roi_background {self.roi_background}")
|
||||
return "\n".join(s)
|
||||
|
||||
|
||||
class SpatialEncoder:
|
||||
|
||||
def __init__(self, name=None, reduction_client_address="http://sf-daqsync-02:12003/", delay_stages={"spatial_tt": "SLAAR21-LMOT-M522:MOTOR_1"}, pipeline_id="SARES20-CAMS142-M4_psen_db1"):
|
||||
self.name = name
|
||||
# self.x_target = Motor(pvname + ":MOTOR_X1")
|
||||
# self.y_target = Motor(pvname + ":MOTOR_Y1")
|
||||
if delay_stages:
|
||||
for key, pv in delay_stages.items():
|
||||
ds = DelayStage(pv)
|
||||
setattr(self, ds, key)
|
||||
|
||||
#self.delay = Motor(self.ID + "-M424:MOT")
|
||||
#self.delayTime = DelayStage(self.delay)
|
||||
#self.data_reduction_client = PsenProcessingClient(address=reduction_client_address)
|
||||
self._camera_server_client = PipelineClient()
|
||||
self._camera_server_pipeline_id = pipeline_id
|
||||
|
||||
#@property
|
||||
#def roi(self):
|
||||
# return self.data_reduction_client.get_roi_signal()
|
||||
#@roi.setter
|
||||
#def roi(self,values):
|
||||
# self.data_reduction_client.set_roi_signal(values)
|
||||
|
||||
#@property
|
||||
#def roi_background(self):
|
||||
# return self.data_reduction_client.get_roi_background()
|
||||
#@roi_background.setter
|
||||
#def roi_background(self,values):
|
||||
# self.data_reduction_client.set_roi_background(values)
|
||||
|
||||
@property
|
||||
def roi(self):
|
||||
return self._camera_server_client.get_instance_config(self._camera_server_pipeline_id)["roi_signal"]
|
||||
|
||||
@roi.setter
|
||||
def roi(self, values):
|
||||
self._camera_server_client.set_instance_config(self._camera_server_pipeline_id, {"roi_signal": values})
|
||||
|
||||
@property
|
||||
def roi_background(self):
|
||||
return self._camera_server_client.get_instance_config(self._camera_server_pipeline_id)["roi_background"]
|
||||
|
||||
@roi_background.setter
|
||||
def roi_background(self, values):
|
||||
self._camera_server_client.set_instance_config(self._camera_server_pipeline_id, {"roi_background": values})
|
||||
|
||||
def __repr__(self):
|
||||
s = [f"Status {self.name}"]
|
||||
#s.append(str(self.x_target))
|
||||
#s.append(str(self.y_target))
|
||||
s.append(f"Data reduction is on")
|
||||
s.append(f" roi {self.roi}")
|
||||
s.append(f" roi_background {self.roi_background}")
|
||||
res = super().__repr__()
|
||||
s = [res]
|
||||
s.append(f"Data reduction ROIs:")
|
||||
s.append(f"- signal: {self.roi_signal}")
|
||||
s.append(f"- background: {self.roi_background}")
|
||||
return "\n".join(s)
|
||||
|
||||
|
||||
|
||||
class SpectralEncoder(TimeTool):
|
||||
|
||||
def __init__(self, ID,
|
||||
delay_stages={"spect_tt": "SLAAR21-LMOT-M553:MOT", "retroreflector": "SLAAR21-LMOT-M561:MOT"},
|
||||
target_stages={"target_x": "MOTOR_X1", "target_y": "MOTOR_Y1"},
|
||||
**kwargs
|
||||
):
|
||||
target_stages = {k: ID + ":" + v for k, v in target_stages.items()}
|
||||
super().__init__(ID, delay_stages=delay_stages, target_stages=target_stages, **kwargs)
|
||||
|
||||
|
||||
|
||||
class SpatialEncoder(TimeTool):
|
||||
|
||||
def __init__(self, ID,
|
||||
pipeline_name="SARES20-CAMS142-M4_psen_db1",
|
||||
delay_stages={"spatial_tt": "SLAAR21-LMOT-M522:MOTOR_1"},
|
||||
**kwargs
|
||||
):
|
||||
super().__init__(ID, pipeline_name=pipeline_name, delay_stages=delay_stages, **kwargs)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user