legend-pydataobj 1.2.1__tar.gz → 1.4.0__tar.gz

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.
Files changed (59) hide show
  1. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/PKG-INFO +1 -1
  2. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/legend_pydataobj.egg-info/PKG-INFO +1 -1
  3. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/legend_pydataobj.egg-info/SOURCES.txt +2 -0
  4. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/_version.py +2 -2
  5. legend_pydataobj-1.4.0/src/lgdo/cli.py +56 -0
  6. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/compression/base.py +2 -0
  7. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/compression/generic.py +8 -2
  8. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/compression/radware.py +226 -112
  9. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/compression/varlen.py +30 -21
  10. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/lh5_store.py +173 -64
  11. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/scalar.py +1 -1
  12. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/table.py +6 -3
  13. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/compression/test_radware_sigcompress.py +104 -75
  14. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/compression/test_uleb128_zigzag_diff.py +1 -1
  15. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/conftest.py +1 -1
  16. legend_pydataobj-1.4.0/tests/test_cli.py +13 -0
  17. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/test_lh5_store.py +117 -8
  18. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/LICENSE +0 -0
  19. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/README.md +0 -0
  20. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/pyproject.toml +0 -0
  21. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/setup.cfg +0 -0
  22. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/setup.py +0 -0
  23. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/legend_pydataobj.egg-info/dependency_links.txt +0 -0
  24. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/legend_pydataobj.egg-info/entry_points.txt +0 -0
  25. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/legend_pydataobj.egg-info/not-zip-safe +0 -0
  26. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/legend_pydataobj.egg-info/requires.txt +0 -0
  27. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/legend_pydataobj.egg-info/top_level.txt +0 -0
  28. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/__init__.py +0 -0
  29. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/compression/__init__.py +0 -0
  30. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/compression/utils.py +0 -0
  31. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/lgdo_utils.py +0 -0
  32. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/logging.py +0 -0
  33. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/__init__.py +0 -0
  34. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/array.py +0 -0
  35. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/arrayofequalsizedarrays.py +0 -0
  36. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/encoded.py +0 -0
  37. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/fixedsizearray.py +0 -0
  38. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/lgdo.py +0 -0
  39. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/struct.py +0 -0
  40. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/vectorofvectors.py +0 -0
  41. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/src/lgdo/types/waveform_table.py +0 -0
  42. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/compression/conftest.py +0 -0
  43. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/compression/sigcompress/LDQTA_r117_20200110T105115Z_cal_geds_raw-0.dat +0 -0
  44. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/compression/sigcompress/special-wf-clipped.dat +0 -0
  45. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/compression/test_compression.py +0 -0
  46. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/compression/test_str2wfcodec.py +0 -0
  47. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/test_lgdo_utils.py +0 -0
  48. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/test_lh5_iterator.py +0 -0
  49. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_array.py +0 -0
  50. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_arrayofequalsizedarrays.py +0 -0
  51. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_encoded.py +0 -0
  52. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_fixedsizearray.py +0 -0
  53. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_representations.py +0 -0
  54. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_scalar.py +0 -0
  55. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_struct.py +0 -0
  56. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_table.py +0 -0
  57. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_table_eval.py +0 -0
  58. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_vectorofvectors.py +0 -0
  59. {legend_pydataobj-1.2.1 → legend_pydataobj-1.4.0}/tests/types/test_waveform_table.py +0 -0
@@ -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,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
@@ -12,6 +12,7 @@ src/legend_pydataobj.egg-info/requires.txt
12
12
  src/legend_pydataobj.egg-info/top_level.txt
13
13
  src/lgdo/__init__.py
14
14
  src/lgdo/_version.py
15
+ src/lgdo/cli.py
15
16
  src/lgdo/lgdo_utils.py
16
17
  src/lgdo/lh5_store.py
17
18
  src/lgdo/logging.py
@@ -33,6 +34,7 @@ src/lgdo/types/table.py
33
34
  src/lgdo/types/vectorofvectors.py
34
35
  src/lgdo/types/waveform_table.py
35
36
  tests/conftest.py
37
+ tests/test_cli.py
36
38
  tests/test_lgdo_utils.py
37
39
  tests/test_lh5_iterator.py
38
40
  tests/test_lh5_store.py
@@ -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)
@@ -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)
@@ -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