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