basic_proc00002.py
269 lines
| 12.3 KiB
| text/x-python
|
PythonLexer
r1393 | # 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") | ||||
|
r1405 | V = 6 | ||
r1393 | V = 10 | |||
|
r1405 | mode = 1 | ||
#--------------------------PATH ----------------------------- | ||||
# path = '/DATA_RM/23/6v' | ||||
# path = '/DATA_RM/TEST_INTEGRACION_2M' | ||||
# path = '/DATA_RM/TEST_19OCTUBRE/10MHZ' | ||||
# path = '/DATA_RM/WR_20_OCT' | ||||
#### path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745' | ||||
####path_ped='/DATA_RM/TEST_PEDESTAL/P20211019-192244' | ||||
path ="/DATA_RM/10" | ||||
# path = '/DATA_RM/WR_POT_09_1' | ||||
#path ="/DATA_RM/11" | ||||
#path ="/DATA_RM/11" | ||||
#-------------------------PATH-PLOTEO------------------------------------ | ||||
#figpath_pp = "/home/soporte/Pictures/TEST_PP" | ||||
#figpath_spec = "/home/soporte/Pictures/TEST_MOM" | ||||
figpath_spec = "/home/soporte/Pictures/ppi" | ||||
figpath_ppi = "/home/soporte/Pictures/ppi_SPEC_10DIC" | ||||
figpath_ppi_pp = "/home/soporte/Pictures/ppi_2_10" | ||||
figpath_pp = "/home/soporte/Pictures/TEST_POT" | ||||
figpath_pp = "/home/soporte/Pictures/TEST_POT2" | ||||
r1393 | ||||
#path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745' | ||||
|
r1405 | #path_ped='/DATA_RM/TEST_PEDESTAL/P20211020-131248' | ||
#path_ped='/DATA_RM/TEST_PEDESTAL/P20211110-171003' | ||||
#path_ped='/DATA_RM/TEST_PEDESTAL/P20211111-173856' | ||||
path_ped = "/DATA_RM/TEST_PEDESTAL/P20211110-171003" | ||||
r1393 | ||||
|
r1405 | |||
figpath_pp = "/home/soporte/Pictures/25TEST_PP" | ||||
r1393 | figpath_mom = "/home/soporte/Pictures/TEST_MOM" | |||
|
r1405 | #--------------------------OPCIONES----------------------------------- | ||
r1393 | plot = 0 | |||
integration = 1 | ||||
|
r1405 | save = 1 | ||
r1393 | 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' | ||||
|
r1405 | path_save = '/DATA_RM/TEST_EMPTHY' | ||
r1393 | else: | |||
path_save = '/DATA_RM/TEST_HDF5_SPEC_23_V2/6v' | ||||
|
r1405 | path_save = '/DATA_RM/TEST_EMPTHY_SPEC' | ||
path_save = '/DATA_RM/LAST_TEST_16_VACIO3' | ||||
path_save = '/DATA_RM/LAST_TEST_30_360' | ||||
r1393 | ||||
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) | ||||
|
r1405 | time.sleep(3) | ||
r1393 | #remotefolder = "/home/wmaster/graficos" | |||
####################################################################### | ||||
################# RANGO DE PLOTEO###################################### | ||||
dBmin = '1' | ||||
dBmax = '85' | ||||
|
r1405 | xmin = '17' | ||
xmax = '17.25' | ||||
r1393 | 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, | ||||
|
r1405 | startDate="2021/11/10",#today, | ||
r1393 | endDate="2021/12/30",#today, | |||
|
r1405 | startTime='17:10:25', | ||
r1393 | endTime='23:59:59', | |||
delay=0, | ||||
#set=0, | ||||
online=0, | ||||
walk=1, | ||||
ippKm = 60) | ||||
opObj11 = readUnitConfObj.addOperation(name='printInfo') | ||||
|
r1405 | procUnitConfObjA = controllerObj.addProcUnit(datatype='VoltageProc',inputId=readUnitConfObj.getId()) | ||
#opObj11 = procUnitConfObjA.addOperation(name='setH0') | ||||
#opObj11.addParameter(name='h0', value='-2.8', format='float') | ||||
opObj11 = procUnitConfObjA.addOperation(name='selectHeights') | ||||
opObj11.addParameter(name='minIndex', value='1', format='int') | ||||
# opObj11.addParameter(name='maxIndex', value='10000', format='int') | ||||
opObj11.addParameter(name='maxIndex', value='400', format='int') | ||||
r1393 | ||||
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 ####################################################################### | ||||
|
r1405 | |||
r1393 | if integration==1: | |||
|
r1405 | V=V | ||
blocksPerfile=100 | ||||
r1393 | 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') | ||||
|
r1405 | ''' | ||
r1393 | opObj11 = procUnitConfObjB.addOperation(name='Block360') | |||
opObj11.addParameter(name='n', value='10', format='int') | ||||
opObj11.addParameter(name='mode', value=mode, format='int') | ||||
|
r1405 | ''' | ||
r1393 | # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180 | |||
|
r1405 | ''' | ||
r1393 | opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other') | |||
|
r1405 | opObj11.addParameter(name='save', value=figpath_ppi_pp) | ||
opObj11.addParameter(name='save_period', value=1) | ||||
''' | ||||
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,azimuth,utctime',format='list')#,format='list' | ||||
r1393 | ||||
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 integration==1: | ||||
|
r1405 | V=V | ||
blocksPerfile=100 | ||||
r1393 | 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') | ||||
|
r1405 | opObj11.addParameter(name='n', value='1', format='int') | ||
r1393 | opObj11.addParameter(name='mode', value=mode, format='int') | |||
|
r1405 | ''' | ||
# 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') | ||||
opObj11.addParameter(name='save', value=figpath_ppi) | ||||
opObj11.addParameter(name='save_period', value=1) | ||||
''' | ||||
if save==1: | ||||
opObj10 = procUnitConfObjC.addOperation(name='HDFWriter') | ||||
opObj10.addParameter(name='path',value=path_save) | ||||
opObj10.addParameter(name='mode',value='weather') | ||||
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,azimuth,utctime',format='list')#,format='list' | ||||
opObj10.addParameter(name='dataList',value='data_360,data_azi,utctime',format='list')#,format='list' | ||||
r1393 | ||||
|
r1405 | ''' | ||
r1393 | # 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') | ||||
|
r1405 | opObj11.addParameter(name='save', value=figpath_ppi) | ||
opObj11.addParameter(name='save_period', value=1) | ||||
''' | ||||
r1393 | controllerObj.start() | |||