From 2acdbd5998b45aee06172b1b55586c323909d7c5 2021-10-01 18:21:45 From: avaldez Date: 2021-10-01 18:21:45 Subject: [PATCH] update change RM --- diff --git a/schainpy/model/graphics/jroplot_parameters.py b/schainpy/model/graphics/jroplot_parameters.py index 9a1f5ac..5d66ea5 100644 --- a/schainpy/model/graphics/jroplot_parameters.py +++ b/schainpy/model/graphics/jroplot_parameters.py @@ -400,228 +400,119 @@ class WeatherPlot(Plot): data = {} meta = {} data['weather'] = 10*numpy.log10(dataOut.data_360[0]/(250**2)) + print(data['weather']) data['azi'] = dataOut.data_azi - + print("UPDATE",data['azi']) return data, meta + def const_ploteo(self,data_weather,data_azi,step,res): + #print("data_weather",data_weather) + print("data_azi",data_azi) + print("step",step) + if self.ini==0: + #------- AZIMUTH + n = (360/res)-len(data_azi) + start = data_azi[-1] + res + end = data_azi[0] - res + if start>end: + end = end + 360 + azi_vacia = numpy.linspace(start,end,int(n)) + azi_vacia = numpy.where(azi_vacia>360,azi_vacia-360,azi_vacia) + data_azi = numpy.hstack((data_azi,azi_vacia)) + # RADAR + val_mean = numpy.mean(data_weather[:,0]) + data_weather_cmp = numpy.ones([(360-data_weather.shape[0]),data_weather.shape[1]])*val_mean + data_weather = numpy.vstack((data_weather,data_weather_cmp)) + else: + # azimuth + flag=0 + start_azi = self.res_azi[0] + start = data_azi[0] + end = data_azi[-1] + print("start",start) + print("end",end) + if start< start_azi: + start = start +360 + if end ",tmp_z) - ##if self.ini==0: - ## tmp_z= [0,1,2,3,4,5,6,7,8,9] - - #print("tmp_z",tmp_z.shape) - res = 1 - step = (360/(res*tmp_v.shape[0])) + # RADAR + #data_weather = data['weather'] + # PEDESTAL + #data_azi = data['azi'] + res = 1 + # STEP + step = (360/(res*data['weather'].shape[0])) + #print("shape wr_data", wr_data.shape) + #print("shape wr_azi",wr_azi.shape) #print("step",step) - mode = 1 - if mode==0: - #print("self.ini",self.ini) - val = numpy.mean(tmp_v[:,0]) - self.len_azi = len(tmp_z) - ones = numpy.ones([(360-tmp_v.shape[0]),tmp_v.shape[1]])*val - self.buffer_ini = numpy.vstack((tmp_v,ones)) - - n = ((360/res)-len(tmp_z)) - start = tmp_z[-1]+res - end = tmp_z[0]-res - if start>end: - end = end+360 - azi_zeros = numpy.linspace(start,end,int(n)) - azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) - self.buffer_ini_azi = numpy.hstack((tmp_z,azi_zeros)) - self.ini = self.ini+1 - - if mode==1: - #print("################") - #print("################") - #print("mode",self.ini) - #print("self.ini",self.ini) - if self.ini==0: - res = 1 - step = (360/(res*tmp_v.shape[0])) - val = numpy.mean(tmp_v[:,0]) - self.len_azi = len(tmp_z) - self.buf_tmp = tmp_v - ones = numpy.ones([(360-tmp_v.shape[0]),tmp_v.shape[1]])*val - self.buffer_ini = numpy.vstack((tmp_v,ones)) - - n = ((360/res)-len(tmp_z)) - start = tmp_z[-1]+res - end = tmp_z[0]-res - if start>end: - end =end+360 - azi_zeros = numpy.linspace(start,end,int(n)) - azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) - self.buf_azi = tmp_z - self.buffer_ini_azi = numpy.hstack((tmp_z,azi_zeros)) - self.ini = self.ini+1 - elif 031: - start= tmp_z[0] - end =tmp_z[-1] - print("start","end",start,end) - if self.ini==32: - tmp_v=tmp_v+20 - if self.ini==33: - tmp_v=tmp_v+10 - if self.ini==34: - tmp_v=tmp_v+20 - if self.ini==35: - tmp_v=tmp_v+20 - ''' - self.buf_tmp= numpy.vstack((self.buf_tmp,tmp_v)) - print("ERROR_INMINENTE",self.buf_tmp.shape) - if self.buf_tmp.shape[0]==360: - print("entre aqui en 360 grados") - self.buffer_ini=self.buf_tmp - else: - # nuevo######### - self.buffer_ini[0:self.buf_tmp.shape[0],:]=self.buf_tmp - ################ - #val=30.0 - #ones = numpy.ones([(360-self.buf_tmp.shape[0]),self.buf_tmp.shape[1]])*val - #self.buffer_ini = numpy.vstack((self.buf_tmp,ones)) - - self.buf_azi = numpy.hstack((self.buf_azi,tmp_z)) - n = ((360/res)-len(self.buf_azi)) - print("n----->",n) - if n==0: - self.buffer_ini_azi = self.buf_azi - else: - start = self.buf_azi[-1]+res - end = self.buf_azi[0]-res - print("start",start) - print("end",end) - if start>end: - end =end+360 - azi_zeros = numpy.linspace(start,end,int(n)) - azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) - print("self.buf_azi",self.buf_azi[0]) - print("tmp_Z 0 ",tmp_z[0]) - print("tmp_Z -1",tmp_z[-1]) - if tmp_z[0]end: - ### end =end+360 - ###azi_zeros = numpy.linspace(start,end,int(n)) - ###azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) - print("azi_zeros",azi_zeros) - - ######self.buffer_ini_azi = numpy.hstack((self.buf_azi,azi_zeros)) - #self.buffer_ini[0:tmv.shape[0],:]=tmp_v - ##self.indicador=0 - - # self.indicador = True - #if self.indicador==True: - # azi_zeros = numpy.ones(360-len(self.buf_azi))*(tmp_z[-1]+res) - - #self.buf_azi = tmp_z - self.buffer_ini_azi = numpy.hstack((self.buf_azi,azi_zeros)) - - if self.ini==step-1: - start= tmp_z[0] - end = tmp_z[-1] - #print("start","end",start,end) - ###print(self.buffer_ini_azi[:80]) - self.ini = self.ini+1 + print("Time---->",self.data.times[-1],thisDatetime) + #print("alturas", len(self.y)) + self.res_weather, self.res_azi = self.const_ploteo(data_weather=data['weather'],data_azi=data['azi'],step=step,res=res) + #numpy.set_printoptions(suppress=True) + #print("resultado",self.res_azi) + ########################################################## + ################# PLOTEO ################### + ########################################################## - else: - step = (360/(res*tmp_v.shape[0])) - # aqui estaba realizando el debug de simulacion - # tmp_v=tmp_v +5 en cada step sumaba 5 - # y el mismo valor despues de la primera vuelta - #tmp_v=tmp_v+5+(self.ini-step)*1### aqui yo habia sumado 5 por las puras - - start= tmp_z[0] - end = tmp_z[-1] - #print("start","end",start,end) - ###print(self.buffer_ini_azi[:120]) - - if step>=2: - if self.flag=tmp_z[-1])[0][0]) - print("tmp_r",tmp_r) - index_f=(self.flag+1)*len(tmp_z)+tmp_r - - if len(tmp_z[index_i:])>len(self.buf_azi[len(tmp_z)*(self.flag+1):index_f]): - final = len(self.buf_azi[len(tmp_z)*(self.flag+1):index_f]) - else: - final= len(tmp_z[index_i:]) - self.buf_azi[len(tmp_z)*(self.flag+1):index_f]=tmp_z[index_i:index_i+final] - self.buf_tmp[len(tmp_z)*(self.flag+1):index_f,:]=tmp_v[index_i:index_i+final,:] - if limit_i=tmp_z[-1])[0][0]) - n_p =index_f-len(tmp_z)*(self.flag+1) - if n_p>0: - self.buf_azi[len(tmp_z)*(self.flag+1):index_f]=tmp_z[-1]*numpy.ones(n_p) - self.buf_tmp[len(tmp_z)*(self.flag+1):index_f,:]=tmp_v[-1,:]*numpy.ones([n_p,tmp_v.shape[1]]) - - ''' - if self.buf_azi[len(tmp_z)]=tmp_z[-1])[0][0]) - #print("index",index_i,index_f) - if len(tmp_z[index_i:])>len(self.buf_azi[len(tmp_z):index_f]): - final = len(self.buf_azi[len(tmp_z):index_f]) - else: - final = len(tmp_z[index_i:]) - self.buf_azi[len(tmp_z):index_f]=tmp_z[index_i:index_i+final] - self.buf_tmp[len(tmp_z):index_f,:]=tmp_v[index_i:index_i+final,:] - ''' - self.buf_tmp[len(tmp_z)*(self.flag):len(tmp_z)*(self.flag+1),:]=tmp_v - self.buf_azi[len(tmp_z)*(self.flag):len(tmp_z)*(self.flag+1)] = tmp_z - self.buffer_ini=self.buf_tmp - self.buffer_ini_azi = self.buf_azi - ##print("--------salida------------") - start= tmp_z[0] - end = tmp_z[-1] - ##print("start","end",start,end) - ##print(self.buffer_ini_azi[:120]) - self.ini= self.ini+1 - self.flag = self.flag +1 - if self.flag==step: - self.flag=0 - numpy.set_printoptions(suppress=True) - print("buffer_ini_azi") - print(self.buffer_ini_azi) for i,ax in enumerate(self.axes): if ax.firsttime: plt.clf() - cgax, pm = wrl.vis.plot_ppi(self.buffer_ini,r=r,az=self.buffer_ini_azi,fig=self.figures[0], proj='cg', vmin=1, vmax=60) + 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) else: plt.clf() - cgax, pm = wrl.vis.plot_ppi(self.buffer_ini,r=r,az=self.buffer_ini_azi,fig=self.figures[0], proj='cg', vmin=1, vmax=60) + 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) caax = cgax.parasites[0] paax = cgax.parasites[1] cbar = plt.gcf().colorbar(pm, pad=0.075) caax.set_xlabel('x_range [km]') caax.set_ylabel('y_range [km]') plt.text(1.0, 1.05, 'azimuth '+str(thisDatetime)+"step"+str(self.ini), transform=caax.transAxes, va='bottom',ha='right') - #import time - #time.sleep(0.5) + + self.ini= self.ini+1 diff --git a/schainpy/model/graphics/jroplot_parameters_original.py b/schainpy/model/graphics/jroplot_parameters_original.py new file mode 100644 index 0000000..1e84424 --- /dev/null +++ b/schainpy/model/graphics/jroplot_parameters_original.py @@ -0,0 +1,628 @@ +import os +import datetime +import numpy + +from schainpy.model.graphics.jroplot_base import Plot, plt +from schainpy.model.graphics.jroplot_spectra import SpectraPlot, RTIPlot, CoherencePlot, SpectraCutPlot +from schainpy.utils import log +# libreria wradlib +import wradlib as wrl + +EARTH_RADIUS = 6.3710e3 + + +def ll2xy(lat1, lon1, lat2, lon2): + + p = 0.017453292519943295 + a = 0.5 - numpy.cos((lat2 - lat1) * p)/2 + numpy.cos(lat1 * p) * \ + numpy.cos(lat2 * p) * (1 - numpy.cos((lon2 - lon1) * p)) / 2 + r = 12742 * numpy.arcsin(numpy.sqrt(a)) + theta = numpy.arctan2(numpy.sin((lon2-lon1)*p)*numpy.cos(lat2*p), numpy.cos(lat1*p) + * numpy.sin(lat2*p)-numpy.sin(lat1*p)*numpy.cos(lat2*p)*numpy.cos((lon2-lon1)*p)) + theta = -theta + numpy.pi/2 + return r*numpy.cos(theta), r*numpy.sin(theta) + + +def km2deg(km): + ''' + Convert distance in km to degrees + ''' + + return numpy.rad2deg(km/EARTH_RADIUS) + + + +class SpectralMomentsPlot(SpectraPlot): + ''' + Plot for Spectral Moments + ''' + CODE = 'spc_moments' + # colormap = 'jet' + # plot_type = 'pcolor' + +class DobleGaussianPlot(SpectraPlot): + ''' + Plot for Double Gaussian Plot + ''' + CODE = 'gaussian_fit' + # colormap = 'jet' + # plot_type = 'pcolor' + +class DoubleGaussianSpectraCutPlot(SpectraCutPlot): + ''' + Plot SpectraCut with Double Gaussian Fit + ''' + CODE = 'cut_gaussian_fit' + +class SnrPlot(RTIPlot): + ''' + Plot for SNR Data + ''' + + CODE = 'snr' + colormap = 'jet' + + def update(self, dataOut): + + data = { + 'snr': 10*numpy.log10(dataOut.data_snr) + } + + return data, {} + +class DopplerPlot(RTIPlot): + ''' + Plot for DOPPLER Data (1st moment) + ''' + + CODE = 'dop' + colormap = 'jet' + + def update(self, dataOut): + + data = { + 'dop': 10*numpy.log10(dataOut.data_dop) + } + + return data, {} + +class PowerPlot(RTIPlot): + ''' + Plot for Power Data (0 moment) + ''' + + CODE = 'pow' + colormap = 'jet' + + def update(self, dataOut): + + data = { + 'pow': 10*numpy.log10(dataOut.data_pow/dataOut.normFactor) + } + + return data, {} + +class SpectralWidthPlot(RTIPlot): + ''' + Plot for Spectral Width Data (2nd moment) + ''' + + CODE = 'width' + colormap = 'jet' + + def update(self, dataOut): + + data = { + 'width': dataOut.data_width + } + + return data, {} + +class SkyMapPlot(Plot): + ''' + Plot for meteors detection data + ''' + + CODE = 'param' + + def setup(self): + + self.ncols = 1 + self.nrows = 1 + self.width = 7.2 + self.height = 7.2 + self.nplots = 1 + self.xlabel = 'Zonal Zenith Angle (deg)' + self.ylabel = 'Meridional Zenith Angle (deg)' + self.polar = True + self.ymin = -180 + self.ymax = 180 + self.colorbar = False + + def plot(self): + + arrayParameters = numpy.concatenate(self.data['param']) + error = arrayParameters[:, -1] + indValid = numpy.where(error == 0)[0] + finalMeteor = arrayParameters[indValid, :] + finalAzimuth = finalMeteor[:, 3] + finalZenith = finalMeteor[:, 4] + + x = finalAzimuth * numpy.pi / 180 + y = finalZenith + + ax = self.axes[0] + + if ax.firsttime: + ax.plot = ax.plot(x, y, 'bo', markersize=5)[0] + else: + ax.plot.set_data(x, y) + + dt1 = self.getDateTime(self.data.min_time).strftime('%y/%m/%d %H:%M:%S') + dt2 = self.getDateTime(self.data.max_time).strftime('%y/%m/%d %H:%M:%S') + title = 'Meteor Detection Sky Map\n %s - %s \n Number of events: %5.0f\n' % (dt1, + dt2, + len(x)) + self.titles[0] = title + + +class GenericRTIPlot(Plot): + ''' + Plot for data_xxxx object + ''' + + CODE = 'param' + colormap = 'viridis' + plot_type = 'pcolorbuffer' + + def setup(self): + self.xaxis = 'time' + self.ncols = 1 + self.nrows = self.data.shape('param')[0] + self.nplots = self.nrows + self.plots_adjust.update({'hspace':0.8, 'left': 0.1, 'bottom': 0.08, 'right':0.95, 'top': 0.95}) + + if not self.xlabel: + self.xlabel = 'Time' + + self.ylabel = 'Range [km]' + if not self.titles: + self.titles = ['Param {}'.format(x) for x in range(self.nrows)] + + def update(self, dataOut): + + data = { + 'param' : numpy.concatenate([getattr(dataOut, attr) for attr in self.attr_data], axis=0) + } + + meta = {} + + return data, meta + + def plot(self): + # self.data.normalize_heights() + self.x = self.data.times + self.y = self.data.yrange + self.z = self.data['param'] + + self.z = 10*numpy.log10(self.z) + + self.z = numpy.ma.masked_invalid(self.z) + + if self.decimation is None: + x, y, z = self.fill_gaps(self.x, self.y, self.z) + else: + x, y, z = self.fill_gaps(*self.decimate()) + + for n, ax in enumerate(self.axes): + + self.zmax = self.zmax if self.zmax is not None else numpy.max( + self.z[n]) + self.zmin = self.zmin if self.zmin is not None else numpy.min( + self.z[n]) + + if ax.firsttime: + if self.zlimits is not None: + self.zmin, self.zmax = self.zlimits[n] + + ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n], + vmin=self.zmin, + vmax=self.zmax, + cmap=self.cmaps[n] + ) + else: + if self.zlimits is not None: + self.zmin, self.zmax = self.zlimits[n] + ax.collections.remove(ax.collections[0]) + ax.plt = ax.pcolormesh(x, y, z[n].T * self.factors[n], + vmin=self.zmin, + vmax=self.zmax, + cmap=self.cmaps[n] + ) + + +class PolarMapPlot(Plot): + ''' + Plot for weather radar + ''' + + CODE = 'param' + colormap = 'seismic' + + def setup(self): + self.ncols = 1 + self.nrows = 1 + self.width = 9 + self.height = 8 + self.mode = self.data.meta['mode'] + if self.channels is not None: + self.nplots = len(self.channels) + self.nrows = len(self.channels) + else: + self.nplots = self.data.shape(self.CODE)[0] + self.nrows = self.nplots + self.channels = list(range(self.nplots)) + if self.mode == 'E': + self.xlabel = 'Longitude' + self.ylabel = 'Latitude' + else: + self.xlabel = 'Range (km)' + self.ylabel = 'Height (km)' + self.bgcolor = 'white' + self.cb_labels = self.data.meta['units'] + self.lat = self.data.meta['latitude'] + self.lon = self.data.meta['longitude'] + self.xmin, self.xmax = float( + km2deg(self.xmin) + self.lon), float(km2deg(self.xmax) + self.lon) + self.ymin, self.ymax = float( + km2deg(self.ymin) + self.lat), float(km2deg(self.ymax) + self.lat) + # self.polar = True + + def plot(self): + + for n, ax in enumerate(self.axes): + data = self.data['param'][self.channels[n]] + + zeniths = numpy.linspace( + 0, self.data.meta['max_range'], data.shape[1]) + if self.mode == 'E': + azimuths = -numpy.radians(self.data.yrange)+numpy.pi/2 + r, theta = numpy.meshgrid(zeniths, azimuths) + x, y = r*numpy.cos(theta)*numpy.cos(numpy.radians(self.data.meta['elevation'])), r*numpy.sin( + theta)*numpy.cos(numpy.radians(self.data.meta['elevation'])) + x = km2deg(x) + self.lon + y = km2deg(y) + self.lat + else: + azimuths = numpy.radians(self.data.yrange) + r, theta = numpy.meshgrid(zeniths, azimuths) + x, y = r*numpy.cos(theta), r*numpy.sin(theta) + self.y = zeniths + + if ax.firsttime: + if self.zlimits is not None: + self.zmin, self.zmax = self.zlimits[n] + ax.plt = ax.pcolormesh( # r, theta, numpy.ma.array(data, mask=numpy.isnan(data)), + x, y, numpy.ma.array(data, mask=numpy.isnan(data)), + vmin=self.zmin, + vmax=self.zmax, + cmap=self.cmaps[n]) + else: + if self.zlimits is not None: + self.zmin, self.zmax = self.zlimits[n] + ax.collections.remove(ax.collections[0]) + ax.plt = ax.pcolormesh( # r, theta, numpy.ma.array(data, mask=numpy.isnan(data)), + x, y, numpy.ma.array(data, mask=numpy.isnan(data)), + vmin=self.zmin, + vmax=self.zmax, + cmap=self.cmaps[n]) + + if self.mode == 'A': + continue + + # plot district names + f = open('/data/workspace/schain_scripts/distrito.csv') + for line in f: + label, lon, lat = [s.strip() for s in line.split(',') if s] + lat = float(lat) + lon = float(lon) + # ax.plot(lon, lat, '.b', ms=2) + ax.text(lon, lat, label.decode('utf8'), ha='center', + va='bottom', size='8', color='black') + + # plot limites + limites = [] + tmp = [] + for line in open('/data/workspace/schain_scripts/lima.csv'): + if '#' in line: + if tmp: + limites.append(tmp) + tmp = [] + continue + values = line.strip().split(',') + tmp.append((float(values[0]), float(values[1]))) + for points in limites: + ax.add_patch( + Polygon(points, ec='k', fc='none', ls='--', lw=0.5)) + + # plot Cuencas + for cuenca in ('rimac', 'lurin', 'mala', 'chillon', 'chilca', 'chancay-huaral'): + f = open('/data/workspace/schain_scripts/{}.csv'.format(cuenca)) + values = [line.strip().split(',') for line in f] + points = [(float(s[0]), float(s[1])) for s in values] + ax.add_patch(Polygon(points, ec='b', fc='none')) + + # plot grid + for r in (15, 30, 45, 60): + ax.add_artist(plt.Circle((self.lon, self.lat), + km2deg(r), color='0.6', fill=False, lw=0.2)) + ax.text( + self.lon + (km2deg(r))*numpy.cos(60*numpy.pi/180), + self.lat + (km2deg(r))*numpy.sin(60*numpy.pi/180), + '{}km'.format(r), + ha='center', va='bottom', size='8', color='0.6', weight='heavy') + + if self.mode == 'E': + title = 'El={}$^\circ$'.format(self.data.meta['elevation']) + label = 'E{:02d}'.format(int(self.data.meta['elevation'])) + else: + title = 'Az={}$^\circ$'.format(self.data.meta['azimuth']) + label = 'A{:02d}'.format(int(self.data.meta['azimuth'])) + + self.save_labels = ['{}-{}'.format(lbl, label) for lbl in self.labels] + self.titles = ['{} {}'.format( + self.data.parameters[x], title) for x in self.channels] + +class WeatherPlot(Plot): + CODE = 'weather' + plot_name = 'weather' + plot_type = 'ppistyle' + buffering = False + + def setup(self): + self.ncols = 1 + self.nrows = 1 + self.nplots= 1 + self.ylabel= 'Range [Km]' + self.titles= ['Weather'] + self.colorbar=False + self.width =8 + self.height =8 + self.ini =0 + self.len_azi =0 + self.buffer_ini = None + self.buffer_azi = None + self.plots_adjust.update({'wspace': 0.4, 'hspace':0.4, 'left': 0.1, 'right': 0.9, 'bottom': 0.08}) + self.flag =0 + self.indicador= 0 + + def update(self, dataOut): + + data = {} + meta = {} + data['weather'] = 10*numpy.log10(dataOut.data_360[0]/(250**2)) + data['azi'] = dataOut.data_azi + + return data, meta + + def plot(self): + thisDatetime = datetime.datetime.utcfromtimestamp(self.data.times[-1]) + print("--------------------------------------",self.ini,"-----------------------------------") + print("time",self.data.times[-1]) + data = self.data[-1] + #print("debug_0", data) + tmp_h = (data['weather'].shape[1])/10.0 + #print("debug_1",tmp_h) + stoprange = float(tmp_h*1.5)#stoprange = float(33*1.5) por ahora 400 + rangestep = float(0.15) + r = numpy.arange(0, stoprange, rangestep) + self.y = 2*r + print("---------------") + tmp_v = data['weather'] + #print("tmp_v",tmp_v.shape) + tmp_z = data['azi'] + print("tmp_z-------------->",tmp_z) + ##if self.ini==0: + ## tmp_z= [0,1,2,3,4,5,6,7,8,9] + + #print("tmp_z",tmp_z.shape) + res = 1 + step = (360/(res*tmp_v.shape[0])) + #print("step",step) + mode = 1 + if mode==0: + #print("self.ini",self.ini) + val = numpy.mean(tmp_v[:,0]) + self.len_azi = len(tmp_z) + ones = numpy.ones([(360-tmp_v.shape[0]),tmp_v.shape[1]])*val + self.buffer_ini = numpy.vstack((tmp_v,ones)) + + n = ((360/res)-len(tmp_z)) + start = tmp_z[-1]+res + end = tmp_z[0]-res + if start>end: + end = end+360 + azi_zeros = numpy.linspace(start,end,int(n)) + azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) + self.buffer_ini_azi = numpy.hstack((tmp_z,azi_zeros)) + self.ini = self.ini+1 + + if mode==1: + #print("################") + #print("################") + #print("mode",self.ini) + #print("self.ini",self.ini) + if self.ini==0: + res = 1 + step = (360/(res*tmp_v.shape[0])) + val = numpy.mean(tmp_v[:,0]) + self.len_azi = len(tmp_z) + self.buf_tmp = tmp_v + ones = numpy.ones([(360-tmp_v.shape[0]),tmp_v.shape[1]])*val + self.buffer_ini = numpy.vstack((tmp_v,ones)) + + n = ((360/res)-len(tmp_z)) + start = tmp_z[-1]+res + end = tmp_z[0]-res + if start>end: + end =end+360 + azi_zeros = numpy.linspace(start,end,int(n)) + azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) + self.buf_azi = tmp_z + self.buffer_ini_azi = numpy.hstack((tmp_z,azi_zeros)) + self.ini = self.ini+1 + elif 031: + start= tmp_z[0] + end =tmp_z[-1] + print("start","end",start,end) + if self.ini==32: + tmp_v=tmp_v+20 + if self.ini==33: + tmp_v=tmp_v+10 + if self.ini==34: + tmp_v=tmp_v+20 + if self.ini==35: + tmp_v=tmp_v+20 + ''' + self.buf_tmp= numpy.vstack((self.buf_tmp,tmp_v)) + print("ERROR_INMINENTE",self.buf_tmp.shape) + if self.buf_tmp.shape[0]==360: + print("entre aqui en 360 grados") + self.buffer_ini=self.buf_tmp + else: + # nuevo######### + self.buffer_ini[0:self.buf_tmp.shape[0],:]=self.buf_tmp + ################ + #val=30.0 + #ones = numpy.ones([(360-self.buf_tmp.shape[0]),self.buf_tmp.shape[1]])*val + #self.buffer_ini = numpy.vstack((self.buf_tmp,ones)) + + self.buf_azi = numpy.hstack((self.buf_azi,tmp_z)) + n = ((360/res)-len(self.buf_azi)) + print("n----->",n) + if n==0: + self.buffer_ini_azi = self.buf_azi + else: + start = self.buf_azi[-1]+res + end = self.buf_azi[0]-res + print("start",start) + print("end",end) + if start>end: + end =end+360 + azi_zeros = numpy.linspace(start,end,int(n)) + azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) + print("self.buf_azi",self.buf_azi[0]) + print("tmp_Z 0 ",tmp_z[0]) + print("tmp_Z -1",tmp_z[-1]) + if tmp_z[0]end: + ### end =end+360 + ###azi_zeros = numpy.linspace(start,end,int(n)) + ###azi_zeros = numpy.where(azi_zeros>360,azi_zeros-360,azi_zeros) + #print("azi_zeros",azi_zeros) + + ######self.buffer_ini_azi = numpy.hstack((self.buf_azi,azi_zeros)) + #self.buffer_ini[0:tmv.shape[0],:]=tmp_v + ##self.indicador=0 + + # self.indicador = True + #if self.indicador==True: + # azi_zeros = numpy.ones(360-len(self.buf_azi))*(tmp_z[-1]+res) + + #self.buf_azi = tmp_z + self.buffer_ini_azi = numpy.hstack((self.buf_azi,azi_zeros)) + + if self.ini==step-1: + start= tmp_z[0] + end = tmp_z[-1] + #print("start","end",start,end) + ###print(self.buffer_ini_azi[:80]) + self.ini = self.ini+1 + + else: + step = (360/(res*tmp_v.shape[0])) + # aqui estaba realizando el debug de simulacion + # tmp_v=tmp_v +5 en cada step sumaba 5 + # y el mismo valor despues de la primera vuelta + #tmp_v=tmp_v+5+(self.ini-step)*1### aqui yo habia sumado 5 por las puras + + start= tmp_z[0] + end = tmp_z[-1] + #print("start","end",start,end) + ###print(self.buffer_ini_azi[:120]) + + if step>=2: + if self.flag=tmp_z[-1])[0][0]) + print("tmp_r",tmp_r) + index_f=(self.flag+1)*len(tmp_z)+tmp_r + + if len(tmp_z[index_i:])>len(self.buf_azi[len(tmp_z)*(self.flag+1):index_f]): + final = len(self.buf_azi[len(tmp_z)*(self.flag+1):index_f]) + else: + final= len(tmp_z[index_i:]) + self.buf_azi[len(tmp_z)*(self.flag+1):index_f]=tmp_z[index_i:index_i+final] + self.buf_tmp[len(tmp_z)*(self.flag+1):index_f,:]=tmp_v[index_i:index_i+final,:] + if limit_i=tmp_z[-1])[0][0]) + n_p =index_f-len(tmp_z)*(self.flag+1) + if n_p>0: + self.buf_azi[len(tmp_z)*(self.flag+1):index_f]=tmp_z[-1]*numpy.ones(n_p) + self.buf_tmp[len(tmp_z)*(self.flag+1):index_f,:]=tmp_v[-1,:]*numpy.ones([n_p,tmp_v.shape[1]]) + + ''' + if self.buf_azi[len(tmp_z)]=tmp_z[-1])[0][0]) + #print("index",index_i,index_f) + if len(tmp_z[index_i:])>len(self.buf_azi[len(tmp_z):index_f]): + final = len(self.buf_azi[len(tmp_z):index_f]) + else: + final = len(tmp_z[index_i:]) + self.buf_azi[len(tmp_z):index_f]=tmp_z[index_i:index_i+final] + self.buf_tmp[len(tmp_z):index_f,:]=tmp_v[index_i:index_i+final,:] + ''' + self.buf_tmp[len(tmp_z)*(self.flag):len(tmp_z)*(self.flag+1),:]=tmp_v + self.buf_azi[len(tmp_z)*(self.flag):len(tmp_z)*(self.flag+1)] = tmp_z + self.buffer_ini=self.buf_tmp + self.buffer_ini_azi = self.buf_azi + ##print("--------salida------------") + start= tmp_z[0] + end = tmp_z[-1] + ##print("start","end",start,end) + ##print(self.buffer_ini_azi[:120]) + self.ini= self.ini+1 + self.flag = self.flag +1 + if self.flag==step: + self.flag=0 + numpy.set_printoptions(suppress=True) + print("buffer_ini_azi") + print(self.buffer_ini_azi[:20]) + print(self.buffer_ini_azi[-40:]) + for i,ax in enumerate(self.axes): + if ax.firsttime: + plt.clf() + cgax, pm = wrl.vis.plot_ppi(self.buffer_ini,r=r,az=self.buffer_ini_azi,fig=self.figures[0], proj='cg', vmin=1, vmax=60) + else: + plt.clf() + cgax, pm = wrl.vis.plot_ppi(self.buffer_ini,r=r,az=self.buffer_ini_azi,fig=self.figures[0], proj='cg', vmin=1, vmax=60) + caax = cgax.parasites[0] + paax = cgax.parasites[1] + cbar = plt.gcf().colorbar(pm, pad=0.075) + caax.set_xlabel('x_range [km]') + caax.set_ylabel('y_range [km]') + plt.text(1.0, 1.05, 'azimuth '+str(thisDatetime)+"step"+str(self.ini), transform=caax.transAxes, va='bottom',ha='right') + #import time + #time.sleep(0.5) diff --git a/schainpy/model/proc/jroproc_base.py b/schainpy/model/proc/jroproc_base.py index b359d8a..97b1906 100644 --- a/schainpy/model/proc/jroproc_base.py +++ b/schainpy/model/proc/jroproc_base.py @@ -27,11 +27,11 @@ class ProcessingUnit(object): self.dataOut = None self.isConfig = False self.operations = [] - + def setInput(self, unit): self.dataIn = unit.dataOut - + def getAllowedArgs(self): if hasattr(self, '__attrs__'): return self.__attrs__ @@ -41,7 +41,7 @@ class ProcessingUnit(object): def addOperation(self, conf, operation): ''' ''' - + self.operations.append((operation, conf.type, conf.getKwargs())) def getOperationObj(self, objId): @@ -64,7 +64,7 @@ class ProcessingUnit(object): self.dataOut.error = self.dataIn.error self.dataOut.flagNoData = True except: - err = traceback.format_exc() + err = traceback.format_exc() if 'SchainWarning' in err: log.warning(err.split('SchainWarning:')[-1].split('\n')[0].strip(), self.name) elif 'SchainError' in err: @@ -72,14 +72,17 @@ class ProcessingUnit(object): else: log.error(err, self.name) self.dataOut.error = True - + ##### correcion de la declaracion Out for op, optype, opkwargs in self.operations: + aux = self.dataOut.copy() if optype == 'other' and not self.dataOut.flagNoData: self.dataOut = op.run(self.dataOut, **opkwargs) elif optype == 'external' and not self.dataOut.flagNoData: - op.queue.put(self.dataOut) - elif optype == 'external' and self.dataOut.error: - op.queue.put(self.dataOut) + #op.queue.put(self.dataOut) + op.queue.put(aux) + elif optype == 'external' and self.dataOut.error: + #op.queue.put(self.dataOut) + op.queue.put(aux) return 'Error' if self.dataOut.error else self.dataOut.isReady() @@ -100,7 +103,7 @@ class Operation(object): ''' ''' - + proc_type = 'operation' def __init__(self): @@ -149,12 +152,12 @@ class Operation(object): return - + def MPDecorator(BaseClass): """ Multiprocessing class decorator - This function add multiprocessing features to a BaseClass. + This function add multiprocessing features to a BaseClass. """ class MPClass(BaseClass, Process): @@ -169,17 +172,17 @@ def MPDecorator(BaseClass): self.op_type = 'external' self.name = BaseClass.__name__ self.__doc__ = BaseClass.__doc__ - + if 'plot' in self.name.lower() and not self.name.endswith('_'): self.name = '{}{}'.format(self.CODE.upper(), 'Plot') - + self.start_time = time.time() self.err_queue = args[3] self.queue = Queue(maxsize=1) self.myrun = BaseClass.run def run(self): - + while True: dataOut = self.queue.get() @@ -188,7 +191,7 @@ def MPDecorator(BaseClass): try: BaseClass.run(self, dataOut, **self.kwargs) except: - err = traceback.format_exc() + err = traceback.format_exc() log.error(err, self.name) else: break diff --git a/schainpy/model/proc/jroproc_parameters.py b/schainpy/model/proc/jroproc_parameters.py index 55c72b0..c755130 100755 --- a/schainpy/model/proc/jroproc_parameters.py +++ b/schainpy/model/proc/jroproc_parameters.py @@ -4079,8 +4079,16 @@ class PedestalInformation(Operation): return c-1,utc_ped_list[c-1],utc_ped_list[c] - - def setup_offline(self,list_pedestal,list_adq): + def verificarNROFILE(self,dataOut,utc_ped,f_a_p,n_Muestras_p): + var =int(f_a_p/n_Muestras_p) + flag=0 + for i in range(var): + if dataOut.utctime+i==utc_ped: + flag==1 + break + return flag + + def setup_offline(self,dataOut,list_pedestal,list_adq): print("SETUP OFFLINE") print(self.path_ped) print(self.path_adq) @@ -4095,7 +4103,11 @@ class PedestalInformation(Operation): print("dios existe donde esta") #print("utc_ped_list",utc_ped_list) print("utc_adq",utc_adq) - nro_file,utc_ped,utc_ped_1ss = self.getNROFile(utc_adq=utc_adq, utc_ped_list= utc_ped_list) + # utc_adq_dataOut + utc_adq_dataOut =dataOut.utctime + print("Offline-utc_adq_dataout",utc_adq_dataOut) + + nro_file,utc_ped,utc_ped_1 = self.getNROFile(utc_adq=utc_adq, utc_ped_list= utc_ped_list) print("nro_file",nro_file,"utc_ped",utc_ped) print("nro_file",i) @@ -4135,82 +4147,6 @@ class PedestalInformation(Operation): self.nro_file = nro_file self.nro_key_p = nro_key_p - - ''' - print("############################") - utc_adq = dataOut.utctime - print("ONLINE",dataOut.utctime) - print("utc_adq" , utc_adq) - utc_pedestal= self.gettimeutcfromDirFilename(path=self.path_ped,file=self.list_pedestal[0]) - print("utc_pedestal", utc_pedestal) - flag_i = 0 - flag = 0 - ready = 0 - if len(self.list_pedestal)!=0: - enable_p=1 - if (enable_p!=0): - while(flag_i==0): - if utc_adq>utc_pedestal: - nro_file = int((utc_adq - utc_pedestal)/(self.t_Interval_p*self.n_Muestras_p)) - print("nro_file--------------------",nro_file) - print(len(self.list_pedestal)) - if nro_file> len(self.list_pedestal): - nro_file = len(self.list_pedestal)-1 - ff_pedestal = self.list_pedestal[nro_file] - print(ff_pedestal) - utc_pedestal = self.gettimeutcfromDirFilename(path=self.path_ped,file=ff_pedestal) - while(flag==0): - print("adq",utc_adq) - print("ped",utc_pedestal) - print("nro_file",nro_file) - if utc_adq >utc_pedestal: - print("DENTRO DEL IF-SETUP") - ff_pedestal = self.list_pedestal[nro_file] - if 0<(utc_adq - utc_pedestal)<(self.t_Interval_p*self.n_Muestras_p): - nro_file= nro_file - ff_pedestal = self.list_pedestal[nro_file] - ready = 1 - if (utc_adq-utc_pedestal)>(self.t_Interval_p*self.n_Muestras_p): - nro_tmp= int((utc_adq-utc_pedestal)/(self.n_Muestras_p)) - nro_file= nro_file+1*nro_tmp#chsssssssssssssssssssasssddasdas/ equear esta condicion - if nro_tmp==0: - nro_file= nro_file +1 - ff_pedestal = self.list_pedestal[nro_file] - print("",ff_pedestal) - utc_pedestal = self.gettimeutcfromDirFilename(path=self.path_ped,file=ff_pedestal) - else: - print("DENTRO DEL ELSE-SETUP") - nro_tmp= int((utc_pedestal-utc_adq)/(self.n_Muestras_p)) - if utc_pedestal>utc_adq and nro_tmp==0: - nro_tmp= int((utc_pedestal-utc_adq)) - print("nro_tmp",nro_tmp) - if nro_file>nro_tmp: - nro_file = nro_file-1*nro_tmp - else: - nro_file =nro_file -1 - - ff_pedestal = self.list_pedestal[nro_file] - utc_pedestal = self.gettimeutcfromDirFilename(path=self.path_ped,file=ff_pedestal) - - if ready: - angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azimuth") - nro_key_p = int((utc_adq-utc_pedestal)/self.t_Interval_p) - print("nro_file :",nro_file) - print("name_file :",ff_pedestal) - print("utc_pedestal_file :",utc_pedestal) - print("nro_key_p :",nro_key_p) - print("utc_pedestal_init :",utc_pedestal+nro_key_p*self.t_Interval_p) - print("angulo_array :",angulo[nro_key_p]) - flag=1 - flag_i=1 - else: - print("La lista de archivos de pedestal o adq esta vacia") - nro_file=None - nro_key_p=None - self.nro_file = nro_file - self.nro_key_p = nro_key_p - ''' - def setup(self,dataOut,path_ped,path_adq,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online): self.__dataReady = False self.path_ped = path_ped @@ -4235,18 +4171,18 @@ class PedestalInformation(Operation): print("Enable Online") self.setup_online(dataOut) else: - self.setup_offline(list_pedestal=self.list_pedestal,list_adq=self.list_adq) + self.setup_offline(dataOut,list_pedestal=self.list_pedestal,list_adq=self.list_adq) def setNextFileP(self,dataOut): if self.online: data_pedestal = self.setNextFileonline() else: - data_pedestal = self.setNextFileoffline() + data_pedestal = self.setNextFileoffline(dataOut) return data_pedestal - def setNextFileoffline(self): + def setNextFileoffline(self,dataOut): ##tmp=0 for j in range(self.blocksPerfile): ###print("NUMERO DEL BLOQUE---->",j) @@ -4261,6 +4197,13 @@ class PedestalInformation(Operation): self.nro_file = self.nro_file else: self.nro_file = self.nro_file+1 + print("PRUEBA-------------") + utc_ped_setnext=self.gettimeutcfromDirFilename(path=self.path_ped,file=self.list_pedestal[self.nro_file]) + utc_adq_setnext=dataOut.utctime + print("utc_pedestal",utc_ped_setnext) + print("utc_adq",utc_adq_setnext) + + dif = self.blocksPerfile-(self.nro_key_p+self.f_a_p*(self.c_ped-2)) self.c_ped = 1 ##tmp = j @@ -4274,7 +4217,9 @@ class PedestalInformation(Operation): #print("tmp",tmp) try: ff_pedestal = self.list_pedestal[self.nro_file] + print("ff_pedestal",ff_pedestal) except: + print("############# EXCEPCION ######################") return numpy.ones(self.blocksPerfile)*numpy.nan #angulo = self.getDatavaluefromDirFilename(path=self.path_ped,file=ff_pedestal,value="azimuth") @@ -4343,6 +4288,7 @@ class PedestalInformation(Operation): def run(self, dataOut,path_ped,path_adq,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online): if not self.isConfig: + print("######################SETUP#########################################") self.setup( dataOut, path_ped,path_adq,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online) self.isConfig = True @@ -4352,10 +4298,12 @@ class PedestalInformation(Operation): if self.__profIndex==0: angulo_adq = self.setNextFileP(dataOut) dataOut.azimuth = angulo_adq + print("TIEMPO:",dataOut.utctime) ##print("####################################################################") ##print("angulos",dataOut.azimuth,len(dataOut.azimuth)) self.__dataReady = True self.__profIndex += 1 + print("TIEMPO_bucle:",dataOut.utctime) if self.__profIndex== blocksPerfile: self.__profIndex = 0 if self.__dataReady: diff --git a/schainpy/scripts/USRP_ADQ_PP.py b/schainpy/scripts/USRP_ADQ_PP.py index f33442c..3c652f0 100644 --- a/schainpy/scripts/USRP_ADQ_PP.py +++ b/schainpy/scripts/USRP_ADQ_PP.py @@ -25,8 +25,28 @@ controllerObj.setup(id = '191', name='Test_USRP', description=desc) #path = '/media/data/data/vientos/57.2063km/echoes/NCO_Woodman' #path = '/DATA_RM/TEST_INTEGRACION' #path = '/DATA_RM/TEST_ONLINE' -path = '/DATA_RM/TEST_INTEGRACION/ADQ_OFFLINE/' -path_pp = '/DATA_RM/TEST_HDF5' +#path = '/DATA_RM/TEST_INTEGRACION/ADQ_OFFLINE/' +# ULTIMO TEST 22 DE SEPTIEMBRE +path = '/DATA_RM/USRP_22' +#path_pp = '/DATA_RM/TEST_HDF5' +# UTIMO TEST 22 DE SEPTIEMBRE +path_pp = '/DATA_RM/TEST_HDF5_PP_22' +###################################################### +##### OJO TENER EN CUENTA EL n= para el Pulse Pair ### +###################################################### +######## BUSCAMOS EL numero de IPP equivalente 1°##### +######## Sea V la velocidad del Pedestal en °/seg##### +######## 1° sera Recorrido en un tiempo de 1/V ###### +######## IPP del Radar 400 useg --> 60 Km ############ +######## n = 1/(V*IPP) , NUMERO DE IPP ############# +######## n = 1/(V*IPP) ############################# +V=2 +IPP=400*1e-6 +n= 1/(V*IPP) +print("n numero de Perfiles a procesar con Pulse Pair: ", n) + + + figpath = '/home/soporte/Pictures/TEST_INTEGRACION_IMG' #remotefolder = "/home/wmaster/graficos" @@ -76,7 +96,7 @@ procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=rea #opObj11 = procUnitConfObjA.addOperation(name='setRadarFrequency') #opObj11.addParameter(name='frequency', value='70312500') opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other') -opObj11.addParameter(name='n', value='16', format='int')#10 VOY A USAR 250 DADO QUE LA VELOCIDAD ES 10 GRADOS +opObj11.addParameter(name='n', value=int(n), format='int')#10 VOY A USAR 250 DADO QUE LA VELOCIDAD ES 10 GRADOS opObj11.addParameter(name='removeDC', value=1, format='int') # Ploteo TEST ''' diff --git a/schainpy/scripts/USRP_ADQ_SPECM.py b/schainpy/scripts/USRP_ADQ_SPECM.py index d52e29a..01d2a23 100644 --- a/schainpy/scripts/USRP_ADQ_SPECM.py +++ b/schainpy/scripts/USRP_ADQ_SPECM.py @@ -28,11 +28,16 @@ controllerObj.setup(id = '191', name='Test_USRP', description=desc) #path_pp = '/DATA_RM/TEST_HDF5' #figpath = '/home/soporte/Pictures/TEST_INTEGRACION_IMG' -path = '/DATA_RM/TEST_INTEGRACION/ADQ_OFFLINE/' -path_pp = '/DATA_RM/TEST_HDF5_SPEC' - - +###path = '/DATA_RM/TEST_INTEGRACION/ADQ_OFFLINE/' +###path_pp = '/DATA_RM/TEST_HDF5_SPEC' +#path = '/DATA_RM/USRP_22' +path = '/DATA_RM/23/6v' +#path_pp = '/DATA_RM/TEST_HDF5' +# UTIMO TEST 22 DE SEPTIEMBRE +#path_pp = '/DATA_RM/TEST_HDF5_SPEC_22' +#path_pp = '/DATA_RM/TEST_HDF5_SPEC_3v' +path_pp = '/DATA_RM/TEST_HDF5_SPEC_23/6v' #remotefolder = "/home/wmaster/graficos" @@ -73,11 +78,17 @@ opObj11 = readUnitConfObj.addOperation(name='printInfo') ################ OPERACIONES DOMINIO DEL TIEMPO######################## ####################################################################### + +V=6 +IPP=400*1e-6 +n= int(1/(V*IPP)) +print("n numero de Perfiles a procesar con nFFTPoints ", n) + procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId()) procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId()) -procUnitConfObjB.addParameter(name='nFFTPoints', value=250, format='int') -procUnitConfObjB.addParameter(name='nProfiles' , value=250, format='int') +procUnitConfObjB.addParameter(name='nFFTPoints', value=n, format='int') +procUnitConfObjB.addParameter(name='nProfiles' , value=n, format='int') diff --git a/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py b/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py index 6f8cc34..c59f64b 100644 --- a/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py +++ b/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py @@ -10,14 +10,21 @@ from schainpy.controller import Project #path='/DATA_RM/TEST_HDF5/d2021231' #path='/DATA_RM/TEST_HDF5/ADQ_OFFLINE/d2021231' path='/DATA_RM/TEST_HDF5/d2021231' - +#path='/DATA_RM/TEST_14_HDF5/d2021257' +## TEST ULTIMA PRUEBA 22 DE SEPTIEMBRE +path = '/DATA_RM/TEST_HDF5_PP_22/d2021265' path_adq=path #path_ped='/DATA_RM/TEST_PEDESTAL/P2021200' #path_ped='/DATA_RM/TEST_PEDESTAL/P2021214' #path_ped='/DATA_RM/TEST_PEDESTAL/P2021230' #path_ped='/DATA_RM/TEST_PEDESTAL/P20210819' #path_ped='/DATA_RM/TEST_PEDESTAL/P20210819-154315' -path_ped='/DATA_RM/TEST_PEDESTAL/PEDESTAL_OFFLINE/P20210819-161524' +#path_ped='/DATA_RM/TEST_PEDESTAL/P20210914-162434' +#path_ped='/DATA_RM/TEST_PEDESTAL/PEDESTAL_OFFLINE/P20210819-161524' +#pruebas con perdida de datos +#path_ped='/DATA_RM/TEST_PEDESTAL/PEDESTAL_OFFLINE/P20210819-161524_TEST' +## TEST ULTIMA PRUEBA 22 DE SEPTIEMBRE +path_ped='/DATA_RM/TEST_PEDESTAL/P20210922-122731' figpath = '/home/soporte/Pictures' @@ -40,6 +47,10 @@ readUnitConfObj = controllerObj.addReadUnit(datatype='HDFReader', nTries=6)#1 procUnitConfObjA = controllerObj.addProcUnit(datatype='ParametersProc',inputId=readUnitConfObj.getId()) +V=2 +blocksPerfile=100 +print("Velocidad del Pedestal",V) +f_a_p= int(blocksPerfile/V) opObj11 = procUnitConfObjA.addOperation(name='PedestalInformation') opObj11.addParameter(name='path_ped', value=path_ped) @@ -47,7 +58,7 @@ opObj11.addParameter(name='path_adq', value=path_adq) opObj11.addParameter(name='t_Interval_p', value='0.01', format='float') opObj11.addParameter(name='n_Muestras_p', value='100', format='float') opObj11.addParameter(name='blocksPerfile', value='100', format='int') -opObj11.addParameter(name='f_a_p', value='10', format='int') +opObj11.addParameter(name='f_a_p', value=f_a_p, format='int') opObj11.addParameter(name='online', value='0', format='int')# habilitar el enable aqui tambien @@ -56,8 +67,8 @@ opObj11.addParameter(name='n', value='10', format='int') # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180 opObj11= procUnitConfObjA.addOperation(name='WeatherPlot',optype='other') -opObj11.addParameter(name='save', value=figpath) -opObj11.addParameter(name='save_period', value=1) +#opObj11.addParameter(name='save', value=figpath) +#opObj11.addParameter(name='save_period', value=1) controllerObj.start() #online 1 utc_adq 1617490240.48 diff --git a/schainpy/scripts/test_sim00011a2.py b/schainpy/scripts/test_sim00011a2.py index cc83246..e82dc54 100644 --- a/schainpy/scripts/test_sim00011a2.py +++ b/schainpy/scripts/test_sim00011a2.py @@ -19,8 +19,8 @@ dBmin = '1' dBmax = '85' xmin = '0' xmax ='24' -tmmin = 16.2 -tmmax = 16.25 +tmmin = 12.2 +tmmax = 12.40 ymin = '0' ymax = '600' ####################################################################### @@ -32,8 +32,9 @@ ymax = '600' ####################################################################### ####################################################################### - -path='/DATA_RM/TEST_HDF5/d2021231' +#path_pp = '/DATA_RM/TEST_HDF5_PP_22' +path='/DATA_RM/TEST_HDF5_PP_22/d2021265' +#path='/DATA_RM/TEST_HDF5/d2021231' figpath = '/home/soporte/Downloads/IMAGE' desc = "Simulator Test" desc_data = { diff --git a/schainpy/scripts/test_sim00011b.py b/schainpy/scripts/test_sim00011b.py index 27f67ce..2794af6 100644 --- a/schainpy/scripts/test_sim00011b.py +++ b/schainpy/scripts/test_sim00011b.py @@ -18,15 +18,18 @@ dBmin = '1' dBmax = '65' xmin = '0' xmax ='24' -tmmin = 16.2 -tmmax = 16.25 +#tmmin = 16.2 +#tmmax = 16.25 +tmmin =15 +tmmax =15.5 ymin = '0' ymax = '600' ####################################################################### ####################################################################### ####################################################################### -path = '/DATA_RM/TEST_HDF5_SPEC' -figpath = '/home/soporte/Downloads/IMAGE' +#path = '/DATA_RM/TEST_HDF5_SPEC' +path = '/DATA_RM/TEST_HDF5_SPEC_23/6v/' +figpath = '/home/soporte/Downloads/23/6v' desc = "Simulator Test" desc_data = { 'Data': {