diff --git a/config/settings.properties b/config/settings.properties index 31e3038..6074c92 100644 --- a/config/settings.properties +++ b/config/settings.properties @@ -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 diff --git a/config/variables.properties b/config/variables.properties index 2856071..c5390a3 100644 --- a/config/variables.properties +++ b/config/variables.properties @@ -1,2 +1,2 @@ -#Wed Feb 05 14:20:03 CET 2020 -FileSequentialNumber=381 +#Tue Feb 11 15:43:01 CET 2020 +FileSequentialNumber=568 diff --git a/devices/image.properties b/devices/image.properties index c28fa78..47ea7a6 100644 --- a/devices/image.properties +++ b/devices/image.properties @@ -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 diff --git a/devices/norm.properties b/devices/norm.properties index 4b6cf5f..3d39da4 100644 --- a/devices/norm.properties +++ b/devices/norm.properties @@ -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 diff --git a/script/devices/eiger.py b/script/devices/eiger.py index ae3a2c7..741f9f3 100644 --- a/script/devices/eiger.py +++ b/script/devices/eiger.py @@ -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() diff --git a/script/local.py b/script/local.py index 9ab1a41..1c2bec6 100644 --- a/script/local.py +++ b/script/local.py @@ -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 diff --git a/script/templates/Eiger2Img.py b/script/templates/Eiger2Img.py index 4cbe67a..e2942ea 100644 --- a/script/templates/Eiger2Img.py +++ b/script/templates/Eiger2Img.py @@ -25,12 +25,13 @@ 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) data_path = get_context().setup.expandPath(path) @@ -155,14 +156,13 @@ def save_image_file(frame, cycle=-1, frame_index=0): 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) - save_as_tiff(frame, filename, check=True) + 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 - try: #Do the measurement loop for cycle in range(1, MEASUREMENTS + 1): @@ -175,12 +175,13 @@ try: change_energy(ENERGY_1) ###??? SETAR POLARIZATION? - time.sleep(1) + #time.sleep(1) for i in range(2): - assert_status_ok() - eiger.setExposure(EXPOSURE[i]) - print "--- Grabing frames step=", i + 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]) imageinfo("I") @@ -196,7 +197,7 @@ try: if METHOD == "Two_Energies": print "--- Switching energy..." change_energy(ENERGY_2) - time.sleep(1) + #time.sleep(1) if (METHOD == "Two_Pol") or (METHOD == "Two_Energies"): if (METHOD == "Two_Energies") or ((current_pol == 2) or (current_pol==3)): @@ -213,7 +214,7 @@ try: # log(0 , "Temp : " + Format(temp,"0.00") + " OB : " + Format(objective,"0.00") + " StigmaA : " + " StigmaB : " ) # Auto average and save - if MEASUREMENTS > 1 and AUTO_SAVE == 1: + if (METHOD != "Take_Image") and (MEASUREMENTS > 1) and (AUTO_SAVE == 1): print "--- Averaging..." for i in range(len(frames)): measures = [] @@ -225,8 +226,9 @@ try: #av = average_frames(measures) #Result is transposed??? av=average_ips (measures, roi=None, as_float=True) save_image_file(av, -1, i) -finally: +finally: if not DRY_RUN: close_vg10() eiger.grabMode=eiger.GrabMode.Continuous - eiger.start() \ No newline at end of file + eiger.start() + print "Running time: " + str(time.time() - start) \ No newline at end of file diff --git a/script/templates/EigerAbsSpec.py b/script/templates/EigerAbsSpec.py index 86b1aa1..9e56bbb 100644 --- a/script/templates/EigerAbsSpec.py +++ b/script/templates/EigerAbsSpec.py @@ -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() \ No newline at end of file + eiger.start() + print "Running time: " + str(time.time() - start) \ No newline at end of file diff --git a/script/test/BenchGrab.py b/script/test/BenchGrab.py new file mode 100644 index 0000000..3fe8ef1 --- /dev/null +++ b/script/test/BenchGrab.py @@ -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)