@@ -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_ |
|
|
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): |
@@ -115,14 +116,17 class AMISRReader(ProcessingUnit): | |||
|
115 | 116 | self.npulseByFrame = None |
|
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,8 +166,9 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] |
|
165 | dirnameList = [self.__selDates(x) for x in dirnameList] | |
|
166 |
dirnameList = |
|
|
169 | if not(online): | |
|
170 | dirnameList = [self.__selDates(x) for x in dirnameList] | |
|
171 | dirnameList = filter(lambda x:x!=None,dirnameList) | |
|
167 | 172 | if len(dirnameList)>0: |
|
168 | 173 | self.status = 1 |
|
169 | 174 | self.dirnameList = dirnameList |
@@ -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) |
|
235 | #filtro por tiempo | |
|
236 | if not(self.all): | |
|
237 | self.__getTimeFromData() | |
|
240 | if not(online): | |
|
241 | #filtro por tiempo | |
|
242 | if not(self.all): | |
|
243 | self.__getTimeFromData() | |
|
238 | 244 | |
|
239 | ||
|
240 | if len(self.filenameList)>0: | |
|
241 | self.status = 1 | |
|
242 | self.filenameList.sort() | |
|
245 | if len(self.filenameList)>0: | |
|
246 | self.status = 1 | |
|
247 | self.filenameList.sort() | |
|
248 | else: | |
|
249 | self.status = 0 | |
|
250 | return None | |
|
251 | return 1 | |
|
243 | 252 | else: |
|
244 | self.status = 0 | |
|
245 | return None | |
|
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) |
|
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 | 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 |
|
426 | #Busqueda de archivos offline | |
|
427 | self.__searchFilesOffline(path, startDate, endDate, startTime, endTime, walk) | |
|
481 | self.online = online | |
|
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 | 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,20 +556,20 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 | ||
|
501 | self.buffer = self.dataset[0, self.index_amisr_buffer,:,:] | |
|
502 | self.buffer_radactime = self.radacHeaderObj.radacTime[0, self.index_amisr_buffer] | |
|
559 | if len(self.index_amisr_buffer) > 0: | |
|
560 | self.buffer = self.dataset[0, self.index_amisr_buffer,:,:] | |
|
561 | self.buffer_radactime = self.radacHeaderObj.radacTime[0, self.index_amisr_buffer] | |
|
503 | 562 | |
|
504 | 563 | return datablock |
|
505 | ||
|
506 | self.dataByFrame[self.index4_buffer,:,:] = self.buffer.copy() | |
|
507 | self.radacTimeByFrame[self.index4_buffer] = self.buffer_radactime.copy() | |
|
564 | if len(self.index_amisr_buffer) > 0: | |
|
565 | self.dataByFrame[self.index4_buffer,:,:] = self.buffer.copy() | |
|
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 | ||
|
512 | self.buffer = self.dataset[idrecord, self.index_amisr_buffer, :, :] | |
|
513 | self.buffer_radactime = self.radacHeaderObj.radacTime[idrecord, self.index_amisr_buffer] | |
|
570 | if len(self.index_amisr_buffer) > 0: | |
|
571 | self.buffer = self.dataset[idrecord, self.index_amisr_buffer, :, :] | |
|
572 | self.buffer_radactime = self.radacHeaderObj.radacTime[idrecord, self.index_amisr_buffer] | |
|
514 | 573 | |
|
515 | 574 | return datablock |
|
516 | 575 | |
@@ -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