Documentazione
Riferimento su appending
Un'altra pagina
Installare con conda install h5py
import numpy as np
import h5py
hf = h5py.File('data.h5', 'w')
Leggo i dati della prima spill
data = np.loadtxt("./run501230_000001.dat")
data.shape
(244, 72)
Li salvo
hf.create_dataset("sili", data = data[:,0:4], compression="gzip", chunks=True, maxshape=(None,4))
hf.create_dataset("nStrip", data = data[:,4:8], compression="gzip", chunks=True, maxshape=(None,4))
hf.create_dataset("nClu", data = data[:,8:12], compression="gzip", chunks=True, maxshape=(None,4))
hf.create_dataset("digiBase", data = data[:,12:28], compression="gzip", chunks=True, maxshape=(None,16))
hf.create_dataset("digiPH", data = data[:,28:44], compression="gzip", chunks=True, maxshape=(None,16))
hf.create_dataset("digiTime", data = data[:,44:60], compression="gzip", chunks=True, maxshape=(None,16))
hf.create_dataset("gonio", data = data[:,60:67], compression="gzip", chunks=True, maxshape=(None,7))
hf.create_dataset("nev", data = data[:,67], compression="gzip", chunks=True, maxshape=(None,))
hf.create_dataset("qtot", data = data[:,68:72], compression="gzip", chunks=True, maxshape=(None,4))
<HDF5 dataset "qtot": shape (244, 4), type "<f8">
f["t"] = {
"sili": data[:,0:4],
"nStrip": data[:,4:8],
"nClu": data[:,8:12],
"digiBase": data[:,12:28],
"digiPH": data[:,28:44],
"digiTime": data[:,44:60],
"gonio": data[:,60:67],
"nev": data[:,67],
"qtot": data[:,68:72],
}
hf.close()
Noto che anche in append vedo cosa c'è dentro
Attenzione (anche se è ovvio): se apri in w
, cancelli quello che c'era dentro
hf = h5py.File('data.h5', 'a')
hf.keys()
<KeysViewHDF5 ['digiBase', 'digiPH', 'digiTime', 'gonio', 'nClu', 'nStrip', 'nev', 'qtot', 'sili']>
hf.close()
Carico i dati di un'altra spill
data = np.loadtxt("./run501230_000002.dat")
data.shape
(262, 72)
hf = h5py.File('data.h5', 'a')
print(hf["sili"].shape[0], data.shape[0])
244 262
type(hf.keys())
h5py._hl.base.KeysViewHDF5
hf.keys()
<KeysViewHDF5 ['digiBase', 'digiPH', 'digiTime', 'gonio', 'nClu', 'nStrip', 'nev', 'qtot', 'sili']>
righeLastFile = data.shape[0]
for k in hf.keys():
hf[k].resize((hf[k].shape[0] + righeLastFile), axis = 0)
hf["sili"][-righeLastFile:] = data[:,0:4]
hf["nStrip"][-righeLastFile:] = data[:,4:8]
hf["nClu"][-righeLastFile:] = data[:,8:12]
hf["digiBase"][-righeLastFile:] = data[:,12:28]
hf["digiPH"][-righeLastFile:] = data[:,28:44]
hf["digiTime"][-righeLastFile:] = data[:,44:60]
hf["gonio"][-righeLastFile:] = data[:,60:67]
hf["nev"][-righeLastFile:] = data[:,67]
hf["qtot"][-righeLastFile:] = data[:,68:72]
hf.close()
hf = h5py.File('data.h5', 'r')
hf["sili"].shape
(506, 4)
244+262
506
Che coincidenza... coincide con le dipensioni delle prime due spill
# // TODO...