Code owners
Assign users and groups as approvers for specific file changes. Learn more.
cam_macros.py 4.03 KiB
import time
from os.path import join
from epics import caget,caput,PV
from iexcode.instruments.AD_utilities import *
from iexcode.instruments.IEX_cameras import cam_pv_dictionary
from iexcode.instruments.scanRecord import mda_fileNum
from iexplot.mda_quick_plot import plot_image
##############################################################################################################
############################## Camera Snapping an image ##############################
##############################################################################################################
def cam_snap(cam_num,savePlugin='TIFF1:',**kwargs):
"""
takes a camera image and saves it in the user folder
**kwargs:
ExposureTime: changes both the exposure time and the acquire time for the snapshot
resets after acquisition
FreeRun: True => disable setting and go back to continuous acquision
False => leave saving enabled and camera in single acquision
"""
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
AD_snap(ADplugin,**kwargs)
def cam_exposure_time(cam_num,ExposureTime):
"""
sets the exposure and acquire times for camera
"""
ADioc = cam_pv_dictionary()[cam_num]
AD_exposure_time(ADioc,ExposureTime)
##############################################################################################################
############################## Scanning with a camera ##############################
##############################################################################################################
def cam_scan_setup(cam_num,savePlugin='TIFF1:',**kwargs):
"""
sets up the BL scanRecord for scanning at every point
**kwargs
scanDIM = 1
detTrig = 2; detectorTrigger number
# AD_SaveFileSetup
filepath=userpath (from BL_ioc scanRecord)+"/dtype"
(e.g. filepath="/net/s29data/export/data_29id"+folder+"/"+run+"/"+userName+"/"+df)
dtype = taken from ADplugin
FileTemplate="%s%s_%4.4d."+dtype; format for filename first %s = filepath, second %s = prefix
prefix = MDAscan+mda_fileNum' with nzeros=4
"""
kwargs.setdefault('nzeros',4)
kwargs.setdefault('prefix',"MDAscan"+str.zfill(str(mda_fileNum()),kwargs["nzeros"]))
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
ADplugin_ScanSetup(ADplugin,**kwargs)
def cam_live(cam_num,savePlugin='TIFF1:'):
"""
puts camera in no save and continuous
a.k.a free run
"""
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
AD_FreeRun(ADplugin)
def cam_done(cam_num,**kwargs):
"""
stops camera acquisition (not will stop after current acquisition)
"""
ADioc = cam_pv_dictionary()[cam_num]
AD_Done(ADioc,**kwargs)
def cam_save_setup(cam_num,savePlugin='TIFF1:',**kwargs):
"""
sets up the save paths using iex.BL.mda.current_user
**kwargs
prefix: beginning of filename
"""
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
AD_SaveFileSetup(ADplugin,**kwargs)
def cam_attributes_set(cam_num,filename,savePlugin='TIFF1:',**kwargs):
"""
filename of attributes.xml
**kwargs:
path = '/home/beams/29IDUSER/Documents/User_Macros/Macros_29id/AD_Attributes/'
"""
kwargs.setdefault('path','/home/beams/29IDUSER/Documents/User_Macros/Macros_29id/AD_Attributes/')
filepath = join(kwargs['path'],filename)
savePlugin='TIFF1:'
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
AD_attributes_set(ADplugin, filepath)
def cam_last_filepath(cam_num,savePlugin='TIFF1:',verbose=True):
"""
returns the full path for the last saved image
"""
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
fpath = AD_last_filename(ADplugin)
return fpath
def cam_plot_last(cam_num,savePlugin='TIFF1:',h=5,v=10,**kwargs):
"""
plots last file from cam_num
using iexcode.macros.quick_plot
"""
fpath = cam_last_filepath(cam_num,verbose=2)
plot_image(fpath,savePlugin,h,v,**kwargs)