##// END OF EJS Templates
Cambio en la lectura de archivos, se incluyó detección de cambio de experimento
Cambio en la lectura de archivos, se incluyó detección de cambio de experimento

File last commit:

r1321:be72bcf02f7f
r1373:fa4c334951aa
Show More
wr_integrador.py
162 lines | 6.0 KiB | text/x-python | PythonLexer
import os,numpy,h5py
from shutil import copyfile
def isNumber(str):
try:
float(str)
return True
except:
return False
def getfirstFilefromPath(path,meta,ext):
validFilelist = []
fileList = os.listdir(path)
if len(fileList)<1:
return None
# meta 1234 567 8-18 BCDE
# H,D,PE YYYY DDD EPOC .ext
for thisFile in fileList:
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')[()]
fp.close()
return epoc
def getDatavaluefromDirFilename(path,file,value):
dir_file= path+"/"+file
fp = h5py.File(dir_file,'r')
array = fp['Data'].get(value)[()]
fp.close()
return array
#·········· Velocidad de Pedestal·················
w = input ("Ingresa velocidad de Pedestal: ")
w = 4
w = float(w)
#·········· Resolucion minimo en grados···········
alfa = input ("Ingresa resolucion minima en grados: ")
alfa = 1
alfa = float(alfa)
#·········· IPP del Experimento ··················
IPP = input ("Ingresa el IPP del experimento: ")
IPP = 0.0004
IPP = float(IPP)
#·········· MODE ··················
mode = input ("Ingresa el MODO del experimento T or F: ")
mode = "T"
mode = str(mode)
#·········· Tiempo en generar la resolucion min···
#············ MCU ·· var_ang = w * (var_tiempo)···
var_tiempo = alfa/w
#·········· Tiempo Equivalente en perfiles········
#·········· var_tiempo = IPP * ( num_perfiles )·
num_perfiles = int(var_tiempo/IPP)
#··········DATA PEDESTAL··························
dir_pedestal = "/home/alex/Downloads/pedestal"
#·········· DATA ADQ······························
if mode=="T":
dir_adq = "/home/alex/Downloads/hdf5_testPP/d2020194" # Time domain
else:
dir_adq = "/home/alex/Downloads/hdf5_test/d2020194" # Frequency domain
print( "Velocidad angular :", w)
print( "Resolucion minima en grados :", alfa)
print( "Numero de perfiles equivalente:", num_perfiles)
print( "Mode :", mode)
#············ First File·············
list_pedestal = getfirstFilefromPath(path=dir_pedestal,meta="PE",ext=".hdf5")
list_adq = getfirstFilefromPath(path=dir_adq ,meta="D",ext=".hdf5")
#············ utc time ··············
utc_pedestal= gettimeutcfromDirFilename(path=dir_pedestal,file=list_pedestal[0])
utc_adq = gettimeutcfromDirFilename(path=dir_adq ,file=list_adq[0])
print("utc_pedestal :",utc_pedestal)
print("utc_adq :",utc_adq)
#·············Relacion: utc_adq (+/-) var_tiempo*nro_file= utc_pedestal
time_Interval_p = 0.01
n_perfiles_p = 100
if utc_adq>utc_pedestal:
nro_file = int((int(utc_adq) - int(utc_pedestal))/(time_Interval_p*n_perfiles_p))
ff_pedestal = list_pedestal[nro_file]
utc_pedestal = gettimeutcfromDirFilename(path=dir_pedestal,file=ff_pedestal)
nro_key_p = int((utc_adq-utc_pedestal)/time_Interval_p)
if utc_adq >utc_pedestal:
ff_pedestal = ff_pedestal
else:
nro_file = nro_file-1
ff_pedestal = list_pedestal[nro_file]
angulo = getDatavaluefromDirFilename(path=dir_pedestal,file=ff_pedestal,value="azimuth")
nro_key_p = int((utc_adq-utc_pedestal)/time_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*time_Interval_p)
print("angulo_array :",angulo[nro_key_p])
#4+25+25+25+21
#while True:
list_pedestal = getfirstFilefromPath(path=dir_pedestal,meta="PE",ext=".hdf5")
list_adq = getfirstFilefromPath(path=dir_adq ,meta="D",ext=".hdf5")
nro_file = nro_file #10
nro_key_perfil = nro_key_p
blocksPerFile = 100
wr_path = "/home/alex/Downloads/hdf5_wr/"
# Lectura de archivos de adquisicion para adicion de azimuth
for thisFile in range(len(list_adq)):
print("thisFileAdq",thisFile)
angulo_adq = numpy.zeros(blocksPerFile)
tmp = 0
for j in range(blocksPerFile):
iterador = nro_key_perfil + 25*(j-tmp)
if iterador < n_perfiles_p:
nro_file = nro_file
else:
nro_file = nro_file+1
tmp = j
iterador = nro_key_perfil
ff_pedestal = list_pedestal[nro_file]
angulo = getDatavaluefromDirFilename(path=dir_pedestal,file=ff_pedestal,value="azimuth")
angulo_adq[j]= angulo[iterador]
copyfile(dir_adq+"/"+list_adq[thisFile],wr_path+list_adq[thisFile])
fp = h5py.File(wr_path+list_adq[thisFile],'a')
grp = fp.create_group("Pedestal")
dset = grp.create_dataset("azimuth" , data=angulo_adq)
fp.close()
print("Angulo",angulo_adq)
print("Angulo",len(angulo_adq))
nro_key_perfil=iterador + 25
if nro_key_perfil< n_perfiles_p:
nro_file = nro_file
else:
nro_file = nro_file+1
nro_key_perfil= nro_key_p