Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • 29id/iexcode
1 result
Show changes
import time
from os.path import join
from epics import caget,caput,PV
import iexcode.instruments.cfg as iex
from iexcode.instruments.AD_utilities import *
from iexcode.instruments.IEX_cameras import cam_pv_dictionary
from iexcode.macros.quick_plot import *
from iexcode.instruments.scanRecord import mda_fileNum
from iexplot.mda_quick_plot import plot_image
##############################################################################################################
############################## Camera Snapping an image ##############################
##############################################################################################################
def cam_snap(cam_num,ADtype='TIFF',**kwargs):
def cam_snap(cam_num,savePlugin='TIFF1:',**kwargs):
"""
takes a camera image and saves it in the user folder
......@@ -23,21 +26,20 @@ def cam_snap(cam_num,ADtype='TIFF',**kwargs):
False => leave saving enabled and camera in single acquision
"""
ADplugin = cam_pv_dictionary()[cam_num]+ADtype+"1:"
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
"""
ADtype='TIFF' # doesn't matter which type since not saving
ADplugin = cam_pv_dictionary()[cam_num]+ADtype+"1:"
AD_exposure_time(ADplugin,ExposureTime)
ADioc = cam_pv_dictionary()[cam_num]
AD_exposure_time(ADioc,ExposureTime)
##############################################################################################################
############################## Scanning with a camera ##############################
##############################################################################################################
def cam_scan_setup(cam_num,ADtype='TIFF',**kwargs):
def cam_scan_setup(cam_num,savePlugin='TIFF1:',**kwargs):
"""
sets up the BL scanRecord for scanning at every point
**kwargs
......@@ -49,50 +51,66 @@ def cam_scan_setup(cam_num,ADtype='TIFF',**kwargs):
(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 = dtype by default
prefix = MDAscan+mda_fileNum' with nzeros=4
"""
ADplugin = cam_pv_dictionary()[cam_num]+ADtype+"1:"
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):
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]
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)
"""
ADplugin = cam_pv_dictionary()[cam_num]
AD_Done(ADplugin,**kwargs)
ADioc = cam_pv_dictionary()[cam_num]
AD_Done(ADioc,**kwargs)
def cam_save_setup(cam_num,ADtype='TIFF',**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]+ADtype+"1:"
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
AD_SaveFileSetup(ADplugin,**kwargs)
def cam_last_filepath(cam_num,ADtype='TIFF',verbose=True):
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]+ADtype+"1:"
ADplugin = cam_pv_dictionary()[cam_num]+savePlugin
fpath = AD_last_filename(ADplugin)
return fpath
def cam_plot_last(cam_num,ADtype='TIFF',h=5,v=10,**kwargs):
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,h,v,**kwargs)
plot_image(fpath,savePlugin,h,v,**kwargs)
from epics import caput,caget
import iexcode.instruments.cfg as iex
from iexcode.instruments.Kappa import _kappa_motor_dictionary,_kappaTransfer_StrSeq,physical_motors,pseudo_motors
from iexcode.instruments.Kappa import kappa_init, mvkappa,PI_motor_servo
from iexcode.instruments.utilities import dateandtime
from iexcode.instruments.Motors import Motors
def move_PI_motors_full_range(kappa_pos=[0,0,0,90,0,0,0]):
"""
runs the PI motors through thier full range to prevent burrs and uneven wearing
run on Mondays
"""
ds = kappa_init()
kappa_Motors = Motors('kappa',_kappa_motor_dictionary(),physical_motors,pseudo_motors)
kappa_motor_dictionary=_kappa_motor_dictionary()
PI_motor_servo(Enable_Disable='Enable')
"Setting everyone to transfer"
caput(_kappaTransfer_StrSeq(),1)
print('Starting kappa move sequence: ', dateandtime())
for motor in ['tth','kth','kap']:
transfer = iex.BL.motors.get(motor)
LLM = caget(kappa_motor_dictionary[motor][3]+".LLM")
HLM = caget(kappa_motor_dictionary[motor][3]+".HLM")
print(" Moving "+motor+" through it's full range: ",LLM,HLM)
kappa_Motors.move(motor,LLM)
kappa_Motors.move(motor,HLM)
kappa_Motors.move(motor,transfer)
print('Finished kappa move sequence: ', dateandtime())
mvkappa(kappa_pos)
PI_motor_servo(Enable_Disable='Disable')
......@@ -245,6 +245,13 @@ def sotw_ID_steering_plot(detCA4,scanNum_h,scanNum_v):
def sotw_wire(detH,detV,**kwargs):
"""
Scans the horizontal and vertical wires
use sotw_detectors(branch) to get default detectors
**kwargs for wire_scans
sound: True/False (default => True)
ID_eV: if not None sets the ID (default => None)
"""
#scanning
wire_scans(**kwargs)
......@@ -278,13 +285,13 @@ def sotw_slit_positions(**kwargs):
grt = grating_get()
detDiode= kwargs['detDiode']
list_position = [grt,0,0,0,0]
for slit_name in kwargs['slit_list']:
message={'slit2B': 'M1 alignment and slit center','slit1A':'slit center'}
print('\n---------- Scanning '+slit_name+':\n')
message[slit_name]
list_position = [grt,0,0,0,0]
flag = 2
while flag >1:
#scanning
......@@ -318,6 +325,7 @@ def sotw_slit_positions(**kwargs):
if slit_name == 'slit2B':
list_position[2] = v
list_position[1] = h
print(slit_name,list_position) #JM debugging
elif slit_name == 'slit1A':
list_position[4] = v
list_position[3] = h
......@@ -454,8 +462,8 @@ def sotw_check_flux(**kwargs):
#plotting
scanNum = last_mda()
plt.plot(scanNum,detDiode,flux=3)
plt.show()
plot_mda(scanNum,detDiode,flux=3)
def sotw(grt,branch,wait=False,**kwargs):
"""
......