|
1 | 1 | import logging |
| 2 | +from contextlib import ExitStack |
2 | 3 | from functools import lru_cache |
3 | 4 | from pathlib import Path |
4 | | -from typing import Dict |
| 5 | +from typing import Dict, Union |
5 | 6 |
|
6 | 7 | import astropy.units as u |
7 | 8 | import numpy as np |
|
76 | 77 | ] |
77 | 78 |
|
78 | 79 |
|
79 | | -def get_hdf5_datalevels(h5file): |
| 80 | +def get_hdf5_datalevels(h5file: Union[tables.File, str, Path]): |
80 | 81 | """Get the data levels present in the hdf5 file""" |
81 | 82 | datalevels = [] |
82 | 83 |
|
83 | | - if "/r1/event/telescope" in h5file.root: |
84 | | - datalevels.append(DataLevel.R1) |
| 84 | + with ExitStack() as stack: |
| 85 | + if not isinstance(h5file, tables.File): |
| 86 | + h5file = stack.enter_context(tables.open_file(h5file)) |
85 | 87 |
|
86 | | - if "/dl1/event/telescope/images" in h5file.root: |
87 | | - datalevels.append(DataLevel.DL1_IMAGES) |
| 88 | + if "/r1/event/telescope" in h5file.root: |
| 89 | + datalevels.append(DataLevel.R1) |
88 | 90 |
|
89 | | - if "/dl1/event/telescope/parameters" in h5file.root: |
90 | | - datalevels.append(DataLevel.DL1_PARAMETERS) |
| 91 | + if "/dl1/event/telescope/images" in h5file.root: |
| 92 | + datalevels.append(DataLevel.DL1_IMAGES) |
91 | 93 |
|
92 | | - if "/dl1/event/telescope/muon" in h5file.root: |
93 | | - datalevels.append(DataLevel.DL1_MUON) |
| 94 | + if "/dl1/event/telescope/parameters" in h5file.root: |
| 95 | + datalevels.append(DataLevel.DL1_PARAMETERS) |
94 | 96 |
|
95 | | - if "/dl2" in h5file.root: |
96 | | - datalevels.append(DataLevel.DL2) |
| 97 | + if "/dl1/event/telescope/muon" in h5file.root: |
| 98 | + datalevels.append(DataLevel.DL1_MUON) |
| 99 | + |
| 100 | + if "/dl2" in h5file.root: |
| 101 | + datalevels.append(DataLevel.DL2) |
97 | 102 |
|
98 | 103 | return tuple(datalevels) |
99 | 104 |
|
|
0 commit comments