##// END OF EJS Templates
Merge EW-Drifts
Merge EW-Drifts

File last commit:

r1396:f39ad5b721a3
r1396:f39ad5b721a3
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