##// END OF EJS Templates
valid en jroproc_parameters
avaldez -
r1394:99588b4ace71
parent child
Show More

The requested changes are too big and content was truncated. Show full diff

@@ -1,509 +1,517
1 import os
1 import os
2 import datetime
2 import datetime
3 import numpy
3 import numpy
4
4
5 from schainpy.model.graphics.jroplot_base import Plot, plt
5 from schainpy.model.graphics.jroplot_base import Plot, plt
6 from schainpy.model.graphics.jroplot_spectra import SpectraPlot, RTIPlot, CoherencePlot, SpectraCutPlot
6 from schainpy.model.graphics.jroplot_spectra import SpectraPlot, RTIPlot, CoherencePlot, SpectraCutPlot
7 from schainpy.utils import log
7 from schainpy.utils import log
8 # libreria wradlib
8 # libreria wradlib
9 import wradlib as wrl
9 import wradlib as wrl
10
10
11 EARTH_RADIUS = 6.3710e3
11 EARTH_RADIUS = 6.3710e3
12
12
13
13
14 def ll2xy(lat1, lon1, lat2, lon2):
14 def ll2xy(lat1, lon1, lat2, lon2):
15
15
16 p = 0.017453292519943295
16 p = 0.017453292519943295
17 a = 0.5 - numpy.cos((lat2 - lat1) * p)/2 + numpy.cos(lat1 * p) * \
17 a = 0.5 - numpy.cos((lat2 - lat1) * p)/2 + numpy.cos(lat1 * p) * \
18 numpy.cos(lat2 * p) * (1 - numpy.cos((lon2 - lon1) * p)) / 2
18 numpy.cos(lat2 * p) * (1 - numpy.cos((lon2 - lon1) * p)) / 2
19 r = 12742 * numpy.arcsin(numpy.sqrt(a))
19 r = 12742 * numpy.arcsin(numpy.sqrt(a))
20 theta = numpy.arctan2(numpy.sin((lon2-lon1)*p)*numpy.cos(lat2*p), numpy.cos(lat1*p)
20 theta = numpy.arctan2(numpy.sin((lon2-lon1)*p)*numpy.cos(lat2*p), numpy.cos(lat1*p)
21 * numpy.sin(lat2*p)-numpy.sin(lat1*p)*numpy.cos(lat2*p)*numpy.cos((lon2-lon1)*p))
21 * numpy.sin(lat2*p)-numpy.sin(lat1*p)*numpy.cos(lat2*p)*numpy.cos((lon2-lon1)*p))
22 theta = -theta + numpy.pi/2
22 theta = -theta + numpy.pi/2
23 return r*numpy.cos(theta), r*numpy.sin(theta)
23 return r*numpy.cos(theta), r*numpy.sin(theta)
24
24
25
25
26 def km2deg(km):
26 def km2deg(km):
27 '''
27 '''
28 Convert distance in km to degrees
28 Convert distance in km to degrees
29 '''
29 '''
30
30
31 return numpy.rad2deg(km/EARTH_RADIUS)
31 return numpy.rad2deg(km/EARTH_RADIUS)
32
32
33
33
34
34
35 class SpectralMomentsPlot(SpectraPlot):
35 class SpectralMomentsPlot(SpectraPlot):
36 '''
36 '''
37 Plot for Spectral Moments
37 Plot for Spectral Moments
38 '''
38 '''
39 CODE = 'spc_moments'
39 CODE = 'spc_moments'
40 # colormap = 'jet'
40 # colormap = 'jet'
41 # plot_type = 'pcolor'
41 # plot_type = 'pcolor'
42
42
43 class DobleGaussianPlot(SpectraPlot):
43 class DobleGaussianPlot(SpectraPlot):
44 '''
44 '''
45 Plot for Double Gaussian Plot
45 Plot for Double Gaussian Plot
46 '''
46 '''
47 CODE = 'gaussian_fit'
47 CODE = 'gaussian_fit'
48 # colormap = 'jet'
48 # colormap = 'jet'
49 # plot_type = 'pcolor'
49 # plot_type = 'pcolor'
50
50
51 class DoubleGaussianSpectraCutPlot(SpectraCutPlot):
51 class DoubleGaussianSpectraCutPlot(SpectraCutPlot):
52 '''
52 '''
53 Plot SpectraCut with Double Gaussian Fit
53 Plot SpectraCut with Double Gaussian Fit
54 '''
54 '''
55 CODE = 'cut_gaussian_fit'
55 CODE = 'cut_gaussian_fit'
56
56
57 class SnrPlot(RTIPlot):
57 class SnrPlot(RTIPlot):
58 '''
58 '''
59 Plot for SNR Data
59 Plot for SNR Data
60 '''
60 '''
61
61
62 CODE = 'snr'
62 CODE = 'snr'
63 colormap = 'jet'
63 colormap = 'jet'
64
64
65 def update(self, dataOut):
65 def update(self, dataOut):
66
66
67 data = {
67 data = {
68 'snr': 10*numpy.log10(dataOut.data_snr)
68 'snr': 10*numpy.log10(dataOut.data_snr)
69 }
69 }
70
70
71 return data, {}
71 return data, {}
72
72
73 class DopplerPlot(RTIPlot):
73 class DopplerPlot(RTIPlot):
74 '''
74 '''
75 Plot for DOPPLER Data (1st moment)
75 Plot for DOPPLER Data (1st moment)
76 '''
76 '''
77
77
78 CODE = 'dop'
78 CODE = 'dop'
79 colormap = 'jet'
79 colormap = 'jet'
80
80
81 def update(self, dataOut):
81 def update(self, dataOut):
82
82
83 data = {
83 data = {
84 'dop': 10*numpy.log10(dataOut.data_dop)
84 'dop': 10*numpy.log10(dataOut.data_dop)
85 }
85 }
86
86
87 return data, {}
87 return data, {}
88
88
89 class PowerPlot(RTIPlot):
89 class PowerPlot(RTIPlot):
90 '''
90 '''
91 Plot for Power Data (0 moment)
91 Plot for Power Data (0 moment)
92 '''
92 '''
93
93
94 CODE = 'pow'
94 CODE = 'pow'
95 colormap = 'jet'
95 colormap = 'jet'
96
96
97 def update(self, dataOut):
97 def update(self, dataOut):
98 data = {
98 data = {
99 'pow': 10*numpy.log10(dataOut.data_pow/dataOut.normFactor)
99 'pow': 10*numpy.log10(dataOut.data_pow/dataOut.normFactor)
100 }
100 }
101 return data, {}
101 return data, {}
102
102
103 class SpectralWidthPlot(RTIPlot):
103 class SpectralWidthPlot(RTIPlot):
104 '''
104 '''
105 Plot for Spectral Width Data (2nd moment)
105 Plot for Spectral Width Data (2nd moment)
106 '''
106 '''
107
107
108 CODE = 'width'
108 CODE = 'width'
109 colormap = 'jet'
109 colormap = 'jet'
110
110
111 def update(self, dataOut):
111 def update(self, dataOut):
112
112
113 data = {
113 data = {
114 'width': dataOut.data_width
114 'width': dataOut.data_width
115 }
115 }
116
116
117 return data, {}
117 return data, {}
118
118
119 class SkyMapPlot(Plot):
119 class SkyMapPlot(Plot):
120 '''
120 '''
121 Plot for meteors detection data
121 Plot for meteors detection data
122 '''
122 '''
123
123
124 CODE = 'param'
124 CODE = 'param'
125
125
126 def setup(self):
126 def setup(self):
127
127
128 self.ncols = 1
128 self.ncols = 1
129 self.nrows = 1
129 self.nrows = 1
130 self.width = 7.2
130 self.width = 7.2
131 self.height = 7.2
131 self.height = 7.2
132 self.nplots = 1
132 self.nplots = 1
133 self.xlabel = 'Zonal Zenith Angle (deg)'
133 self.xlabel = 'Zonal Zenith Angle (deg)'
134 self.ylabel = 'Meridional Zenith Angle (deg)'
134 self.ylabel = 'Meridional Zenith Angle (deg)'
135 self.polar = True
135 self.polar = True
136 self.ymin = -180
136 self.ymin = -180
137 self.ymax = 180
137 self.ymax = 180
138 self.colorbar = False
138 self.colorbar = False
139
139
140 def plot(self):
140 def plot(self):
141
141
142 arrayParameters = numpy.concatenate(self.data['param'])
142 arrayParameters = numpy.concatenate(self.data['param'])
143 error = arrayParameters[:, -1]
143 error = arrayParameters[:, -1]
144 indValid = numpy.where(error == 0)[0]
144 indValid = numpy.where(error == 0)[0]
145 finalMeteor = arrayParameters[indValid, :]
145 finalMeteor = arrayParameters[indValid, :]
146 finalAzimuth = finalMeteor[:, 3]
146 finalAzimuth = finalMeteor[:, 3]
147 finalZenith = finalMeteor[:, 4]
147 finalZenith = finalMeteor[:, 4]
148
148
149 x = finalAzimuth * numpy.pi / 180
149 x = finalAzimuth * numpy.pi / 180
150 y = finalZenith
150 y = finalZenith
151
151
152 ax = self.axes[0]
152 ax = self.axes[0]
153
153
154 if ax.firsttime:
154 if ax.firsttime:
155 ax.plot = ax.plot(x, y, 'bo', markersize=5)[0]
155 ax.plot = ax.plot(x, y, 'bo', markersize=5)[0]
156 else:
156 else:
157 ax.plot.set_data(x, y)
157 ax.plot.set_data(x, y)
158
158
159 dt1 = self.getDateTime(self.data.min_time).strftime('%y/%m/%d %H:%M:%S')
159 dt1 = self.getDateTime(self.data.min_time).strftime('%y/%m/%d %H:%M:%S')
160 dt2 = self.getDateTime(self.data.max_time).strftime('%y/%m/%d %H:%M:%S')
160 dt2 = self.getDateTime(self.data.max_time).strftime('%y/%m/%d %H:%M:%S')
161 title = 'Meteor Detection Sky Map\n %s - %s \n Number of events: %5.0f\n' % (dt1,
161 title = 'Meteor Detection Sky Map\n %s - %s \n Number of events: %5.0f\n' % (dt1,
162 dt2,
162 dt2,
163 len(x))
163 len(x))
164 self.titles[0] = title
164 self.titles[0] = title
165
165
166
166
167 class GenericRTIPlot(Plot):
167 class GenericRTIPlot(Plot):
168 '''
168 '''
169 Plot for data_xxxx object
169 Plot for data_xxxx object
170 '''
170 '''
171
171
172 CODE = 'param'
172 CODE = 'param'
173 colormap = 'viridis'
173 colormap = 'viridis'
174 plot_type = 'pcolorbuffer'
174 plot_type = 'pcolorbuffer'
175
175
176 def setup(self):
176 def setup(self):
177 self.xaxis = 'time'
177 self.xaxis = 'time'
178 self.ncols = 1
178 self.ncols = 1
179 self.nrows = self.data.shape('param')[0]
179 self.nrows = self.data.shape('param')[0]
180 self.nplots = self.nrows
180 self.nplots = self.nrows
181 self.plots_adjust.update({'hspace':0.8, 'left': 0.1, 'bottom': 0.08, 'right':0.95, 'top': 0.95})
181 self.plots_adjust.update({'hspace':0.8, 'left': 0.1, 'bottom': 0.08, 'right':0.95, 'top': 0.95})
182
182
183 if not self.xlabel:
183 if not self.xlabel:
184 self.xlabel = 'Time'
184 self.xlabel = 'Time'
185
185
186 self.ylabel = 'Range [km]'
186 self.ylabel = 'Range [km]'
187 if not self.titles:
187 if not self.titles:
188 self.titles = ['Param {}'.format(x) for x in range(self.nrows)]
188 self.titles = ['Param {}'.format(x) for x in range(self.nrows)]
189
189
190 def update(self, dataOut):
190 def update(self, dataOut):
191
191
192 data = {
192 data = {
193 'param' : numpy.concatenate([getattr(dataOut, attr) for attr in self.attr_data], axis=0)
193 'param' : numpy.concatenate([getattr(dataOut, attr) for attr in self.attr_data], axis=0)
194 }
194 }
195
195
196 meta = {}
196 meta = {}
197
197
198 return data, meta
198 return data, meta
199
199
200 def plot(self):
200 def plot(self):
201 # self.data.normalize_heights()
201 # self.data.normalize_heights()
202 self.x = self.data.times
202 self.x = self.data.times
203 self.y = self.data.yrange
203 self.y = self.data.yrange
204 self.z = self.data['param']
204 self.z = self.data['param']
205 self.z = 10*numpy.log10(self.z)
205 self.z = 10*numpy.log10(self.z)
206 self.z = numpy.ma.masked_invalid(self.z)
206 self.z = numpy.ma.masked_invalid(self.z)
207
207
208 if self.decimation is None:
208 if self.decimation is None:
209 x, y, z = self.fill_gaps(self.x, self.y, self.z)
209 x, y, z = self.fill_gaps(self.x, self.y, self.z)
210 else:
210 else:
211 x, y, z = self.fill_gaps(*self.decimate())
211 x, y, z = self.fill_gaps(*self.decimate())
212
212
213 for n, ax in enumerate(self.axes):
213 for n, ax in enumerate(self.axes):
214
214
215 self.zmax = self.zmax if self.zmax is not None else numpy.max(
215 self.zmax = self.zmax if self.zmax is not None else numpy.max(
216 self.z[n])
216 self.z[n])
217 self.zmin = self.zmin if self.zmin is not None else numpy.min(
217 self.zmin = self.zmin if self.zmin is not None else numpy.min(
218 self.z[n])
218 self.z[n])
219
219
220 if ax.firsttime:
220 if ax.firsttime:
221 if self.zlimits is not None:
221 if self.zlimits is not None:
222 self.zmin, self.zmax = self.zlimits[n]
222 self.zmin, self.zmax = self.zlimits[n]
223
223
224 ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n],
224 ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n],
225 vmin=self.zmin,
225 vmin=self.zmin,
226 vmax=self.zmax,
226 vmax=self.zmax,
227 cmap=self.cmaps[n]
227 cmap=self.cmaps[n]
228 )
228 )
229 else:
229 else:
230 if self.zlimits is not None:
230 if self.zlimits is not None:
231 self.zmin, self.zmax = self.zlimits[n]
231 self.zmin, self.zmax = self.zlimits[n]
232 ax.collections.remove(ax.collections[0])
232 ax.collections.remove(ax.collections[0])
233 ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n],
233 ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n],
234 vmin=self.zmin,
234 vmin=self.zmin,
235 vmax=self.zmax,
235 vmax=self.zmax,
236 cmap=self.cmaps[n]
236 cmap=self.cmaps[n]
237 )
237 )
238
238
239
239
240 class PolarMapPlot(Plot):
240 class PolarMapPlot(Plot):
241 '''
241 '''
242 Plot for weather radar
242 Plot for weather radar
243 '''
243 '''
244
244
245 CODE = 'param'
245 CODE = 'param'
246 colormap = 'seismic'
246 colormap = 'seismic'
247
247
248 def setup(self):
248 def setup(self):
249 self.ncols = 1
249 self.ncols = 1
250 self.nrows = 1
250 self.nrows = 1
251 self.width = 9
251 self.width = 9
252 self.height = 8
252 self.height = 8
253 self.mode = self.data.meta['mode']
253 self.mode = self.data.meta['mode']
254 if self.channels is not None:
254 if self.channels is not None:
255 self.nplots = len(self.channels)
255 self.nplots = len(self.channels)
256 self.nrows = len(self.channels)
256 self.nrows = len(self.channels)
257 else:
257 else:
258 self.nplots = self.data.shape(self.CODE)[0]
258 self.nplots = self.data.shape(self.CODE)[0]
259 self.nrows = self.nplots
259 self.nrows = self.nplots
260 self.channels = list(range(self.nplots))
260 self.channels = list(range(self.nplots))
261 if self.mode == 'E':
261 if self.mode == 'E':
262 self.xlabel = 'Longitude'
262 self.xlabel = 'Longitude'
263 self.ylabel = 'Latitude'
263 self.ylabel = 'Latitude'
264 else:
264 else:
265 self.xlabel = 'Range (km)'
265 self.xlabel = 'Range (km)'
266 self.ylabel = 'Height (km)'
266 self.ylabel = 'Height (km)'
267 self.bgcolor = 'white'
267 self.bgcolor = 'white'
268 self.cb_labels = self.data.meta['units']
268 self.cb_labels = self.data.meta['units']
269 self.lat = self.data.meta['latitude']
269 self.lat = self.data.meta['latitude']
270 self.lon = self.data.meta['longitude']
270 self.lon = self.data.meta['longitude']
271 self.xmin, self.xmax = float(
271 self.xmin, self.xmax = float(
272 km2deg(self.xmin) + self.lon), float(km2deg(self.xmax) + self.lon)
272 km2deg(self.xmin) + self.lon), float(km2deg(self.xmax) + self.lon)
273 self.ymin, self.ymax = float(
273 self.ymin, self.ymax = float(
274 km2deg(self.ymin) + self.lat), float(km2deg(self.ymax) + self.lat)
274 km2deg(self.ymin) + self.lat), float(km2deg(self.ymax) + self.lat)
275 # self.polar = True
275 # self.polar = True
276
276
277 def plot(self):
277 def plot(self):
278
278
279 for n, ax in enumerate(self.axes):
279 for n, ax in enumerate(self.axes):
280 data = self.data['param'][self.channels[n]]
280 data = self.data['param'][self.channels[n]]
281
281
282 zeniths = numpy.linspace(
282 zeniths = numpy.linspace(
283 0, self.data.meta['max_range'], data.shape[1])
283 0, self.data.meta['max_range'], data.shape[1])
284 if self.mode == 'E':
284 if self.mode == 'E':
285 azimuths = -numpy.radians(self.data.yrange)+numpy.pi/2
285 azimuths = -numpy.radians(self.data.yrange)+numpy.pi/2
286 r, theta = numpy.meshgrid(zeniths, azimuths)
286 r, theta = numpy.meshgrid(zeniths, azimuths)
287 x, y = r*numpy.cos(theta)*numpy.cos(numpy.radians(self.data.meta['elevation'])), r*numpy.sin(
287 x, y = r*numpy.cos(theta)*numpy.cos(numpy.radians(self.data.meta['elevation'])), r*numpy.sin(
288 theta)*numpy.cos(numpy.radians(self.data.meta['elevation']))
288 theta)*numpy.cos(numpy.radians(self.data.meta['elevation']))
289 x = km2deg(x) + self.lon
289 x = km2deg(x) + self.lon
290 y = km2deg(y) + self.lat
290 y = km2deg(y) + self.lat
291 else:
291 else:
292 azimuths = numpy.radians(self.data.yrange)
292 azimuths = numpy.radians(self.data.yrange)
293 r, theta = numpy.meshgrid(zeniths, azimuths)
293 r, theta = numpy.meshgrid(zeniths, azimuths)
294 x, y = r*numpy.cos(theta), r*numpy.sin(theta)
294 x, y = r*numpy.cos(theta), r*numpy.sin(theta)
295 self.y = zeniths
295 self.y = zeniths
296
296
297 if ax.firsttime:
297 if ax.firsttime:
298 if self.zlimits is not None:
298 if self.zlimits is not None:
299 self.zmin, self.zmax = self.zlimits[n]
299 self.zmin, self.zmax = self.zlimits[n]
300 ax.plt = ax.pcolormesh( # r, theta, numpy.ma.array(data, mask=numpy.isnan(data)),
300 ax.plt = ax.pcolormesh( # r, theta, numpy.ma.array(data, mask=numpy.isnan(data)),
301 x, y, numpy.ma.array(data, mask=numpy.isnan(data)),
301 x, y, numpy.ma.array(data, mask=numpy.isnan(data)),
302 vmin=self.zmin,
302 vmin=self.zmin,
303 vmax=self.zmax,
303 vmax=self.zmax,
304 cmap=self.cmaps[n])
304 cmap=self.cmaps[n])
305 else:
305 else:
306 if self.zlimits is not None:
306 if self.zlimits is not None:
307 self.zmin, self.zmax = self.zlimits[n]
307 self.zmin, self.zmax = self.zlimits[n]
308 ax.collections.remove(ax.collections[0])
308 ax.collections.remove(ax.collections[0])
309 ax.plt = ax.pcolormesh( # r, theta, numpy.ma.array(data, mask=numpy.isnan(data)),
309 ax.plt = ax.pcolormesh( # r, theta, numpy.ma.array(data, mask=numpy.isnan(data)),
310 x, y, numpy.ma.array(data, mask=numpy.isnan(data)),
310 x, y, numpy.ma.array(data, mask=numpy.isnan(data)),
311 vmin=self.zmin,
311 vmin=self.zmin,
312 vmax=self.zmax,
312 vmax=self.zmax,
313 cmap=self.cmaps[n])
313 cmap=self.cmaps[n])
314
314
315 if self.mode == 'A':
315 if self.mode == 'A':
316 continue
316 continue
317
317
318 # plot district names
318 # plot district names
319 f = open('/data/workspace/schain_scripts/distrito.csv')
319 f = open('/data/workspace/schain_scripts/distrito.csv')
320 for line in f:
320 for line in f:
321 label, lon, lat = [s.strip() for s in line.split(',') if s]
321 label, lon, lat = [s.strip() for s in line.split(',') if s]
322 lat = float(lat)
322 lat = float(lat)
323 lon = float(lon)
323 lon = float(lon)
324 # ax.plot(lon, lat, '.b', ms=2)
324 # ax.plot(lon, lat, '.b', ms=2)
325 ax.text(lon, lat, label.decode('utf8'), ha='center',
325 ax.text(lon, lat, label.decode('utf8'), ha='center',
326 va='bottom', size='8', color='black')
326 va='bottom', size='8', color='black')
327
327
328 # plot limites
328 # plot limites
329 limites = []
329 limites = []
330 tmp = []
330 tmp = []
331 for line in open('/data/workspace/schain_scripts/lima.csv'):
331 for line in open('/data/workspace/schain_scripts/lima.csv'):
332 if '#' in line:
332 if '#' in line:
333 if tmp:
333 if tmp:
334 limites.append(tmp)
334 limites.append(tmp)
335 tmp = []
335 tmp = []
336 continue
336 continue
337 values = line.strip().split(',')
337 values = line.strip().split(',')
338 tmp.append((float(values[0]), float(values[1])))
338 tmp.append((float(values[0]), float(values[1])))
339 for points in limites:
339 for points in limites:
340 ax.add_patch(
340 ax.add_patch(
341 Polygon(points, ec='k', fc='none', ls='--', lw=0.5))
341 Polygon(points, ec='k', fc='none', ls='--', lw=0.5))
342
342
343 # plot Cuencas
343 # plot Cuencas
344 for cuenca in ('rimac', 'lurin', 'mala', 'chillon', 'chilca', 'chancay-huaral'):
344 for cuenca in ('rimac', 'lurin', 'mala', 'chillon', 'chilca', 'chancay-huaral'):
345 f = open('/data/workspace/schain_scripts/{}.csv'.format(cuenca))
345 f = open('/data/workspace/schain_scripts/{}.csv'.format(cuenca))
346 values = [line.strip().split(',') for line in f]
346 values = [line.strip().split(',') for line in f]
347 points = [(float(s[0]), float(s[1])) for s in values]
347 points = [(float(s[0]), float(s[1])) for s in values]
348 ax.add_patch(Polygon(points, ec='b', fc='none'))
348 ax.add_patch(Polygon(points, ec='b', fc='none'))
349
349
350 # plot grid
350 # plot grid
351 for r in (15, 30, 45, 60):
351 for r in (15, 30, 45, 60):
352 ax.add_artist(plt.Circle((self.lon, self.lat),
352 ax.add_artist(plt.Circle((self.lon, self.lat),
353 km2deg(r), color='0.6', fill=False, lw=0.2))
353 km2deg(r), color='0.6', fill=False, lw=0.2))
354 ax.text(
354 ax.text(
355 self.lon + (km2deg(r))*numpy.cos(60*numpy.pi/180),
355 self.lon + (km2deg(r))*numpy.cos(60*numpy.pi/180),
356 self.lat + (km2deg(r))*numpy.sin(60*numpy.pi/180),
356 self.lat + (km2deg(r))*numpy.sin(60*numpy.pi/180),
357 '{}km'.format(r),
357 '{}km'.format(r),
358 ha='center', va='bottom', size='8', color='0.6', weight='heavy')
358 ha='center', va='bottom', size='8', color='0.6', weight='heavy')
359
359
360 if self.mode == 'E':
360 if self.mode == 'E':
361 title = 'El={}$^\circ$'.format(self.data.meta['elevation'])
361 title = 'El={}$^\circ$'.format(self.data.meta['elevation'])
362 label = 'E{:02d}'.format(int(self.data.meta['elevation']))
362 label = 'E{:02d}'.format(int(self.data.meta['elevation']))
363 else:
363 else:
364 title = 'Az={}$^\circ$'.format(self.data.meta['azimuth'])
364 title = 'Az={}$^\circ$'.format(self.data.meta['azimuth'])
365 label = 'A{:02d}'.format(int(self.data.meta['azimuth']))
365 label = 'A{:02d}'.format(int(self.data.meta['azimuth']))
366
366
367 self.save_labels = ['{}-{}'.format(lbl, label) for lbl in self.labels]
367 self.save_labels = ['{}-{}'.format(lbl, label) for lbl in self.labels]
368 self.titles = ['{} {}'.format(
368 self.titles = ['{} {}'.format(
369 self.data.parameters[x], title) for x in self.channels]
369 self.data.parameters[x], title) for x in self.channels]
370
370
371 class WeatherPlot(Plot):
371 class WeatherPlot(Plot):
372 CODE = 'weather'
372 CODE = 'weather'
373 plot_name = 'weather'
373 plot_name = 'weather'
374 plot_type = 'ppistyle'
374 plot_type = 'ppistyle'
375 buffering = False
375 buffering = False
376
376
377 def setup(self):
377 def setup(self):
378 self.ncols = 1
378 self.ncols = 1
379 self.nrows = 1
379 self.nrows = 1
380 self.nplots= 1
380 self.nplots= 1
381 self.ylabel= 'Range [Km]'
381 self.ylabel= 'Range [Km]'
382 self.titles= ['Weather']
382 self.titles= ['Weather']
383 self.colorbar=False
383 self.colorbar=False
384 self.width =8
384 self.width =8
385 self.height =8
385 self.height =8
386 self.ini =0
386 self.ini =0
387 self.len_azi =0
387 self.len_azi =0
388 self.buffer_ini = None
388 self.buffer_ini = None
389 self.buffer_azi = None
389 self.buffer_azi = None
390 self.plots_adjust.update({'wspace': 0.4, 'hspace':0.4, 'left': 0.1, 'right': 0.9, 'bottom': 0.08})
390 self.plots_adjust.update({'wspace': 0.4, 'hspace':0.4, 'left': 0.1, 'right': 0.9, 'bottom': 0.08})
391 self.flag =0
391 self.flag =0
392 self.indicador= 0
392 self.indicador= 0
393
393
394 def update(self, dataOut):
394 def update(self, dataOut):
395
395
396 data = {}
396 data = {}
397 meta = {}
397 meta = {}
398 data['weather'] = 10*numpy.log10(dataOut.data_360[0]/(250.0))
398 if hasattr(dataOut, 'dataPP_POWER'):
399 factor = 1
400
401 if hasattr(dataOut, 'nFFTPoints'):
402 factor = dataOut.normFactor
403
404 print("factor",factor)
405 data['weather'] = 10*numpy.log10(dataOut.data_360[0]/(factor))
406 print("weather",data['weather'])
399 data['azi'] = dataOut.data_azi
407 data['azi'] = dataOut.data_azi
400 return data, meta
408 return data, meta
401
409
402 def const_ploteo(self,data_weather,data_azi,step,res):
410 def const_ploteo(self,data_weather,data_azi,step,res):
403 if self.ini==0:
411 if self.ini==0:
404 #------- AZIMUTH
412 #------- AZIMUTH
405 n = (360/res)-len(data_azi)
413 n = (360/res)-len(data_azi)
406 start = data_azi[-1] + res
414 start = data_azi[-1] + res
407 end = data_azi[0] - res
415 end = data_azi[0] - res
408 if start>end:
416 if start>end:
409 end = end + 360
417 end = end + 360
410 azi_vacia = numpy.linspace(start,end,int(n))
418 azi_vacia = numpy.linspace(start,end,int(n))
411 azi_vacia = numpy.where(azi_vacia>360,azi_vacia-360,azi_vacia)
419 azi_vacia = numpy.where(azi_vacia>360,azi_vacia-360,azi_vacia)
412 data_azi = numpy.hstack((data_azi,azi_vacia))
420 data_azi = numpy.hstack((data_azi,azi_vacia))
413 # RADAR
421 # RADAR
414 val_mean = numpy.mean(data_weather[:,0])
422 val_mean = numpy.mean(data_weather[:,0])
415 data_weather_cmp = numpy.ones([(360-data_weather.shape[0]),data_weather.shape[1]])*val_mean
423 data_weather_cmp = numpy.ones([(360-data_weather.shape[0]),data_weather.shape[1]])*val_mean
416 data_weather = numpy.vstack((data_weather,data_weather_cmp))
424 data_weather = numpy.vstack((data_weather,data_weather_cmp))
417 else:
425 else:
418 # azimuth
426 # azimuth
419 flag=0
427 flag=0
420 start_azi = self.res_azi[0]
428 start_azi = self.res_azi[0]
421 start = data_azi[0]
429 start = data_azi[0]
422 end = data_azi[-1]
430 end = data_azi[-1]
423 print("start",start)
431 print("start",start)
424 print("end",end)
432 print("end",end)
425 if start< start_azi:
433 if start< start_azi:
426 start = start +360
434 start = start +360
427 if end <start_azi:
435 if end <start_azi:
428 end = end +360
436 end = end +360
429
437
430 print("start",start)
438 print("start",start)
431 print("end",end)
439 print("end",end)
432 #### AQUI SERA LA MAGIA
440 #### AQUI SERA LA MAGIA
433 pos_ini = int((start-start_azi)/res)
441 pos_ini = int((start-start_azi)/res)
434 len_azi = len(data_azi)
442 len_azi = len(data_azi)
435 if (360-pos_ini)<len_azi:
443 if (360-pos_ini)<len_azi:
436 if pos_ini+1==360:
444 if pos_ini+1==360:
437 pos_ini=0
445 pos_ini=0
438 else:
446 else:
439 flag=1
447 flag=1
440 dif= 360-pos_ini
448 dif= 360-pos_ini
441 comp= len_azi-dif
449 comp= len_azi-dif
442
450
443 print(pos_ini)
451 print(pos_ini)
444 print(len_azi)
452 print(len_azi)
445 print("shape",self.res_azi.shape)
453 print("shape",self.res_azi.shape)
446 if flag==0:
454 if flag==0:
447 # AZIMUTH
455 # AZIMUTH
448 self.res_azi[pos_ini:pos_ini+len_azi] = data_azi
456 self.res_azi[pos_ini:pos_ini+len_azi] = data_azi
449 # RADAR
457 # RADAR
450 self.res_weather[pos_ini:pos_ini+len_azi,:] = data_weather
458 self.res_weather[pos_ini:pos_ini+len_azi,:] = data_weather
451 else:
459 else:
452 # AZIMUTH
460 # AZIMUTH
453 self.res_azi[pos_ini:pos_ini+dif] = data_azi[0:dif]
461 self.res_azi[pos_ini:pos_ini+dif] = data_azi[0:dif]
454 self.res_azi[0:comp] = data_azi[dif:]
462 self.res_azi[0:comp] = data_azi[dif:]
455 # RADAR
463 # RADAR
456 self.res_weather[pos_ini:pos_ini+dif,:] = data_weather[0:dif,:]
464 self.res_weather[pos_ini:pos_ini+dif,:] = data_weather[0:dif,:]
457 self.res_weather[0:comp,:] = data_weather[dif:,:]
465 self.res_weather[0:comp,:] = data_weather[dif:,:]
458 flag=0
466 flag=0
459 data_azi = self.res_azi
467 data_azi = self.res_azi
460 data_weather = self.res_weather
468 data_weather = self.res_weather
461
469
462 return data_weather,data_azi
470 return data_weather,data_azi
463
471
464 def plot(self):
472 def plot(self):
465 print("--------------------------------------",self.ini,"-----------------------------------")
473 print("--------------------------------------",self.ini,"-----------------------------------")
466 #numpy.set_printoptions(suppress=True)
474 #numpy.set_printoptions(suppress=True)
467 #print(self.data.times)
475 #print(self.data.times)
468 thisDatetime = datetime.datetime.utcfromtimestamp(self.data.times[-1])
476 thisDatetime = datetime.datetime.utcfromtimestamp(self.data.times[-1])
469 data = self.data[-1]
477 data = self.data[-1]
470 # ALTURA altura_tmp_h
478 # ALTURA altura_tmp_h
471 altura_h = (data['weather'].shape[1])/10.0
479 altura_h = (data['weather'].shape[1])/10.0
472 stoprange = float(altura_h*1.5)#stoprange = float(33*1.5) por ahora 400
480 stoprange = float(altura_h*1.5)#stoprange = float(33*1.5) por ahora 400
473 rangestep = float(0.15)
481 rangestep = float(0.15)
474 r = numpy.arange(0, stoprange, rangestep)
482 r = numpy.arange(0, stoprange, rangestep)
475 self.y = 2*r
483 self.y = 2*r
476 # RADAR
484 # RADAR
477 #data_weather = data['weather']
485 #data_weather = data['weather']
478 # PEDESTAL
486 # PEDESTAL
479 #data_azi = data['azi']
487 #data_azi = data['azi']
480 res = 1
488 res = 1
481 # STEP
489 # STEP
482 step = (360/(res*data['weather'].shape[0]))
490 step = (360/(res*data['weather'].shape[0]))
483 #print("shape wr_data", wr_data.shape)
491 #print("shape wr_data", wr_data.shape)
484 #print("shape wr_azi",wr_azi.shape)
492 #print("shape wr_azi",wr_azi.shape)
485 #print("step",step)
493 #print("step",step)
486 print("Time---->",self.data.times[-1],thisDatetime)
494 print("Time---->",self.data.times[-1],thisDatetime)
487 #print("alturas", len(self.y))
495 #print("alturas", len(self.y))
488 self.res_weather, self.res_azi = self.const_ploteo(data_weather=data['weather'],data_azi=data['azi'],step=step,res=res)
496 self.res_weather, self.res_azi = self.const_ploteo(data_weather=data['weather'],data_azi=data['azi'],step=step,res=res)
489 #numpy.set_printoptions(suppress=True)
497 #numpy.set_printoptions(suppress=True)
490 #print("resultado",self.res_azi)
498 #print("resultado",self.res_azi)
491 ##########################################################
499 ##########################################################
492 ################# PLOTEO ###################
500 ################# PLOTEO ###################
493 ##########################################################
501 ##########################################################
494
502
495 for i,ax in enumerate(self.axes):
503 for i,ax in enumerate(self.axes):
496 if ax.firsttime:
504 if ax.firsttime:
497 plt.clf()
505 plt.clf()
498 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=1, vmax=60)
506 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=1, vmax=60)
499 else:
507 else:
500 plt.clf()
508 plt.clf()
501 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=0, vmax=60)
509 cgax, pm = wrl.vis.plot_ppi(self.res_weather,r=r,az=self.res_azi,fig=self.figures[0], proj='cg', vmin=1, vmax=60)
502 caax = cgax.parasites[0]
510 caax = cgax.parasites[0]
503 paax = cgax.parasites[1]
511 paax = cgax.parasites[1]
504 cbar = plt.gcf().colorbar(pm, pad=0.075)
512 cbar = plt.gcf().colorbar(pm, pad=0.075)
505 caax.set_xlabel('x_range [km]')
513 caax.set_xlabel('x_range [km]')
506 caax.set_ylabel('y_range [km]')
514 caax.set_ylabel('y_range [km]')
507 plt.text(1.0, 1.05, 'azimuth '+str(thisDatetime)+"step"+str(self.ini), transform=caax.transAxes, va='bottom',ha='right')
515 plt.text(1.0, 1.05, 'azimuth '+str(thisDatetime)+"step"+str(self.ini), transform=caax.transAxes, va='bottom',ha='right')
508
516
509 self.ini= self.ini+1
517 self.ini= self.ini+1
1 NO CONTENT: modified file
NO CONTENT: modified file
The requested commit or file is too big and content was truncated. Show full diff
1 NO CONTENT: modified file
NO CONTENT: modified file
@@ -1,216 +1,216
1 # Ing. AVP
1 # Ing. AVP
2 # 06/10/2021
2 # 06/10/2021
3 # ARCHIVO DE LECTURA
3 # ARCHIVO DE LECTURA
4 import os, sys
4 import os, sys
5 import datetime
5 import datetime
6 import time
6 import time
7 from schainpy.controller import Project
7 from schainpy.controller import Project
8 #### NOTA###########################################
8 #### NOTA###########################################
9 # INPUT :
9 # INPUT :
10 # VELOCIDAD PARAMETRO : V = 2Β°/seg
10 # VELOCIDAD PARAMETRO : V = 2Β°/seg
11 # MODO PULSE PAIR O MOMENTOS: 0 : Pulse Pair ,1 : Momentos
11 # MODO PULSE PAIR O MOMENTOS: 0 : Pulse Pair ,1 : Momentos
12 ######################################################
12 ######################################################
13 ##### PROCESAMIENTO ##################################
13 ##### PROCESAMIENTO ##################################
14 ##### OJO TENER EN CUENTA EL n= para el Pulse Pair ##
14 ##### OJO TENER EN CUENTA EL n= para el Pulse Pair ##
15 ##### O EL n= nFFTPoints ###
15 ##### O EL n= nFFTPoints ###
16 ######################################################
16 ######################################################
17 ######## BUSCAMOS EL numero de IPP equivalente 1Β°#####
17 ######## BUSCAMOS EL numero de IPP equivalente 1Β°#####
18 ######## Sea V la velocidad del Pedestal en Β°/seg#####
18 ######## Sea V la velocidad del Pedestal en Β°/seg#####
19 ######## 1Β° sera Recorrido en un tiempo de 1/V ######
19 ######## 1Β° sera Recorrido en un tiempo de 1/V ######
20 ######## IPP del Radar 400 useg --> 60 Km ############
20 ######## IPP del Radar 400 useg --> 60 Km ############
21 ######## n = 1/(V(Β°/seg)*IPP(Km)) , NUMERO DE IPP ##
21 ######## n = 1/(V(Β°/seg)*IPP(Km)) , NUMERO DE IPP ##
22 ######## n = 1/(V*IPP) #############################
22 ######## n = 1/(V*IPP) #############################
23 ######## VELOCIDAD DEL PEDESTAL ######################
23 ######## VELOCIDAD DEL PEDESTAL ######################
24 print("SETUP- RADAR METEOROLOGICO")
24 print("SETUP- RADAR METEOROLOGICO")
25 V = 10
25 V = 10
26 mode = 1
26 mode = 1
27 #path = '/DATA_RM/23/6v'
27 #path = '/DATA_RM/23/6v'
28 ####path = '/DATA_RM/TEST_INTEGRACION_2M'
28 ####path = '/DATA_RM/TEST_INTEGRACION_2M'
29 #path = '/DATA_RM/TEST_19OCTUBRE/10MHZ'
29 #path = '/DATA_RM/TEST_19OCTUBRE/10MHZ'
30 path = '/DATA_RM/WR_20_OCT'
30 path = '/DATA_RM/WR_20_OCT'
31 #### path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745'
31 #### path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745'
32 #### path_ped='/DATA_RM/TEST_PEDESTAL/P20211019-192244'
32 ####path_ped='/DATA_RM/TEST_PEDESTAL/P20211019-192244'
33 figpath_pp = "/home/soporte/Pictures/TEST_PP"
33 figpath_pp = "/home/soporte/Pictures/TEST_PP"
34 figpath_spec = "/home/soporte/Pictures/TEST_MOM"
34 figpath_spec = "/home/soporte/Pictures/TEST_MOM"
35 plot = 1
35 plot = 0
36 integration = 0
36 integration = 1
37 save = 0
37 save = 0
38 if save == 1:
38 if save == 1:
39 if mode==0:
39 if mode==0:
40 path_save = '/DATA_RM/TEST_HDF5_PP_23/6v'
40 path_save = '/DATA_RM/TEST_HDF5_PP_23/6v'
41 path_save = '/DATA_RM/TEST_HDF5_PP'
41 path_save = '/DATA_RM/TEST_HDF5_PP'
42 path_save = '/DATA_RM/TEST_HDF5_PP_100'
42 path_save = '/DATA_RM/TEST_HDF5_PP_100'
43 else:
43 else:
44 path_save = '/DATA_RM/TEST_HDF5_SPEC_23_V2/6v'
44 path_save = '/DATA_RM/TEST_HDF5_SPEC_23_V2/6v'
45
45
46 print("* PATH data ADQ :", path)
46 print("* PATH data ADQ :", path)
47 print("* Velocidad Pedestal :",V,"Β°/seg")
47 print("* Velocidad Pedestal :",V,"Β°/seg")
48 ############################ NRO Perfiles PROCESAMIENTO ###################
48 ############################ NRO Perfiles PROCESAMIENTO ###################
49 V=V
49 V=V
50 IPP=400*1e-6
50 IPP=400*1e-6
51 n= int(1/(V*IPP))
51 n= int(1/(V*IPP))
52 print("* n - NRO Perfiles Proc:", n )
52 print("* n - NRO Perfiles Proc:", n )
53 ################################## MODE ###################################
53 ################################## MODE ###################################
54 print("* Modo de Operacion :",mode)
54 print("* Modo de Operacion :",mode)
55 if mode ==0:
55 if mode ==0:
56 print("* Met. Seleccionado : Pulse Pair")
56 print("* Met. Seleccionado : Pulse Pair")
57 else:
57 else:
58 print("* Met. Momentos : Momentos")
58 print("* Met. Momentos : Momentos")
59
59
60 ################################## MODE ###################################
60 ################################## MODE ###################################
61 print("* Grabado de datos :",save)
61 print("* Grabado de datos :",save)
62 if save ==1:
62 if save ==1:
63 if mode==0:
63 if mode==0:
64 ope= "Pulse Pair"
64 ope= "Pulse Pair"
65 else:
65 else:
66 ope= "Momentos"
66 ope= "Momentos"
67 print("* Path-Save Data -", ope , path_save)
67 print("* Path-Save Data -", ope , path_save)
68
68
69 print("* Integracion de datos :",integration)
69 print("* Integracion de datos :",integration)
70
70
71 time.sleep(15)
71 time.sleep(15)
72 #remotefolder = "/home/wmaster/graficos"
72 #remotefolder = "/home/wmaster/graficos"
73 #######################################################################
73 #######################################################################
74 ################# RANGO DE PLOTEO######################################
74 ################# RANGO DE PLOTEO######################################
75 dBmin = '1'
75 dBmin = '1'
76 dBmax = '65'
76 dBmax = '65'
77 xmin = '13.2'
77 xmin = '13.2'
78 xmax = '13.5'
78 xmax = '13.5'
79 ymin = '0'
79 ymin = '0'
80 ymax = '60'
80 ymax = '60'
81 #######################################################################
81 #######################################################################
82 ########################FECHA##########################################
82 ########################FECHA##########################################
83 str = datetime.date.today()
83 str = datetime.date.today()
84 today = str.strftime("%Y/%m/%d")
84 today = str.strftime("%Y/%m/%d")
85 str2 = str - datetime.timedelta(days=1)
85 str2 = str - datetime.timedelta(days=1)
86 yesterday = str2.strftime("%Y/%m/%d")
86 yesterday = str2.strftime("%Y/%m/%d")
87 #######################################################################
87 #######################################################################
88 ########################SIGNAL CHAIN ##################################
88 ########################SIGNAL CHAIN ##################################
89 #######################################################################
89 #######################################################################
90 desc = "USRP_test"
90 desc = "USRP_test"
91 filename = "USRP_processing.xml"
91 filename = "USRP_processing.xml"
92 controllerObj = Project()
92 controllerObj = Project()
93 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
93 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
94 #######################################################################
94 #######################################################################
95 ######################## UNIDAD DE LECTURA#############################
95 ######################## UNIDAD DE LECTURA#############################
96 #######################################################################
96 #######################################################################
97 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
97 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
98 path=path,
98 path=path,
99 startDate="2021/01/01",#today,
99 startDate="2021/01/01",#today,
100 endDate="2021/12/30",#today,
100 endDate="2021/12/30",#today,
101 startTime='00:00:00',
101 startTime='00:00:00',
102 endTime='23:59:59',
102 endTime='23:59:59',
103 delay=0,
103 delay=0,
104 #set=0,
104 #set=0,
105 online=0,
105 online=0,
106 walk=1,
106 walk=1,
107 ippKm = 60)
107 ippKm = 60)
108
108
109 opObj11 = readUnitConfObj.addOperation(name='printInfo')
109 opObj11 = readUnitConfObj.addOperation(name='printInfo')
110
110
111 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
111 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
112
112
113 if mode ==0:
113 if mode ==0:
114 ####################### METODO PULSE PAIR ######################################################################
114 ####################### METODO PULSE PAIR ######################################################################
115 opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other')
115 opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other')
116 opObj11.addParameter(name='n', value=int(n), format='int')#10 VOY A USAR 250 DADO QUE LA VELOCIDAD ES 10 GRADOS
116 opObj11.addParameter(name='n', value=int(n), format='int')#10 VOY A USAR 250 DADO QUE LA VELOCIDAD ES 10 GRADOS
117 #opObj11.addParameter(name='removeDC', value=1, format='int')
117 #opObj11.addParameter(name='removeDC', value=1, format='int')
118 ####################### METODO Parametros ######################################################################
118 ####################### METODO Parametros ######################################################################
119 procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId())
119 procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId())
120 if plot==1:
120 if plot==1:
121 opObj11 = procUnitConfObjB.addOperation(name='GenericRTIPlot',optype='external')
121 opObj11 = procUnitConfObjB.addOperation(name='GenericRTIPlot',optype='external')
122 opObj11.addParameter(name='attr_data', value='dataPP_POWER')
122 opObj11.addParameter(name='attr_data', value='dataPP_POWER')
123 opObj11.addParameter(name='colormap', value='jet')
123 opObj11.addParameter(name='colormap', value='jet')
124 opObj11.addParameter(name='xmin', value=xmin)
124 opObj11.addParameter(name='xmin', value=xmin)
125 opObj11.addParameter(name='xmax', value=xmax)
125 opObj11.addParameter(name='xmax', value=xmax)
126 opObj11.addParameter(name='zmin', value=dBmin)
126 opObj11.addParameter(name='zmin', value=dBmin)
127 opObj11.addParameter(name='zmax', value=dBmax)
127 opObj11.addParameter(name='zmax', value=dBmax)
128 opObj11.addParameter(name='save', value=figpath_pp)
128 opObj11.addParameter(name='save', value=figpath_pp)
129 opObj11.addParameter(name='showprofile', value=0)
129 opObj11.addParameter(name='showprofile', value=0)
130 opObj11.addParameter(name='save_period', value=10)
130 opObj11.addParameter(name='save_period', value=10)
131
131
132 ####################### METODO ESCRITURA #######################################################################
132 ####################### METODO ESCRITURA #######################################################################
133 if save==1:
133 if save==1:
134 opObj10 = procUnitConfObjB.addOperation(name='HDFWriter')
134 opObj10 = procUnitConfObjB.addOperation(name='HDFWriter')
135 opObj10.addParameter(name='path',value=path_save)
135 opObj10.addParameter(name='path',value=path_save)
136 #opObj10.addParameter(name='mode',value=0)
136 #opObj10.addParameter(name='mode',value=0)
137 opObj10.addParameter(name='blocksPerFile',value='100',format='int')
137 opObj10.addParameter(name='blocksPerFile',value='100',format='int')
138 opObj10.addParameter(name='metadataList',value='utctimeInit,timeZone,paramInterval,profileIndex,channelList,heightList,flagDataAsBlock',format='list')
138 opObj10.addParameter(name='metadataList',value='utctimeInit,timeZone,paramInterval,profileIndex,channelList,heightList,flagDataAsBlock',format='list')
139 opObj10.addParameter(name='dataList',value='dataPP_POWER,dataPP_DOP,utctime',format='list')#,format='list'
139 opObj10.addParameter(name='dataList',value='dataPP_POWER,dataPP_DOP,utctime',format='list')#,format='list'
140 if integration==1:
140 if integration==1:
141 V=10
141 V=10
142 blocksPerfile=360
142 blocksPerfile=360
143 print("* Velocidad del Pedestal:",V)
143 print("* Velocidad del Pedestal:",V)
144 tmp_blocksPerfile = 100
144 tmp_blocksPerfile = 100
145 f_a_p= int(tmp_blocksPerfile/V)
145 f_a_p= int(tmp_blocksPerfile/V)
146
146
147 opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation')
147 opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation')
148 opObj11.addParameter(name='path_ped', value=path_ped)
148 opObj11.addParameter(name='path_ped', value=path_ped)
149 #opObj11.addParameter(name='path_adq', value=path_adq)
149 #opObj11.addParameter(name='path_adq', value=path_adq)
150 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
150 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
151 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
151 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
152 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
152 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
153 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
153 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
154 opObj11.addParameter(name='online', value='0', format='int')
154 opObj11.addParameter(name='online', value='0', format='int')
155
155
156 opObj11 = procUnitConfObjB.addOperation(name='Block360')
156 opObj11 = procUnitConfObjB.addOperation(name='Block360')
157 opObj11.addParameter(name='n', value='10', format='int')
157 opObj11.addParameter(name='n', value='10', format='int')
158 opObj11.addParameter(name='mode', value=mode, format='int')
158 opObj11.addParameter(name='mode', value=mode, format='int')
159
159
160 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
160 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
161
161
162 opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other')
162 opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other')
163
163
164
164
165 else:
165 else:
166 ####################### METODO SPECTROS ######################################################################
166 ####################### METODO SPECTROS ######################################################################
167 procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
167 procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
168 procUnitConfObjB.addParameter(name='nFFTPoints', value=n, format='int')
168 procUnitConfObjB.addParameter(name='nFFTPoints', value=n, format='int')
169 procUnitConfObjB.addParameter(name='nProfiles' , value=n, format='int')
169 procUnitConfObjB.addParameter(name='nProfiles' , value=n, format='int')
170
170
171 procUnitConfObjC = controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjB.getId())
171 procUnitConfObjC = controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjB.getId())
172 procUnitConfObjC.addOperation(name='SpectralMoments')
172 procUnitConfObjC.addOperation(name='SpectralMoments')
173 if plot==1:
173 if plot==1:
174 dBmin = '1'
174 dBmin = '1'
175 dBmax = '65'
175 dBmax = '65'
176 opObj11 = procUnitConfObjC.addOperation(name='PowerPlot',optype='external')
176 opObj11 = procUnitConfObjC.addOperation(name='PowerPlot',optype='external')
177 opObj11.addParameter(name='xmin', value=xmin)
177 opObj11.addParameter(name='xmin', value=xmin)
178 opObj11.addParameter(name='xmax', value=xmax)
178 opObj11.addParameter(name='xmax', value=xmax)
179 opObj11.addParameter(name='zmin', value=dBmin)
179 opObj11.addParameter(name='zmin', value=dBmin)
180 opObj11.addParameter(name='zmax', value=dBmax)
180 opObj11.addParameter(name='zmax', value=dBmax)
181 opObj11.addParameter(name='save', value=figpath_spec)
181 opObj11.addParameter(name='save', value=figpath_spec)
182 opObj11.addParameter(name='showprofile', value=0)
182 opObj11.addParameter(name='showprofile', value=0)
183 opObj11.addParameter(name='save_period', value=10)
183 opObj11.addParameter(name='save_period', value=10)
184
184
185 if save==1:
185 if save==1:
186 opObj10 = procUnitConfObjC.addOperation(name='HDFWriter')
186 opObj10 = procUnitConfObjC.addOperation(name='HDFWriter')
187 opObj10.addParameter(name='path',value=path_save)
187 opObj10.addParameter(name='path',value=path_save)
188 #opObj10.addParameter(name='mode',value=0)
188 #opObj10.addParameter(name='mode',value=0)
189 opObj10.addParameter(name='blocksPerFile',value='360',format='int')
189 opObj10.addParameter(name='blocksPerFile',value='360',format='int')
190 #opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
190 #opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
191 opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
191 opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
192 opObj10.addParameter(name='dataList',value='data_pow,data_dop,utctime',format='list')#,format='list'
192 opObj10.addParameter(name='dataList',value='data_pow,data_dop,utctime',format='list')#,format='list'
193
193
194 if integration==1:
194 if integration==1:
195 V=10
195 V=10
196 blocksPerfile=360
196 blocksPerfile=360
197 print("* Velocidad del Pedestal:",V)
197 print("* Velocidad del Pedestal:",V)
198 tmp_blocksPerfile = 100
198 tmp_blocksPerfile = 100
199 f_a_p= int(tmp_blocksPerfile/V)
199 f_a_p= int(tmp_blocksPerfile/V)
200
200
201 opObj11 = procUnitConfObjC.addOperation(name='PedestalInformation')
201 opObj11 = procUnitConfObjC.addOperation(name='PedestalInformation')
202 opObj11.addParameter(name='path_ped', value=path_ped)
202 opObj11.addParameter(name='path_ped', value=path_ped)
203 #opObj11.addParameter(name='path_adq', value=path_adq)
203 #opObj11.addParameter(name='path_adq', value=path_adq)
204 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
204 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
205 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
205 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
206 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
206 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
207 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
207 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
208 opObj11.addParameter(name='online', value='0', format='int')
208 opObj11.addParameter(name='online', value='0', format='int')
209
209
210 opObj11 = procUnitConfObjC.addOperation(name='Block360')
210 opObj11 = procUnitConfObjC.addOperation(name='Block360')
211 opObj11.addParameter(name='n', value='10', format='int')
211 opObj11.addParameter(name='n', value='10', format='int')
212 opObj11.addParameter(name='mode', value=mode, format='int')
212 opObj11.addParameter(name='mode', value=mode, format='int')
213
213
214 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
214 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
215 opObj11= procUnitConfObjC.addOperation(name='WeatherPlot',optype='other')
215 opObj11= procUnitConfObjC.addOperation(name='WeatherPlot',optype='other')
216 controllerObj.start()
216 controllerObj.start()
@@ -1,217 +1,217
1 # Ing. AVP
1 # Ing. AVP
2 # 06/10/2021
2 # 06/10/2021
3 # ARCHIVO DE LECTURA
3 # ARCHIVO DE LECTURA
4 import os, sys
4 import os, sys
5 import datetime
5 import datetime
6 import time
6 import time
7 from schainpy.controller import Project
7 from schainpy.controller import Project
8 #### NOTA###########################################
8 #### NOTA###########################################
9 # INPUT :
9 # INPUT :
10 # VELOCIDAD PARAMETRO : V = 2Β°/seg
10 # VELOCIDAD PARAMETRO : V = 2Β°/seg
11 # MODO PULSE PAIR O MOMENTOS: 0 : Pulse Pair ,1 : Momentos
11 # MODO PULSE PAIR O MOMENTOS: 0 : Pulse Pair ,1 : Momentos
12 ######################################################
12 ######################################################
13 ##### PROCESAMIENTO ##################################
13 ##### PROCESAMIENTO ##################################
14 ##### OJO TENER EN CUENTA EL n= para el Pulse Pair ##
14 ##### OJO TENER EN CUENTA EL n= para el Pulse Pair ##
15 ##### O EL n= nFFTPoints ###
15 ##### O EL n= nFFTPoints ###
16 ######################################################
16 ######################################################
17 ######## BUSCAMOS EL numero de IPP equivalente 1Β°#####
17 ######## BUSCAMOS EL numero de IPP equivalente 1Β°#####
18 ######## Sea V la velocidad del Pedestal en Β°/seg#####
18 ######## Sea V la velocidad del Pedestal en Β°/seg#####
19 ######## 1Β° sera Recorrido en un tiempo de 1/V ######
19 ######## 1Β° sera Recorrido en un tiempo de 1/V ######
20 ######## IPP del Radar 400 useg --> 60 Km ############
20 ######## IPP del Radar 400 useg --> 60 Km ############
21 ######## n = 1/(V(Β°/seg)*IPP(Km)) , NUMERO DE IPP ##
21 ######## n = 1/(V(Β°/seg)*IPP(Km)) , NUMERO DE IPP ##
22 ######## n = 1/(V*IPP) #############################
22 ######## n = 1/(V*IPP) #############################
23 ######## VELOCIDAD DEL PEDESTAL ######################
23 ######## VELOCIDAD DEL PEDESTAL ######################
24 print("SETUP- RADAR METEOROLOGICO")
24 print("SETUP- RADAR METEOROLOGICO")
25 V = 10
25 V = 10
26 mode = 1
26 mode = 1
27 #path = '/DATA_RM/23/6v'
27 #path = '/DATA_RM/23/6v'
28 #path = '/DATA_RM/TEST_INTEGRACION_2M'
28 #path = '/DATA_RM/TEST_INTEGRACION_2M'
29 path = '/DATA_RM/WR_20_OCT'
29 path = '/DATA_RM/WR_20_OCT'
30
30
31 #path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745'
31 #path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745'
32 path_ped='/DATA_RM/TEST_PEDESTAL/P20211020-131248'
32 path_ped='/DATA_RM/TEST_PEDESTAL/P20211020-131248'
33
33
34 figpath_pp = "/home/soporte/Pictures/TEST_PP"
34 figpath_pp = "/home/soporte/Pictures/TEST_PP"
35 figpath_mom = "/home/soporte/Pictures/TEST_MOM"
35 figpath_mom = "/home/soporte/Pictures/TEST_MOM"
36 plot = 0
36 plot = 0
37 integration = 1
37 integration = 1
38 save = 0
38 save = 0
39 if save == 1:
39 if save == 1:
40 if mode==0:
40 if mode==0:
41 path_save = '/DATA_RM/TEST_HDF5_PP_23/6v'
41 path_save = '/DATA_RM/TEST_HDF5_PP_23/6v'
42 path_save = '/DATA_RM/TEST_HDF5_PP'
42 path_save = '/DATA_RM/TEST_HDF5_PP'
43 path_save = '/DATA_RM/TEST_HDF5_PP_100'
43 path_save = '/DATA_RM/TEST_HDF5_PP_100'
44 else:
44 else:
45 path_save = '/DATA_RM/TEST_HDF5_SPEC_23_V2/6v'
45 path_save = '/DATA_RM/TEST_HDF5_SPEC_23_V2/6v'
46
46
47 print("* PATH data ADQ :", path)
47 print("* PATH data ADQ :", path)
48 print("* Velocidad Pedestal :",V,"Β°/seg")
48 print("* Velocidad Pedestal :",V,"Β°/seg")
49 ############################ NRO Perfiles PROCESAMIENTO ###################
49 ############################ NRO Perfiles PROCESAMIENTO ###################
50 V=V
50 V=V
51 IPP=400*1e-6
51 IPP=400*1e-6
52 n= int(1/(V*IPP))
52 n= int(1/(V*IPP))
53 print("* n - NRO Perfiles Proc:", n )
53 print("* n - NRO Perfiles Proc:", n )
54 ################################## MODE ###################################
54 ################################## MODE ###################################
55 print("* Modo de Operacion :",mode)
55 print("* Modo de Operacion :",mode)
56 if mode ==0:
56 if mode ==0:
57 print("* Met. Seleccionado : Pulse Pair")
57 print("* Met. Seleccionado : Pulse Pair")
58 else:
58 else:
59 print("* Met. Momentos : Momentos")
59 print("* Met. Momentos : Momentos")
60
60
61 ################################## MODE ###################################
61 ################################## MODE ###################################
62 print("* Grabado de datos :",save)
62 print("* Grabado de datos :",save)
63 if save ==1:
63 if save ==1:
64 if mode==0:
64 if mode==0:
65 ope= "Pulse Pair"
65 ope= "Pulse Pair"
66 else:
66 else:
67 ope= "Momentos"
67 ope= "Momentos"
68 print("* Path-Save Data -", ope , path_save)
68 print("* Path-Save Data -", ope , path_save)
69
69
70 print("* Integracion de datos :",integration)
70 print("* Integracion de datos :",integration)
71
71
72 time.sleep(15)
72 time.sleep(5)
73 #remotefolder = "/home/wmaster/graficos"
73 #remotefolder = "/home/wmaster/graficos"
74 #######################################################################
74 #######################################################################
75 ################# RANGO DE PLOTEO######################################
75 ################# RANGO DE PLOTEO######################################
76 dBmin = '1'
76 dBmin = '1'
77 dBmax = '85'
77 dBmax = '85'
78 xmin = '15'
78 xmin = '15'
79 xmax = '15.25'
79 xmax = '15.25'
80 ymin = '0'
80 ymin = '0'
81 ymax = '600'
81 ymax = '600'
82 #######################################################################
82 #######################################################################
83 ########################FECHA##########################################
83 ########################FECHA##########################################
84 str = datetime.date.today()
84 str = datetime.date.today()
85 today = str.strftime("%Y/%m/%d")
85 today = str.strftime("%Y/%m/%d")
86 str2 = str - datetime.timedelta(days=1)
86 str2 = str - datetime.timedelta(days=1)
87 yesterday = str2.strftime("%Y/%m/%d")
87 yesterday = str2.strftime("%Y/%m/%d")
88 #######################################################################
88 #######################################################################
89 ########################SIGNAL CHAIN ##################################
89 ########################SIGNAL CHAIN ##################################
90 #######################################################################
90 #######################################################################
91 desc = "USRP_test"
91 desc = "USRP_test"
92 filename = "USRP_processing.xml"
92 filename = "USRP_processing.xml"
93 controllerObj = Project()
93 controllerObj = Project()
94 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
94 controllerObj.setup(id = '191', name='Test_USRP', description=desc)
95 #######################################################################
95 #######################################################################
96 ######################## UNIDAD DE LECTURA#############################
96 ######################## UNIDAD DE LECTURA#############################
97 #######################################################################
97 #######################################################################
98 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
98 readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader',
99 path=path,
99 path=path,
100 startDate="2021/01/01",#today,
100 startDate="2021/01/01",#today,
101 endDate="2021/12/30",#today,
101 endDate="2021/12/30",#today,
102 startTime='00:00:00',
102 startTime='00:00:00',
103 endTime='23:59:59',
103 endTime='23:59:59',
104 delay=0,
104 delay=0,
105 #set=0,
105 #set=0,
106 online=0,
106 online=0,
107 walk=1,
107 walk=1,
108 ippKm = 60)
108 ippKm = 60)
109
109
110 opObj11 = readUnitConfObj.addOperation(name='printInfo')
110 opObj11 = readUnitConfObj.addOperation(name='printInfo')
111
111
112 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
112 procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId())
113
113
114 if mode ==0:
114 if mode ==0:
115 ####################### METODO PULSE PAIR ######################################################################
115 ####################### METODO PULSE PAIR ######################################################################
116 opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other')
116 opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other')
117 opObj11.addParameter(name='n', value=int(n), format='int')#10 VOY A USAR 250 DADO QUE LA VELOCIDAD ES 10 GRADOS
117 opObj11.addParameter(name='n', value=int(n), format='int')#10 VOY A USAR 250 DADO QUE LA VELOCIDAD ES 10 GRADOS
118 #opObj11.addParameter(name='removeDC', value=1, format='int')
118 #opObj11.addParameter(name='removeDC', value=1, format='int')
119 ####################### METODO Parametros ######################################################################
119 ####################### METODO Parametros ######################################################################
120 procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId())
120 procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId())
121 if plot==1:
121 if plot==1:
122 opObj11 = procUnitConfObjB.addOperation(name='GenericRTIPlot',optype='external')
122 opObj11 = procUnitConfObjB.addOperation(name='GenericRTIPlot',optype='external')
123 opObj11.addParameter(name='attr_data', value='dataPP_POW')
123 opObj11.addParameter(name='attr_data', value='dataPP_POW')
124 opObj11.addParameter(name='colormap', value='jet')
124 opObj11.addParameter(name='colormap', value='jet')
125 opObj11.addParameter(name='xmin', value=xmin)
125 opObj11.addParameter(name='xmin', value=xmin)
126 opObj11.addParameter(name='xmax', value=xmax)
126 opObj11.addParameter(name='xmax', value=xmax)
127 opObj11.addParameter(name='zmin', value=dBmin)
127 opObj11.addParameter(name='zmin', value=dBmin)
128 opObj11.addParameter(name='zmax', value=dBmax)
128 opObj11.addParameter(name='zmax', value=dBmax)
129 opObj11.addParameter(name='save', value=figpath_pp)
129 opObj11.addParameter(name='save', value=figpath_pp)
130 opObj11.addParameter(name='showprofile', value=0)
130 opObj11.addParameter(name='showprofile', value=0)
131 opObj11.addParameter(name='save_period', value=50)
131 opObj11.addParameter(name='save_period', value=50)
132
132
133 ####################### METODO ESCRITURA #######################################################################
133 ####################### METODO ESCRITURA #######################################################################
134 if save==1:
134 if save==1:
135 opObj10 = procUnitConfObjB.addOperation(name='HDFWriter')
135 opObj10 = procUnitConfObjB.addOperation(name='HDFWriter')
136 opObj10.addParameter(name='path',value=path_save)
136 opObj10.addParameter(name='path',value=path_save)
137 #opObj10.addParameter(name='mode',value=0)
137 #opObj10.addParameter(name='mode',value=0)
138 opObj10.addParameter(name='blocksPerFile',value='100',format='int')
138 opObj10.addParameter(name='blocksPerFile',value='100',format='int')
139 opObj10.addParameter(name='metadataList',value='utctimeInit,timeZone,paramInterval,profileIndex,channelList,heightList,flagDataAsBlock',format='list')
139 opObj10.addParameter(name='metadataList',value='utctimeInit,timeZone,paramInterval,profileIndex,channelList,heightList,flagDataAsBlock',format='list')
140 opObj10.addParameter(name='dataList',value='dataPP_POW,dataPP_DOP,utctime',format='list')#,format='list'
140 opObj10.addParameter(name='dataList',value='dataPP_POW,dataPP_DOP,utctime',format='list')#,format='list'
141 if integration==1:
141 if integration==1:
142 V=10
142 V=10
143 blocksPerfile=360
143 blocksPerfile=360
144 print("* Velocidad del Pedestal:",V)
144 print("* Velocidad del Pedestal:",V)
145 tmp_blocksPerfile = 100
145 tmp_blocksPerfile = 100
146 f_a_p= int(tmp_blocksPerfile/V)
146 f_a_p= int(tmp_blocksPerfile/V)
147
147
148 opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation')
148 opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation')
149 opObj11.addParameter(name='path_ped', value=path_ped)
149 opObj11.addParameter(name='path_ped', value=path_ped)
150 #opObj11.addParameter(name='path_adq', value=path_adq)
150 #opObj11.addParameter(name='path_adq', value=path_adq)
151 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
151 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
152 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
152 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
153 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
153 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
154 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
154 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
155 opObj11.addParameter(name='online', value='0', format='int')
155 opObj11.addParameter(name='online', value='0', format='int')
156
156
157 opObj11 = procUnitConfObjB.addOperation(name='Block360')
157 opObj11 = procUnitConfObjB.addOperation(name='Block360')
158 opObj11.addParameter(name='n', value='10', format='int')
158 opObj11.addParameter(name='n', value='10', format='int')
159 opObj11.addParameter(name='mode', value=mode, format='int')
159 opObj11.addParameter(name='mode', value=mode, format='int')
160
160
161 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
161 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
162
162
163 opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other')
163 opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other')
164
164
165
165
166 else:
166 else:
167 ####################### METODO SPECTROS ######################################################################
167 ####################### METODO SPECTROS ######################################################################
168 procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
168 procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId())
169 procUnitConfObjB.addParameter(name='nFFTPoints', value=n, format='int')
169 procUnitConfObjB.addParameter(name='nFFTPoints', value=n, format='int')
170 procUnitConfObjB.addParameter(name='nProfiles' , value=n, format='int')
170 procUnitConfObjB.addParameter(name='nProfiles' , value=n, format='int')
171
171
172 procUnitConfObjC = controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjB.getId())
172 procUnitConfObjC = controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjB.getId())
173 procUnitConfObjC.addOperation(name='SpectralMoments')
173 procUnitConfObjC.addOperation(name='SpectralMoments')
174 if plot==1:
174 if plot==1:
175 dBmin = '1'
175 dBmin = '1'
176 dBmax = '65'
176 dBmax = '65'
177 opObj11 = procUnitConfObjC.addOperation(name='PowerPlot',optype='external')
177 opObj11 = procUnitConfObjC.addOperation(name='PowerPlot',optype='external')
178 opObj11.addParameter(name='xmin', value=xmin)
178 opObj11.addParameter(name='xmin', value=xmin)
179 opObj11.addParameter(name='xmax', value=xmax)
179 opObj11.addParameter(name='xmax', value=xmax)
180 opObj11.addParameter(name='zmin', value=dBmin)
180 opObj11.addParameter(name='zmin', value=dBmin)
181 opObj11.addParameter(name='zmax', value=dBmax)
181 opObj11.addParameter(name='zmax', value=dBmax)
182 opObj11.addParameter(name='save', value=figpath_mom)
182 opObj11.addParameter(name='save', value=figpath_mom)
183 opObj11.addParameter(name='showprofile', value=0)
183 opObj11.addParameter(name='showprofile', value=0)
184 opObj11.addParameter(name='save_period', value=100)
184 opObj11.addParameter(name='save_period', value=100)
185
185
186 if save==1:
186 if save==1:
187 opObj10 = procUnitConfObjC.addOperation(name='HDFWriter')
187 opObj10 = procUnitConfObjC.addOperation(name='HDFWriter')
188 opObj10.addParameter(name='path',value=path_save)
188 opObj10.addParameter(name='path',value=path_save)
189 #opObj10.addParameter(name='mode',value=0)
189 #opObj10.addParameter(name='mode',value=0)
190 opObj10.addParameter(name='blocksPerFile',value='360',format='int')
190 opObj10.addParameter(name='blocksPerFile',value='360',format='int')
191 #opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
191 #opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
192 opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
192 opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex
193 opObj10.addParameter(name='dataList',value='data_pow,data_dop,utctime',format='list')#,format='list'
193 opObj10.addParameter(name='dataList',value='data_pow,data_dop,utctime',format='list')#,format='list'
194
194
195 if integration==1:
195 if integration==1:
196 V=10
196 V=10
197 blocksPerfile=360
197 blocksPerfile=360
198 print("* Velocidad del Pedestal:",V)
198 print("* Velocidad del Pedestal:",V)
199 tmp_blocksPerfile = 100
199 tmp_blocksPerfile = 100
200 f_a_p= int(tmp_blocksPerfile/V)
200 f_a_p= int(tmp_blocksPerfile/V)
201
201
202 opObj11 = procUnitConfObjC.addOperation(name='PedestalInformation')
202 opObj11 = procUnitConfObjC.addOperation(name='PedestalInformation')
203 opObj11.addParameter(name='path_ped', value=path_ped)
203 opObj11.addParameter(name='path_ped', value=path_ped)
204 #opObj11.addParameter(name='path_adq', value=path_adq)
204 #opObj11.addParameter(name='path_adq', value=path_adq)
205 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
205 opObj11.addParameter(name='t_Interval_p', value='0.01', format='float')
206 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
206 opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int')
207 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
207 opObj11.addParameter(name='n_Muestras_p', value='100', format='float')
208 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
208 opObj11.addParameter(name='f_a_p', value=f_a_p, format='int')
209 opObj11.addParameter(name='online', value='0', format='int')
209 opObj11.addParameter(name='online', value='0', format='int')
210
210
211 opObj11 = procUnitConfObjC.addOperation(name='Block360')
211 opObj11 = procUnitConfObjC.addOperation(name='Block360')
212 opObj11.addParameter(name='n', value='30', format='int')
212 opObj11.addParameter(name='n', value='10', format='int')
213 opObj11.addParameter(name='mode', value=mode, format='int')
213 opObj11.addParameter(name='mode', value=mode, format='int')
214
214
215 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
215 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
216 opObj11= procUnitConfObjC.addOperation(name='WeatherPlot',optype='other')
216 opObj11= procUnitConfObjC.addOperation(name='WeatherPlot',optype='other')
217 controllerObj.start()
217 controllerObj.start()
General Comments 0
You need to be logged in to leave comments. Login now