##// END OF EJS Templates
Update PedestalInformation
jespinoza -
r1443:ad8b94343301
parent child
Show More
@@ -74,8 +74,8 class ConfBase():
74 def addParameter(self, name, value, format=None):
74 def addParameter(self, name, value, format=None):
75 '''
75 '''
76 '''
76 '''
77 if os.path.isdir(value):
77 if format is not None:
78 self.parameters[name] = value
78 self.parameters[name] = eval(format)(value)
79 elif isinstance(value, str) and re.search(r'(\d+/\d+/\d+)', value):
79 elif isinstance(value, str) and re.search(r'(\d+/\d+/\d+)', value):
80 self.parameters[name] = datetime.date(*[int(x) for x in value.split('/')])
80 self.parameters[name] = datetime.date(*[int(x) for x in value.split('/')])
81 elif isinstance(value, str) and re.search(r'(\d+:\d+:\d+)', value):
81 elif isinstance(value, str) and re.search(r'(\d+:\d+:\d+)', value):
@@ -312,7 +312,7 class ReadUnitConf(ProcUnitConf):
312 self.datatype = datatype
312 self.datatype = datatype
313 self.err_queue = err_queue
313 self.err_queue = err_queue
314
314
315 self.addParameter(name='path', value=path)
315 self.addParameter(name='path', value=path, format='str')
316 self.addParameter(name='startDate', value=startDate)
316 self.addParameter(name='startDate', value=startDate)
317 self.addParameter(name='endDate', value=endDate)
317 self.addParameter(name='endDate', value=endDate)
318 self.addParameter(name='startTime', value=startTime)
318 self.addParameter(name='startTime', value=startTime)
@@ -620,18 +620,20 class WeatherPlot(Plot):
620 self.res_ele = numpy.mean(data['ele'])
620 self.res_ele = numpy.mean(data['ele'])
621 ################# PLOTEO ###################
621 ################# PLOTEO ###################
622 for i,ax in enumerate(self.axes):
622 for i,ax in enumerate(self.axes):
623 self.zmin = self.zmin if self.zmin else 20
624 self.zmax = self.zmax if self.zmax else 80
623 if ax.firsttime:
625 if ax.firsttime:
624 plt.clf()
626 plt.clf()
625 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=20, vmax=80)
627 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=self.zmin, vmax=self.zmax)
626 else:
628 else:
627 plt.clf()
629 plt.clf()
628 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=20, vmax=80)
630 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=self.zmin, vmax=self.zmax)
629 caax = cgax.parasites[0]
631 caax = cgax.parasites[0]
630 paax = cgax.parasites[1]
632 paax = cgax.parasites[1]
631 cbar = plt.gcf().colorbar(pm, pad=0.075)
633 cbar = plt.gcf().colorbar(pm, pad=0.075)
632 caax.set_xlabel('x_range [km]')
634 caax.set_xlabel('x_range [km]')
633 caax.set_ylabel('y_range [km]')
635 caax.set_ylabel('y_range [km]')
634 plt.text(1.0, 1.05, 'Azimuth '+str(thisDatetime)+" Step "+str(self.ini)+ " Elev: "+str(round(self.res_ele,2)), transform=caax.transAxes, va='bottom',ha='right')
636 plt.text(1.0, 1.05, 'Azimuth '+str(thisDatetime)+" Step "+str(self.ini)+ " EL: "+str(round(self.res_ele, 1)), transform=caax.transAxes, va='bottom',ha='right')
635
637
636 self.ini= self.ini+1
638 self.ini= self.ini+1
637
639
@@ -665,7 +667,7 class WeatherRHIPlot(Plot):
665 self.titles = ['{} Channel {}'.format(self.CODE.upper(), x) for x in range(self.nrows)]
667 self.titles = ['{} Channel {}'.format(self.CODE.upper(), x) for x in range(self.nrows)]
666 print("self.titles",self.titles)
668 print("self.titles",self.titles)
667 self.colorbar=False
669 self.colorbar=False
668 self.width =8
670 self.width =12
669 self.height =8
671 self.height =8
670 self.ini =0
672 self.ini =0
671 self.len_azi =0
673 self.len_azi =0
@@ -1072,6 +1074,7 class WeatherRHIPlot(Plot):
1072 ###print("self.res_ele",self.res_ele)
1074 ###print("self.res_ele",self.res_ele)
1073 plt.clf()
1075 plt.clf()
1074 subplots = [121, 122]
1076 subplots = [121, 122]
1077 cg={'angular_spacing': 20.}
1075 if self.ini==0:
1078 if self.ini==0:
1076 self.data_ele_tmp = numpy.ones([self.nplots,int(var_ang)])*numpy.nan
1079 self.data_ele_tmp = numpy.ones([self.nplots,int(var_ang)])*numpy.nan
1077 self.res_weather= numpy.ones([self.nplots,int(var_ang),len(r_mask)])*numpy.nan
1080 self.res_weather= numpy.ones([self.nplots,int(var_ang),len(r_mask)])*numpy.nan
@@ -1082,16 +1085,18 class WeatherRHIPlot(Plot):
1082 self.res_azi = numpy.mean(data['azi'])
1085 self.res_azi = numpy.mean(data['azi'])
1083 if i==0:
1086 if i==0:
1084 print("*****************************************************************************to plot**************************",self.res_weather[i].shape)
1087 print("*****************************************************************************to plot**************************",self.res_weather[i].shape)
1088 self.zmin = self.zmin if self.zmin else 20
1089 self.zmax = self.zmax if self.zmax else 80
1085 if ax.firsttime:
1090 if ax.firsttime:
1086 #plt.clf()
1091 #plt.clf()
1087 cgax, pm = wrl.vis.plot_rhi(self.res_weather[i],r=r,th=self.res_ele,ax=subplots[i], proj='cg',vmin=20, vmax=80)
1092 cgax, pm = wrl.vis.plot_rhi(self.res_weather[i],r=r,th=self.res_ele,ax=subplots[i], proj=cg,vmin=self.zmin, vmax=self.zmax)
1088 #fig=self.figures[0]
1093 #fig=self.figures[0]
1089 else:
1094 else:
1090 #plt.clf()
1095 #plt.clf()
1091 if i==0:
1096 if i==0:
1092 print(self.res_weather[i])
1097 print(self.res_weather[i])
1093 print(self.res_ele)
1098 print(self.res_ele)
1094 cgax, pm = wrl.vis.plot_rhi(self.res_weather[i],r=r,th=self.res_ele,ax=subplots[i], proj='cg',vmin=20, vmax=80)
1099 cgax, pm = wrl.vis.plot_rhi(self.res_weather[i],r=r,th=self.res_ele,ax=subplots[i], proj=cg,vmin=self.zmin, vmax=self.zmax)
1095 caax = cgax.parasites[0]
1100 caax = cgax.parasites[0]
1096 paax = cgax.parasites[1]
1101 paax = cgax.parasites[1]
1097 cbar = plt.gcf().colorbar(pm, pad=0.075)
1102 cbar = plt.gcf().colorbar(pm, pad=0.075)
@@ -4059,23 +4059,28 class PedestalInformation(Operation):
4059 return False, False
4059 return False, False
4060 fileList = glob.glob(os.path.join(path, '*.h5'))
4060 fileList = glob.glob(os.path.join(path, '*.h5'))
4061 fileList.sort()
4061 fileList.sort()
4062 for fullname in fileList:
4062 print(fileList)
4063 filename = fullname.split('/')[-1]
4063 return fileList
4064 number = int(filename[4:14])
4065 if number <= timestamp:
4066 return number, fullname
4067 return False, False
4068
4064
4069 def find_next_file(self):
4065 def find_next_file(self):
4070
4066
4071 while True:
4067 while True:
4068 if self.utctime < self.utcfile:
4069 self.flagNoData = True
4070 break
4071 self.flagNoData = False
4072 file_size = len(self.fp['Data']['utc'])
4072 file_size = len(self.fp['Data']['utc'])
4073 if self.utctime < self.utcfile+file_size*self.interval:
4073 if self.utctime < self.utcfile+file_size*self.interval:
4074 break
4074 break
4075 self.utcfile += file_size*self.interval
4075 dt = datetime.datetime.utcfromtimestamp(self.utcfile)
4076 if dt.second > 0:
4077 self.utcfile -= dt.second
4078 self.utcfile += self.samples*self.interval
4076 dt = datetime.datetime.utcfromtimestamp(self.utctime)
4079 dt = datetime.datetime.utcfromtimestamp(self.utctime)
4077 path = os.path.join(self.path, dt.strftime('%Y-%m-%dT%H-00-00'))
4080 path = os.path.join(self.path, dt.strftime('%Y-%m-%dT%H-00-00'))
4078 self.filename = os.path.join(path, 'pos@{}.000.h5'.format(self.utcfile))
4081 self.filename = os.path.join(path, 'pos@{}.000.h5'.format(int(self.utcfile)))
4082 print('ACQ time: ', self.utctime, 'POS time: ', self.utcfile)
4083 print('Next file: ', self.filename)
4079 if not os.path.exists(self.filename):
4084 if not os.path.exists(self.filename):
4080 log.warning('Waiting for position files...', self.name)
4085 log.warning('Waiting for position files...', self.name)
4081
4086
@@ -4088,8 +4093,11 class PedestalInformation(Operation):
4088
4093
4089 def get_values(self):
4094 def get_values(self):
4090
4095
4091 index = int((self.utctime-self.utcfile)/self.interval)
4096 if self.flagNoData:
4092 return self.fp['Data']['azi_pos'][index], self.fp['Data']['ele_pos'][index]
4097 return numpy.nan, numpy.nan
4098 else:
4099 index = int((self.utctime-self.utcfile)/self.interval)
4100 return self.fp['Data']['azi_pos'][index], self.fp['Data']['ele_pos'][index]
4093
4101
4094 def setup(self, dataOut, path, conf, samples, interval, wr_exp):
4102 def setup(self, dataOut, path, conf, samples, interval, wr_exp):
4095
4103
@@ -4097,22 +4105,24 class PedestalInformation(Operation):
4097 self.conf = conf
4105 self.conf = conf
4098 self.samples = samples
4106 self.samples = samples
4099 self.interval = interval
4107 self.interval = interval
4100 self.utcfile, self.filename = self.find_file(dataOut.utctime)
4108 filelist = self.find_file(dataOut.utctime)
4101
4109
4102 if not self.filename:
4110 if not filelist:
4103 log.error('No position files found in {}'.format(path), self.name)
4111 log.error('No position files found in {}'.format(path), self.name)
4104 raise IOError('No position files found in {}'.format(path))
4112 raise IOError('No position files found in {}'.format(path))
4105 else:
4113 else:
4114 self.filename = filelist[0]
4115 self.utcfile = int(self.filename.split('/')[-1][4:14])
4106 log.log('Opening file: {}'.format(self.filename), self.name)
4116 log.log('Opening file: {}'.format(self.filename), self.name)
4107 self.fp = h5py.File(self.filename, 'r')
4117 self.fp = h5py.File(self.filename, 'r')
4108
4118
4109 def run(self, dataOut, path, conf=None, samples=1500, interval=0.04, wr_exp=None):
4119 def run(self, dataOut, path, conf=None, samples=1500, interval=0.04, wr_exp=None, offset=0):
4110
4120
4111 if not self.isConfig:
4121 if not self.isConfig:
4112 self.setup(dataOut, path, conf, samples, interval, wr_exp)
4122 self.setup(dataOut, path, conf, samples, interval, wr_exp)
4113 self.isConfig = True
4123 self.isConfig = True
4114
4124
4115 self.utctime = dataOut.utctime
4125 self.utctime = dataOut.utctime + offset
4116
4126
4117 self.find_next_file()
4127 self.find_next_file()
4118
4128
General Comments 0
You need to be logged in to leave comments. Login now