DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
trgtools
python
trgtools
HDF5Reader.py
Go to the documentation of this file.
1
"""
2
Generic HDF5Reader class to read and store data.
3
"""
4
from
hdf5libs
import
HDF5RawDataFile
5
from
tqdm
import
tqdm
6
7
import
abc
8
9
10
class
HDF5Reader
(abc.ABC):
11
"""
12
Abstract reader class for HDF5 files.
13
14
Derived classes must complete all methods
15
decorated with @abc.abstractmethod.
16
"""
17
18
# Useful print colors
19
_FAIL_TEXT_COLOR =
'\033[91m'
20
_WARNING_TEXT_COLOR =
'\033[93m'
21
_BOLD_TEXT =
'\033[1m'
22
_END_TEXT_COLOR =
'\033[0m'
23
24
25
def
__init__
(self, filename: str, verbosity: int = 0, batch_mode: bool =
False
) ->
None
:
26
"""
27
Loads a given HDF5 file.
28
29
Parameters:
30
filename (str): HDF5 file to open.
31
verbosity (int): Verbose level. 0: Only errors. 1: Warnings. 2: All.
32
33
Returns nothing.
34
"""
35
# Generic loading
36
self.
_h5_file
=
HDF5RawDataFile
(filename)
37
self.
_fragment_paths
= self.
_h5_file
.get_all_fragment_dataset_paths()
38
self.
run_id
= self.
_h5_file
.get_int_attribute(
'run_number'
)
39
self.
file_index
= self.
_h5_file
.get_int_attribute(
'file_index'
)
40
41
self.
_verbosity
= verbosity
42
43
self.
_filter_fragment_paths
()
# Derived class must define this.
44
45
self.
_num_empty
= 0
# Counts the number of empty fragments.
46
47
self.
_batch_mode
= batch_mode
48
49
return
None
50
51
@abc.abstractmethod
52
def
_filter_fragment_paths
(self) -> None:
53
"""
54
Filter the fragment paths of interest.
55
56
This should be according to the derived reader's
57
data type of interest, e.g., filter for TriggerActivity.
58
"""
59
...
60
61
def
get_fragment_paths
(self) -> list[str]:
62
""" Return the list of fragment paths. """
63
return
list(self.
_fragment_paths
)
64
65
def
set_fragment_paths
(self, fragment_paths: list[str]) ->
None
:
66
""" Set the list of fragment paths. """
67
self.
_fragment_paths
= fragment_paths
68
return
None
69
70
@abc.abstractmethod
71
def
read_fragment
(self, fragment_path: str) ->
None
:
72
""" Read one fragment from :fragment_path:. """
73
...
74
75
def
read_all_fragments
(self) -> None:
76
""" Read all fragments. """
77
for
fragment_path
in
tqdm(self.
_fragment_paths
, desc=
'Reading all the fragments'
, disable=self.
_batch_mode
):
78
_ = self.
read_fragment
(fragment_path)
79
80
# self.read_fragment should increment self._num_empty.
81
# Print how many were empty as a debug.
82
if
self.
_verbosity
>= 1
and
self.
_num_empty
!= 0:
83
print(
84
self.
_FAIL_TEXT_COLOR
85
+ self.
_BOLD_TEXT
86
+ f
"WARNING: Skipped {self._num_empty} frags."
87
+ self.
_END_TEXT_COLOR
88
)
89
90
return
None
91
92
@abc.abstractmethod
93
def
clear_data
(self) -> None:
94
""" Clear the contents of the member data. """
95
...
96
97
def
reset_fragment_paths
(self) -> None:
98
""" Reset the fragment paths to the initialized state. """
99
self.
_fragment_paths
= self.
_h5_file
.get_all_fragment_dataset_paths()
100
self.
_filter_fragment_paths
()
hdf5libs.HDF5RawDataFile
Definition
__init__.py:7
trgtools.HDF5Reader.HDF5Reader
Definition
HDF5Reader.py:10
trgtools.HDF5Reader.HDF5Reader._END_TEXT_COLOR
str _END_TEXT_COLOR
Definition
HDF5Reader.py:22
trgtools.HDF5Reader.HDF5Reader._filter_fragment_paths
None _filter_fragment_paths(self)
Definition
HDF5Reader.py:52
trgtools.HDF5Reader.HDF5Reader.read_all_fragments
None read_all_fragments(self)
Definition
HDF5Reader.py:75
trgtools.HDF5Reader.HDF5Reader.__init__
None __init__(self, str filename, int verbosity=0, bool batch_mode=False)
Definition
HDF5Reader.py:25
trgtools.HDF5Reader.HDF5Reader._verbosity
_verbosity
Definition
HDF5Reader.py:41
trgtools.HDF5Reader.HDF5Reader._FAIL_TEXT_COLOR
str _FAIL_TEXT_COLOR
Definition
HDF5Reader.py:19
trgtools.HDF5Reader.HDF5Reader.file_index
file_index
Definition
HDF5Reader.py:39
trgtools.HDF5Reader.HDF5Reader.read_fragment
None read_fragment(self, str fragment_path)
Definition
HDF5Reader.py:71
trgtools.HDF5Reader.HDF5Reader.reset_fragment_paths
None reset_fragment_paths(self)
Definition
HDF5Reader.py:97
trgtools.HDF5Reader.HDF5Reader.run_id
run_id
Definition
HDF5Reader.py:38
trgtools.HDF5Reader.HDF5Reader._num_empty
int _num_empty
Definition
HDF5Reader.py:45
trgtools.HDF5Reader.HDF5Reader.set_fragment_paths
None set_fragment_paths(self, list[str] fragment_paths)
Definition
HDF5Reader.py:65
trgtools.HDF5Reader.HDF5Reader._fragment_paths
_fragment_paths
Definition
HDF5Reader.py:37
trgtools.HDF5Reader.HDF5Reader._BOLD_TEXT
str _BOLD_TEXT
Definition
HDF5Reader.py:21
trgtools.HDF5Reader.HDF5Reader.get_fragment_paths
list[str] get_fragment_paths(self)
Definition
HDF5Reader.py:61
trgtools.HDF5Reader.HDF5Reader.clear_data
None clear_data(self)
Definition
HDF5Reader.py:93
trgtools.HDF5Reader.HDF5Reader._h5_file
_h5_file
Definition
HDF5Reader.py:36
trgtools.HDF5Reader.HDF5Reader._batch_mode
_batch_mode
Definition
HDF5Reader.py:47
Generated on
for DUNE-DAQ by
1.17.0