Time optimizations

This commit is contained in:
gac-x11ma
2020-02-11 15:43:31 +01:00
parent 15313b378b
commit db48c426f4
9 changed files with 69 additions and 38 deletions

View File

@@ -1,12 +1,12 @@
#Wed Feb 05 13:59:28 CET 2020
#Sun Feb 09 15:51:55 CET 2020
HARMONIC_ID_1=1
ALPHA_ID_2=0.0
ENERGY=800.0
ENERGY=708.5
ALPHA_ID_1=0.0
POL_ID_2=Lin_Hor
POL_ID_1=Lin_Hor
OFFSET_ID_1=0.0
NORM_FILE=/sls/X11MA/data/X11MA/Data1/public/PEEM/2020_02/20200205/Take_Image_350/0/i350_1_0.tif
ID=ID2
OFFSET_ID_2=0.0
POL_ID_2=Circ_Minus
POL_ID_1=Circ_Plus
OFFSET_ID_1=-2.5
NORM_FILE=/sls/X11MA/data/X11MA/Data1/public/PEEM/2020_02/20200206/Take_Image_402/0/i402_1_0.tif
ID=ID1_ID2
OFFSET_ID_2=-2.5
HARMONIC_ID_2=1

View File

@@ -1,2 +1,2 @@
#Wed Feb 05 14:20:03 CET 2020
FileSequentialNumber=381
#Tue Feb 11 15:43:01 CET 2020
FileSequentialNumber=568

View File

@@ -1,4 +1,4 @@
#Wed Feb 05 10:26:08 CET 2020
#Sat Feb 08 23:55:14 CET 2020
spatialCalOffsetY=NaN
spatialCalOffsetX=NaN
colormapLogarithmic=false
@@ -6,10 +6,10 @@ scale=1.0
grayscale=false
spatialCalScaleX=NaN
spatialCalScaleY=NaN
colormapMax=1000.0
colormapMax=200.0
rescaleOffset=0.0
roiWidth=-1
colormap=Flame
colormap=Grayscale
invert=false
colormapMin=0.0
rotationCrop=false

View File

@@ -1,4 +1,4 @@
#Wed Feb 05 13:41:09 CET 2020
#Mon Feb 10 22:27:33 CET 2020
spatialCalOffsetY=NaN
spatialCalOffsetX=NaN
colormapLogarithmic=false
@@ -6,7 +6,7 @@ scale=1.0
grayscale=false
spatialCalScaleX=NaN
spatialCalScaleY=NaN
colormapMax=2.0
colormapMax=1.5
rescaleOffset=0.0
roiWidth=-1
colormap=Grayscale
@@ -19,7 +19,7 @@ spatialCalUnits=null
flipVertically=false
roiHeight=-1
flipHorizontally=false
colormapAutomatic=true
colormapAutomatic=false
roiY=0
roiX=0
transpose=false

View File

@@ -90,10 +90,10 @@ def grab_frame(source, roi=None, wait_next=False, rmv_outliers=True):
if wait_next:
if str(eiger.grabMode)=="Single":
eiger.start()
#eigar.waitCacheChange(20000)
#eiger.getDataArray().waitCacheChange(2000)
source.waitNext(20000)
#ret = load_image(Utils.grayscale(source.output, Rectangle(roi[0], roi[1], roi[2], roi[3]) if (roi is not None) else None))
time.sleep(1.0)
time.sleep(0.01)
data=source.data
if roi is not None:
data = data.getRoi(Rectangle(roi[0], roi[1], roi[2], roi[3]))
@@ -141,15 +141,13 @@ def remove_outliers(imgdata, threshold = 1e9, replace_value=None):
return data
"""
def save_as_tiff(data, filename, check=False, show = False):
def _save_as_tiff(data, filename, check=False, show = False):
if type(data) == Data:
ip = load_array(data.matrix)
else:
ip = data
data = get_ip_array(ip)
#ip.show()
#plot(data)
if not os.path.exists(os.path.dirname(filename)):
os.makedirs(os.path.dirname(filename))
save_image(ip, filename,"tiff")
@@ -157,10 +155,16 @@ def save_as_tiff(data, filename, check=False, show = False):
if check:
import java.util.Arrays as Arrays
ip=open_image(filename)
read = get_ip_array(ip)
if not Arrays.deepEquals(read, data):
raise Exception("Error reading array")
#plot(read)
read = get_ip_array(ip)
print (" ------> Error reading array: " + str(filename))
def save_as_tiff(data, filename, check=False, show = False, parallel=True):
if parallel:
fork((_save_as_tiff,(filename, check, show)),)
else:
_save_as_tiff(data, filename, check, show)
def trigger_eiger(wait=False):
eiger.start()

View File

@@ -288,6 +288,7 @@ def assert_machine_ok(wait = True):
ID1status=get_id_control(1)
ID2status=get_id_control(2)
Ringstatus=get_ring_status()
oldRingstatus=Ringstatus
checkRing=0

View File

@@ -25,12 +25,13 @@ AVERAGE = [int(AVERAGE_1), int(AVERAGE_2)]
AVERAGE = [int(AVERAGE_1), int(AVERAGE_2)]
ENERGY = [ENERGY_1, ENERGY_2]
POLARIZATION = [POLARIZATION_1, POLARIZATION_2]
if METHOD == "Two_Energies":
for en in [ENERGY_1, ENERGY_2]:
if en < 89.9 or en > 2000:
raise Exception("Bad energy argument")
start = time.time()
path = "{data}/{year}_{month}/{date}" + "/" + METHOD + "_{seq}%03d"
set_exec_pars(path= path, format="txt", layout="table", open=True)
@@ -155,14 +156,13 @@ def save_image_file(frame, cycle=-1, frame_index=0):
if SHOW_IMAGES:
plot(frame.matrix if (type(frame) == Data) else get_ip_array(frame), name = get_image_file_name(cycle, frame_index, True))
if AUTO_SAVE and (frame is not None):
filename = get_image_file_name(cycle, frame_index)
filename = get_image_file_name(cycle, frame_index)
save_as_tiff(frame, filename, check=False)
log(filename)
print filename
# log("SV:"+Format(startvoltage,"0.000")+" OB:"+Format(objective,"0.00")+" ST:"+Format(LEEMtemp,"0.0"))
eiger.stop()
eiger.grabMode=eiger.GrabMode.Single
eiger.grabMode=eiger.GrabMode.Single
try:
#Do the measurement loop
@@ -175,12 +175,13 @@ try:
if METHOD == "Two_Energies":
change_energy(ENERGY_1)
###??? SETAR POLARIZATION?
###??? SETAR POLARIZATION?
#time.sleep(1)
for i in range(2):
assert_status_ok()
eiger.setExposure(EXPOSURE[i])
for i in range(2):
if (cycle == 1) or (METHOD != "Take_Image"):
assert_status_ok()
eiger.setExposure(EXPOSURE[i])
print "--- Grabing " + str(AVERAGE[i])+ " frames - cycle: " + str(cycle) + " step: " + str(i)
ret = grab_frames(image, AVERAGE[i], roi=None, wait_next=True)
frames.append(average_frames(ret) if AVERAGE[i] > 1 else ret[0])
@@ -196,7 +197,7 @@ try:
switch_pol()
if METHOD == "Two_Energies":
print "--- Switching energy..."
change_energy(ENERGY_2)
change_energy(ENERGY_2)
#time.sleep(1)
if (METHOD == "Two_Pol") or (METHOD == "Two_Energies"):
@@ -213,7 +214,7 @@ try:
# temp = getLEEMtemp()
# log(0 , "Temp : " + Format(temp,"0.00") + " OB : " + Format(objective,"0.00") + " StigmaA : " + " StigmaB : " )
# Auto average and save
if (METHOD != "Take_Image") and (MEASUREMENTS > 1) and (AUTO_SAVE == 1):
print "--- Averaging..."
for i in range(len(frames)):
@@ -225,8 +226,9 @@ try:
measures.append(ip)
#av = average_frames(measures) #Result is transposed???
av=average_ips (measures, roi=None, as_float=True)
save_image_file(av, -1, i)
save_image_file(av, -1, i)
finally:
if not DRY_RUN:
close_vg10()
eiger.grabMode=eiger.GrabMode.Continuous
eiger.grabMode=eiger.GrabMode.Continuous
eiger.start()

View File

@@ -10,11 +10,13 @@ if get_exec_pars().source == CommandSource.ui:
NUMBER_SCANS =1
RANGES = [[500.0, 1000.0, 100.0]]
DRY_RUN=False
DRY_RUN=True
if len(RANGES) == 0:
raise Exception("No scan range defined")
start = time.time()
eiger.stop()
eiger.grabMode=eiger.GrabMode.Single
eiger.setExposure(EXPOSURE)
@@ -110,4 +112,5 @@ finally:
if not DRY_RUN:
close_vg10()
eiger.grabMode=eiger.GrabMode.Continuous
eiger.start()
eiger.start()
print "Running time: " + str(time.time() - start)

21
script/test/BenchGrab.py Normal file
View File

@@ -0,0 +1,21 @@
eiger.stop()
eiger.grabMode=eiger.GrabMode.Single
eiger.setExposure(0.1)
AVERAGE=1
def grab_image(position, scan):
eiger.start()
#eiger.getDataArray().waitCacheChange(2000)
image.waitNext(2000)
def grab_image(position, scan):
#av = grab_frame(image, roi=None, wait_next=True, rmv_outliers=False)
frames = grab_frames(image, AVERAGE, roi=None, wait_next=True)
av = average_frames(frames)
if True:
filename = get_exec_pars().path + "/" + ("%03d.tif" % scan.recordIndex)
filename = get_context().setup.expandPath(filename)
print filename
save_as_tiff(av, filename, parallel=True)
tscan(eiger.dataMatrix, 10, 0.01, before_read=grab_image, save=False, plot_disabled=True)