def set_param(self): #Pick up experimental parameters from Cine filename #Sample fileCine is "PIV_sv_vp_left_100mmzeiss_fps3000_8holes_D20mm_span10000micron_freq5Hz_v400mms_1" file = self.Sdata.fileCine self.Xplane = browse.get_number(file, "_X", "mm", from_end=False) self.Zplane = browse.get_number(file, "_Z", "mm", from_end=False) self.fps = browse.get_number(file, "_fps", "_", from_end=False) self.H0 = browse.get_number(file, "_H", "mm", from_end=False) self.stroke = browse.get_number(file, "_S", "mm", from_end=False) if file.find('_sv') > 0: self.typeview = 'sv' #side view elif file.find('_fv') > 0: self.typeview = 'fv' #front view elif file.find('bv'): self.typeview = 'bv' #bv...? else: self.typeview = 'NA' if file.find('_hp') > 0: #horizontal plane self.typeplane = 'hp' else: if file.find('_vp') > 0: #vertical plane self.typeplane = 'vp' else: self.typeplane = 'NA' if (not hasattr(self, 'im0')) or (self.im0 == 0): pass
def read_ref(self, Ref): self.ref_indexA = browse.get_number( self.ref_Header[1], 'A: im', '.tiff', from_end=False ) # image names are localized in the second line of the ASCII file self.ref_indexB = browse.get_number(self.ref_Header[1], 'B: im', '.tiff', from_end=False) return super(Mdata_PIVlab, self).read_ref(Ref)
def get_PIVparams(self, dataDir): self.Dt = browse.get_number(dataDir, '_Dt_', '_', display=False, from_end=False) self.W = browse.get_number(dataDir, '_W', 'pix', display=False, from_end=False)
def set_scales(self): # ft is in ms, time elapsed between two consecutive images ft = 1000. / self.param.fps # timescale is the time resolution of the PIV measurements num = browse.get_number(self.dataDir, "_at", "fps") if num > 0: timescale = num * ft / 1000. else: timescale = 1 fx = self.param.fx return ft, timescale, fx
def load_ref(self): # do it locally, from the first image fileList, nt = self.get_fileList(True) self.im_index = [ browse.get_number(name, self.rootfile, self.frmt, False) for name in fileList ] if nt > 0: Ref = np.load(fileList[0]) else: Ref = None # S.close() return Ref
def get_data(fileList): dataList = [] for name in fileList: W = browse.get_number(name, '_W', 'pix_') Dt = int(browse.get_string(name, 'pix_Dt_', '_')) Header, Data = rw_data.read_dataFile(name, ',', ',') # indexA=browse.get_number(Header[1],'A: im','.tiff') #name of the image is localized on the second line of the ASCII file # indexB=browse.get_number(Header[1],'B: im','.tiff') Data = pivlab.switch_keys(Data) dataList.append(Data) for key in ['u', 'v']: Data[key] = (cdata.rm_nans([np.asarray(Data[key])], d=1, rate=0.05))[0] return dataList
def add_param(self, name, unit): value = browse.get_number(self.Sdata.fileCine, '_' + name, unit + '_', from_end=True) setattr(self.param, name, value)
def time_axis(self): # generation of a time axis : not for PIVlab, use directly the header of the files (much more precise and flexible !) fileList, nt = self.get_fileList(False) if hasattr(self.Sdata, 'fileCine'): if os.path.isfile(self.Sdata.fileCine): times = time_step_sample.get_cine_time( self.Sdata.fileCine, False ) ## If the boolean is True, it may sometimes crush. Log says that it cannot plot NaN values. The source of NaN is unknown. - Takumi 9/28/17 else: # do a global search using file_architecture.py Dircine = file_architecture.get_dir(self.Id.date) fileCine = Dircine + '/' + os.path.basename( self.Sdata.fileCine) print(fileCine) times = time_step_sample.get_cine_time( fileCine, False ) ## If the boolean is True, it may sometimes crush. Log says that it cannot plot NaN values. The source of NaN is unknown. - Takumi 9/28/17 else: times = None # self.im_index=np.zeros(nt) self.im_indexA = np.zeros(nt) self.im_indexB = np.zeros(nt) c = 0 for i, filename in enumerate(fileList): Header = rw_data.read_Header(filename, ',') if Header == []: c += 1 print("Header missing for : " + filename + ". delete file") print(Header) os.remove(filename) else: indexA = browse.get_number( Header[1], 'A: im', '.tiff', from_end=False ) # name of the image is localized on the second line of the ASCII file indexB = browse.get_number(Header[1], 'B: im', '.tiff', from_end=False) if indexA == 0: # Header is given in another format indexA = browse.get_number( Header[1], ': im', '.tiff', from_end=False ) # name of the image is localized on the second line of the ASCII file indexB = browse.get_number(Header[1], '& im', '.tiff', from_end=False) self.im_indexA[i] = indexA self.im_indexB[i] = indexB self.im_index = self.im_indexA.tolist() # print("files un-able to read : "+str(c)) if times is not None: a = self.im_indexA.astype( int ) #Convert a numpy array into int for later use as a counter -added by takumi 08/15/2017 b = self.im_indexB.astype( int ) #Convert a numpy array into int for later use as a counter -added by takumi 08/15/2017 Dt = [times[i] - times[j] for i, j in zip(b, a)] t = [times[int(i)] for i in self.im_index] else: Dt = [i - j for i, j in zip(self.im_indexB, self.im_indexA)] t = [int(i) for i in self.im_index] # super(Mdata_PIVlab,self).time_axis() return t, Dt
def review(): folder = '/Volumes/Stephane/Vortex_Turbulence/' folders = glob.glob(folder + '*') l_vortices = [] D = {} D['v'] = [] D['fx'] = [] D['fps'] = [] D['date'] = [] D['index'] = [] # D['Sdata_file']=[] D['cinefile'] = [] for f in folders: # print(f) l = glob.glob(f + '/PIV*A0mm*.cine') l_vortices = l_vortices + l # print(l_vortices) for cinefile in l_vortices: s = browse.get_string(cinefile, '', '/PIV') date = s[-10:] filename = os.path.dirname(file_architecture.os_i( cinefile)) + '/Sdata_' + date + '/Cine_index_' + date + '.txt' if os.path.exists(filename): Header, data = rw_data.read_dataFile(filename, Hdelimiter='\t', Ddelimiter='\t') # print(data) # print(data) # print("l : "+l) # print(data['Names']) # print(file_architecture.os_i(cinefile)) index = \ np.where([file_architecture.os_i(cinefile) == file_architecture.os_i(name) for name in data['Names']])[0][0] index = int(data['Index'][index]) v = browse.get_number(cinefile, '_v', 'mms') if v == -1: v = browse.get_number(cinefile, 'mm_v', 'mm') fps = browse.get_number(cinefile, '_fps', '_') S = Sdata_manip.load_Sdata(date, index) fx = S.param.fx D['date'].append(date) D['index'].append(index) D['v'].append(v) D['fps'].append(fps) D['fx'].append(fx) # D['Sdata_file'].append(filename) D['cinefile'].append(cinefile) print(D['v']) filename = './Vortices/free_index_no_cine.txt' rw_data.write_a_dict(filename, D, delimiter='\t')