diff --git a/schainpy/model/graphics/jroplot_parameters.py b/schainpy/model/graphics/jroplot_parameters.py index c177ad2..d9a42db 100644 --- a/schainpy/model/graphics/jroplot_parameters.py +++ b/schainpy/model/graphics/jroplot_parameters.py @@ -557,20 +557,23 @@ class WeatherParamsPlot(Plot): 'P' : 6, 'R' : 7, } - + data = {} meta = {} - + if hasattr(dataOut, 'nFFTPoints'): factor = dataOut.normFactor else: factor = 1 - if 'S' in self.attr_data[0]: - tmp = 10*numpy.log10(10.0*getattr(dataOut, 'data_param')[:,0,:]/(factor)) + if hasattr(dataOut, 'dparam'): + tmp = getattr(dataOut, 'data_param') else: - tmp = getattr(dataOut, 'data_param')[:,vars[self.attr_data[0]],:] - + + if 'S' in self.attr_data[0]: + tmp = 10*numpy.log10(10.0*getattr(dataOut, 'data_param')[:,0,:]/(factor)) + else: + tmp = getattr(dataOut, 'data_param')[:,vars[self.attr_data[0]],:] if self.mask: mask = dataOut.data_param[:,3,:] < self.mask @@ -602,7 +605,7 @@ class WeatherParamsPlot(Plot): el = numpy.repeat(data['ele'], data['data'].shape[1]) # lla = georef.spherical_to_proj(r, data['azi'], data['ele'], (-75.295893, -12.040436, 3379.2147)) - + latlon = antenna_to_geographic(r, az, el, (-75.295893, -12.040436)) if self.mask: @@ -627,6 +630,9 @@ class WeatherParamsPlot(Plot): self.zmax = self.zmax if self.zmax else numpy.nanmax(z) self.zmin = self.zmin if self.zmin is not None else numpy.nanmin(z) + if isinstance(data['mode_op'], bytes): + data['mode_op'] = data['mode_op'].decode() + if data['mode_op'] == 'RHI': try: if self.data['mode_op'][-2] == 'PPI': diff --git a/schainpy/model/io/jroIO_base.py b/schainpy/model/io/jroIO_base.py index a658151..9dbba93 100644 --- a/schainpy/model/io/jroIO_base.py +++ b/schainpy/model/io/jroIO_base.py @@ -481,6 +481,7 @@ class Reader(object): folderfmt = None open_file = open open_mode = 'rb' + filter =None def run(self): @@ -519,11 +520,13 @@ class Reader(object): return def find_files(self, folders, ext, filefmt, startDate=None, endDate=None, - expLabel='', last=False): + expLabel='', filter=None,last=False): for path in folders: files = glob.glob1(path, '*{}'.format(ext)) files.sort() + if filter is not None: + files= [ file for file in files if os.path.splitext(file)[0][-len(filter):] == filter] if last: if files: fo = files[-1] @@ -549,7 +552,7 @@ class Reader(object): def searchFilesOffLine(self, path, startDate, endDate, expLabel, ext, walk, - filefmt, folderfmt): + filefmt, folderfmt,filter): """Search files in offline mode for the given arguments Return: @@ -563,11 +566,11 @@ class Reader(object): folders = path.split(',') return self.find_files( - folders, ext, filefmt, startDate, endDate, expLabel) + folders, ext, filefmt, startDate, endDate, expLabel,filter) def searchFilesOnLine(self, path, startDate, endDate, expLabel, ext, walk, - filefmt, folderfmt): + filefmt, folderfmt,filter): """Search for the last file of the last folder Arguments: @@ -586,8 +589,7 @@ class Reader(object): else: folders = path.split(',') - return self.find_files( - folders, ext, filefmt, startDate, endDate, expLabel, last=True) + return self.find_files(folders, ext, filefmt, startDate, endDate, expLabel, filter,last=True) def setNextFile(self): """Set the next file to be readed open it and parse de file header""" diff --git a/schainpy/model/io/jroIO_param.py b/schainpy/model/io/jroIO_param.py index 6f26220..4fd891f 100644 --- a/schainpy/model/io/jroIO_param.py +++ b/schainpy/model/io/jroIO_param.py @@ -94,6 +94,8 @@ class HDFReader(Reader, ProcessingUnit): self.filefmt = "*%Y%j***" self.folderfmt = "*%Y%j" self.utcoffset = 0 + self.filter = None + self.dparam = None def setup(self, **kwargs): @@ -107,7 +109,7 @@ class HDFReader(Reader, ProcessingUnit): for nTries in range(self.nTries): fullpath = self.searchFilesOnLine(self.path, self.startDate, self.endDate, self.expLabel, self.ext, self.walk, - self.filefmt, self.folderfmt) + self.filefmt, self.folderfmt,self.filter) try: fullpath = next(fullpath) except: @@ -133,7 +135,7 @@ class HDFReader(Reader, ProcessingUnit): else: log.log("Searching files in {}".format(self.path), self.name) self.filenameList = self.searchFilesOffLine(self.path, self.startDate, - self.endDate, self.expLabel, self.ext, self.walk, self.filefmt, self.folderfmt) + self.endDate, self.expLabel, self.ext, self.walk, self.filefmt, self.folderfmt,self.filter) self.setNextFile() @@ -149,6 +151,9 @@ class HDFReader(Reader, ProcessingUnit): if 'type' in self.meta: self.dataOut = eval(self.meta['type'])() + if self.dparam: + setattr(self.dataOut, "dparam", 1) + for attr in self.meta: setattr(self.dataOut, attr, self.meta[attr]) @@ -171,7 +176,10 @@ class HDFReader(Reader, ProcessingUnit): startTime = self.startTime endTime = self.endTime thisUtcTime = self.data['utctime'] + self.utcoffset - self.interval = numpy.min(thisUtcTime[1:] - thisUtcTime[:-1]) + try: + self.interval = numpy.min(thisUtcTime[1:] - thisUtcTime[:-1]) + except: + self.interval = 0 thisDatetime = datetime.datetime.utcfromtimestamp(thisUtcTime[0]) thisDate = thisDatetime.date() @@ -255,7 +263,10 @@ class HDFReader(Reader, ProcessingUnit): if self.data[attr].ndim == 1: setattr(self.dataOut, attr, self.data[attr][self.blockIndex]) else: - setattr(self.dataOut, attr, self.data[attr][:, self.blockIndex]) + if self.dparam: + setattr(self.dataOut, attr, self.data[attr]) + else: + setattr(self.dataOut, attr, self.data[attr][:, self.blockIndex]) self.dataOut.flagNoData = False self.blockIndex += 1 @@ -405,7 +416,7 @@ class HDFWriter(Operation): tableList = [] dsList = [] - + for i in range(len(self.dataList)): dsDict = {} if hasattr(self.dataOut, self.dataList[i]): @@ -455,7 +466,7 @@ class HDFWriter(Operation): return False def run(self, dataOut, path, blocksPerFile=10, metadataList=None, - dataList=[], setType=None, description={}, mode= None, + dataList=[], setType=None, description={}, mode= None, type_data=None, Reset = False,**kwargs): if Reset: @@ -486,16 +497,16 @@ class HDFWriter(Operation): type_data = self.type_data timeTuple = time.localtime(self.dataOut.utctime) - + if self.setType == 'weather': subfolder = '%4.4d-%2.2d-%2.2dT%2.2d-00-00' % (timeTuple.tm_year, timeTuple.tm_mon, timeTuple.tm_mday, timeTuple.tm_hour, ) - else: + else: subfolder = 'd%4.4d%3.3d' % (timeTuple.tm_year,timeTuple.tm_yday) - + fullpath = os.path.join(path, subfolder) if os.path.exists(fullpath): @@ -681,7 +692,7 @@ class HDFWriter(Operation): return def putData(self): - + if (self.blockIndex == self.blocksPerFile) or self.timeFlag(): self.closeFile() self.setNextFile() @@ -696,7 +707,7 @@ class HDFWriter(Operation): tmp = getattr(self.dataOut, attr)[:,self.weather_vars[self.weather_var],:][ch] if self.mask: tmp[mask] = numpy.nan - ds[:] = tmp + ds[:] = tmp else: ds[self.blockIndex] = getattr(self.dataOut, attr)[ch]