legend-pydataobj 1.2.1__py3-none-any.whl → 1.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: legend-pydataobj
3
- Version: 1.2.1
3
+ Version: 1.4.0
4
4
  Summary: LEGEND Python Data Objects
5
5
  Home-page: https://github.com/legend-exp/legend-pydataobj
6
6
  Author: The LEGEND Collaboration
@@ -1,28 +1,29 @@
1
1
  lgdo/__init__.py,sha256=mY6pUNy2yJ2MYzq_ZdhVZZ7xItBW1KJ8h9qA29bOECU,2878
2
- lgdo/_version.py,sha256=2U0Gn26fYI3Vgj5hgkLM8I3wI6YEVdffJGllaVW-sSc,411
2
+ lgdo/_version.py,sha256=R8-T9fmURjcuoxYpHTAjyNAhgJPDtI2jogCjqYYkfCU,411
3
+ lgdo/cli.py,sha256=6o2vGwEq0Fq1y67RTxOHjkVNmN9XGhIBnb8DFFm8ANQ,1428
3
4
  lgdo/lgdo_utils.py,sha256=LvqE_eQZjKOuLrocbxc21rvWvh7NA4BSiaJh-jhlxVs,5598
4
- lgdo/lh5_store.py,sha256=lXfrvZQtqQuzNlOba1pPU156FNBb1LrAXX1dddH2y1U,68404
5
+ lgdo/lh5_store.py,sha256=-ceGURWdu0jKTsDTL9bqQLxQ0T8USeeSXAk2cqd-2UU,74246
5
6
  lgdo/logging.py,sha256=Nu3wgIoWN7cyUxuzPom5rMwFvTlBu8p8d9uONHDquRg,965
6
7
  lgdo/compression/__init__.py,sha256=oT9OXiDDxC7BZciWrQVfHZNkOxXfj4p8EpF2tF04w84,1091
7
- lgdo/compression/base.py,sha256=82cQJujfvoAOKBFx761dEcx_xM02TBCBBuBo6i78tuI,838
8
- lgdo/compression/generic.py,sha256=zWoZqR5H4x-xpbvBYKDZ0rnNqUh9pC9aZeoc8Z98OjI,2252
9
- lgdo/compression/radware.py,sha256=ZfdebK_N1r1t2YVqqBu5B6RN87OoN9_deeiR97mP0Zo,19312
8
+ lgdo/compression/base.py,sha256=ujQY2kYF4z3ZdAy7gXaoDPXFbG2Av1IQ1Nnx6UGLjmk,896
9
+ lgdo/compression/generic.py,sha256=CyOg4xyPG1lUuE4oJLU-jReKwQQo5Xn5Im3vgRVLpUY,2485
10
+ lgdo/compression/radware.py,sha256=K39y5v1E7DymrP2GMYsVrmREMp8hqlNU66DXvQrrLVU,23843
10
11
  lgdo/compression/utils.py,sha256=YhxfJ_zvDu9I1BnjOsALR7SYbNohZNdm8HZ8IqTjd6w,1060
11
- lgdo/compression/varlen.py,sha256=SJtfRfP5T_YM4YsyuAXXZgsRtSps2_ERBE985_Eli3w,14497
12
+ lgdo/compression/varlen.py,sha256=FwZTyqKpSXQEL9cN0g3NtfC7E7i7hejVn8vIfxqSN6A,14874
12
13
  lgdo/types/__init__.py,sha256=5V2V_e8zLb7wmOGwnkSeuQBN_0yPq6zFyo06gBHa3_c,736
13
14
  lgdo/types/array.py,sha256=Z0RyxW3iXCKlnppN97hLde6Yoj5OFL_teOg5IhCmz68,4489
14
15
  lgdo/types/arrayofequalsizedarrays.py,sha256=vq8kjt7ckztX65duRkcSZTaFxz8AtdIRIvs4D9wmcCU,4492
15
16
  lgdo/types/encoded.py,sha256=M1Z4dKZ4Dq5VkB03-jYmK_jDEfrVi8O0u2w4lZaWHA0,11302
16
17
  lgdo/types/fixedsizearray.py,sha256=zDhj9GXcwPBcnwhlh3RTrJIdATJVZ-5If39PUWBy9mw,1250
17
18
  lgdo/types/lgdo.py,sha256=COil-sFRsUWe9jXN5PdOVF3w0h6KNw-CVnzFW91kYXM,1515
18
- lgdo/types/scalar.py,sha256=UnSfVqXOJyAMwInccWXFWpXKRyjMlpfgbMTTGJm1EWE,1651
19
+ lgdo/types/scalar.py,sha256=LulBUzGZ75p_WA9OWf_nB_sENMzfRdYJReUXp0ljYZ4,1657
19
20
  lgdo/types/struct.py,sha256=UxV0wnCHoQM5rSmzEC9EIKWYV6drHVyK5Ab7UQztuj4,2984
20
- lgdo/types/table.py,sha256=h5E4Keu-a3l25WXf7m_hm2Yr4RRzGjS_WCQ_Pla7SAI,12531
21
+ lgdo/types/table.py,sha256=kgJtI4Ea6jNhsQWS_R-9Ilt7Xm9n5B97sv4Cq6m5q7E,12667
21
22
  lgdo/types/vectorofvectors.py,sha256=1oxKJDX8VVWpmvUUDHHEzEYw0RRWJrMjOB-jHRY12N4,21859
22
23
  lgdo/types/waveform_table.py,sha256=52vqjGudX5_ZR1-b087jx3vuTxJ_yEPO-dO8Dpi0ceg,9407
23
- legend_pydataobj-1.2.1.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
24
- legend_pydataobj-1.2.1.dist-info/METADATA,sha256=04PaGLGHYgrMlALV4jsT8sxg87zV32SxOO-LXrg_L4g,3577
25
- legend_pydataobj-1.2.1.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
26
- legend_pydataobj-1.2.1.dist-info/entry_points.txt,sha256=j22HoS-1cVhTtKJkDnKB49uNH0nEVER2Tpw-lVh1aws,41
27
- legend_pydataobj-1.2.1.dist-info/top_level.txt,sha256=KyR-EUloqiXcQ62IWnzBmtInDtvsHl4q2ZJAZgTcLXE,5
28
- legend_pydataobj-1.2.1.dist-info/RECORD,,
24
+ legend_pydataobj-1.4.0.dist-info/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
25
+ legend_pydataobj-1.4.0.dist-info/METADATA,sha256=NIX9NkqNDbKopKc0EgUEzy7fBdALFOfiGRJjHh1b01w,3577
26
+ legend_pydataobj-1.4.0.dist-info/WHEEL,sha256=Xo9-1PvkuimrydujYJAjF7pCkriuXBpUPEjma1nZyJ0,92
27
+ legend_pydataobj-1.4.0.dist-info/entry_points.txt,sha256=j22HoS-1cVhTtKJkDnKB49uNH0nEVER2Tpw-lVh1aws,41
28
+ legend_pydataobj-1.4.0.dist-info/top_level.txt,sha256=KyR-EUloqiXcQ62IWnzBmtInDtvsHl4q2ZJAZgTcLXE,5
29
+ legend_pydataobj-1.4.0.dist-info/RECORD,,
lgdo/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '1.2.1'
16
- __version_tuple__ = version_tuple = (1, 2, 1)
15
+ __version__ = version = '1.4.0'
16
+ __version_tuple__ = version_tuple = (1, 4, 0)
lgdo/cli.py ADDED
@@ -0,0 +1,56 @@
1
+ """legend-pydataobj's command line interface utilities."""
2
+ import argparse
3
+ import logging
4
+ import sys
5
+
6
+ import lgdo
7
+ import lgdo.logging
8
+ from lgdo import show
9
+
10
+
11
+ def lh5ls():
12
+ """:func:`.show` command line interface."""
13
+ parser = argparse.ArgumentParser(
14
+ prog="lh5ls", description="Inspect LEGEND HDF5 (LH5) file contents"
15
+ )
16
+
17
+ # global options
18
+ parser.add_argument(
19
+ "--version", action="store_true", help="""Print lgdo version and exit"""
20
+ )
21
+ parser.add_argument(
22
+ "--verbose",
23
+ "-v",
24
+ action="store_true",
25
+ help="""Increase the program verbosity""",
26
+ )
27
+ parser.add_argument(
28
+ "--debug",
29
+ "-d",
30
+ action="store_true",
31
+ help="""Increase the program verbosity to maximum""",
32
+ )
33
+
34
+ parser.add_argument(
35
+ "lh5_file",
36
+ help="""Input LH5 file.""",
37
+ )
38
+ parser.add_argument("lh5_group", nargs="?", help="""LH5 group.""", default="/")
39
+ parser.add_argument(
40
+ "--attributes", "-a", action="store_true", help="""Print HDF5 attributes too"""
41
+ )
42
+
43
+ args = parser.parse_args()
44
+
45
+ if args.verbose:
46
+ lgdo.logging.setup(logging.DEBUG)
47
+ elif args.debug:
48
+ lgdo.logging.setup(logging.DEBUG, logging.root)
49
+ else:
50
+ lgdo.logging.setup()
51
+
52
+ if args.version:
53
+ print(lgdo.__version__) # noqa: T201
54
+ sys.exit()
55
+
56
+ show(args.lh5_file, args.lh5_group, attrs=args.attributes)
lgdo/compression/base.py CHANGED
@@ -3,6 +3,8 @@ from __future__ import annotations
3
3
  import re
4
4
  from dataclasses import asdict, dataclass
5
5
 
6
+ numba_defaults: dict = {"nopython": True, "cache": True}
7
+
6
8
 
7
9
  @dataclass(frozen=True)
8
10
  class WaveformCodec:
@@ -40,6 +40,7 @@ def encode(
40
40
 
41
41
  def decode(
42
42
  obj: lgdo.VectorOfEncodedVectors | lgdo.ArrayOfEncodedEqualSizedArrays,
43
+ out_buf: lgdo.ArrayOfEqualSizedArrays = None,
43
44
  ) -> lgdo.VectorOfVectors | lgdo.ArrayOfEqualsizedArrays:
44
45
  """Decode encoded LGDOs.
45
46
 
@@ -51,6 +52,9 @@ def decode(
51
52
  ----------
52
53
  obj
53
54
  LGDO array type.
55
+ out_buf
56
+ pre-allocated LGDO for the decoded signals. See documentation of
57
+ wrapped encoders for limitations.
54
58
  """
55
59
  if "codec" not in obj.attrs:
56
60
  raise RuntimeError(
@@ -61,9 +65,11 @@ def decode(
61
65
  log.debug(f"decoding {repr(obj)} with {codec}")
62
66
 
63
67
  if _is_codec(codec, radware.RadwareSigcompress):
64
- return radware.decode(obj, shift=int(obj.attrs.get("codec_shift", 0)))
68
+ return radware.decode(
69
+ obj, sig_out=out_buf, shift=int(obj.attrs.get("codec_shift", 0))
70
+ )
65
71
  elif _is_codec(codec, varlen.ULEB128ZigZagDiff):
66
- return varlen.decode(obj)
72
+ return varlen.decode(obj, sig_out=out_buf)
67
73
  else:
68
74
  raise ValueError(f"'{codec}' not supported")
69
75