Using HDF5.jl and reading h5 data to Julia?

I don’t have the STROMBOLI.h5 file, but an example for exploration of another file might be:

Find out what is in the file:

julia> h5open("data/eiscat/MAD6400_2022-12-12_manda_60@uhf.hdf5", "r")
πŸ—‚οΈ HDF5.File: (read-only) data/eiscat/MAD6400_2022-12-12_manda_60@uhf.hdf5
β”œβ”€ πŸ“‚ Data
β”‚  └─ πŸ”’ Table Layout
└─ πŸ“‚ Metadata
   β”œβ”€ πŸ”’ Data Parameters
   β”œβ”€ πŸ”’ Experiment Notes
   β”œβ”€ πŸ”’ Experiment Parameters
   ... more metadata

Get all datasets without loading them (in case they are big):

datasets=HDF5.get_datasets(h5file)
6-element Vector{HDF5.Dataset}:
 πŸ”’ HDF5.Dataset: /Data/Table Layout (file: data/eiscat/MAD6400_2022-12-12_manda_60@uhf.hdf5 xfer_mode: 0)
 πŸ”’ HDF5.Dataset: /Metadata/Data Parameters ...
... more metadata sets

The actual data is the 1st set, the others are metadata (which are probably important as well).

julia> h5data=datasets[1]
julia> size(h5data)
(94776,)

So I get a vector of named tuples:

julia> keys(h5data[1])
(:year, :month, :day, :hour, :min, :sec, :recno, :kindat, ....

Print parameters gdalt and ne, the first three vector elements:

julia> foreach(x -> println("height = $(x[:gdalt]), ne = $(x[:ne])"), h5data[1:3])
height = 20.169572265625, ne = 2.282413824e9
height = 20.5092578125, ne = 1.0e6
height = 20.86676953125, ne = 2.51701408e8
5 Likes