@@ -557,20 +557,23 class WeatherParamsPlot(Plot): | |||||
557 | 'P' : 6, |
|
557 | 'P' : 6, | |
558 | 'R' : 7, |
|
558 | 'R' : 7, | |
559 | } |
|
559 | } | |
560 |
|
560 | |||
561 | data = {} |
|
561 | data = {} | |
562 | meta = {} |
|
562 | meta = {} | |
563 |
|
563 | |||
564 | if hasattr(dataOut, 'nFFTPoints'): |
|
564 | if hasattr(dataOut, 'nFFTPoints'): | |
565 | factor = dataOut.normFactor |
|
565 | factor = dataOut.normFactor | |
566 | else: |
|
566 | else: | |
567 | factor = 1 |
|
567 | factor = 1 | |
568 |
|
568 | |||
569 | if 'S' in self.attr_data[0]: |
|
569 | if hasattr(dataOut, 'dparam'): | |
570 |
tmp = |
|
570 | tmp = getattr(dataOut, 'data_param') | |
571 | else: |
|
571 | else: | |
572 | tmp = getattr(dataOut, 'data_param')[:,vars[self.attr_data[0]],:] |
|
572 | ||
573 |
|
573 | if 'S' in self.attr_data[0]: | ||
|
574 | tmp = 10*numpy.log10(10.0*getattr(dataOut, 'data_param')[:,0,:]/(factor)) | |||
|
575 | else: | |||
|
576 | tmp = getattr(dataOut, 'data_param')[:,vars[self.attr_data[0]],:] | |||
574 |
|
577 | |||
575 | if self.mask: |
|
578 | if self.mask: | |
576 | mask = dataOut.data_param[:,3,:] < self.mask |
|
579 | mask = dataOut.data_param[:,3,:] < self.mask | |
@@ -602,7 +605,7 class WeatherParamsPlot(Plot): | |||||
602 | el = numpy.repeat(data['ele'], data['data'].shape[1]) |
|
605 | el = numpy.repeat(data['ele'], data['data'].shape[1]) | |
603 |
|
606 | |||
604 | # lla = georef.spherical_to_proj(r, data['azi'], data['ele'], (-75.295893, -12.040436, 3379.2147)) |
|
607 | # lla = georef.spherical_to_proj(r, data['azi'], data['ele'], (-75.295893, -12.040436, 3379.2147)) | |
605 |
|
608 | |||
606 | latlon = antenna_to_geographic(r, az, el, (-75.295893, -12.040436)) |
|
609 | latlon = antenna_to_geographic(r, az, el, (-75.295893, -12.040436)) | |
607 |
|
610 | |||
608 | if self.mask: |
|
611 | if self.mask: | |
@@ -627,6 +630,9 class WeatherParamsPlot(Plot): | |||||
627 | self.zmax = self.zmax if self.zmax else numpy.nanmax(z) |
|
630 | self.zmax = self.zmax if self.zmax else numpy.nanmax(z) | |
628 | self.zmin = self.zmin if self.zmin is not None else numpy.nanmin(z) |
|
631 | self.zmin = self.zmin if self.zmin is not None else numpy.nanmin(z) | |
629 |
|
632 | |||
|
633 | if isinstance(data['mode_op'], bytes): | |||
|
634 | data['mode_op'] = data['mode_op'].decode() | |||
|
635 | ||||
630 | if data['mode_op'] == 'RHI': |
|
636 | if data['mode_op'] == 'RHI': | |
631 | try: |
|
637 | try: | |
632 | if self.data['mode_op'][-2] == 'PPI': |
|
638 | if self.data['mode_op'][-2] == 'PPI': |
@@ -481,6 +481,7 class Reader(object): | |||||
481 | folderfmt = None |
|
481 | folderfmt = None | |
482 | open_file = open |
|
482 | open_file = open | |
483 | open_mode = 'rb' |
|
483 | open_mode = 'rb' | |
|
484 | filter =None | |||
484 |
|
485 | |||
485 | def run(self): |
|
486 | def run(self): | |
486 |
|
487 | |||
@@ -519,11 +520,13 class Reader(object): | |||||
519 | return |
|
520 | return | |
520 |
|
521 | |||
521 | def find_files(self, folders, ext, filefmt, startDate=None, endDate=None, |
|
522 | def find_files(self, folders, ext, filefmt, startDate=None, endDate=None, | |
522 | expLabel='', last=False): |
|
523 | expLabel='', filter=None,last=False): | |
523 |
|
524 | |||
524 | for path in folders: |
|
525 | for path in folders: | |
525 | files = glob.glob1(path, '*{}'.format(ext)) |
|
526 | files = glob.glob1(path, '*{}'.format(ext)) | |
526 | files.sort() |
|
527 | files.sort() | |
|
528 | if filter is not None: | |||
|
529 | files= [ file for file in files if os.path.splitext(file)[0][-len(filter):] == filter] | |||
527 | if last: |
|
530 | if last: | |
528 | if files: |
|
531 | if files: | |
529 | fo = files[-1] |
|
532 | fo = files[-1] | |
@@ -549,7 +552,7 class Reader(object): | |||||
549 |
|
552 | |||
550 | def searchFilesOffLine(self, path, startDate, endDate, |
|
553 | def searchFilesOffLine(self, path, startDate, endDate, | |
551 | expLabel, ext, walk, |
|
554 | expLabel, ext, walk, | |
552 | filefmt, folderfmt): |
|
555 | filefmt, folderfmt,filter): | |
553 | """Search files in offline mode for the given arguments |
|
556 | """Search files in offline mode for the given arguments | |
554 |
|
557 | |||
555 | Return: |
|
558 | Return: | |
@@ -563,11 +566,11 class Reader(object): | |||||
563 | folders = path.split(',') |
|
566 | folders = path.split(',') | |
564 |
|
567 | |||
565 | return self.find_files( |
|
568 | return self.find_files( | |
566 | folders, ext, filefmt, startDate, endDate, expLabel) |
|
569 | folders, ext, filefmt, startDate, endDate, expLabel,filter) | |
567 |
|
570 | |||
568 | def searchFilesOnLine(self, path, startDate, endDate, |
|
571 | def searchFilesOnLine(self, path, startDate, endDate, | |
569 | expLabel, ext, walk, |
|
572 | expLabel, ext, walk, | |
570 | filefmt, folderfmt): |
|
573 | filefmt, folderfmt,filter): | |
571 | """Search for the last file of the last folder |
|
574 | """Search for the last file of the last folder | |
572 |
|
575 | |||
573 | Arguments: |
|
576 | Arguments: | |
@@ -586,8 +589,7 class Reader(object): | |||||
586 | else: |
|
589 | else: | |
587 | folders = path.split(',') |
|
590 | folders = path.split(',') | |
588 |
|
591 | |||
589 | return self.find_files( |
|
592 | return self.find_files(folders, ext, filefmt, startDate, endDate, expLabel, filter,last=True) | |
590 | folders, ext, filefmt, startDate, endDate, expLabel, last=True) |
|
|||
591 |
|
593 | |||
592 | def setNextFile(self): |
|
594 | def setNextFile(self): | |
593 | """Set the next file to be readed open it and parse de file header""" |
|
595 | """Set the next file to be readed open it and parse de file header""" |
@@ -94,6 +94,8 class HDFReader(Reader, ProcessingUnit): | |||||
94 | self.filefmt = "*%Y%j***" |
|
94 | self.filefmt = "*%Y%j***" | |
95 | self.folderfmt = "*%Y%j" |
|
95 | self.folderfmt = "*%Y%j" | |
96 | self.utcoffset = 0 |
|
96 | self.utcoffset = 0 | |
|
97 | self.filter = None | |||
|
98 | self.dparam = None | |||
97 |
|
99 | |||
98 | def setup(self, **kwargs): |
|
100 | def setup(self, **kwargs): | |
99 |
|
101 | |||
@@ -107,7 +109,7 class HDFReader(Reader, ProcessingUnit): | |||||
107 | for nTries in range(self.nTries): |
|
109 | for nTries in range(self.nTries): | |
108 | fullpath = self.searchFilesOnLine(self.path, self.startDate, |
|
110 | fullpath = self.searchFilesOnLine(self.path, self.startDate, | |
109 | self.endDate, self.expLabel, self.ext, self.walk, |
|
111 | self.endDate, self.expLabel, self.ext, self.walk, | |
110 | self.filefmt, self.folderfmt) |
|
112 | self.filefmt, self.folderfmt,self.filter) | |
111 | try: |
|
113 | try: | |
112 | fullpath = next(fullpath) |
|
114 | fullpath = next(fullpath) | |
113 | except: |
|
115 | except: | |
@@ -133,7 +135,7 class HDFReader(Reader, ProcessingUnit): | |||||
133 | else: |
|
135 | else: | |
134 | log.log("Searching files in {}".format(self.path), self.name) |
|
136 | log.log("Searching files in {}".format(self.path), self.name) | |
135 | self.filenameList = self.searchFilesOffLine(self.path, self.startDate, |
|
137 | self.filenameList = self.searchFilesOffLine(self.path, self.startDate, | |
136 | self.endDate, self.expLabel, self.ext, self.walk, self.filefmt, self.folderfmt) |
|
138 | self.endDate, self.expLabel, self.ext, self.walk, self.filefmt, self.folderfmt,self.filter) | |
137 |
|
139 | |||
138 | self.setNextFile() |
|
140 | self.setNextFile() | |
139 |
|
141 | |||
@@ -149,6 +151,9 class HDFReader(Reader, ProcessingUnit): | |||||
149 | if 'type' in self.meta: |
|
151 | if 'type' in self.meta: | |
150 | self.dataOut = eval(self.meta['type'])() |
|
152 | self.dataOut = eval(self.meta['type'])() | |
151 |
|
153 | |||
|
154 | if self.dparam: | |||
|
155 | setattr(self.dataOut, "dparam", 1) | |||
|
156 | ||||
152 | for attr in self.meta: |
|
157 | for attr in self.meta: | |
153 | setattr(self.dataOut, attr, self.meta[attr]) |
|
158 | setattr(self.dataOut, attr, self.meta[attr]) | |
154 |
|
159 | |||
@@ -171,7 +176,10 class HDFReader(Reader, ProcessingUnit): | |||||
171 | startTime = self.startTime |
|
176 | startTime = self.startTime | |
172 | endTime = self.endTime |
|
177 | endTime = self.endTime | |
173 | thisUtcTime = self.data['utctime'] + self.utcoffset |
|
178 | thisUtcTime = self.data['utctime'] + self.utcoffset | |
174 | self.interval = numpy.min(thisUtcTime[1:] - thisUtcTime[:-1]) |
|
179 | try: | |
|
180 | self.interval = numpy.min(thisUtcTime[1:] - thisUtcTime[:-1]) | |||
|
181 | except: | |||
|
182 | self.interval = 0 | |||
175 | thisDatetime = datetime.datetime.utcfromtimestamp(thisUtcTime[0]) |
|
183 | thisDatetime = datetime.datetime.utcfromtimestamp(thisUtcTime[0]) | |
176 |
|
184 | |||
177 | thisDate = thisDatetime.date() |
|
185 | thisDate = thisDatetime.date() | |
@@ -255,7 +263,10 class HDFReader(Reader, ProcessingUnit): | |||||
255 | if self.data[attr].ndim == 1: |
|
263 | if self.data[attr].ndim == 1: | |
256 | setattr(self.dataOut, attr, self.data[attr][self.blockIndex]) |
|
264 | setattr(self.dataOut, attr, self.data[attr][self.blockIndex]) | |
257 | else: |
|
265 | else: | |
258 | setattr(self.dataOut, attr, self.data[attr][:, self.blockIndex]) |
|
266 | if self.dparam: | |
|
267 | setattr(self.dataOut, attr, self.data[attr]) | |||
|
268 | else: | |||
|
269 | setattr(self.dataOut, attr, self.data[attr][:, self.blockIndex]) | |||
259 |
|
270 | |||
260 | self.dataOut.flagNoData = False |
|
271 | self.dataOut.flagNoData = False | |
261 | self.blockIndex += 1 |
|
272 | self.blockIndex += 1 | |
@@ -405,7 +416,7 class HDFWriter(Operation): | |||||
405 |
|
416 | |||
406 | tableList = [] |
|
417 | tableList = [] | |
407 | dsList = [] |
|
418 | dsList = [] | |
408 |
|
419 | |||
409 | for i in range(len(self.dataList)): |
|
420 | for i in range(len(self.dataList)): | |
410 | dsDict = {} |
|
421 | dsDict = {} | |
411 | if hasattr(self.dataOut, self.dataList[i]): |
|
422 | if hasattr(self.dataOut, self.dataList[i]): | |
@@ -455,7 +466,7 class HDFWriter(Operation): | |||||
455 | return False |
|
466 | return False | |
456 |
|
467 | |||
457 | def run(self, dataOut, path, blocksPerFile=10, metadataList=None, |
|
468 | def run(self, dataOut, path, blocksPerFile=10, metadataList=None, | |
458 |
dataList=[], setType=None, description={}, mode= None, |
|
469 | dataList=[], setType=None, description={}, mode= None, | |
459 | type_data=None, Reset = False,**kwargs): |
|
470 | type_data=None, Reset = False,**kwargs): | |
460 |
|
471 | |||
461 | if Reset: |
|
472 | if Reset: | |
@@ -486,16 +497,16 class HDFWriter(Operation): | |||||
486 | type_data = self.type_data |
|
497 | type_data = self.type_data | |
487 |
|
498 | |||
488 | timeTuple = time.localtime(self.dataOut.utctime) |
|
499 | timeTuple = time.localtime(self.dataOut.utctime) | |
489 |
|
500 | |||
490 | if self.setType == 'weather': |
|
501 | if self.setType == 'weather': | |
491 | subfolder = '%4.4d-%2.2d-%2.2dT%2.2d-00-00' % (timeTuple.tm_year, |
|
502 | subfolder = '%4.4d-%2.2d-%2.2dT%2.2d-00-00' % (timeTuple.tm_year, | |
492 | timeTuple.tm_mon, |
|
503 | timeTuple.tm_mon, | |
493 | timeTuple.tm_mday, |
|
504 | timeTuple.tm_mday, | |
494 | timeTuple.tm_hour, |
|
505 | timeTuple.tm_hour, | |
495 | ) |
|
506 | ) | |
496 |
else: |
|
507 | else: | |
497 | subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday) |
|
508 | subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday) | |
498 |
|
509 | |||
499 | fullpath = os.path.join(path, subfolder) |
|
510 | fullpath = os.path.join(path, subfolder) | |
500 |
|
511 | |||
501 | if os.path.exists(fullpath): |
|
512 | if os.path.exists(fullpath): | |
@@ -681,7 +692,7 class HDFWriter(Operation): | |||||
681 | return |
|
692 | return | |
682 |
|
693 | |||
683 | def putData(self): |
|
694 | def putData(self): | |
684 |
|
695 | |||
685 | if (self.blockIndex == self.blocksPerFile) or self.timeFlag(): |
|
696 | if (self.blockIndex == self.blocksPerFile) or self.timeFlag(): | |
686 | self.closeFile() |
|
697 | self.closeFile() | |
687 | self.setNextFile() |
|
698 | self.setNextFile() | |
@@ -696,7 +707,7 class HDFWriter(Operation): | |||||
696 | tmp = getattr(self.dataOut, attr)[:,self.weather_vars[self.weather_var],:][ch] |
|
707 | tmp = getattr(self.dataOut, attr)[:,self.weather_vars[self.weather_var],:][ch] | |
697 | if self.mask: |
|
708 | if self.mask: | |
698 | tmp[mask] = numpy.nan |
|
709 | tmp[mask] = numpy.nan | |
699 |
ds[:] = tmp |
|
710 | ds[:] = tmp | |
700 | else: |
|
711 | else: | |
701 | ds[self.blockIndex] = getattr(self.dataOut, attr)[ch] |
|
712 | ds[self.blockIndex] = getattr(self.dataOut, attr)[ch] | |
702 |
|
713 |
General Comments 0
You need to be logged in to leave comments.
Login now