|
|
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
|
|
|
|