##// END OF EJS Templates
Changes for Online Reading
Daniel Valdez -
r508:718a5f058f7f
parent child
Show More
@@ -42,11 +42,12 class RadacHeader():
42 #range1 = numpy.arange(startPulseCountId,self.npulses,1)
42 #range1 = numpy.arange(startPulseCountId,self.npulses,1)
43 #range2 = numpy.arange(0,startPulseCountId,1)
43 #range2 = numpy.arange(0,startPulseCountId,1)
44 #return range1, range2
44 #return range1, range2
45
45 zero = 0
46 looking_zeros_index = numpy.where(self.pulseCount.value[idrecord,:]==0)[0]
46 npulse = max(self.pulseCount[0,:]+1)-1
47 getLastIndexZero = looking_zeros_index[-1]
47 looking_index = numpy.where(self.pulseCount.value[idrecord,:]==npulse)[0]
48 index_data = numpy.arange(0,getLastIndexZero,1)
48 getLastIndex = looking_index[-1]
49 index_buffer = numpy.arange(getLastIndexZero,self.npulses,1)
49 index_data = numpy.arange(0,getLastIndex+1,1)
50 index_buffer = numpy.arange(getLastIndex+1,self.npulses,1)
50 return index_data, index_buffer
51 return index_data, index_buffer
51
52
52 class AMISRReader(ProcessingUnit):
53 class AMISRReader(ProcessingUnit):
@@ -115,14 +116,17 class AMISRReader(ProcessingUnit):
115 self.npulseByFrame = None
116 self.npulseByFrame = None
116 self.profileIndex_offset = None
117 self.profileIndex_offset = None
117 self.timezone = 'ut'
118 self.timezone = 'ut'
118
119
120 self.__waitForNewFile = 20
121 self.__filename_online = None
122
119 def __createObjByDefault(self):
123 def __createObjByDefault(self):
120
124
121 dataObj = AMISR()
125 dataObj = AMISR()
122
126
123 return dataObj
127 return dataObj
124
128
125 def __setParameters(self,path,startDate,endDate,startTime,endTime,walk):
129 def __setParameters(self,path='', startDate='',endDate='',startTime='', endTime='', walk=''):
126 self.path = path
130 self.path = path
127 self.startDate = startDate
131 self.startDate = startDate
128 self.endDate = endDate
132 self.endDate = endDate
@@ -151,7 +155,7 class AMISRReader(ProcessingUnit):
151 except:
155 except:
152 return None
156 return None
153
157
154 def __findDataForDates(self):
158 def __findDataForDates(self,online=False):
155
159
156
160
157
161
@@ -162,8 +166,9 class AMISRReader(ProcessingUnit):
162 dirnameList = [re.search(pat,x) for x in os.listdir(self.path)]
166 dirnameList = [re.search(pat,x) for x in os.listdir(self.path)]
163 dirnameList = filter(lambda x:x!=None,dirnameList)
167 dirnameList = filter(lambda x:x!=None,dirnameList)
164 dirnameList = [x.string for x in dirnameList]
168 dirnameList = [x.string for x in dirnameList]
165 dirnameList = [self.__selDates(x) for x in dirnameList]
169 if not(online):
166 dirnameList = filter(lambda x:x!=None,dirnameList)
170 dirnameList = [self.__selDates(x) for x in dirnameList]
171 dirnameList = filter(lambda x:x!=None,dirnameList)
167 if len(dirnameList)>0:
172 if len(dirnameList)>0:
168 self.status = 1
173 self.status = 1
169 self.dirnameList = dirnameList
174 self.dirnameList = dirnameList
@@ -222,7 +227,7 class AMISRReader(ProcessingUnit):
222 self.filenameList.append(filename)
227 self.filenameList.append(filename)
223
228
224
229
225 def __selectDataForTimes(self):
230 def __selectDataForTimes(self, online=False):
226 #aun no esta implementado el filtro for tiempo
231 #aun no esta implementado el filtro for tiempo
227 if not(self.status):
232 if not(self.status):
228 return None
233 return None
@@ -232,17 +237,41 class AMISRReader(ProcessingUnit):
232 fileListInKeys = [self.__filterByGlob1(x) for x in dirList]
237 fileListInKeys = [self.__filterByGlob1(x) for x in dirList]
233
238
234 self.__getFilenameList(fileListInKeys, dirList)
239 self.__getFilenameList(fileListInKeys, dirList)
235 #filtro por tiempo
240 if not(online):
236 if not(self.all):
241 #filtro por tiempo
237 self.__getTimeFromData()
242 if not(self.all):
243 self.__getTimeFromData()
238
244
239
245 if len(self.filenameList)>0:
240 if len(self.filenameList)>0:
246 self.status = 1
241 self.status = 1
247 self.filenameList.sort()
242 self.filenameList.sort()
248 else:
249 self.status = 0
250 return None
251 return 1
243 else:
252 else:
244 self.status = 0
253 #get the last file - 1
245 return None
254 self.filenameList = [self.filenameList[-2]]
255 return 1
256
257 def __searchFilesOnline(self,
258 path,
259 walk=True):
260
261 startDate = datetime.datetime.utcnow().date()
262 endDate = datetime.datetime.utcnow().date()
263
264 self.__setParameters(path=path, startDate=startDate, endDate=endDate, walk=walk)
265
266 self.__checkPath()
267
268 self.__findDataForDates(online=True)
269
270 self.dirnameList = [self.dirnameList[-1]]
271
272 self.__selectDataForTimes(online=True)
273
274 return
246
275
247
276
248 def __searchFilesOffline(self,
277 def __searchFilesOffline(self,
@@ -292,6 +321,27 class AMISRReader(ProcessingUnit):
292
321
293 return 1
322 return 1
294
323
324
325 def __setNextFileOnline(self):
326 filename = self.filenameList[0]
327 if self.__filename_online != None:
328 self.__selectDataForTimes(online=True)
329 filename = self.filenameList[0]
330 while self.__filename_online == filename:
331 print 'waiting %d seconds to get a new file...'%(self.__waitForNewFile)
332 time.sleep(self.__waitForNewFile)
333 self.__selectDataForTimes(online=True)
334 filename = self.filenameList[0]
335
336 self.__filename_online = filename
337
338 self.amisrFilePointer = h5py.File(filename,'r')
339 self.flagIsNewFile = 1
340 self.filename = filename
341 print "Setting the file: %s"%self.filename
342 return 1
343
344
295 def __readHeader(self):
345 def __readHeader(self):
296 self.radacHeaderObj = RadacHeader(self.amisrFilePointer)
346 self.radacHeaderObj = RadacHeader(self.amisrFilePointer)
297
347
@@ -392,12 +442,16 class AMISRReader(ProcessingUnit):
392 self.readRanges()
442 self.readRanges()
393 self.index_amisr_sample, self.index_amisr_buffer = self.radacHeaderObj.getIndexRangeToPulse(0)
443 self.index_amisr_sample, self.index_amisr_buffer = self.radacHeaderObj.getIndexRangeToPulse(0)
394 self.radacTimeByFrame = numpy.zeros(self.radacHeaderObj.npulses)
444 self.radacTimeByFrame = numpy.zeros(self.radacHeaderObj.npulses)
395 self.buffer_radactime = numpy.zeros_like(self.radacTimeByFrame)
445 if len(self.index_amisr_buffer) > 0:
446 self.buffer_radactime = numpy.zeros_like(self.radacTimeByFrame)
396
447
397
448
398 def __setNextFile(self):
449 def __setNextFile(self,online=False):
399
450
400 newFile = self.__setNextFileOffline()
451 if not(online):
452 newFile = self.__setNextFileOffline()
453 else:
454 newFile = self.__setNextFileOnline()
401
455
402 if not(newFile):
456 if not(newFile):
403 return 0
457 return 0
@@ -419,12 +473,17 class AMISRReader(ProcessingUnit):
419 endTime=datetime.time(23,59,59),
473 endTime=datetime.time(23,59,59),
420 walk=True,
474 walk=True,
421 timezone='ut',
475 timezone='ut',
422 all=0,):
476 all=0,
477 online=False):
423
478
424 self.timezone = timezone
479 self.timezone = timezone
425 self.all = all
480 self.all = all
426 #Busqueda de archivos offline
481 self.online = online
427 self.__searchFilesOffline(path, startDate, endDate, startTime, endTime, walk)
482 if not(online):
483 #Busqueda de archivos offline
484 self.__searchFilesOffline(path, startDate, endDate, startTime, endTime, walk)
485 else:
486 self.__searchFilesOnline(path, walk)
428
487
429 if not(self.filenameList):
488 if not(self.filenameList):
430 print "There is no files into the folder: %s"%(path)
489 print "There is no files into the folder: %s"%(path)
@@ -435,7 +494,7 class AMISRReader(ProcessingUnit):
435
494
436 self.fileIndex = -1
495 self.fileIndex = -1
437
496
438 self.__setNextFile()
497 self.__setNextFile(online)
439
498
440 # first_beamcode = self.radacHeaderObj.beamCodeByPulse[0,0]
499 # first_beamcode = self.radacHeaderObj.beamCodeByPulse[0,0]
441 # index = numpy.where(self.radacHeaderObj.beamCodeByPulse[0,:]!=first_beamcode)[0][0]
500 # index = numpy.where(self.radacHeaderObj.beamCodeByPulse[0,:]!=first_beamcode)[0][0]
@@ -497,20 +556,20 class AMISRReader(ProcessingUnit):
497 self.dataByFrame[self.index4_schain_datablock, : ,:] = self.dataset[0, self.index_amisr_sample,:,:]
556 self.dataByFrame[self.index4_schain_datablock, : ,:] = self.dataset[0, self.index_amisr_sample,:,:]
498 self.radacTimeByFrame[self.index4_schain_datablock] = self.radacHeaderObj.radacTime[0, self.index_amisr_sample]
557 self.radacTimeByFrame[self.index4_schain_datablock] = self.radacHeaderObj.radacTime[0, self.index_amisr_sample]
499 datablock = self.__setDataBlock()
558 datablock = self.__setDataBlock()
500
559 if len(self.index_amisr_buffer) > 0:
501 self.buffer = self.dataset[0, self.index_amisr_buffer,:,:]
560 self.buffer = self.dataset[0, self.index_amisr_buffer,:,:]
502 self.buffer_radactime = self.radacHeaderObj.radacTime[0, self.index_amisr_buffer]
561 self.buffer_radactime = self.radacHeaderObj.radacTime[0, self.index_amisr_buffer]
503
562
504 return datablock
563 return datablock
505
564 if len(self.index_amisr_buffer) > 0:
506 self.dataByFrame[self.index4_buffer,:,:] = self.buffer.copy()
565 self.dataByFrame[self.index4_buffer,:,:] = self.buffer.copy()
507 self.radacTimeByFrame[self.index4_buffer] = self.buffer_radactime.copy()
566 self.radacTimeByFrame[self.index4_buffer] = self.buffer_radactime.copy()
508 self.dataByFrame[self.index4_schain_datablock,:,:] = self.dataset[idrecord, self.index_amisr_sample,:,:]
567 self.dataByFrame[self.index4_schain_datablock,:,:] = self.dataset[idrecord, self.index_amisr_sample,:,:]
509 self.radacTimeByFrame[self.index4_schain_datablock] = self.radacHeaderObj.radacTime[idrecord, self.index_amisr_sample]
568 self.radacTimeByFrame[self.index4_schain_datablock] = self.radacHeaderObj.radacTime[idrecord, self.index_amisr_sample]
510 datablock = self.__setDataBlock()
569 datablock = self.__setDataBlock()
511
570 if len(self.index_amisr_buffer) > 0:
512 self.buffer = self.dataset[idrecord, self.index_amisr_buffer, :, :]
571 self.buffer = self.dataset[idrecord, self.index_amisr_buffer, :, :]
513 self.buffer_radactime = self.radacHeaderObj.radacTime[idrecord, self.index_amisr_buffer]
572 self.buffer_radactime = self.radacHeaderObj.radacTime[idrecord, self.index_amisr_buffer]
514
573
515 return datablock
574 return datablock
516
575
@@ -550,7 +609,7 class AMISRReader(ProcessingUnit):
550 self.readDataBlock()
609 self.readDataBlock()
551
610
552 if self.flagIsNewFile:
611 if self.flagIsNewFile:
553 self.__setNextFile()
612 self.__setNextFile(self.online)
554 pass
613 pass
555
614
556 def __hasNotDataInBuffer(self):
615 def __hasNotDataInBuffer(self):
General Comments 0
You need to be logged in to leave comments. Login now