This commit is contained in:
2022-09-08 15:55:14 +02:00
parent 1d26a309e7
commit 0a15899ee6
3 changed files with 84 additions and 12 deletions

View File

@@ -272,15 +272,19 @@ bit 1=2 : simulated frame trigger
{'name':'in Y downstream' ,'value':dft_pos_pst.get('y_in_ds' ,0),'type':'float','limits':(-45,15),'step':0.1,'decimals':5,'suffix':' mm'},
{'name':'out X delta' ,'value':dft_pos_pst.get('x_out_delta',0),'type':'float','limits':(-32,32),'step':0.1,'decimals':5,'suffix':' mm'},
{'name':'out Y delta' ,'value':dft_pos_pst.get('y_out_delta',0),'type':'float','limits':(-32,32),'step':0.1,'decimals':5,'suffix':' mm'},
{'name':'in Z' ,'value':dft_pos_pst.get('z_in' ,0),'type':'float','limits':(-8 ,1 ),'step':0.1,'decimals':5,'suffix':' mm'},
{'name':'out Z' ,'value':dft_pos_pst.get('z_out' ,0),'type':'float','limits':(-8 ,1 ),'step':0.1,'decimals':5,'suffix':' mm'},
]},
{'name':'in Z' ,'value':dft_pos_pst.get('z_in' ,0),'type':'float','limits':(-8 ,5 ),'step':0.1,'decimals':5,'suffix':' mm'},
{'name':'out Z' ,'value':dft_pos_pst.get('z_out' ,0),'type':'float','limits':(-8 ,5 ),'step':0.1,'decimals':5,'suffix':' mm'},
{'name':'set_in', 'title':'use current position as "in"', 'type':'action'},
{'name':'set_out', 'title':'use current position as "out"', 'type':'action'},
]},
{'name': AppCfg.DFT_POS_COL, 'title':'collimator reference positions', 'type':'group','expanded':False, 'children':[
{'name':'in X', 'value':dft_pos_col.get('x_in',0), 'type':'float', 'limits':(-15.9, 15.9 ),'step':0.1, 'decimals':5, 'suffix':' mm'},
{'name':'in Y', 'value':dft_pos_col.get('y_in',0), 'type':'float', 'limits':(-15.9, 15.9 ),'step':0.1, 'decimals':5, 'suffix':' mm'},
{'name':'out X', 'value':dft_pos_col.get('x_out',0),'type':'float', 'limits':(-15.9, 15.9 ),'step':0.1, 'decimals':5, 'suffix':' mm'},
{'name':'out Y', 'value':dft_pos_col.get('y_out',0),'type':'float', 'limits':(-15.9, 15.9 ),'step':0.1, 'decimals':5, 'suffix':' mm'},
]},
{'name':'set_in', 'title':'use current position as "in"', 'type':'action'},
{'name':'set_out', 'title':'use current position as "out"', 'type':'action'},
]},
{'name': AppCfg.DFT_POS_BKLGT, 'title':'Back Light reference positions', 'type':'group','expanded':False, 'children':[
{'name':'In position', 'value':dft_pos_bklgt.get('pos_in',0), 'type':'float', 'limits':(-30000, 10 ),'step':10, 'decimals':5, 'suffix':'ustep'},
{'name':'Out position', 'value':dft_pos_bklgt.get('pos_out',0), 'type':'float', 'limits':(-1000, 10 ),'step':10, 'decimals':5, 'suffix':'ustep'},
@@ -288,6 +292,8 @@ bit 1=2 : simulated frame trigger
{'name': AppCfg.DFT_POS_DET, 'title':'detector reference positions', 'type':'group','expanded':False, 'children':[
{'name':'In position', 'value':dft_pos_det.get('pos_in',0), 'type':'float', 'limits':(-20, 20 ),'step':0.1, 'decimals':5, 'suffix':' mm'},
{'name':'Out position', 'value':dft_pos_det.get('pos_out',0), 'type':'float', 'limits':(-20, 20 ),'step':0.1, 'decimals':5, 'suffix':' mm'},
{'name':'set_in', 'title':'use current position as "in"', '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' },
@@ -329,6 +335,12 @@ bit 1=2 : simulated frame trigger
child.sigValueChanging.connect(lambda a,b: self.cb_valueChanging(a,b))
for ch2 in child.children():
ch2.sigValueChanging.connect(lambda a,b: self.cb_valueChanging(a,b))
p.param(AppCfg.DFT_POS_PST, 'set_in' ).sigActivated.connect(lambda x: self.cb_use_cur_pos_as(AppCfg.DFT_POS_PST, 'in'))
p.param(AppCfg.DFT_POS_PST, 'set_out').sigActivated.connect(lambda x: self.cb_use_cur_pos_as(AppCfg.DFT_POS_PST, 'out'))
p.param(AppCfg.DFT_POS_COL, 'set_in' ).sigActivated.connect(lambda x: self.cb_use_cur_pos_as(AppCfg.DFT_POS_COL, 'in'))
p.param(AppCfg.DFT_POS_COL, 'set_out').sigActivated.connect(lambda x: self.cb_use_cur_pos_as(AppCfg.DFT_POS_COL, 'out'))
p.param(AppCfg.DFT_POS_DET, 'set_in' ).sigActivated.connect(lambda x: self.cb_use_cur_pos_as(AppCfg.DFT_POS_DET, 'in'))
p.param(AppCfg.DFT_POS_DET, 'set_out').sigActivated.connect(lambda x: self.cb_use_cur_pos_as(AppCfg.DFT_POS_DET, 'out'))
#p.param('Save/Restore functionality', 'Save State').sigActivated.connect(self.cb_save)
#p.param('Save/Restore functionality', 'Restore State').sigActivated.connect(self.cb_restore)
@@ -404,6 +416,48 @@ bit 1=2 : simulated frame trigger
def cb_valueChanging(self,param, value):
_log.debug(f'Value changing (not finalized): {param}, {value}')
def cb_use_cur_pos_as(self,dev,pos):
_log.debug(f'HERE {dev}:{pos}')
p=self._p.param(dev)
try:
twk=self.parent().tweakers
except AttributeError as e:
_log.warning('can not access tweakers to read values')
if pos=='in': #sample: just to test
p.children()[0].setValue(12.4)
elif pos=='out':
p.children()[0].setValue(14.1)
return
#['fast_y', 'fast_x', 'omega', 'base_x', 'base_z',
# 'det_z',
# 'colli_x', 'colli_y',
# 'tube_usx', 'tube_usy', 'tube_dsx', 'tube_dsy', 'tube_z',
# 'xeye_x', 'xeye_y'])
#p.children()
cld=p.children()
if dev==AppCfg.DFT_POS_PST:
# k=('x_in_us','y_in_us','x_in_ds','y_in_ds','x_out_delta','y_out_delta','z_in','z_out',)
if pos=='in':
lut=((0,'tube_usx'),(1,'tube_usy'),(2,'tube_dsx'),(3,'tube_dsy'),(6,'tube_z'))
elif pos=='out':
cld[4].setValue(cld[0].value()-twk['tube_usx'].get_val()) #x_in_us-x_us
cld[5].setValue(cld[1].value()-twk['tube_usy'].get_val()) #y_in_us-y_us
lut=((7,'tube_z'),)
elif dev==AppCfg.DFT_POS_COL:
# k=('x_in', 'y_in', 'x_out', 'y_out')
if pos=='in':
lut=((0,'colli_x'),(1,'colli_y'),)
elif pos=='out':
lut=((2,'colli_x'),(3,'colli_y'),)
elif dev==AppCfg.DFT_POS_DET:
if pos=='in':
lut=((0,'det_z'),)
elif pos=='out':
lut=((1,'det_z'),)
for i,k in lut:
cld[i].setValue(twk[k].get_val())
#def cb_save(self):
# self._state=p.saveState()

View File

@@ -633,6 +633,14 @@ if __name__=='__main__':
obj_info(tr)
o.setTransform(tr)
elif m&Qt.AltModifier:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0.1, 2*np.pi, 41)
y=np.exp(np.sin(x))
plt.stem(x, y)
plt.show()
pass
else:
obj_info(o)

View File

@@ -105,8 +105,8 @@ from epics_widgets.MotorTweak import MotorTweak
from epics_widgets.SmaractMotorTweak import SmaractMotorTweak
from epics_widgets.SimMotorTweak import SimMotorTweak
ts.log('Import part 5/8:')
import matplotlib as mpl
import matplotlib.pyplot as plt
#import matplotlib as mpl
#import matplotlib.pyplot as plt
import numpy as np
np.set_printoptions(suppress=True,linewidth=196)
import pyqtgraph as pg
@@ -1563,11 +1563,21 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
except AttributeError:
self._testCode=tc={'idx':0}
step=tc['idx']
vb=self.vb
vb.autoRange(items=(self._goImg,))
return
step=1
if step==0:
vb=self.vb
vb.autoRange(items=(self._goImg,))
elif step==1:
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0.1, 2*np.pi, 41)
y=np.exp(np.sin(x))
plt.stem(x, y)
plt.show()
if step==3:
grp=pg.ItemGroup()
vb.addItem(grp)
obj=UsrGO.Marker((100, 100), (100, 100), mode=1)
@@ -1578,7 +1588,7 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
grp.addItem(obj)
tc['grp']=grp
vb.autoRange(items=(obj,))
elif step==1:
elif step==4:
grp=tc['grp']
tr=grp.transform()
# UsrGO.obj_info(tr)
@@ -2023,7 +2033,6 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
dp.plot_gather(mode=11)
plt.show(block=False)
#plt.show(block=True)
return
def esc_run_steps(self, steps, title):
with pg.ProgressDialog(title, 0, len(steps)) as dlg:
@@ -3714,7 +3723,8 @@ class WndSwissMx(QMainWindow, Ui_MainWindow):
if __name__=="__main__":
def main():
from PyQt5.QtCore import QT_VERSION_STR
_log.info(f'Version: pyqtgraph:{pg.__version__} matplotlib:{mpl.__version__} numpy:{np.__version__} epics:{epics.__version__} qt:{QT_VERSION_STR}' )
#_log.info(f'Version: pyqtgraph:{pg.__version__} matplotlib:{mpl.__version__} numpy:{np.__version__} epics:{epics.__version__} qt:{QT_VERSION_STR}' )
_log.info(f'Version: pyqtgraph:{pg.__version__} epics:{epics.__version__} qt:{QT_VERSION_STR}' )
import argparse, socket
hostname=socket.gethostname()
if hostname=='ganymede':