##// END OF EJS Templates
Script test de pruebas actuales con el update de heading en el block 360, el parametro adicional es heading que se lee del experiment.conf
Script test de pruebas actuales con el update de heading en el block 360, el parametro adicional es heading que se lee del experiment.conf

File last commit:

r1427:6570b3c66916
r1759:c8ee9da660f1
Show More
basic_proc00002.py
335 lines | 14.1 KiB | text/x-python | PythonLexer
LAST CHANGE WR
r1393 # Ing. AVP
# 06/10/2021
# ARCHIVO DE LECTURA
import os, sys
import datetime
import time
from schainpy.controller import Project
avaldezp
last test
r1419 import h5py
def isNumber(str):
try:
float(str)
return True
except:
return False
def getfirstFilefromPath(path,meta,ext):
validFilelist = []
#print("SEARH",path)
try:
fileList = os.listdir(path)
except:
print("check path - fileList")
if len(fileList)<1:
return None
# meta 1234 567 8-18 BCDE
# H,D,PE YYYY DDD EPOC .ext
for thisFile in fileList:
#print("HI",thisFile)
if meta =="PE":
try:
number= int(thisFile[len(meta)+7:len(meta)+17])
except:
print("There is a file or folder with different format")
if meta == "D":
try:
number= int(thisFile[8:11])
except:
print("There is a file or folder with different format")
if not isNumber(str=number):
continue
if (os.path.splitext(thisFile)[-1].lower() != ext.lower()):
continue
validFilelist.sort()
validFilelist.append(thisFile)
if len(validFilelist)>0:
validFilelist = sorted(validFilelist,key=str.lower)
return validFilelist
return None
def gettimeutcfromDirFilename(path,file):
dir_file= path+"/"+file
fp = h5py.File(dir_file,'r')
#epoc = fp['Metadata'].get('utctimeInit')[()]
epoc = fp['Data'].get('utc')[()]
fp.close()
return epoc
path_ped='/DATA_RM/TEST_PEDESTAL/P20211111-173856'
list_pedestal=getfirstFilefromPath(path=path_ped,meta="PE",ext=".hdf5")
timestamp= gettimeutcfromDirFilename(path=path_ped,file=list_pedestal[0])
print("timestamp",timestamp)
#timestamp = 1339521878.04
value = datetime.datetime.fromtimestamp(timestamp)
print(value.strftime('%Y/%m/%d %H:%M:%S'))
startdate= value.strftime('%Y/%m/%d')
starttime= value.strftime('%H:%M:%S')
LAST CHANGE WR
r1393 #### 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")
avaldezp
last 30-16:19
r1405 V = 6
avaldezp
last test
r1419 #V = 10
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407 mode = 0
avaldezp
last 30-16:19
r1405 #--------------------------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'
avaldezp
last test
r1419 #path ="/DATA_RM/10"
avaldezp
last 30-16:19
r1405 # path = '/DATA_RM/WR_POT_09_1'
#path ="/DATA_RM/11"
avaldezp
last test
r1419 path ="/DATA_RM/11"
avaldezp
last 30-16:19
r1405 #-------------------------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"
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407 figpath_ppi_pp = "/home/soporte/Pictures/ppi_PP_10_DIC"
avaldezp
last 30-16:19
r1405 figpath_pp = "/home/soporte/Pictures/TEST_POT"
figpath_pp = "/home/soporte/Pictures/TEST_POT2"
LAST CHANGE WR
r1393
#path_ped='/DATA_RM/TEST_PEDESTAL/P20211012-082745'
avaldezp
last 30-16:19
r1405 #path_ped='/DATA_RM/TEST_PEDESTAL/P20211020-131248'
#path_ped='/DATA_RM/TEST_PEDESTAL/P20211110-171003'
avaldezp
last update
r1427 path_ped=path_ped
avaldezp
last test
r1419 #path_ped = "/DATA_RM/TEST_PEDESTAL/P20211110-171003"
LAST CHANGE WR
r1393
avaldezp
last 30-16:19
r1405
figpath_pp = "/home/soporte/Pictures/25TEST_PP"
LAST CHANGE WR
r1393 figpath_mom = "/home/soporte/Pictures/TEST_MOM"
avaldezp
last 30-16:19
r1405 #--------------------------OPCIONES-----------------------------------
LAST CHANGE WR
r1393 plot = 0
integration = 1
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407 save = 0
LAST CHANGE WR
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'
avaldezp
last 30-16:19
r1405 path_save = '/DATA_RM/TEST_EMPTHY'
LAST CHANGE WR
r1393 else:
path_save = '/DATA_RM/TEST_HDF5_SPEC_23_V2/6v'
avaldezp
last 30-16:19
r1405 path_save = '/DATA_RM/TEST_EMPTHY_SPEC'
path_save = '/DATA_RM/LAST_TEST_16_VACIO3'
path_save = '/DATA_RM/LAST_TEST_30_360'
LAST CHANGE WR
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)
avaldezp
last 30-16:19
r1405 time.sleep(3)
LAST CHANGE WR
r1393 #remotefolder = "/home/wmaster/graficos"
#######################################################################
################# RANGO DE PLOTEO######################################
dBmin = '1'
dBmax = '85'
avaldezp
last 30-16:19
r1405 xmin = '17'
xmax = '17.25'
LAST CHANGE WR
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,
avaldezp
last test
r1419 startDate=startdate,#today,
LAST CHANGE WR
r1393 endDate="2021/12/30",#today,
avaldezp
last test
r1419 startTime=starttime,
LAST CHANGE WR
r1393 endTime='23:59:59',
delay=0,
#set=0,
online=0,
walk=1,
ippKm = 60)
opObj11 = readUnitConfObj.addOperation(name='printInfo')
avaldezp
last 30-16:19
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')
LAST CHANGE WR
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 #######################################################################
avaldezp
last 30-16:19
r1405
LAST CHANGE WR
r1393 if integration==1:
avaldezp
last 30-16:19
r1405 V=V
blocksPerfile=100
LAST CHANGE WR
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')
avaldezp
last test
r1419 opObj11.addParameter(name='wr_exp', value='PPI')
#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')
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407
LAST CHANGE WR
r1393 opObj11 = procUnitConfObjB.addOperation(name='Block360')
opObj11.addParameter(name='n', value='10', format='int')
opObj11.addParameter(name='mode', value=mode, format='int')
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407
LAST CHANGE WR
r1393 # este bloque funciona bien con divisores de 360 no olvidar 0 10 20 30 40 60 90 120 180
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407
LAST CHANGE WR
r1393 opObj11= procUnitConfObjB.addOperation(name='WeatherPlot',optype='other')
avaldezp
last 30-16:19
r1405 opObj11.addParameter(name='save', value=figpath_ppi_pp)
opObj11.addParameter(name='save_period', value=1)
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407
avaldezp
last 30-16:19
r1405 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'
LAST CHANGE WR
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)
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407 opObj11.addParassmeter(name='save_period', value=100)
LAST CHANGE WR
r1393
if integration==1:
avaldezp
last 30-16:19
r1405 V=V
blocksPerfile=100
LAST CHANGE WR
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')
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407 opObj11.addParameter(name='n', value='20', format='int')
LAST CHANGE WR
r1393 opObj11.addParameter(name='mode', value=mode, format='int')
avaldezp
correcion de escritura 360 y ploteo completo de PP y Spectro
r1407
avaldezp
last 30-16:19
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'
LAST CHANGE WR
r1393
avaldezp
last 30-16:19
r1405 '''
LAST CHANGE WR
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')
avaldezp
last 30-16:19
r1405 opObj11.addParameter(name='save', value=figpath_ppi)
opObj11.addParameter(name='save_period', value=1)
'''
LAST CHANGE WR
r1393 controllerObj.start()