##// END OF EJS Templates
update jroIO_base.py se adiciona filter, jroIO_param se adicion atributo dparam para identificar data procesada, leer una sola marca de tiempo y en jroplot_parameters se utiliza como flag el dparam para identificar la data procesada y plotearla
avaldezp -
r1534:41e830abc3ce
parent child
Show More
@@ -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 = 10*numpy.log10(10.0*getattr(dataOut, 'data_param')[:,0,:]/(factor))
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