legend-dataflow-scripts 0.2.3__tar.gz → 0.3.0a1__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 (44) hide show
  1. {legend_dataflow_scripts-0.2.3/src/legend_dataflow_scripts.egg-info → legend_dataflow_scripts-0.3.0a1}/PKG-INFO +4 -4
  2. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/pyproject.toml +3 -3
  3. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1/src/legend_dataflow_scripts.egg-info}/PKG-INFO +4 -4
  4. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legend_dataflow_scripts.egg-info/requires.txt +3 -3
  5. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/_version.py +3 -3
  6. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/eopt.py +3 -3
  7. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/evtsel.py +10 -6
  8. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/nopt.py +2 -2
  9. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/pz.py +2 -2
  10. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/hit/aoe.py +7 -5
  11. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/hit/ecal.py +6 -3
  12. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/hit/lq.py +6 -3
  13. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/hit/qc.py +15 -9
  14. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/tier/dsp.py +4 -4
  15. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/LICENSE +0 -0
  16. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/README.md +0 -0
  17. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/setup.cfg +0 -0
  18. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legend_dataflow_scripts.egg-info/SOURCES.txt +0 -0
  19. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legend_dataflow_scripts.egg-info/dependency_links.txt +0 -0
  20. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legend_dataflow_scripts.egg-info/entry_points.txt +0 -0
  21. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legend_dataflow_scripts.egg-info/not-zip-safe +0 -0
  22. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legend_dataflow_scripts.egg-info/top_level.txt +0 -0
  23. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/__init__.py +0 -0
  24. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/__init__.py +0 -0
  25. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/__init__.py +0 -0
  26. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/__init__.py +0 -0
  27. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/dplms.py +0 -0
  28. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/svm.py +0 -0
  29. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/dsp/svm_build.py +0 -0
  30. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/par/geds/hit/__init__.py +0 -0
  31. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/tier/__init__.py +0 -0
  32. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/tier/hit.py +0 -0
  33. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/utils/__init__.py +0 -0
  34. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/utils/alias_table.py +0 -0
  35. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/utils/cfgtools.py +0 -0
  36. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/utils/convert_np.py +0 -0
  37. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/utils/log.py +0 -0
  38. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/utils/plot_dict.py +0 -0
  39. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/utils/pulser_removal.py +0 -0
  40. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/workflow/__init__.py +0 -0
  41. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/workflow/execenv.py +0 -0
  42. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/workflow/filedb.py +0 -0
  43. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/workflow/pre_compile_catalog.py +0 -0
  44. {legend_dataflow_scripts-0.2.3 → legend_dataflow_scripts-0.3.0a1}/src/legenddataflowscripts/workflow/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: legend-dataflow-scripts
3
- Version: 0.2.3
3
+ Version: 0.3.0a1
4
4
  Summary: Python package for the processing scripts for LEGEND-200 data
5
5
  Author-email: George Marshall <ggmarsh@uw.edu>, Luigi Pertoldi <gipert@pm.me>
6
6
  Maintainer: The LEGEND Collaboration
@@ -19,10 +19,10 @@ Requires-Python: >=3.11
19
19
  Description-Content-Type: text/markdown
20
20
  Requires-Dist: colorlog
21
21
  Requires-Dist: dbetto>=1.2.3
22
- Requires-Dist: pygama>=2.1
23
- Requires-Dist: dspeed>=1.6
22
+ Requires-Dist: pygama>=2.3.0a1
23
+ Requires-Dist: dspeed>=2.0
24
24
  Requires-Dist: pylegendmeta>=1.2.5
25
- Requires-Dist: legend-pydataobj>=1.11
25
+ Requires-Dist: legend-pydataobj>=1.16
26
26
  Requires-Dist: pip
27
27
  Provides-Extra: test
28
28
  Requires-Dist: legend-dataflow-scripts; extra == "test"
@@ -52,10 +52,10 @@ dynamic = ["version"]
52
52
  dependencies = [
53
53
  "colorlog",
54
54
  "dbetto>=1.2.3",
55
- "pygama>=2.1",
56
- "dspeed>=1.6",
55
+ "pygama>=2.3.0a1",
56
+ "dspeed>=2.0",
57
57
  "pylegendmeta>=1.2.5",
58
- "legend-pydataobj>=1.11",
58
+ "legend-pydataobj>=1.16",
59
59
  "pip",
60
60
  ]
61
61
  # "legend-daq2lh5 @ file:///${PROJECT_ROOT}/software/python/src/legend-daq2lh5
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: legend-dataflow-scripts
3
- Version: 0.2.3
3
+ Version: 0.3.0a1
4
4
  Summary: Python package for the processing scripts for LEGEND-200 data
5
5
  Author-email: George Marshall <ggmarsh@uw.edu>, Luigi Pertoldi <gipert@pm.me>
6
6
  Maintainer: The LEGEND Collaboration
@@ -19,10 +19,10 @@ Requires-Python: >=3.11
19
19
  Description-Content-Type: text/markdown
20
20
  Requires-Dist: colorlog
21
21
  Requires-Dist: dbetto>=1.2.3
22
- Requires-Dist: pygama>=2.1
23
- Requires-Dist: dspeed>=1.6
22
+ Requires-Dist: pygama>=2.3.0a1
23
+ Requires-Dist: dspeed>=2.0
24
24
  Requires-Dist: pylegendmeta>=1.2.5
25
- Requires-Dist: legend-pydataobj>=1.11
25
+ Requires-Dist: legend-pydataobj>=1.16
26
26
  Requires-Dist: pip
27
27
  Provides-Extra: test
28
28
  Requires-Dist: legend-dataflow-scripts; extra == "test"
@@ -1,9 +1,9 @@
1
1
  colorlog
2
2
  dbetto>=1.2.3
3
- pygama>=2.1
4
- dspeed>=1.6
3
+ pygama>=2.3.0a1
4
+ dspeed>=2.0
5
5
  pylegendmeta>=1.2.5
6
- legend-pydataobj>=1.11
6
+ legend-pydataobj>=1.16
7
7
  pip
8
8
 
9
9
  [dev]
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.2.3'
32
- __version_tuple__ = version_tuple = (0, 2, 3)
31
+ __version__ = version = '0.3.0a1'
32
+ __version_tuple__ = version_tuple = (0, 3, 0, 'a1')
33
33
 
34
- __commit_id__ = commit_id = 'g43d598320'
34
+ __commit_id__ = commit_id = 'gc8848acbc'
@@ -10,13 +10,13 @@ import numpy as np
10
10
  import pygama.pargen.energy_optimisation as om # noqa: F401
11
11
  import sklearn.gaussian_process.kernels as ker
12
12
  from dbetto.catalog import Props
13
+ from dspeed import build_dsp
13
14
  from dspeed.units import unit_registry as ureg
14
15
  from lgdo import lh5
15
16
  from pygama.math.distributions import hpge_peak
16
17
  from pygama.pargen.dsp_optimize import (
17
18
  BayesianOptimizer,
18
19
  run_bayesian_optimisation,
19
- run_one_dsp,
20
20
  )
21
21
 
22
22
  from ....utils import build_log
@@ -127,7 +127,7 @@ def par_geds_dsp_eopt() -> None:
127
127
 
128
128
  dsp_config["outputs"] = ["tp_99", "tp_0_est", "dt_eff"]
129
129
 
130
- init_data = run_one_dsp(tb_data, dsp_config, db_dict=db_dict, verbosity=0)
130
+ init_data = build_dsp(raw_in=tb_data, dsp_config=dsp_config, database=db_dict)
131
131
  full_dt = (init_data["tp_99"].nda - init_data["tp_0_est"].nda)[idx_list[-1]]
132
132
  flat_val = np.ceil(1.1 * np.nanpercentile(full_dt, 99) / 100) / 10
133
133
 
@@ -193,7 +193,7 @@ def par_geds_dsp_eopt() -> None:
193
193
  msg = f"Initialising values {i + 1} : {db_dict}"
194
194
  log.info(msg)
195
195
 
196
- tb_out = run_one_dsp(tb_data, dsp_config, db_dict=db_dict, verbosity=0)
196
+ tb_out = build_dsp(raw_in=tb_data, dsp_config=dsp_config, database=db_dict)
197
197
 
198
198
  res = fom(tb_out, kwarg_dict[0])
199
199
  results_cusp.append(res)
@@ -12,9 +12,9 @@ import numpy as np
12
12
  import pygama.math.histogram as pgh
13
13
  import pygama.pargen.energy_cal as pgc
14
14
  from dbetto.catalog import Props
15
+ from dspeed import build_dsp
15
16
  from lgdo import lh5
16
17
  from pygama.pargen.data_cleaning import generate_cuts, get_keys
17
- from pygama.pargen.dsp_optimize import run_one_dsp
18
18
 
19
19
  from ....utils import build_log, get_pulser_mask
20
20
 
@@ -247,7 +247,7 @@ def par_geds_dsp_evtsel() -> None:
247
247
  ]
248
248
 
249
249
  log.debug("Processing data")
250
- tb_data = run_one_dsp(input_data, dsp_config, db_dict=db_dict)
250
+ tb_data = build_dsp(raw_in=input_data, dsp_config=dsp_config, database=db_dict)
251
251
 
252
252
  if cut_parameters is not None:
253
253
  cut_dict = generate_cuts(tb_data, cut_parameters)
@@ -297,8 +297,10 @@ def par_geds_dsp_evtsel() -> None:
297
297
  peak_dict["obj_buf_start"] += n_rows_read_i
298
298
  if peak_dict["n_rows_read"] >= 10000 or file == raw_files[-1]:
299
299
  if "e_lower_lim" not in peak_dict:
300
- tb_out = run_one_dsp(
301
- peak_dict["obj_buf"], dsp_config, db_dict=db_dict
300
+ tb_out = build_dsp(
301
+ raw_in=peak_dict["obj_buf"],
302
+ dsp_config=dsp_config,
303
+ database=db_dict,
302
304
  )
303
305
  energy = tb_out[energy_parameter].nda
304
306
 
@@ -396,8 +398,10 @@ def par_geds_dsp_evtsel() -> None:
396
398
  peak_dict["obj_buf"] is not None
397
399
  and len(peak_dict["obj_buf"]) > 0
398
400
  ):
399
- tb_out = run_one_dsp(
400
- peak_dict["obj_buf"], dsp_config, db_dict=db_dict
401
+ tb_out = build_dsp(
402
+ raw_in=peak_dict["obj_buf"],
403
+ dsp_config=dsp_config,
404
+ database=db_dict,
401
405
  )
402
406
  out_tbl, n_wfs = get_out_data(
403
407
  peak_dict["obj_buf"],
@@ -8,9 +8,9 @@ from pathlib import Path
8
8
  import numpy as np
9
9
  import pygama.pargen.noise_optimization as pno
10
10
  from dbetto.catalog import Props
11
+ from dspeed import build_dsp
11
12
  from lgdo import lh5
12
13
  from pygama.pargen.data_cleaning import generate_cuts, get_cut_indexes
13
- from pygama.pargen.dsp_optimize import run_one_dsp
14
14
 
15
15
  from ....utils import build_log
16
16
 
@@ -73,7 +73,7 @@ def par_geds_dsp_nopt() -> None:
73
73
 
74
74
  msg = f"Select baselines {len(tb_data)}"
75
75
  log.info(msg)
76
- dsp_data = run_one_dsp(tb_data, dsp_config)
76
+ dsp_data = build_dsp(raw_in=tb_data, dsp_config=dsp_config)
77
77
  cut_dict = generate_cuts(dsp_data, cut_dict=opt_dict.pop("cut_pars"))
78
78
  cut_idxs = get_cut_indexes(dsp_data, cut_dict)
79
79
  tb_data = lh5.read(
@@ -7,9 +7,9 @@ from pathlib import Path
7
7
 
8
8
  import numpy as np
9
9
  from dbetto.catalog import Props
10
+ from dspeed import build_dsp
10
11
  from lgdo import lh5
11
12
  from pygama.pargen.data_cleaning import get_cut_indexes
12
- from pygama.pargen.dsp_optimize import run_one_dsp
13
13
  from pygama.pargen.pz_correct import PZCorrect
14
14
 
15
15
  from ....utils import (
@@ -134,7 +134,7 @@ def par_geds_dsp_pz() -> None:
134
134
  if "frac" in dsp_config["outputs"]:
135
135
  dsp_config_optimise_removed["outputs"].remove("frac")
136
136
 
137
- tb_out = run_one_dsp(tb_data, dsp_config_optimise_removed)
137
+ tb_out = build_dsp(raw_in=tb_data, dsp_config=dsp_config_optimise_removed)
138
138
  log.debug("Processed Data")
139
139
  cut_parameters = kwarg_dict.get("cut_parameters", None)
140
140
  if cut_parameters is not None:
@@ -251,14 +251,13 @@ def par_geds_hit_aoe() -> None:
251
251
  ]
252
252
 
253
253
  if "dt_param" in kwarg_dict:
254
- params += kwarg_dict["dt_param"]
254
+ params.append(kwarg_dict["dt_param"])
255
255
  else:
256
256
  params.append("dt_eff")
257
257
 
258
258
  if "dt_cut" in kwarg_dict and kwarg_dict["dt_cut"] is not None:
259
259
  cal_dict.update(kwarg_dict["dt_cut"]["cut"])
260
260
  params.append(kwarg_dict["dt_cut"]["out_param"])
261
-
262
261
  # load data in
263
262
  data, threshold_mask = load_data(
264
263
  files,
@@ -271,9 +270,12 @@ def par_geds_hit_aoe() -> None:
271
270
  msg = f"Loaded {len(data)} events"
272
271
  log.info(msg)
273
272
 
274
- mask = get_pulser_mask(
275
- pulser_file=args.pulser_file,
276
- )
273
+ if args.pulser_file is not None:
274
+ mask = get_pulser_mask(
275
+ pulser_file=args.pulser_file,
276
+ )
277
+ else:
278
+ mask = np.zeros(len(threshold_mask), dtype=bool)
277
279
 
278
280
  data["is_pulser"] = mask[threshold_mask]
279
281
 
@@ -532,9 +532,12 @@ def par_geds_hit_ecal() -> None:
532
532
  cal_energy_param="trapTmax",
533
533
  )
534
534
 
535
- mask = get_pulser_mask(
536
- pulser_file=args.pulser_file,
537
- )
535
+ if args.pulser_file is not None:
536
+ mask = get_pulser_mask(
537
+ pulser_file=args.pulser_file,
538
+ )
539
+ else:
540
+ mask = np.zeros(len(threshold_mask), dtype=bool)
538
541
 
539
542
  data["is_pulser"] = mask[threshold_mask]
540
543
 
@@ -288,9 +288,12 @@ def par_geds_hit_lq() -> None:
288
288
  msg = f"Loaded {len(data)} events"
289
289
  log.info(msg)
290
290
 
291
- mask = get_pulser_mask(
292
- pulser_file=args.pulser_file,
293
- )
291
+ if args.pulser_file is not None:
292
+ mask = get_pulser_mask(
293
+ pulser_file=args.pulser_file,
294
+ )
295
+ else:
296
+ mask = np.zeros(len(threshold_mask), dtype=bool)
294
297
 
295
298
  data["is_pulser"] = mask[threshold_mask]
296
299
 
@@ -39,17 +39,18 @@ def build_qc(
39
39
  ):
40
40
  search_name = table_name if table_name[-1] == "/" else table_name + "/"
41
41
 
42
- kwarg_dict_fft = config["fft_fields"]
42
+ kwarg_dict_fft = config.get("fft_fields", None)
43
43
  kwarg_dict_cal = config["cal_fields"]
44
44
 
45
45
  cut_fields = get_keys(
46
46
  [key.replace(search_name, "") for key in ls(cal_files[0], search_name)],
47
47
  kwarg_dict_cal["cut_parameters"],
48
48
  )
49
- cut_fields += get_keys(
50
- [key.replace(search_name, "") for key in ls(cal_files[0], search_name)],
51
- kwarg_dict_fft["cut_parameters"],
52
- )
49
+ if kwarg_dict_fft is not None:
50
+ cut_fields += get_keys(
51
+ [key.replace(search_name, "") for key in ls(cal_files[0], search_name)],
52
+ kwarg_dict_fft["cut_parameters"],
53
+ )
53
54
 
54
55
  if "initial_cal_cuts" in config:
55
56
  init_cal = config["initial_cal_cuts"]
@@ -147,9 +148,12 @@ def build_qc(
147
148
  cal_energy_param="trapTmax",
148
149
  )
149
150
 
150
- mask = get_pulser_mask(
151
- pulser_file=pulser_file,
152
- )
151
+ if pulser_file is not None:
152
+ mask = get_pulser_mask(
153
+ pulser_file=pulser_file,
154
+ )
155
+ else:
156
+ mask = np.zeros(len(threshold_mask), dtype=bool)
153
157
 
154
158
  data["is_pulser"] = mask[threshold_mask]
155
159
 
@@ -289,7 +293,9 @@ def build_qc(
289
293
  def par_geds_hit_qc() -> None:
290
294
  argparser = argparse.ArgumentParser()
291
295
  argparser.add_argument("--cal-files", help="cal_files", nargs="*", type=str)
292
- argparser.add_argument("--fft-files", help="fft_files", nargs="*", type=str)
296
+ argparser.add_argument(
297
+ "--fft-files", help="fft_files", nargs="*", type=str, default=[]
298
+ )
293
299
 
294
300
  argparser.add_argument(
295
301
  "--tcm-filelist", help="tcm_filelist", type=str, required=False
@@ -145,8 +145,8 @@ def build_tier_dsp() -> None:
145
145
  process_kwargs_list = []
146
146
  for i, config in enumerate(chan_configs):
147
147
  kwargs = {
148
- "f_raw": args.input,
149
- "f_dsp": dsp_files[i],
148
+ "raw_in": args.input,
149
+ "dsp_out": dsp_files[i],
150
150
  "chan_config": config,
151
151
  "database": database_dict,
152
152
  "write_mode": "r",
@@ -171,8 +171,8 @@ def build_tier_dsp() -> None:
171
171
 
172
172
  else:
173
173
  build_dsp(
174
- args.input,
175
- args.output,
174
+ raw_in=args.input,
175
+ dsp_out=args.output,
176
176
  database=database_dict,
177
177
  chan_config=dsp_cfg_tbl_dict,
178
178
  write_mode="r",