@@ -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_ |
|
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 = |
|
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