How to read HAWC2 HDF5 Files and Get the Channel Names
How can I read a HAWC2 output HDF5 file? I am having trouble finding the channel names. Right now, I have to rely Pdap to read the channel names. How can I read the file using Python and get a dictionary of channels and the corresponding name? I want to be able to link the attribute and associated units to the data without any hardcoding on my part.
Using pandas:
dat = pd.read_hdf('./t1.hdf5')
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[8], line 1
----> 1 dat = pd.read_hdf('./t1.hdf5')
File ~/miniconda3/envs/sgd/lib/python3.10/site-packages/pandas/io/pytables.py:438, in read_hdf(path_or_buf, key, mode, errors, where, start, stop, columns, iterator, chunksize, **kwargs)
436 groups = store.groups()
437 if len(groups) == 0:
--> 438 raise ValueError(
439 "Dataset(s) incompatible with Pandas data types, "
440 "not table, or no datasets found in HDF5 file."
441 )
442 candidate_only_group = groups[0]
444 # For the HDF file to have only one dataset, all other groups
445 # should then be metadata groups for that candidate group. (This
446 # assumes that the groups() method enumerates parent groups
447 # before their children.)
ValueError: Dataset(s) incompatible with Pandas data types, not table, or no datasets found in HDF5 file.
Using netCDF4:
In [7]: netCDF4.Dataset('./t1.hdf5')
Out[7]:
<class 'netCDF4._netCDF4.Dataset'>
root group (NETCDF4 data model, file format HDF5):
type: General time series data format
no_blocks: 200
name: ./res/example_1_four_turbines/t1
description: HAWC2MB 12.7 tj 14_x32 26/08/2023 18:18:35
dimensions(sizes): phony_dim_400(107)
variables(dimensions): <class 'str'> attribute_descriptions(phony_dim_400), <class 'str'> attribute_names(phony_dim_400), <class 'str'> attribute_units(phony_dim_400)
groups: block0000, block0001, block0002, block0003, block0004, block0005, block0006, block0007, block0008, block0009, block0010, block0011, block0012, block0013, block0014, block0015, block0016, block0017, block0018, block0019, block0020, block0021, block0022, block0023, block0024, block0025, block0026, block0027, block0028, block0029, block0030, block0031, block0032, block0033, block0034, block0035, block0036, block0037, block0038, block0039, block0040, block0041, block0042, block0043, block0044, block0045, block0046, block0047, block0048, block0049, block0050, block0051, block0052, block0053, block0054, block0055, block0056, block0057, block0058, block0059, block0060, block0061, block0062, block0063, block0064, block0065, block0066, block0067, block0068, block0069, block0070, block0071, block0072, block0073, block0074, block0075, block0076, block0077, block0078, block0079, block0080, block0081, block0082, block0083, block0084, block0085, block0086, block0087, block0088, block0089, block0090, block0091, block0092, block0093, block0094, block0095, block0096, block0097, block0098, block0099, block0100, block0101, block0102, block0103, block0104, block0105, block0106, block0107, block0108, block0109, block0110, block0111, block0112, block0113, block0114, block0115, block0116, block0117, block0118, block0119, block0120, block0121, block0122, block0123, block0124, block0125, block0126, block0127, block0128, block0129, block0130, block0131, block0132, block0133, block0134, block0135, block0136, block0137, block0138, block0139, block0140, block0141, block0142, block0143, block0144, block0145, block0146, block0147, block0148, block0149, block0150, block0151, block0152, block0153, block0154, block0155, block0156, block0157, block0158, block0159, block0160, block0161, block0162, block0163, block0164, block0165, block0166, block0167, block0168, block0169, block0170, block0171, block0172, block0173, block0174, block0175, block0176, block0177, block0178, block0179, block0180, block0181, block0182, block0183, block0184, block0185, block0186, block0187, block0188, block0189, block0190, block0191, block0192, block0193, block0194, block0195, block0196, block0197, block0198, block0199