From ec0a56a3ee098c04e8a61f1b657ab459f1c73fc8 2021-10-19 21:39:40 From: avaldez Date: 2021-10-19 21:39:40 Subject: [PATCH] LAST UPDATE INTEGRACION --- diff --git a/schainpy/model/graphics/jroplot_parameters.py b/schainpy/model/graphics/jroplot_parameters.py index 5d66ea5..78e4c82 100644 --- a/schainpy/model/graphics/jroplot_parameters.py +++ b/schainpy/model/graphics/jroplot_parameters.py @@ -399,8 +399,9 @@ class WeatherPlot(Plot): data = {} meta = {} - data['weather'] = 10*numpy.log10(dataOut.data_360[0]/(250**2)) - print(data['weather']) + print("aprox",dataOut.data_360[0]) + data['weather'] = 10*numpy.log10(dataOut.data_360[0]/(250.0)) + #print(data['weather']) data['azi'] = dataOut.data_azi print("UPDATE",data['azi']) return data, meta @@ -507,7 +508,7 @@ class WeatherPlot(Plot): 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.res_weather,r=r,az=self.res_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=0, vmax=60) caax = cgax.parasites[0] paax = cgax.parasites[1] cbar = plt.gcf().colorbar(pm, pad=0.075) diff --git a/schainpy/model/proc/jroproc_parameters.py b/schainpy/model/proc/jroproc_parameters.py index c755130..1b98f89 100755 --- a/schainpy/model/proc/jroproc_parameters.py +++ b/schainpy/model/proc/jroproc_parameters.py @@ -198,10 +198,12 @@ class ParametersProc(ProcessingUnit): if self.dataIn.type == "Parameters": self.dataOut.copy(self.dataIn) self.dataOut.flagNoData = False + #print("yo si entre") return True self.__updateObjFromInput() + #print("yo si entre2") self.dataOut.utctimeInit = self.dataIn.utctime self.dataOut.paramInterval = self.dataIn.timeInterval @@ -4088,30 +4090,34 @@ class PedestalInformation(Operation): break return flag - def setup_offline(self,dataOut,list_pedestal,list_adq): + #def setup_offline(self,dataOut,list_pedestal,list_adq): + def setup_offline(self,dataOut,list_pedestal): + print("SETUP OFFLINE") print(self.path_ped) - print(self.path_adq) + #print(self.path_adq) print(len(self.list_pedestal)) - print(len(self.list_adq)) + #print(len(self.list_adq)) utc_ped_list=[] for i in range(len(self.list_pedestal)): + print(i) utc_ped_list.append(self.gettimeutcfromDirFilename(path=self.path_ped,file=self.list_pedestal[i])) #utc_ped_list= utc_ped_list - utc_adq = self.gettimeutcadqfromDirFilename(path=self.path_adq,file=self.list_adq[0]) + ###utc_adq = self.gettimeutcadqfromDirFilename(path=self.path_adq,file=self.list_adq[0]) print("dios existe donde esta") + #print("utc_ped_list",utc_ped_list) - print("utc_adq",utc_adq) + ###print("utc_adq",utc_adq) # 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) + nro_file,utc_ped,utc_ped_1 = self.getNROFile(utc_adq=utc_adq_dataOut, utc_ped_list= utc_ped_list) print("nro_file",nro_file,"utc_ped",utc_ped) print("nro_file",i) - nro_key_p = int((utc_adq-utc_ped)/self.t_Interval_p)-1 # ojito al -1 estimado alex + nro_key_p = int((utc_adq_dataOut-utc_ped)/self.t_Interval_p)-1 # ojito al -1 estimado alex print("nro_key_p",nro_key_p) ff_pedestal = self.list_pedestal[nro_file] @@ -4147,10 +4153,12 @@ class PedestalInformation(Operation): 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): + #def setup(self,dataOut,path_ped,path_adq,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online): + def setup(self,dataOut,path_ped,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online): + print("SETUP PEDESTAL") self.__dataReady = False self.path_ped = path_ped - self.path_adq = path_adq + #self.path_adq = path_adq self.t_Interval_p = t_Interval_p self.n_Muestras_p = n_Muestras_p self.blocksPerfile= blocksPerfile @@ -4161,17 +4169,19 @@ class PedestalInformation(Operation): self.tmp = 0 self.c_ped = 0 print(self.path_ped) - print(self.path_adq) + #print(self.path_adq) self.list_pedestal = self.getfirstFilefromPath(path=self.path_ped,meta="PE",ext=".hdf5") print("LIST NEW", self.list_pedestal[:20]) - self.list_adq = self.getfirstFilefromPath(path=self.path_adq,meta="D",ext=".hdf5") + #self.list_adq = self.getfirstFilefromPath(path=self.path_adq,meta="D",ext=".hdf5") print("*************Longitud list pedestal****************",len(self.list_pedestal)) if self.online: print("Enable Online") self.setup_online(dataOut) else: - self.setup_offline(dataOut,list_pedestal=self.list_pedestal,list_adq=self.list_adq) + #self.setup_offline(dataOut,list_pedestal=self.list_pedestal,list_adq=self.list_adq) + self.setup_offline(dataOut,list_pedestal=self.list_pedestal) + def setNextFileP(self,dataOut): if self.online: @@ -4192,7 +4202,7 @@ class PedestalInformation(Operation): iterador = self.nro_key_p +self.f_a_p*self.c_ped self.c_ped = self.c_ped +1 - ###print("iterador------------->",iterador) + print("iterador------------->",iterador) if iterador < self.n_Muestras_p: self.nro_file = self.nro_file else: @@ -4203,17 +4213,19 @@ class PedestalInformation(Operation): print("utc_pedestal",utc_ped_setnext) print("utc_adq",utc_adq_setnext) + print("self.c_ped",self.c_ped) + #dif = self.blocksPerfile-(self.nro_key_p+self.f_a_p*(self.c_ped-2)) + dif = self.n_Muestras_p-(self.nro_key_p+self.f_a_p*(self.c_ped-2)) - dif = self.blocksPerfile-(self.nro_key_p+self.f_a_p*(self.c_ped-2)) self.c_ped = 1 ##tmp = j ##print("tmp else",tmp) self.nro_key_p= self.f_a_p-dif iterador = self.nro_key_p - ###print("iterador else",iterador) + print("iterador else",iterador) #self.c_ped = self.c_ped +1 - ###print("nro_file",self.nro_file) + print("nro_file",self.nro_file) #print("tmp",tmp) try: ff_pedestal = self.list_pedestal[self.nro_file] @@ -4286,24 +4298,28 @@ class PedestalInformation(Operation): return self.angulo_adq - def run(self, dataOut,path_ped,path_adq,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online): + #def run(self, dataOut,path_ped,path_adq,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online): + def run(self, dataOut,path_ped,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.setup( dataOut, path_ped,path_adq,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online) + self.setup( dataOut, path_ped,t_Interval_p,n_Muestras_p,blocksPerfile,f_a_p,online) self.isConfig = True dataOut.flagNoData = True - #print("profIndex",self.__profIndex) + print("profIndex",self.__profIndex) 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)) + print("angulos",dataOut.azimuth,len(dataOut.azimuth)) self.__dataReady = True self.__profIndex += 1 print("TIEMPO_bucle:",dataOut.utctime) + print("profIndex",self.__profIndex) if self.__profIndex== blocksPerfile: self.__profIndex = 0 if self.__dataReady: @@ -4325,11 +4341,12 @@ class Block360(Operation): __nch = 0 __nHeis = 0 index = 0 + mode = 0 def __init__(self,**kwargs): Operation.__init__(self,**kwargs) - def setup(self, dataOut, n = None): + def setup(self, dataOut, n = None, mode = None): ''' n= Numero de PRF's de entrada ''' @@ -4346,23 +4363,31 @@ class Block360(Operation): if n == None: raise ValueError("n should be specified.") + if mode == None: + raise ValueError("mode should be specified.") + if n != None: if n<1: print("n should be greater than 2") raise ValueError("n should be greater than 2") self.n = n + self.mode = mode + print("self.mode",self.mode) #print("nHeights") self.__buffer = numpy.zeros(( dataOut.nChannels,n, dataOut.nHeights)) self.__buffer2= numpy.zeros(n) - def putData(self,data): + def putData(self,data,mode): ''' Add a profile to he __buffer and increase in one the __profiel Index ''' #print("line 4049",data.dataPP_POW.shape,data.dataPP_POW[:10]) #print("line 4049",data.azimuth.shape,data.azimuth) - self.__buffer[:,self.__profIndex,:]= data.dataPP_POW + if self.mode==0: + self.__buffer[:,self.__profIndex,:]= data.dataPP_POW + if self.mode==1: + self.__buffer[:,self.__profIndex,:]= data.data_pow #print("me casi",self.index,data.azimuth[self.index]) #print(self.__profIndex, self.index , data.azimuth[self.index] ) #print("magic",data.profileIndex) @@ -4400,7 +4425,7 @@ class Block360(Operation): data_360 = None data_p = None #print("dataOu",dataOut.dataPP_POW) - self.putData(data=dataOut) + self.putData(data=dataOut,mode = self.mode) #print("profIndex",self.__profIndex) if self.__profIndex == self.n: data_360,n,data_p = self.pushData(data=dataOut) @@ -4424,10 +4449,10 @@ class Block360(Operation): #print(data_360.shape,avgdatatime,data_p.shape) return data_360,avgdatatime,data_p - def run(self, dataOut,n = None,**kwargs): - + def run(self, dataOut,n = None,mode=None,**kwargs): + print("BLOCK 360 HERE WE GO MOMENTOS") if not self.isConfig: - self.setup(dataOut = dataOut, n = n , **kwargs) + self.setup(dataOut = dataOut, n = n ,mode= mode ,**kwargs) self.index = 0 #print("comova",self.isConfig) self.isConfig = True diff --git a/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py b/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py index c59f64b..835a102 100644 --- a/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py +++ b/schainpy/scripts/WR_PROC_PP_PLOT_OFFLINE.py @@ -13,6 +13,10 @@ 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 = '/DATA_RM/TEST_HDF5_PP_100/d2021285' +path = '/DATA_RM/TEST_HDF5_PP/d2021285' + + path_adq=path #path_ped='/DATA_RM/TEST_PEDESTAL/P2021200' #path_ped='/DATA_RM/TEST_PEDESTAL/P2021214' @@ -24,7 +28,7 @@ path_adq=path #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' +path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745' figpath = '/home/soporte/Pictures' @@ -47,23 +51,25 @@ readUnitConfObj = controllerObj.addReadUnit(datatype='HDFReader', nTries=6)#1 procUnitConfObjA = controllerObj.addProcUnit(datatype='ParametersProc',inputId=readUnitConfObj.getId()) -V=2 -blocksPerfile=100 +V=10 +blocksPerfile=360 print("Velocidad del Pedestal",V) -f_a_p= int(blocksPerfile/V) +tmp_blocksPerfile=100 +f_a_p= int(tmp_blocksPerfile/V) opObj11 = procUnitConfObjA.addOperation(name='PedestalInformation') opObj11.addParameter(name='path_ped', value=path_ped) -opObj11.addParameter(name='path_adq', value=path_adq) +#opObj11.addParameter(name='path_adq', value=path_adq) opObj11.addParameter(name='t_Interval_p', value='0.01', format='float') +opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int') 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=f_a_p, format='int') opObj11.addParameter(name='online', value='0', format='int')# habilitar el enable aqui tambien opObj11 = procUnitConfObjA.addOperation(name='Block360') opObj11.addParameter(name='n', value='10', format='int') +opObj11.addParameter(name='mode', value=0, 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') diff --git a/schainpy/scripts/basic_proc00001.py b/schainpy/scripts/basic_proc00001.py new file mode 100644 index 0000000..e0f478e --- /dev/null +++ b/schainpy/scripts/basic_proc00001.py @@ -0,0 +1,213 @@ +# Ing. AVP +# 06/10/2021 +# ARCHIVO DE LECTURA +import os, sys +import datetime +import time +from schainpy.controller import Project +#### NOTA########################################### +# INPUT : +# VELOCIDAD PARAMETRO : V = 2°/seg +# MODO PULSE PAIR O MOMENTOS: 0 : Pulse Pair ,1 : Momentos +###################################################### +##### PROCESAMIENTO ################################## +##### OJO TENER EN CUENTA EL n= para el Pulse Pair ## +##### O EL n= nFFTPoints ### +###################################################### +######## 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(°/seg)*IPP(Km)) , NUMERO DE IPP ## +######## n = 1/(V*IPP) ############################# +######## VELOCIDAD DEL PEDESTAL ###################### +print("SETUP- RADAR METEOROLOGICO") +V = 10 +mode = 1 +#path = '/DATA_RM/23/6v' +path = '/DATA_RM/TEST_INTEGRACION_2M' +path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745' +figpath_pp = "/home/soporte/Pictures/TEST_PP" +figpath_mom = "/home/soporte/Pictures/TEST_MOM" +plot = 0 +integration = 1 +save = 0 +if save == 1: + if mode==0: + path_save = '/DATA_RM/TEST_HDF5_PP_23/6v' + path_save = '/DATA_RM/TEST_HDF5_PP' + path_save = '/DATA_RM/TEST_HDF5_PP_100' + else: + path_save = '/DATA_RM/TEST_HDF5_SPEC_23_V2/6v' + +print("* PATH data ADQ :", path) +print("* Velocidad Pedestal :",V,"°/seg") +############################ NRO Perfiles PROCESAMIENTO ################### +V=V +IPP=400*1e-6 +n= int(1/(V*IPP)) +print("* n - NRO Perfiles Proc:", n ) +################################## MODE ################################### +print("* Modo de Operacion :",mode) +if mode ==0: + print("* Met. Seleccionado : Pulse Pair") +else: + print("* Met. Momentos : Momentos") + +################################## MODE ################################### +print("* Grabado de datos :",save) +if save ==1: + if mode==0: + ope= "Pulse Pair" + else: + ope= "Momentos" + print("* Path-Save Data -", ope , path_save) + +print("* Integracion de datos :",integration) + +time.sleep(15) +#remotefolder = "/home/wmaster/graficos" +####################################################################### +################# RANGO DE PLOTEO###################################### +dBmin = '1' +dBmax = '85' +xmin = '15' +xmax = '15.25' +ymin = '0' +ymax = '600' +####################################################################### +########################FECHA########################################## +str = datetime.date.today() +today = str.strftime("%Y/%m/%d") +str2 = str - datetime.timedelta(days=1) +yesterday = str2.strftime("%Y/%m/%d") +####################################################################### +########################SIGNAL CHAIN ################################## +####################################################################### +desc = "USRP_test" +filename = "USRP_processing.xml" +controllerObj = Project() +controllerObj.setup(id = '191', name='Test_USRP', description=desc) +####################################################################### +######################## UNIDAD DE LECTURA############################# +####################################################################### +readUnitConfObj = controllerObj.addReadUnit(datatype='DigitalRFReader', + path=path, + startDate="2021/01/01",#today, + endDate="2021/12/30",#today, + startTime='00:00:00', + endTime='23:59:59', + delay=0, + #set=0, + online=0, + walk=1, + ippKm = 60) + +opObj11 = readUnitConfObj.addOperation(name='printInfo') + +procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc', inputId=readUnitConfObj.getId()) + +if mode ==0: + ####################### METODO PULSE PAIR ###################################################################### + opObj11 = procUnitConfObjA.addOperation(name='PulsePair', optype='other') + 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') + ####################### METODO Parametros ###################################################################### + procUnitConfObjB= controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjA.getId()) + if plot==1: + opObj11 = procUnitConfObjB.addOperation(name='GenericRTIPlot',optype='external') + opObj11.addParameter(name='attr_data', value='dataPP_POW') + opObj11.addParameter(name='colormap', value='jet') + opObj11.addParameter(name='xmin', value=xmin) + opObj11.addParameter(name='xmax', value=xmax) + opObj11.addParameter(name='zmin', value=dBmin) + opObj11.addParameter(name='zmax', value=dBmax) + opObj11.addParameter(name='save', value=figpath_pp) + opObj11.addParameter(name='showprofile', value=0) + opObj11.addParameter(name='save_period', value=50) + + ####################### METODO ESCRITURA ####################################################################### + if save==1: + opObj10 = procUnitConfObjB.addOperation(name='HDFWriter') + opObj10.addParameter(name='path',value=path_save) + #opObj10.addParameter(name='mode',value=0) + opObj10.addParameter(name='blocksPerFile',value='100',format='int') + opObj10.addParameter(name='metadataList',value='utctimeInit,timeZone,paramInterval,profileIndex,channelList,heightList,flagDataAsBlock',format='list') + opObj10.addParameter(name='dataList',value='dataPP_POW,dataPP_DOP,utctime',format='list')#,format='list' + if integration==1: + V=10 + blocksPerfile=360 + print("* Velocidad del Pedestal:",V) + tmp_blocksPerfile = 100 + f_a_p= int(tmp_blocksPerfile/V) + + opObj11 = procUnitConfObjB.addOperation(name='PedestalInformation') + opObj11.addParameter(name='path_ped', value=path_ped) + #opObj11.addParameter(name='path_adq', value=path_adq) + opObj11.addParameter(name='t_Interval_p', value='0.01', format='float') + opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int') + opObj11.addParameter(name='n_Muestras_p', value='100', format='float') + opObj11.addParameter(name='f_a_p', value=f_a_p, format='int') + opObj11.addParameter(name='online', value='0', format='int') + + opObj11 = procUnitConfObjB.addOperation(name='Block360') + opObj11.addParameter(name='n', value='10', format='int') + opObj11.addParameter(name='mode', value=mode, format='int') + + # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180 + + opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other') + + +else: + ####################### METODO SPECTROS ###################################################################### + procUnitConfObjB = controllerObj.addProcUnit(datatype='SpectraProc', inputId=procUnitConfObjA.getId()) + procUnitConfObjB.addParameter(name='nFFTPoints', value=n, format='int') + procUnitConfObjB.addParameter(name='nProfiles' , value=n, format='int') + + procUnitConfObjC = controllerObj.addProcUnit(datatype='ParametersProc',inputId=procUnitConfObjB.getId()) + procUnitConfObjC.addOperation(name='SpectralMoments') + if plot==1: + dBmin = '1' + dBmax = '65' + opObj11 = procUnitConfObjC.addOperation(name='PowerPlot',optype='external') + opObj11.addParameter(name='xmin', value=xmin) + opObj11.addParameter(name='xmax', value=xmax) + opObj11.addParameter(name='zmin', value=dBmin) + opObj11.addParameter(name='zmax', value=dBmax) + opObj11.addParameter(name='save', value=figpath_mom) + opObj11.addParameter(name='showprofile', value=0) + opObj11.addParameter(name='save_period', value=100) + + if save==1: + opObj10 = procUnitConfObjC.addOperation(name='HDFWriter') + opObj10.addParameter(name='path',value=path_save) + #opObj10.addParameter(name='mode',value=0) + opObj10.addParameter(name='blocksPerFile',value='360',format='int') + #opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex + opObj10.addParameter(name='metadataList',value='utctimeInit,heightList,nIncohInt,nCohInt,nProfiles,channelList',format='list')#profileIndex + opObj10.addParameter(name='dataList',value='data_pow,data_dop,utctime',format='list')#,format='list' + + if integration==1: + V=10 + blocksPerfile=360 + print("* Velocidad del Pedestal:",V) + tmp_blocksPerfile = 100 + f_a_p= int(tmp_blocksPerfile/V) + + opObj11 = procUnitConfObjC.addOperation(name='PedestalInformation') + opObj11.addParameter(name='path_ped', value=path_ped) + #opObj11.addParameter(name='path_adq', value=path_adq) + opObj11.addParameter(name='t_Interval_p', value='0.01', format='float') + opObj11.addParameter(name='blocksPerfile', value=blocksPerfile, format='int') + opObj11.addParameter(name='n_Muestras_p', value='100', format='float') + opObj11.addParameter(name='f_a_p', value=f_a_p, format='int') + opObj11.addParameter(name='online', value='0', format='int') + + opObj11 = procUnitConfObjC.addOperation(name='Block360') + opObj11.addParameter(name='n', value='10', format='int') + opObj11.addParameter(name='mode', value=mode, format='int') + + # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180 + opObj11= procUnitConfObjC.addOperation(name='WeatherPlot',optype='other') +controllerObj.start() diff --git a/schainpy/scripts/check_pedestal.py b/schainpy/scripts/check_pedestal.py new file mode 100644 index 0000000..17a6feb --- /dev/null +++ b/schainpy/scripts/check_pedestal.py @@ -0,0 +1,112 @@ +# Ing-AlexanderValdez +# Monitoreo de Pedestal + +############## IMPORTA LIBRERIAS ################### +import os,numpy,h5py +import sys,time +import matplotlib.pyplot as plt +#################################################### +path_ped = '/DATA_RM/TEST_PEDESTAL/P20211012-082745' +# Metodo para verificar numero +def isNumber(str): + try: + float(str) + return True + except: + return False +# Metodo para extraer el arreglo +def getDatavaluefromDirFilename(path,file,value): + dir_file= path+"/"+file + fp = h5py.File(dir_file,'r') + array = fp['Data'].get(value)[()] + fp.close() + return array + +# LISTA COMPLETA DE ARCHIVOS HDF5 Pedestal +LIST= sorted(os.listdir(path_ped)) +m=len(LIST) +print("TOTAL DE ARCHIVOS DE PEDESTAL:",m) +# Contadores temporales +k= 0 +l= 0 +t= 0 +# Marca de tiempo temporal +time_ = numpy.zeros([m]) +# creacion de +for i in range(m): + tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_pos") + tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="ele_pos") + tmp_azi_vel = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_vel") + tmp_ele_vel = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="azi_vel")# nuevo :D + + time_[i] = getDatavaluefromDirFilename(path=path_ped,file=LIST[i],value="utc") + + k=k +tmp_azi_pos.shape[0] + l=l +tmp_ele_pos.shape[0] + t=t +tmp_azi_vel.shape[0] + +print("TOTAL DE MUESTRAS, ARCHIVOS X100:",k) +time.sleep(5) +######CREACION DE ARREGLOS CANTIDAD DE VALORES POR MUESTRA################# +azi_pos = numpy.zeros([k]) +ele_pos = numpy.zeros([l]) +time_azi_pos= numpy.zeros([k]) +# Contadores temporales +p=0 +r=0 +z=0 +# VARIABLES TMP para almacenar azimuth, elevacion y tiempo + +#for filename in sorted(os.listdir(path_ped)): +# CONDICION POR LEER EN TIEMPO REAL NO OFFLINE + +for filename in LIST: + tmp_azi_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="azi_pos") + tmp_ele_pos = getDatavaluefromDirFilename(path=path_ped,file=filename,value="ele_pos") + # CONDICION POR LEER EN TIEMPO REAL NO OFFLINE + + if z==(m-1): + tmp_azi_time=numpy.arange(time_[z],time_[z]+1,1/(tmp_azi_pos.shape[0])) + else: + tmp_azi_time=numpy.arange(time_[z],time_[z+1],(time_[z+1]-time_[z])/(tmp_azi_pos.shape[0])) + + print(filename,time_[z]) + print(z,tmp_azi_pos.shape[0]) + + i=0 + for i in range(tmp_azi_pos.shape[0]): + index=p+i + azi_pos[index]=tmp_azi_pos[i] + time_azi_pos[index]=tmp_azi_time[i] + p=p+tmp_azi_pos.shape[0] + i=0 + for i in range(tmp_ele_pos.shape[0]): + index=r+i + ele_pos[index]=tmp_ele_pos[i] + r=r+tmp_ele_pos.shape[0] + + + z+=1 + + +######## GRAFIQUEMOS Y VEAMOS LOS DATOS DEL Pedestal +fig, ax = plt.subplots(figsize=(16,8)) +print(time_azi_pos.shape) +print(azi_pos.shape) +t=numpy.arange(time_azi_pos.shape[0])*0.01/(60.0) +plt.plot(t,azi_pos,label='AZIMUTH_POS',color='blue') + +# AQUI ESTOY ADICIONANDO LA POSICION EN elevaciont=numpy.arange(len(ele_pos))*0.01/60.0 +t=numpy.arange(len(ele_pos))*0.01/60.0 +plt.plot(t,ele_pos,label='ELEVATION_POS',color='red')#*10 + +#ax.set_xlim(0, 9) +ax.set_ylim(-5, 400) +plt.ylabel("Azimuth Position") +plt.xlabel("Muestra") +plt.title('Azimuth Position vs Muestra ', fontsize=20) +axes = plt.gca() +axes.yaxis.grid() +plt.xticks(fontsize=16) +plt.yticks(fontsize=16) +plt.show() diff --git a/schainpy/scripts/test_fabiano.py b/schainpy/scripts/test_fabiano.py new file mode 100644 index 0000000..40966f1 --- /dev/null +++ b/schainpy/scripts/test_fabiano.py @@ -0,0 +1,90 @@ +import os,sys,json +import datetime +import time +from schainpy.controller import Project +''' +NOTA: +Este script de prueba. +- Unidad del lectura 'HDFReader'. +- Unidad de procesamiento ParametersProc +- Operacion SpectralMomentsPlot + +''' + +####################################################################### +################# RANGO DE PLOTEO###################################### +####################################################################### +dBmin = '1' +dBmax = '65' +xmin = '0' +xmax ='24' +#tmmin = 16.2 +#tmmax = 16.25 +tmmin =15 +tmmax =15.5 +ymin = '0' +ymax = '600' +####################################################################### +####################################################################### +####################################################################### +#path = '/DATA_RM/TEST_HDF5_SPEC' +path = '/DATA_RM/TEST_HDF5_SPEC_23/6v/' +figpath = '/home/soporte/Downloads/23/6v' +path="/home/soporte/Downloads/params-20211015T174046Z-001/params" +desc = "Simulator Test" +desc_data = { + 'Data': { + 'data_spc': ['Data/data_spc/channel00','Data/data_spc/channel01'\ + ,'Data/data_spc/channel02','Data/data_spc/channel03'\ + ,'Data/data_spc/channel04','Data/data_spc/channel05'\ + ,'Data/data_spc/channel06','Data/data_spc/channel07'\ + ,'Data/data_spc/channel08','Data/data_spc/channel09'], + 'utctime':'Data/utctime' + }, + 'Metadata': { + 'type' :'Metadata/type', + 'channelList' :'Metadata/channelList', + 'heightList' :'Metadata/heightList', + 'ippSeconds' :'Metadata/ippSeconds', + 'nProfiles' :'Metadata/nProfiles', + 'codeList' :'Metadata/codeList', + 'timeZone' :'Metadata/timeZone', + 'azimuthList' :'Metadata/azimuthList', + 'elevationList' :'Metadata/elevationList', + 'nCohInt' :'Metadata/nCohInt', + 'nIncohInt' :'Metadata/nIncohInt', + 'nFFTPoints' :'Metadata/nFFTPoints' + + } + } + +controllerObj = Project() + +controllerObj.setup(id='10',name='Test Simulator',description=desc) + +readUnitConfObj = controllerObj.addReadUnit(datatype='HDFReader', + path=path, + startDate="2021/01/01", #"2020/01/01",#today, + endDate= "2021/12/01", #"2020/12/30",#today, + startTime='00:00:00', + endTime='23:59:59', + delay=0, + #set=0, + online=0, + walk=0, + description= json.dumps(desc_data))#1 + +procUnitConfObjA = controllerObj.addProcUnit(datatype='ParametersProc',inputId=readUnitConfObj.getId()) +procUnitConfObjA.addOperation(name='SpectralMoments') + +''' +opObj11 = readUnitConfObj.addOperation(name='SpectraPlot',optype='external') +opObj11.addParameter(name='xmin', value=tmmin) +opObj11.addParameter(name='xmax', value=tmmax) +opObj11.addParameter(name='zmin', value=dBmin) +opObj11.addParameter(name='zmax', value=dBmax) +opObj11.addParameter(name='save', value=figpath) +opObj11.addParameter(name='showprofile', value=0) +opObj11.addParameter(name='save_period', value=10) +''' +controllerObj.start()