Added ParkableMotor class
This commit is contained in:
@@ -20,14 +20,16 @@ def PVchs():
|
||||
"SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG": "FEL_pulse_en (uJ)",
|
||||
"SATES30-ARES:MOT_2TRY.RBV": "diode_otr_tth (deg)",
|
||||
"SATES30-ARES:MOT_DRY.RBV": "diode_inr_tth (deg)",
|
||||
"SATES30-ARES:MOT_SRZ.RBV": "sample_chi (deg)",
|
||||
"SATES30-ARES:MOT_SRZ.RBV": "sample_phi (deg)",
|
||||
"SATES30-ARES:MOT_SRY.RBV": "sample_th (deg)",
|
||||
"SATES30-ARES:MOT_SRX.RBV": "sample_phi (deg)",
|
||||
"SATES30-ARES:MOT_SRX.RBV": "sample_chi (deg)",
|
||||
"SATES30-ARES:MOT_STX.RBV": "sample_x (mm)",
|
||||
"SATES30-ARES:MOT_STY.RBV": "sample_y (mm)",
|
||||
"SATES30-ARES:MOT_STZ.RBV": "sample_z (mm)",
|
||||
"SATES30-LS336:C_RBV": "sample_temp (K)",
|
||||
"SATES30-LS336:D_RBV": "sample_temp (K)",
|
||||
"SATES30-LS336:A_RBV": "cryo_temp (K)",
|
||||
"SATES30-LS336:C_RBV": "dummy_temp (K)",
|
||||
"SATES30-LS336:B_RBV": "dummy_temp (K)",
|
||||
"SLAAT-LGEN:DLY_OFFS1": "LXT_off1 (us)",
|
||||
"SLAAT01-LTIM-PDLY:DELAY": "LXT_delay (ps)",
|
||||
"SLAAT01-LTIM-PDLY:DELAY_Z_OFFS": "LXT_off1 (ps)",
|
||||
@@ -36,9 +38,21 @@ def PVchs():
|
||||
"SLAAT31-LMOT-M803:MOT.RBV": "comp2",
|
||||
"SLAAT31-LMOT-M804:MOT.RBV": "comp3",
|
||||
"SLAAT31-LMOT-M805:MOT.RBV": "comp4",
|
||||
"SLAAT31-LMOT-M806:MOT.RBV": "EOS_delay (mm)",
|
||||
"SLAAT31-LMOT-M806:MOT.RBV": "THz_delay (mm)",
|
||||
"SLAAT31-LMOT-M807:MOT.RBV": "WL_delay (mm)",
|
||||
"SLAAT31-LMOT-M808:MOT.RBV": "800_delay (mm)",
|
||||
"SATOP21-PMOS127-2D:SPECTRUM_X":"PMOS127-2D:X",
|
||||
"SATOP21-PMOS127-2D:SPECTRUM_Y":"PMOS127-2D:Y",
|
||||
"SLAAT31-LCAM-C801:FIT-XPOS_EGU":"Cam_801_x",
|
||||
"SLAAT31-LCAM-C801:FIT-YPOS_EGU":"Cam_801_y",
|
||||
"SLAAT31-LCAM-C802:FIT-XPOS_EGU":"Cam_802_x",
|
||||
"SLAAT31-LCAM-C802:FIT-YPOS_EGU":"Cam_802_y",
|
||||
'SLAAT31-LCAM-C801:FIT-XEGU-ARRAY':"Cam_801_xy",
|
||||
'SLAAT31-LCAM-C802:FIT-XEGU-ARRAY':"Cam_802_xy",
|
||||
"SIN-LPOSIC1:POS1":"PICO X not sure",
|
||||
"SIN-LPOSIC1:POS2":"PICO Y not sure",
|
||||
"SATES30-CAMS182-GIGE2_sp1:x_center_of_mass":"",
|
||||
"SATES30-CAMS182-GIGE2_sp1:y_center_of_mass":"",
|
||||
}
|
||||
return pv_name_dict
|
||||
|
||||
@@ -463,17 +477,20 @@ def get_scan_info_dict(dir_raw,run):
|
||||
scan_SFSI=SFScanInfo(get_filename(run,dir_raw)+"/meta/scan.json")
|
||||
scan_SFDF=SFDataFiles(get_filename(run,dir_raw)+"/data/*.PVDATA.h5")
|
||||
pv_name_dict = PVchs()
|
||||
pv_info_dict = {k+' '+pv_name_dict[k]: np.round(v.data[0],6) if isinstance(v.data[0], float) else v.data[0] for k,v in scan_SFDF.items()}
|
||||
pv_info_dict = {k+' '+pv_name_dict[k]: np.round(v.data.flat[0],6) if isinstance(v.data[0], float) else v.data.flat[0] for k,v in scan_SFDF.items()}
|
||||
scan_info_dict={'Run':run,
|
||||
'date':scan_SFSI.fs.atime.strftime("%d/%m/%Y"),
|
||||
'time':scan_SFSI.fs.atime.strftime("%H:%M:%S"),
|
||||
'duration':f'{str(scan_SFSI.fs.mtime-scan_SFSI.fs.atime)[:-7:]}',
|
||||
'date':scan_SFSI.fs.mtime.strftime("%d/%m/%Y"),
|
||||
'time':scan_SFSI.fs.mtime.strftime("%H:%M:%S"),
|
||||
'scan_name':scan_SFSI.parameters['scan_name'],
|
||||
'scanned':scan_SFSI.parameters['name'][0],
|
||||
'start':scan_SFSI.readbacks[0],
|
||||
'end':scan_SFSI.readbacks[-1]}
|
||||
print('Updating run',run)
|
||||
if len(scan_SFSI.readbacks)!=1:
|
||||
scan_info_dict['step']=np.abs(np.diff(scan_SFSI.readbacks)[0])
|
||||
try:
|
||||
scan_info_dict['step']=np.abs(scan_SFSI.readbacks[1]-scan_SFSI.readbacks[0])
|
||||
except TypeError:
|
||||
scan_info_dict['step']=np.nan
|
||||
elif len(scan_SFSI.readbacks)==1:
|
||||
scan_info_dict['step']=0
|
||||
scan_info_dict['steps']=len(scan_SFSI.readbacks)
|
||||
@@ -497,11 +514,11 @@ def get_scan_info_dict(dir_raw,run):
|
||||
elif scanned_id=='SATES30-ARES:MOT_STX.VAL':
|
||||
scan_info_dict["SATES30-ARES:MOT_STX.RBV sample_x (mm)"]='scanned'
|
||||
elif scanned_id=='SATES30-ARES:MOT_SRX.VAL':
|
||||
scan_info_dict["SATES30-ARES:MOT_SRX.RBV sample_phi (deg)"]='scanned'
|
||||
scan_info_dict["SATES30-ARES:MOT_SRX.RBV sample_chi (deg)"]='scanned'
|
||||
elif scanned_id=='SATES30-ARES:MOT_SRY.VAL':
|
||||
scan_info_dict["SATES30-ARES:MOT_SRY.RBV sample_th (deg)"]='scanned'
|
||||
elif scanned_id=='SATES30-ARES:MOT_SRZ.VAL':
|
||||
scan_info_dict["SATES30-ARES:MOT_SRZ.RBV sample_chi (deg)"]='scanned'
|
||||
scan_info_dict["SATES30-ARES:MOT_SRZ.RBV sample_phi (deg)"]='scanned'
|
||||
elif scanned_id=='SATES30-ARES:MOT_DRY.VAL':
|
||||
scan_info_dict["SATES30-ARES:MOT_DRY.RBV diode_inr_tth (deg)"]='scanned'
|
||||
elif scanned_id=='SATES30-ARES:MOT_2TRY.VAL':
|
||||
@@ -517,7 +534,7 @@ def get_scan_info_dict(dir_raw,run):
|
||||
# print(matching_keys)
|
||||
return scan_info_dict
|
||||
|
||||
def make_run_table(dir_raw,path,runs,htmlfilename='Few_runs_run_table',color_scheme='blue_yellow'):
|
||||
def make_run_table(dir_raw,path,runs,htmlfilename,color_scheme='blue_yellow'):
|
||||
if os.path.exists(path+htmlfilename+'.html'):
|
||||
info_df = pd.read_html(path+htmlfilename+'.html', header=0, index_col=None)[0]
|
||||
else:
|
||||
@@ -536,35 +553,6 @@ def make_run_table(dir_raw,path,runs,htmlfilename='Few_runs_run_table',color_sch
|
||||
with open(path+htmlfilename+'.html', 'w') as f:
|
||||
f.write(path+html_table)
|
||||
|
||||
def make_run_table_live(dir_raw,path,check_interval=5,keep_running_for=4,htmlfilename='updating_run_table',color_scheme='blue_yellow'):
|
||||
run_last = 0
|
||||
time_last_change = time.time()
|
||||
while True:
|
||||
if run_last != get_latest_run(dir_raw):
|
||||
run_last = get_latest_run(dir_raw)
|
||||
time_last_change = time.time()
|
||||
if os.path.exists(path+htmlfilename+'.html'):
|
||||
info_df=pd.read_html(path+htmlfilename+'.html',header=0, index_col=None)[0]
|
||||
else:
|
||||
info_df=pd.DataFrame(columns=['Run'])
|
||||
for run in range(run_last + 1):
|
||||
if run in info_df['Run'].values:
|
||||
continue
|
||||
filename = get_filename(run, dir_raw)
|
||||
if filename == False:
|
||||
continue
|
||||
new_row = pd.DataFrame([get_scan_info_dict(dir_raw,run)])
|
||||
info_df = pd.concat([info_df, new_row], ignore_index=True, sort=False)
|
||||
info_df = info_df.sort_values('Run')
|
||||
# html_table = build_table(info_df, color_scheme)
|
||||
html_table = build_table_nocondition(info_df, color_scheme)
|
||||
with open(path+htmlfilename+'.html', 'w') as f:
|
||||
f.write(html_table)
|
||||
if time.time() - time_last_change > keep_running_for*60*60:
|
||||
print('Not running any more.')
|
||||
break
|
||||
print('Waiting to check.')
|
||||
time.sleep(check_interval*60)
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user