diff --git a/CHANGELOG b/CHANGELOG index 6e421102420305b87f1871fb535b879540fbf25e..15e9d385c119c6dc33da666cb2ee0227b40522a4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,20 @@ <<<<<<< HEAD +26.09.2018: +update downloadversionIRdata: + - include FLIR into the downloadscript, Case1 (V2.8.0) +25.09.2018: +update downloadversionIRdata: + - improved performance (V2.7.1), implement switch between test and ArchiveDB (V2.7.0) +13.09.2018: +update downloadversionIRdata: + - bugfixes, verbose level passed now throw, V2.6.1 +12.09.2018: +update downloadversionIRdata: + - ToDo list added + - file added to create temperature HDF5 files 21.08.2018: update downloadversionIRdata: + - remove dependency on readrestdb V2.6.0 - include version number, now 2.5.3 into the files - bug fixes for downloadversion IRdata - improvement of exception handling, replace some exception with warnings and improve error messages @@ -19,4 +33,16 @@ changes in downloadversionIRdata: bugfixes in downloadversionIRdata: - fixed: stepwise download of data in blocks of 2 seconds (used the wrong indices) - fixed: not find the infratecfilter - - fixed: wrong time intervall for TC divertor data \ No newline at end of file + - fixed: wrong time intervall for TC divertor data + +Versions: +V3.0.0: download of heat flux data not also possible +V2.8.0: add FLIR camera into the downloadroutine, adapt the port interface, that it accept strings and numbers, numbers are automatically used for QRT +V2.7.1: prove the temperature calculation, less ram usage +V2.7.0: implement dependency on upload_config; switch between ArchiveDB and Test archive possible +V2.6.1: bugfixes with verbose level +V2.6.0: dependency on read_restdb removed +V2.5.3: version number included; improved exception handeling +V2.0.0: upgrade an changes to download OP1.2b data, changes of the method and what is stored +V1.1.0: download of thermocouples implemented +V1.0.0: download test of OP1.2a data \ No newline at end of file diff --git a/Create_HDF5_from_archive_data.py b/Create_HDF5_from_archive_data.py index 2ebaaffde89b9d50275582f987af5eeaa72ddfec..11675a120a371b1fe25815298b417f32fd389e5b 100644 --- a/Create_HDF5_from_archive_data.py +++ b/Create_HDF5_from_archive_data.py @@ -11,15 +11,15 @@ if __name__=='__main__': import downloadversionIRdata as IR_DL import numpy as np localpath="" - time_s=4 + time_s=13 - programlist = ["20171018.011"] - ports=[51] + programlist = ["20180920.010","20180920.049"] + ports=[31] for program in programlist: for port in ports: try: - exist,dimof,data1,valid=IR_DL.get_temp_from_raw_by_program_V2(portnr=port,program=program,time_s=time_s,threads=4) + exist,dimof,data1,valid=IR_DL.get_temp_from_raw_by_program_V2(portnr=port,program=program,time_s=time_s,threads=4,verbose=5) if exist: print("data found") stream="images" @@ -27,10 +27,13 @@ if __name__=='__main__': data1=data1.swapaxes(0,2) data1=data1.swapaxes(0,1) dtype = str(data1.dtype) - tmpfile = localpath+"AEF"+str(port)+"_"+program+"_int_temp_V2" + tmpfile = localpath+"AEF"+str(port)+"_"+program+"_temp_V2" tmpfile += ".h5" with h5.File(tmpfile, 'w') as f: f.create_dataset('timestamps', data=dimof, dtype='uint64' )#,compression="gzip") - f.create_dataset(stream, data=data1, dtype='uint16' , chunks = (np.shape(data1)[0],np.shape(data1)[1],1)) + dset=f.create_dataset(stream, shape=np.shape(data1),dtype=dtype , chunks = (np.shape(data1)[0],np.shape(data1)[1],1)) + data1=np.ascontiguousarray(data1) + dset.write_direct(data1) + del data1 except Exception as E: print(E) \ No newline at end of file diff --git a/IR_config_constants.py b/IR_config_constants.py index 73d42c191bdb5ac702b38985f161b653180998a0..e25851093ab9a46b89bce1b254be1eb03e7f45ca 100644 --- a/IR_config_constants.py +++ b/IR_config_constants.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- """ Created on Tue Jun 5 09:26:06 2018 -Version: 2.7.0 +Version: 2.8.0 @author: holn constants and config parameters """ @@ -50,7 +50,8 @@ portcamdict={ 'AEF40': 'IRCam_Caleo768kL_0701', 'AEF41': 'IRCam_Caleo768kL_0902', 'AEF50': 'Infratec_9312907', - 'AEF51': 'IRCam_Caleo768kL_0905'} + 'AEF51': 'IRCam_Caleo768kL_0905', + 'AEK51': 'FLIR_SC8303_00037'} } camlimdict={ diff --git a/ToDO.txt b/ToDO.txt index 99d91504fd1372e061aff65ba4ddf287d1d771ce..63c37a94dc87b352959388933030d621f9061c01 100644 --- a/ToDO.txt +++ b/ToDO.txt @@ -5,6 +5,7 @@ download: - implement absolute calibration - implement download of the stored temperature data (After the upload) - implement download of the stored heat flux data (After the upload) +- implement download of FLIR data upload: - upload the new nucing files for AEF50 (the workaround) @@ -12,5 +13,7 @@ upload: - upload scene models - upload temperature - upload heat flux data +- upload FLIR data +- upload FLIR LUT diff --git a/downloadversionIRdata.py b/downloadversionIRdata.py index 2fe655e0bd050afe7da44dfb931504294044340b..e1556d2af6cde8fb71bd2b837f136e010aca9d6a 100644 --- a/downloadversionIRdata.py +++ b/downloadversionIRdata.py @@ -3,8 +3,8 @@ Created on Wed Oct 25 15:51:46 2017 updated on Tue Aug 21 10:20:00 2018 -Version: 2.7.0 -(Numbering: #of big changes(OP1.2a download V1, OP1.2b download V2) . #of updates to add functionalities . #number of updates for bug fixes ) +Version: 2.8.0 +(Numbering: #of big changes(OP1.2a download V1, OP1.2b download V2, heatflux V3) . #of updates to add functionalities . #number of updates for bug fixes ) @author: holn """ @@ -726,6 +726,7 @@ if fastDL: for i in range(threads): images=images+resultdict[order.index(i)][3] times=times+resultdict[order.index(i)][2] + resultdict[order.index(i)]=[] del resultdict return success,np.array(times),images # except Exception as E: @@ -793,7 +794,95 @@ if fastDL: print(datetime.datetime.now(),"correcting bad pixels") images=IR_tools.correct_images(images,badpixels) out_q.put([threadnumber,successes,time,images]) - + +def download_raw_FLIR_images_via_png(program,time_s,version=0,threads=1,verbose=0): + prog=get_program_from_PID(program) + if not prog[0]: + if verbose>0: + print("program not found, cannot download the data") + return False,[0],[0],0 + else: + t1=prog[1]['trigger']['1'][0] + t6=prog[1]['trigger']['6'][0] + larchivepath=archivepath+"W7X/QSR07_FLIR/AEK51_raw" + if type(time_s)==list: + tstart=time_s[0] + tstop=time_s[1] + if tstop<tstart: + raise Exception("endtime before starttime") + stdate=datetime.datetime.utcfromtimestamp((t1-100)/1e9+tstart) + stdate=stdate.isoformat() + enddate=datetime.datetime.utcfromtimestamp((t1)/1e9+tstop) + enddate=enddate.isoformat() + else: + stdate=datetime.datetime.utcfromtimestamp((t1-100)/1e9) + stdate=stdate.isoformat() + if time_s==0: + enddate=datetime.datetime.utcfromtimestamp(t6/1e9) + enddate=enddate.isoformat() + else: + enddate=datetime.datetime.utcfromtimestamp((t1)/1e9+time_s) + enddate=enddate.isoformat() + #"2017-11-15 08:00:00" + typ1_version=get_latest_version("QSR07_FLIR/AEK51_raw_DATASTREAM") + if typ1_version==None: + mode=1 + else: + mode=2 + if mode==1: + ### okay the data is stored probably as different sets (so recorded with FLIR software) + timess=get_FLIR_Pset_times(stdate,enddate,version) + ### we not know the times for all presets for the program, now we have to download them, if times is not empty + if timess==[[],[],[],[]]: + exist=False + time=[] + frames=[] + tsets=[] + else:#timess is not empty, there is data in at least one Pset + exist=True + + elif mode==2:##the data is stored only in one datastream, at least this datastream exist + print("not implemented") + else: + raise Exception("cannot identifie the way the searched data is stored!") + + return exist,time,frames,mode,tsets + +def get_FLIR_Pset_times(stdate,enddate,version=0): + larchivepath=archivepath+"W7X/QSR07_FLIR/AEK51_raw" + if version==0: + versions=[] + versions.append(get_latest_version("QSR07_FLIR/AEK51_raw_PS0_DATASTREAM")) + versions.append(get_latest_version("QSR07_FLIR/AEK51_raw_PS1_DATASTREAM")) + versions.append(get_latest_version("QSR07_FLIR/AEK51_raw_PS2_DATASTREAM")) + versions.append(get_latest_version("QSR07_FLIR/AEK51_raw_PS3_DATASTREAM")) + else: + versions=[version,version,version,version] + timess=[] + if version==0:##no version specified search for data in all versions + for version0 in versions: + if version0>0: + found=False + while version0>0 and not found: + try: + times_0=AKF_2.get_time_intervals(larchivepath+"_PS0_DATASTREAM/V"+str(version0),stdate.replace("T"," "),enddate.replace("T"," "))# + found=True + except: + found=False + times_0=[] + version0=version0-1 + timess.append(times_0) + else: + timess.append([]) + else: + for version0 in versions: + try: + times_0=AKF_2.get_time_intervals(larchivepath+"_PS0_DATASTREAM/V"+str(version0),stdate.replace("T"," "),enddate.replace("T"," "))# + except: + times_0=[] + timess.append(times_0) + return timess + def download_last_raw_image_by_time(port,starttime,stoptime,version=0): OP=get_OP_by_time(starttime) Cam=portcamdict[OP]['AEF'+str(port)] @@ -1293,71 +1382,96 @@ def get_temp_from_raw_by_program_V2(portnr,program,time_s=0,emi=0.8,version=0,th return get_temp_from_raw_by_program(portnr,program,time_s=time_s,emi=emi,T_version=2,version=version,threads=threads,give_ERROR=give_ERROR,use_firstframe_as_background=use_firstframe_as_background) def get_temp_from_raw_by_program(portnr,program,time_s=0,emi=0.8,T_version=2,version=0,threads=1,give_ERROR=False,use_firstframe_as_background=False,back_emissivity=0.8,verbose=0): - cexist,background,LUT,refT,gain,offset,badpixels,t_exp,cfilter,gain_error,offset_error=get_calib_data(portnr,program,emi,T_version,version,back_emissivity,verbose=verbose-1) - if not cexist: - if verbose>0: - print("Unable to load the complete calibration data for",program," please confirm that this data was uploaded") - return False,[0],[0],False - else: - if verbose>0: - print(datetime.datetime.now(),"raw download start") - if fastDL: - exist,time,frames=download_raw_images_by_program_via_png(portnr,program,time_s,version,threads,verbose=verbose-1) - else: - exist,time,frames=download_raw_images_by_program(portnr,program,time_s,version,verbose=verbose-1) - if exist: - frames=[im.swapaxes(0,1) for im in frames] + FLIR=False + if type(portnr) is str: + try: + camera=portcamdict[portnr] + if camera.split("_")[0]=='FLIR': + FLIR=True else: - raise Exception("no data found") - if not exist: - raise Warning("data not found in database!") - return False,[0],[0],False + FLIR=False + portnr=int(portnr.split("AEF")[1]) + goon=True + except Exception as E: + raise Exception("unknown Port!"+E) + elif type(portnr) is int: + FLIR=False + goon=True + else: + goon=False + if not goon: + raise Exception("the given port is neither a number or a valid String!") + else: + if FLIR: + print("to be implemented") + exist,time,frames,mode=download_raw_FLIR_images_via_png(program,time_s,version,threads,verbose=verbose-1) else: - if verbose>0: - print(datetime.datetime.now(),"raw download finished") - FOV=get_FOV_mask(portnr) - if use_firstframe_as_background: - bim=apply_NUC([frames[0]],gain,offset) - background=get_average_background_recangle(portnr,bim[0]) - if give_ERROR: - success,frames,error_images=apply_calib_on_raw(frames,background,LUT,refT,gain,offset,gain_error,offset_error,False,give_ERROR,verbose=verbose-1) - else: - success,frames=apply_calib_on_raw(frames,background,LUT,refT,gain,offset,gain_error,offset_error,False,give_ERROR,verbose=verbose-1) - if not success: + cexist,background,LUT,refT,gain,offset,badpixels,t_exp,cfilter,gain_error,offset_error=get_calib_data(portnr,program,emi,T_version,version,back_emissivity,verbose=verbose-1) + if not cexist: if verbose>0: - print("calculation of the temperature failed, calibration could not be applied") - return False,time,frames,False + print("Unable to load the complete calibration data for",program," please confirm that this data was uploaded") + return False,[0],[0],False else: - - for i in range(len(frames)): - frames[i]=(frames[i]*FOV).astype(np.float32) - if verbose>0: - print(datetime.datetime.now(),"correcting bad pixels") - frames=IR_tools.correct_images(frames,badpixels) if verbose>0: - print(datetime.datetime.now(),"checking temperaturerange") - valid=True - # for i in range(len(frames)): - try: - check_temperature_range(time[0],np.max(frames)-273.15,np.min(frames[:][np.nonzero(frames[i])])-273.15,portnr,t_exp,cfilter) - except Exception as E: - print(E) - valid=False - # i=len(frames) - date=int(program.split(".")[0]) - if date>20180712 and date<20180720: - prog=get_program_from_PID(program) - if prog[0]: - # t0time=prog[1]['trigger']['0'][0] - starttime=prog[1]['trigger']['1'][0] - toff=time[0]-starttime - if toff>10e6: - print("time offset detected, offset is "+str(toff)+" ns, correcting") - time[:]=time[:]-toff - if give_ERROR: - return exist,time,frames,valid,error_images + print(datetime.datetime.now(),"raw download start") + if fastDL: + exist,time,frames=download_raw_images_by_program_via_png(portnr,program,time_s,version,threads,verbose=verbose-1) + else: + exist,time,frames=download_raw_images_by_program(portnr,program,time_s,version,verbose=verbose-1) + if exist: + frames=[im.swapaxes(0,1) for im in frames] + else: + raise Exception("no data found") + if not exist: + raise Warning("data not found in database!") + return False,[0],[0],False else: - return exist,time,frames,valid + if verbose>0: + print(datetime.datetime.now(),"raw download finished") + FOV=get_FOV_mask(portnr) + if use_firstframe_as_background: + bim=apply_NUC([frames[0]],gain,offset) + background=get_average_background_recangle(portnr,bim[0]) + if give_ERROR: + success,frames,error_images=apply_calib_on_raw(frames,background,LUT,refT,gain,offset,gain_error,offset_error,False,give_ERROR,verbose=verbose-1) + else: + success,frames=apply_calib_on_raw(frames,background,LUT,refT,gain,offset,gain_error,offset_error,False,give_ERROR,verbose=verbose-1) + print(datetime.datetime.now(),"Temperature calculation done") + if not success: + if verbose>0: + print("calculation of the temperature failed, calibration could not be applied") + return False,time,frames,False + else: + + for i in range(len(frames)): + frames[i]=(frames[i]*FOV).astype(np.float32) + if verbose>0: + print(datetime.datetime.now(),"correcting bad pixels") + frames=IR_tools.correct_images(frames,badpixels) + if verbose>0: + print(datetime.datetime.now(),"checking temperaturerange") + valid=True + # for i in range(len(frames)): + # try: + # check_temperature_range(time[0],np.max(frames)-273.15,np.min(frames[:][np.nonzero(frames[i])])-273.15,portnr,t_exp,cfilter) + # except Exception as E: + # print(E) + # valid=False + # i=len(frames) + date=int(program.split(".")[0]) + if date>20180712 and date<20180720: + prog=get_program_from_PID(program) + if prog[0]: + # t0time=prog[1]['trigger']['0'][0] + starttime=prog[1]['trigger']['1'][0] + toff=time[0]-starttime + if toff>10e6: + print("time offset detected, offset is "+str(toff)+" ns, correcting") + time[:]=time[:]-toff + if give_ERROR: + return exist,time,frames,valid,error_images + else: + return exist,time,frames,valid def get_temp_from_raw_by_program_fullthreads(portnr,program,time_s=0,emi=0.8,T_version=2,version=0,threads=1,give_ERROR=False,check_range=True): if threads==1 or not fastDL: @@ -1603,14 +1717,14 @@ def apply_calib_on_raw(images,background,LUT,refT=28.5,gain=0,offset=0,gain_erro if verbose>0: print(datetime.datetime.now(),"background treatment") # if fullbackground: - + #sbackground=np.zeros(np.shape(images[0]),dtype=np.float32)+background for i in range(len(images)): - images[i]=(images[i]-background).astype(np.float32) + images[i]=np.clip((images[i]-background),a_min=0,a_max=None).astype(np.uint16) # else: # for i in range(len(images)): # images[i]=images[i]-background # images=np.array(images.clip(min=0),dtype=np.uint16) - images=[np.round(im.clip(min=0)).astype(np.uint16) for im in images] +# images=[np.round(im.clip(min=0)).astype(np.uint16) for im in images] if verbose>0: print(datetime.datetime.now(),"applying LUT") LUT=np.array([LUT[1],LUT[2]]) @@ -1635,6 +1749,51 @@ def apply_calib_on_raw(images,background,LUT,refT=28.5,gain=0,offset=0,gain_erro raise Warning(E) return False,[0] +#def apply_calib_on_raw_fast(images,background,LUT,refT=28.5,gain=0,offset=0,gain_error=0,offset_error=0,fullbackground=False,give_ERROR=False, verbose=0): +# try: +# LUT=np.array([LUT[1],LUT[2]]) +# if type(gain)!=int and type(offset)!=int: +# if verbose>0: +# print(datetime.datetime.now(),"NUCing") +# # eliminate bad offset and gain points +# offset[offset==np.inf] = 0 +# offset[offset==-np.inf] = 0 +# gain[gain==np.inf] = 1 +# gain[gain==-np.inf] = 1 +# if give_ERROR: +# terror=[] +# for i in range(len(images)): +# images[i]=(images[i]*gain+offset).astype(np.float32) +# terror=terror+[terror_from_LUT(LUT,images[i])] +# eima=np.round(images[i]*gain_error + offset_error).astype(np.uint16) +# max_image = temp_from_LUT(LUT,images[i]+eima) +# min_image = temp_from_LUT(LUT,images[i]-eima) +# terror[i] = (terror[i] + (max_image - min_image)/2).astype(np.float32) +# return True,images,terror +# else: +# for i in range(len(images)): +# images[i]=(temp_from_LUT(LUT,np.clip(images[i]*gain+offset-background,a_min=0,a_max=None).astype(np.uint16))+(refT+273.15)).astype(np.float32) +# return True,images +# else: +# if verbose>0: +# print(datetime.datetime.now(),"start Temperature calculation") +# if give_ERROR: +# terror=[] +# for i in range(len(images)): +# images[i]=(temp_from_LUT(LUT,np.clip(images[i]-background,a_min=0,a_max=None).astype(np.uint16))+(refT+273.15)).astype(np.float32) +# terror=terror+[terror_from_LUT(LUT,images[i])] +# max_image = temp_from_LUT(LUT,images[i]) +# min_image = temp_from_LUT(LUT,images[i]) +# terror[i] = (terror[i] + (max_image - min_image)/2).astype(np.float32) +# return True,images,terror +# else: +# for i in range(len(images)): +# images[i]=(temp_from_LUT(LUT,np.clip(images[i]-background,a_min=0,a_max=None).astype(np.uint16))+(refT+273.15)).astype(np.float32) +# return True,images +# except Exception as E: +# raise Warning(E) +# return False,[0] + def apply_NUC(images,gain,offset,gain_error=0,offset_error=0,give_error=False): """ apply_NUC(images=numpy array(time,width,height),gain,offset =numpy array(width,height) ) @@ -2088,124 +2247,48 @@ def get_program_from_PID(instring): end of the copied functions @author: thomsen """ -#%% +#%% dummy run of the script if __name__=='__main__': print("local function calling") - port=10 -# prog="20171108.015" - prog="20171109.021" -# prog="20171025.030" -# prog="20171012.035" - prog="20171005.024" - prog="20171109.056" - prog="20171207.050" - program="20180712.027" - port=20 - prog="20180724.030" - port=51 - program="20180809.010" +# port=21 +# prog="20180822.017" +# status,time,images,valid=get_temp_from_raw_by_program(port,prog,time_s=[6,7],emi=0.82,T_version=2,version=0,threads=1,give_ERROR=False,use_firstframe_as_background=False,verbose=5) # plt.figure() -# for port in [10,11,20,21,30,31,40,41,51]: -# framerate=get_camera_framerate_by_program(port,program) -# if framerate[0]: -# plt.plot(framerate[1],framerate[2],label="AEF"+str(port)) -# plt.legend() -# plt.grid() - port=10 - prog="20180816.016" - prog="20180816.018"#[0,6] - port=21 - prog="20180822.017" - status,time,images,valid=get_temp_from_raw_by_program(port,prog,time_s=[6,7],emi=0.82,T_version=2,version=0,threads=1,give_ERROR=False,use_firstframe_as_background=False,verbose=5) -# status,time,images=download_raw_images_by_program_via_png(port,prog,time_s=1,threads=4,verbose=0) - -# test=get_NUC_by_program(port,prog,8,version=0,verbose=5) -# print(len(images)) -# prog=get_program_from_PID(prog) -# if prog[0]: -# t0time=prog[1]['trigger']['0'][0] -# starttime=prog[1]['trigger']['1'][0] -# import h5py as h5 -# szene=h5.File("X:\\E4 Diagnostics\\QIR\Calibrations\\scene_models\\AEF"+str(port)+"\\AEF"+str(port)+"_scene_model.h5") -# szene=h5.File("\\\\sv-e4-fs-1\\E4-Mitarbeiter\\E4 Diagnostics\\QIR\Software\\QI-RealTime\\1.1.0\\QRT-Analysis\\release\\Config\\spatial_calibration\\AEF"+str(port)+"_scene_model.h5",'r') -# szene=h5.File("X:\\E4 Diagnostics\\QIR\Data\\For Holger\\AEF21_scene_model_1531872000000000000.h5",'r') -# Xloc=np.asarray(szene['x']) -# Yloc=np.asarray(szene['y']) -# Zloc=np.asarray(szene['z']) -# CAD=np.asarray(szene['CAD']) -# timpo=0.87 -# fid=IR_tools.find_nearest((np.asarray(time)-time[0])/1e9,timpo) -# plt.figure()# -# plt.imshow(CAD,cmap='gray') -# plt.imshow(images[fid-8]-images[fid-28],vmin=0,vmax=60,cmap=exJet_trans) -# cb=plt.colorbar() -# cb.set_label("temperature difference K", rotation=270,labelpad=26,fontsize=26) -# cb.ax.tick_params(labelsize=26) -# plt.figure()# -# plt.imshow(images[fid-20]-images[fid-40],vmin=0,vmax=40,cmap=exJet) +# plt.imshow(images[-1],vmin=330,vmax=1000,cmap=exJet) # cb=plt.colorbar() -# cb.set_label("temperature difference K", rotation=270,labelpad=26,fontsize=26) -# cb.ax.tick_params(labelsize=26) -# plt.figure()# # plt.imshow(CAD,cmap='gray') -# plt.imshow(images[fid-40],vmin=300,vmax=400,cmap=exJet) -# cb=plt.colorbar() -# cb.set_label("temperature K", rotation=270,labelpad=26,fontsize=26) -# cb.ax.tick_params(labelsize=26) -# proglist=["20180801.014","20180801.015","20180801.016","20180801.018","20180801.019"] -# portlist=[20,21,51] -# version=0 -# time_s=30 -# for program in proglist: -# for port in portlist: -# prog=AKF_1.get_program_from_PID(program) -# if prog[0]: -# t0time=prog[1]['trigger']['0'][0] -# starttime=prog[1]['trigger']['1'][0] -# try: -# stoptime=prog[1]['trigger']['6'][0] -# except: -# stoptime=prog[1]['upto'] -# success=True -# OP=get_OP_by_time(starttime) -# Cam=portcamdict[OP]['AEF'+str(port)] -# if Cam.split("_")[0]=="Infratec":#camera=="INFRATEC" or camera=="infratec" or camera=="Infratec": -# if version==0: -# version=get_latest_version("QRT_INFRATEC/"+"AEF"+str(port)+"_raw_DATASTREAM") -# larchivepath="Test/raw/W7X/"+"QRT_INFRATEC/"+"AEF"+str(port)+"_raw_DATASTREAM/V"+str(version)+"/0/raw" -# elif Cam.split("_")[0]=="IRCam":#camera=="IRCAM" or camera=="IRcam" or camera=="ircam": -# if version==0: -# version=get_latest_version("QRT_IRCAM/"+"AEF"+str(port)+"_raw_DATASTREAM") -# larchivepath="Test/raw/W7X/"+"QRT_IRCAM/"+"AEF"+str(port)+"_raw_DATASTREAM/V"+str(version)+"/0/raw" -# else: -# raise Exception("Port number does not fit the known cameras") -# if type(time_s)==list: -# tstart=time_s[0] -# tstop=time_s[1] -# if tstop<tstart: -# raise Exception("endtime before starttime") -# stdate=datetime.datetime.utcfromtimestamp((starttime-100)/1e9+tstart) -# stdate=stdate.isoformat() -# enddate=datetime.datetime.utcfromtimestamp((starttime)/1e9+tstop) -# enddate=enddate.isoformat() -# else: -# stdate=datetime.datetime.utcfromtimestamp((starttime-100)/1e9) -# stdate=stdate.isoformat() -# t0date=datetime.datetime.utcfromtimestamp((t0time-100)/1e9) -# t0date=t0date.isoformat() -# if time_s==0: -# enddate=datetime.datetime.utcfromtimestamp(stoptime+100/1e9) -# enddate=enddate.isoformat() -# else: -# enddate=datetime.datetime.utcfromtimestamp((starttime)/1e9+time_s) -# enddate=enddate.isoformat() -# #"2017-11-15 08:00:00" -# try: -# times=AKF_2.get_time_intervals(larchivepath,stdate.replace("T"," "),enddate.replace("T"," "))# -# except: -# times=[] -# try: -# timest0=AKF_2.get_time_intervals(larchivepath,t0date.replace("T"," "),stdate.replace("T"," "))# -# except: -# timest0=[] -# print(program,"AEF"+str(port),len(timest0),len(times)) \ No newline at end of file +# cb.set_label("temperature in K",rotation=270,labelpad=20,fontsize=20) +# cb.ax.tick_params(labelsize=20) + port=41 + program="20180925.013" + prog=get_program_from_PID(program) + if prog[0]: + t0=prog[1]['trigger']['0'][0] + t1=prog[1]['trigger']['1'][0] + t6=prog[1]['trigger']['6'][0] + for port in [10]: +# bla=download_raw_images_by_times(port,t0,t1,verbose=5) + bla=get_temp_from_raw_by_program(port,program,time_s=[0,4],emi=0.82,T_version=1,version=0,threads=4,give_ERROR=False,use_firstframe_as_background=True,verbose=5) + import h5py as h5 + File=h5.File("AEF"+str(port)+"_"+program+"_temp_v1_b.h5",'w') + imags=np.asarray(bla[2]).swapaxes(0,2).swapaxes(0,1) + shapi=np.shape(imags) + dset=File.create_dataset('images',shape=(shapi[0],shapi[1],shapi[2]),dtype='uint16',chunks=(shapi[0],shapi[1],1)) + imags=np.ascontiguousarray(imags) + dset.write_direct(imags) + File.create_dataset('timestamps', data=list(bla[1]), dtype='uint64')#,compression="gzip") + File.close() +# prog="20171109.045" +# for port in [10,11,20,21,30,31,40,41,50,51]: +# points=valid_background_rectangle[port] +# status,time,images,valid=get_temp_from_raw_by_program(port,prog,time_s=[0,0.1],emi=0.82,T_version=2,version=0,threads=1,give_ERROR=False,use_firstframe_as_background=False,verbose=5) +# plt.figure() +# plt.imshow(images[0],vmin=330,vmax=600) +# plt.savefig("AEF"+str(port)+"_ori.png") +# plt.close() +# dummy=images[0]#[points[1]:points[3],points[0]:points[2]]#FOV*image# +# dummy[points[1]:points[3],points[0]:points[2]]=1500 +# plt.figure() +# plt.imshow(dummy,vmin=330,vmax=600) +# plt.savefig("AEF"+str(port)+"_boxed.png") +# plt.close() \ No newline at end of file