fix in trace and app config
This commit is contained in:
@@ -33,6 +33,7 @@ class MyJsonEncoder(json.JSONEncoder):
|
|||||||
class AppCfg(QSettings):
|
class AppCfg(QSettings):
|
||||||
GBL_FLD_SCR_SHOT="global/folder_screenshot"
|
GBL_FLD_SCR_SHOT="global/folder_screenshot"
|
||||||
GBL_DEV_PREFIX="global/device_prefix" #SAR-EXPMX
|
GBL_DEV_PREFIX="global/device_prefix" #SAR-EXPMX
|
||||||
|
GBL_MISC="global/miscellaneous"
|
||||||
|
|
||||||
GEO_OPT_CTR='geometry/opt_ctr'
|
GEO_OPT_CTR='geometry/opt_ctr'
|
||||||
GEO_PIX2POS='geometry/pix2pos'
|
GEO_PIX2POS='geometry/pix2pos'
|
||||||
@@ -154,7 +155,8 @@ class AppCfg(QSettings):
|
|||||||
t=type(val)
|
t=type(val)
|
||||||
if key in (AppCfg.GEO_PIX2POS,AppCfg.GEO_CAM_TRF):
|
if key in (AppCfg.GEO_PIX2POS,AppCfg.GEO_CAM_TRF):
|
||||||
val=json.dumps(val, cls=MyJsonEncoder)
|
val=json.dumps(val, cls=MyJsonEncoder)
|
||||||
elif key in (AppCfg.GEO_CAM_PARAM,
|
elif key in (AppCfg.GBL_MISC,
|
||||||
|
AppCfg.GEO_CAM_PARAM,
|
||||||
AppCfg.DFT_POS_DET,AppCfg.DFT_POS_PST,AppCfg.DFT_POS_COL,AppCfg.DFT_POS_BKLGT,
|
AppCfg.DFT_POS_DET,AppCfg.DFT_POS_PST,AppCfg.DFT_POS_COL,AppCfg.DFT_POS_BKLGT,
|
||||||
AppCfg.DT_MISC):
|
AppCfg.DT_MISC):
|
||||||
val=json.dumps(val, cls=MyJsonEncoder)
|
val=json.dumps(val, cls=MyJsonEncoder)
|
||||||
@@ -174,7 +176,8 @@ class AppCfg(QSettings):
|
|||||||
elif key in (AppCfg.GEO_CAM_TRF,):
|
elif key in (AppCfg.GEO_CAM_TRF,):
|
||||||
val=json.loads(val)#, object_hook=MyJsonDecoder)
|
val=json.loads(val)#, object_hook=MyJsonDecoder)
|
||||||
val=np.array(val)
|
val=np.array(val)
|
||||||
elif key in (AppCfg.GEO_CAM_PARAM,
|
elif key in (AppCfg.GBL_MISC,
|
||||||
|
AppCfg.GEO_CAM_PARAM,
|
||||||
AppCfg.DFT_POS_DET,AppCfg.DFT_POS_PST,AppCfg.DFT_POS_COL,AppCfg.DFT_POS_BKLGT,
|
AppCfg.DFT_POS_DET,AppCfg.DFT_POS_PST,AppCfg.DFT_POS_COL,AppCfg.DFT_POS_BKLGT,
|
||||||
AppCfg.DT_MISC):
|
AppCfg.DT_MISC):
|
||||||
if val is not None:
|
if val is not None:
|
||||||
@@ -183,6 +186,8 @@ class AppCfg(QSettings):
|
|||||||
else:
|
else:
|
||||||
if key==AppCfg.DT_MISC:
|
if key==AppCfg.DT_MISC:
|
||||||
val={'show_plots': True, 'vel_scl': 1.0, 'pt2pt_time': 10.0,'sync_mode':1,'sync_flag':3,'verbose':0xff}
|
val={'show_plots': True, 'vel_scl': 1.0, 'pt2pt_time': 10.0,'sync_mode':1,'sync_flag':3,'verbose':0xff}
|
||||||
|
elif key==AppCfg.GBL_MISC:
|
||||||
|
val={'img_trace':4}
|
||||||
else:
|
else:
|
||||||
val={}
|
val={}
|
||||||
elif key in (AppCfg.GEO_BEAM_SZ,AppCfg.GEO_BEAM_POS,):
|
elif key in (AppCfg.GEO_BEAM_SZ,AppCfg.GEO_BEAM_POS,):
|
||||||
@@ -220,13 +225,14 @@ class WndParameter(QMainWindow):
|
|||||||
#GEO_PIX2POS
|
#GEO_PIX2POS
|
||||||
#GEO_BEAM_POS
|
#GEO_BEAM_POS
|
||||||
#GEO_CAM_PARAM
|
#GEO_CAM_PARAM
|
||||||
|
gbl_misc = cfg.value(AppCfg.GBL_MISC)
|
||||||
|
gbl_dev_prefix = cfg.value(AppCfg.GBL_DEV_PREFIX)
|
||||||
geo_beam_sz = cfg.value(AppCfg.GEO_BEAM_SZ)*1000
|
geo_beam_sz = cfg.value(AppCfg.GEO_BEAM_SZ)*1000
|
||||||
dft_pos_pst = cfg.value(AppCfg.DFT_POS_PST)
|
dft_pos_pst = cfg.value(AppCfg.DFT_POS_PST)
|
||||||
dft_pos_col = cfg.value(AppCfg.DFT_POS_COL)
|
dft_pos_col = cfg.value(AppCfg.DFT_POS_COL)
|
||||||
dft_pos_bklgt = cfg.value(AppCfg.DFT_POS_BKLGT)
|
dft_pos_bklgt = cfg.value(AppCfg.DFT_POS_BKLGT)
|
||||||
dft_pos_det = cfg.value(AppCfg.DFT_POS_DET)
|
dft_pos_det = cfg.value(AppCfg.DFT_POS_DET)
|
||||||
geo_cam_param = cfg.value(AppCfg.GEO_CAM_PARAM)
|
geo_cam_param = cfg.value(AppCfg.GEO_CAM_PARAM)
|
||||||
gbl_dev_prefix = cfg.value(AppCfg.GBL_DEV_PREFIX)
|
|
||||||
dt_host = cfg.value(AppCfg.DT_HOST)
|
dt_host = cfg.value(AppCfg.DT_HOST)
|
||||||
dt_misc = cfg.value(AppCfg.DT_MISC)
|
dt_misc = cfg.value(AppCfg.DT_MISC)
|
||||||
|
|
||||||
@@ -264,6 +270,17 @@ verbose bits:
|
|||||||
'''
|
'''
|
||||||
|
|
||||||
params=[
|
params=[
|
||||||
|
{'name':'various', 'type':'group','expanded':False, 'children':[
|
||||||
|
{'name':AppCfg.GBL_DEV_PREFIX, 'title':'device prefix', 'type':'group', 'expanded':False, 'children':[
|
||||||
|
{'name':'deltatau motors', 'value':gbl_dev_prefix[0], 'type':'str'},
|
||||||
|
{'name':'smaract motors', 'value':gbl_dev_prefix[1], 'type':'str'},
|
||||||
|
]},
|
||||||
|
{'name':AppCfg.GBL_MISC, 'title':'miscellaneous', 'type':'group', 'children':[
|
||||||
|
{'name':'img_trace', 'value':gbl_misc['img_trace'], 'type':'int', 'tip':tip_sync_flag},
|
||||||
|
#{'name':'verbose', 'value':gbl_misc['verbose'], 'type':'int', 'tip':tip_verbose},
|
||||||
|
]},
|
||||||
|
# {'name':AppCfg.GEO_CAM_TRF, 'value':cfg.value(AppCfg.GEO_CAM_TRF), 'type':'str'},
|
||||||
|
]},
|
||||||
{'name':'geometry','type':'group','expanded':False,'children':[
|
{'name':'geometry','type':'group','expanded':False,'children':[
|
||||||
{'name': AppCfg.GEO_BEAM_SZ, 'title':'size of the beam', 'type':'group', 'children':[
|
{'name': AppCfg.GEO_BEAM_SZ, 'title':'size of the beam', 'type':'group', 'children':[
|
||||||
{'name':'width', 'type':'float', 'value':geo_beam_sz[0], 'step':0.1,'suffix':' um'},
|
{'name':'width', 'type':'float', 'value':geo_beam_sz[0], 'step':0.1,'suffix':' um'},
|
||||||
@@ -310,10 +327,6 @@ verbose bits:
|
|||||||
{'name':'set_in', 'title':'use current position as "in"', 'type':'action'},
|
{'name':'set_in', 'title':'use current position as "in"', 'type':'action'},
|
||||||
{'name':'set_out', 'title':'use current position as "out"', 'type':'action'},
|
{'name':'set_out', 'title':'use current position as "out"', 'type':'action'},
|
||||||
]},
|
]},
|
||||||
{'name': AppCfg.GBL_DEV_PREFIX, 'title':'device prefix', 'type':'group','expanded':False, 'children':[
|
|
||||||
{'name':'deltatau motors', 'value':gbl_dev_prefix[0],'type':'str' },
|
|
||||||
{'name':'smaract motors', 'value':gbl_dev_prefix[1],'type':'str' },
|
|
||||||
]},
|
|
||||||
{'name':'Delta Tau Parameters', 'type':'group','expanded':False, 'children':[
|
{'name':'Delta Tau Parameters', 'type':'group','expanded':False, 'children':[
|
||||||
{'name':AppCfg.DT_HOST ,'title':'host name (host[:port:port_gather])','value':dt_host ,'type':'str'} ,
|
{'name':AppCfg.DT_HOST ,'title':'host name (host[:port:port_gather])','value':dt_host ,'type':'str'} ,
|
||||||
{'name':AppCfg.DT_MISC, 'title':'miscellaneous', 'type':'group', 'children':[
|
{'name':AppCfg.DT_MISC, 'title':'miscellaneous', 'type':'group', 'children':[
|
||||||
@@ -325,9 +338,6 @@ verbose bits:
|
|||||||
{'name':'verbose', 'value':dt_misc['verbose'], 'type':'int', 'tip':tip_verbose},
|
{'name':'verbose', 'value':dt_misc['verbose'], 'type':'int', 'tip':tip_verbose},
|
||||||
]},
|
]},
|
||||||
]},
|
]},
|
||||||
#{'name':'miscellaneous', 'type':'group','expanded':False, 'children':[
|
|
||||||
# {'name':AppCfg.GEO_CAM_TRF, 'value':cfg.value(AppCfg.GEO_CAM_TRF), 'type':'str'},
|
|
||||||
#]},
|
|
||||||
#{'name':'Save/Restore functionality', 'type':'group','expanded':False, 'children':[
|
#{'name':'Save/Restore functionality', 'type':'group','expanded':False, 'children':[
|
||||||
# {'name':'Save State', 'type':'action'},
|
# {'name':'Save State', 'type':'action'},
|
||||||
# {'name':'Restore State', 'type':'action', 'children':[
|
# {'name':'Restore State', 'type':'action', 'children':[
|
||||||
@@ -428,7 +438,7 @@ verbose bits:
|
|||||||
cfg.setValue(par_nm, v)
|
cfg.setValue(par_nm, v)
|
||||||
elif nm in (AppCfg.DT_HOST):
|
elif nm in (AppCfg.DT_HOST):
|
||||||
cfg.setValue(nm, param.value())
|
cfg.setValue(nm, param.value())
|
||||||
elif par_nm==AppCfg.DT_MISC:
|
elif par_nm in (AppCfg.GBL_MISC,AppCfg.DT_MISC):
|
||||||
d=dict(map(lambda x:(x.name(),x.value()), parent.children()))
|
d=dict(map(lambda x:(x.name(),x.value()), parent.children()))
|
||||||
cfg.setValue(par_nm, d)
|
cfg.setValue(par_nm, d)
|
||||||
else:
|
else:
|
||||||
|
|||||||
41
swissmx.py
41
swissmx.py
@@ -410,10 +410,6 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
#bm.setTransform(tr) # assign transform
|
#bm.setTransform(tr) # assign transform
|
||||||
grp.addItem(obj)
|
grp.addItem(obj)
|
||||||
|
|
||||||
#--- camera tracong images ---
|
|
||||||
self._goTrace=grp=pg.ItemGroup() # the transformation is the same as for tracked objects
|
|
||||||
grp.setZValue(-20) #lower than other objects
|
|
||||||
self.vb.addItem(grp)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1079,16 +1075,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
|
|
||||||
#create trace
|
#create trace
|
||||||
img=pg.ImageItem(self._goImg.image)
|
self.add_camera_trace()
|
||||||
img.setZValue(100)
|
|
||||||
trImg=self._goImgGrp.transform()
|
|
||||||
trTrk=self._goTracked.transform()
|
|
||||||
|
|
||||||
tr=trImg*trTrk.inverted()[0] #TODO: check if oder correct !!!
|
|
||||||
#tr.scale(.5,.5)
|
|
||||||
img.setTransform(tr)
|
|
||||||
|
|
||||||
self._goTrace.addItem(img)
|
|
||||||
|
|
||||||
_log.debug(f'dist to beam ({pFix[0]:>0.6g} {pFix[1]:>0.6g}mm)')
|
_log.debug(f'dist to beam ({pFix[0]:>0.6g} {pFix[1]:>0.6g}mm)')
|
||||||
fx_motor=self.tweakers["fast_x"]
|
fx_motor=self.tweakers["fast_x"]
|
||||||
@@ -1096,9 +1083,6 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
|
|
||||||
fx_motor.move_rel(pFix[0])
|
fx_motor.move_rel(pFix[0])
|
||||||
fy_motor.move_rel(pFix[1])
|
fy_motor.move_rel(pFix[1])
|
||||||
self._goTrace.setTransform(self._goTracked.transform())
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#fx_motor.move_abs(fx_motor.get_val()+pFix[0])
|
#fx_motor.move_abs(fx_motor.get_val()+pFix[0])
|
||||||
#fy_motor.move_abs(fy_motor.get_val()+pFix[1])
|
#fy_motor.move_abs(fy_motor.get_val()+pFix[1])
|
||||||
@@ -1280,6 +1264,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
fy=twk_fy.get_val()
|
fy=twk_fy.get_val()
|
||||||
try:
|
try:
|
||||||
grp=self._goTracked
|
grp=self._goTracked
|
||||||
|
grpTrc=self._goTrace
|
||||||
zoom_old,fx_old,fy_old=grp._state
|
zoom_old,fx_old,fy_old=grp._state
|
||||||
except AttributeError: # at initialization
|
except AttributeError: # at initialization
|
||||||
self._goTracked=grp=pg.ItemGroup()
|
self._goTracked=grp=pg.ItemGroup()
|
||||||
@@ -1287,12 +1272,17 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
self.vb.addItem(grp)
|
self.vb.addItem(grp)
|
||||||
grp._state=(zoom,fx,fy)
|
grp._state=(zoom,fx,fy)
|
||||||
zoom_old=fx_old=fy_old=None
|
zoom_old=fx_old=fy_old=None
|
||||||
|
|
||||||
|
#--- camera tracing images ---
|
||||||
|
self._goTrace=grpTrc=pg.ItemGroup() # the transformation is the same as for tracked objects
|
||||||
|
grpTrc.setZValue(-20) #lower than other objects
|
||||||
|
self.vb.addItem(grpTrc)
|
||||||
|
|
||||||
_log.debug(f"zoom:{zoom_old}->{zoom} fx:{fx_old}->{fx} fy:{fy_old}->{fy}")
|
_log.debug(f"zoom:{zoom_old}->{zoom} fx:{fx_old}->{fx} fy:{fy_old}->{fy}")
|
||||||
if zoom_old!=zoom:
|
if zoom_old!=zoom:
|
||||||
geo.interp_zoom(zoom)
|
geo.interp_zoom(zoom)
|
||||||
|
|
||||||
bm=self._goBeamMarker
|
bm=self._goBeamMarker
|
||||||
grp=self._goTracked
|
|
||||||
opt_ctr=geo._opt_ctr
|
opt_ctr=geo._opt_ctr
|
||||||
A=np.asarray(geo._pix2pos.I)
|
A=np.asarray(geo._pix2pos.I)
|
||||||
# trf=cfg.value(AppCfg.GEO_CAM_TRF)
|
# trf=cfg.value(AppCfg.GEO_CAM_TRF)
|
||||||
@@ -1304,6 +1294,21 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
|
|||||||
A[1, 0], A[1, 1], 0,
|
A[1, 0], A[1, 1], 0,
|
||||||
p[0], p[1], 1) # translate dx,dy
|
p[0], p[1], 1) # translate dx,dy
|
||||||
grp.setTransform(tr)
|
grp.setTransform(tr)
|
||||||
|
grpTrc.setTransform(tr)
|
||||||
|
|
||||||
|
def add_camera_trace(self):
|
||||||
|
# add up to tracelen image when moveing motors to new positions
|
||||||
|
tracelen=4
|
||||||
|
img=pg.ImageItem(self._goImg.image)
|
||||||
|
trImg=self._goImgGrp.transform()
|
||||||
|
trTrk=self._goTracked.transform()
|
||||||
|
|
||||||
|
tr=trImg*trTrk.inverted()[0] # TODO: check if oder correct !!!
|
||||||
|
img.setTransform(tr)
|
||||||
|
self._goTrace.addItem(img)
|
||||||
|
cld=self._goTrace.childItems()
|
||||||
|
if len(cld) > tracelen:
|
||||||
|
self.vb.removeItem(cld[0])
|
||||||
|
|
||||||
def cb_modify_app_param(self):
|
def cb_modify_app_param(self):
|
||||||
wnd=WndParameter(self)
|
wnd=WndParameter(self)
|
||||||
|
|||||||
Reference in New Issue
Block a user