Skip to content

Commit 7b70cba

Browse files
committed
bugfixes r2
1 parent 50a97d1 commit 7b70cba

File tree

10 files changed

+86
-71
lines changed

10 files changed

+86
-71
lines changed

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ dependencies = [
5555
"pygama>=2",
5656
"dspeed>=1.6",
5757
"pylegendmeta==1.2.0a2",
58-
"legend-pydataobj>=1.11.4",
58+
"legend-pydataobj>=1.11.6",
5959
"legend-daq2lh5>=1.4",
6060
]
6161

workflow/rules/dsp_pars_geds.smk

+11
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ rule build_pars_dsp_tau_geds:
4444
"--datatype {params.datatype} "
4545
"--timestamp {params.timestamp} "
4646
"--channel {params.channel} "
47+
"--raw-table-name {params.raw_table_name} "
4748
"--plot-path {output.plots} "
4849
"--output-file {output.decay_const} "
4950
"--pulser-file {input.pulser} "
@@ -80,6 +81,7 @@ rule build_pars_evtsel_geds:
8081
"--datatype {params.datatype} "
8182
"--timestamp {params.timestamp} "
8283
"--channel {params.channel} "
84+
"--raw-table-name {params.raw_table_name} "
8385
"--peak-file {output.peak_file} "
8486
"--pulser-file {input.pulser_file} "
8587
"--decay-const {input.database} "
@@ -120,6 +122,7 @@ rule build_pars_dsp_nopt_geds:
120122
"--datatype {params.datatype} "
121123
"--timestamp {params.timestamp} "
122124
"--channel {params.channel} "
125+
"--raw-table-name {params.raw_table_name} "
123126
"--inplots {input.inplots} "
124127
"--plot-path {output.plots} "
125128
"--dsp-pars {output.dsp_pars_nopt} "
@@ -139,6 +142,9 @@ rule build_pars_dsp_dplms_geds:
139142
timestamp="{timestamp}",
140143
datatype="cal",
141144
channel="{channel}",
145+
raw_table_name=lambda wildcards: get_table_name(
146+
metadata, config, "cal", wildcards.timestamp, wildcards.channel, "raw"
147+
),
142148
output:
143149
dsp_pars=temp(get_pattern_pars_tmp_channel(config, "dsp", "dplms")),
144150
lh5_path=temp(get_pattern_pars_tmp_channel(config, "dsp", extension="lh5")),
@@ -159,6 +165,7 @@ rule build_pars_dsp_dplms_geds:
159165
"--datatype {params.datatype} "
160166
"--timestamp {params.timestamp} "
161167
"--channel {params.channel} "
168+
"--raw-table-name {params.raw_table_name} "
162169
"--dsp-pars {output.dsp_pars} "
163170
"--lh5-path {output.lh5_path} "
164171
"--plot-path {output.plots} "
@@ -174,6 +181,9 @@ rule build_pars_dsp_eopt_geds:
174181
timestamp="{timestamp}",
175182
datatype="cal",
176183
channel="{channel}",
184+
raw_table_name=lambda wildcards: get_table_name(
185+
metadata, config, "cal", wildcards.timestamp, wildcards.channel, "raw"
186+
),
177187
output:
178188
dsp_pars=temp(get_pattern_pars_tmp_channel(config, "dsp_eopt")),
179189
qbb_grid=temp(
@@ -192,6 +202,7 @@ rule build_pars_dsp_eopt_geds:
192202
"--datatype {params.datatype} "
193203
"--timestamp {params.timestamp} "
194204
"--channel {params.channel} "
205+
"--raw-table-name {params.raw_table_name} "
195206
"--peak-file {input.peak_file} "
196207
"--inplots {input.inplots} "
197208
"--decay-const {input.decay_const} "

workflow/rules/tcm.smk

+4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ rule build_pulser_ids:
4747
timestamp="{timestamp}",
4848
datatype="cal",
4949
channel="{channel}",
50+
rawid=lambda wildcards: metadata.channelmap(wildcards.timestamp, system="cal")[
51+
wildcards.channel
52+
].daq.rawid,
5053
output:
5154
pulser=temp(get_pattern_pars_tmp_channel(config, "tcm", "pulser_ids")),
5255
log:
@@ -61,6 +64,7 @@ rule build_pulser_ids:
6164
"--datatype {params.datatype} "
6265
"--timestamp {params.timestamp} "
6366
"--channel {params.channel} "
67+
"--rawid {params.rawid} "
6468
"--tcm-files {params.input} "
6569
"--pulser-file {output.pulser} "
6670
"--metadata {meta} "

workflow/src/legenddataflow/scripts/par/geds/dsp/dplms.py

+12-10
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
from pygama.pargen.dplms_ge_dict import dplms_ge_dict
1212

1313
from .....log import build_log
14-
from ....table_name import get_table_name
1514

1615

1716
def par_geds_dsp_dplms() -> None:
@@ -23,11 +22,13 @@ def par_geds_dsp_dplms() -> None:
2322

2423
argparser.add_argument("--log", help="log_file", type=str)
2524
argparser.add_argument("--configs", help="configs", type=str, required=True)
26-
argparser.add_argument("--metadata", help="metadata", type=str, required=True)
2725

2826
argparser.add_argument("--datatype", help="Datatype", type=str, required=True)
2927
argparser.add_argument("--timestamp", help="Timestamp", type=str, required=True)
3028
argparser.add_argument("--channel", help="Channel", type=str, required=True)
29+
argparser.add_argument(
30+
"--raw-table-name", help="raw table name", type=str, required=True
31+
)
3132

3233
argparser.add_argument("--dsp-pars", help="dsp_pars", type=str, required=True)
3334
argparser.add_argument("--lh5-path", help="lh5_path", type=str, required=True)
@@ -41,8 +42,6 @@ def par_geds_dsp_dplms() -> None:
4142
log = build_log(config_dict, args.log)
4243
sto = lh5.LH5Store()
4344

44-
channel = get_table_name(args.metadata, args.timestamp, args.datatype, args.channel)
45-
4645
configs = TextDB(args.configs).on(args.timestamp, system=args.datatype)
4746
dsp_config = config_dict["inputs"]["proc_chain"][args.channel]
4847

@@ -57,10 +56,13 @@ def par_geds_dsp_dplms() -> None:
5756

5857
t0 = time.time()
5958
log.info("\nLoad fft data")
60-
energies = sto.read(f"{channel}/raw/daqenergy", fft_files)[0]
59+
energies = sto.read(f"{args.raw_table_name}/daqenergy", fft_files)[0]
6160
idxs = np.where(energies.nda == 0)[0]
6261
raw_fft = sto.read(
63-
f"{channel}/raw", fft_files, n_rows=dplms_dict["n_baselines"], idx=idxs
62+
f"{args.raw_table_name}/raw",
63+
fft_files,
64+
n_rows=dplms_dict["n_baselines"],
65+
idx=idxs,
6466
)[0]
6567
t1 = time.time()
6668
log.info(f"Time to load fft data {(t1-t0):.2f} s, total events {len(raw_fft)}")
@@ -70,14 +72,14 @@ def par_geds_dsp_dplms() -> None:
7072
# kev_widths = [tuple(kev_width) for kev_width in dplms_dict["kev_widths"]]
7173

7274
peaks_rounded = [int(peak) for peak in peaks_kev]
73-
peaks = sto.read(f"{channel}/raw", args.peak_file, field_mask=["peak"])[0][
75+
peaks = sto.read(args.raw_table_name, args.peak_file, field_mask=["peak"])[0][
7476
"peak"
7577
].nda
7678
ids = np.isin(peaks, peaks_rounded)
7779
peaks = peaks[ids]
7880
# idx_list = [np.where(peaks == peak)[0] for peak in peaks_rounded]
7981

80-
raw_cal = sto.read(f"{channel}/raw", args.peak_file, idx=ids)[0]
82+
raw_cal = sto.read(args.raw_table_name, args.peak_file, idx=ids)[0]
8183
log.info(
8284
f"Time to run event selection {(time.time()-t1):.2f} s, total events {len(raw_cal)}"
8385
)
@@ -111,7 +113,7 @@ def par_geds_dsp_dplms() -> None:
111113
coeffs = out_dict["dplms"].pop("coefficients")
112114
dplms_pars = Table(col_dict={"coefficients": Array(coeffs)})
113115
out_dict["dplms"]["coefficients"] = (
114-
f"loadlh5('{args.lh5_path}', '{channel}/dplms/coefficients')"
116+
f"loadlh5('{args.lh5_path}', '{args.channel}/dplms/coefficients')"
115117
)
116118

117119
log.info(f"DPLMS creation finished in {(time.time()-t0)/60} minutes")
@@ -129,7 +131,7 @@ def par_geds_dsp_dplms() -> None:
129131
Path(args.lh5_path).parent.mkdir(parents=True, exist_ok=True)
130132
sto.write(
131133
Table(col_dict={"dplms": dplms_pars}),
132-
name=channel,
134+
name=args.channel,
133135
lh5_file=args.lh5_path,
134136
wo_mode="overwrite",
135137
)

workflow/src/legenddataflow/scripts/par/geds/dsp/eopt.py

+5-6
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
)
2020

2121
from .....log import build_log
22-
from ....table_name import get_table_name
2322

2423
warnings.filterwarnings(action="ignore", category=RuntimeWarning)
2524
warnings.filterwarnings(action="ignore", category=np.RankWarning)
@@ -34,11 +33,13 @@ def par_geds_dsp_eopt() -> None:
3433

3534
argparser.add_argument("--log", help="log_file", type=str)
3635
argparser.add_argument("--configs", help="configs", type=str, required=True)
37-
argparser.add_argument("--metadata", help="metadata", type=str, required=True)
3836

3937
argparser.add_argument("--datatype", help="Datatype", type=str, required=True)
4038
argparser.add_argument("--timestamp", help="Timestamp", type=str, required=True)
4139
argparser.add_argument("--channel", help="Channel", type=str, required=True)
40+
argparser.add_argument(
41+
"--raw-table-name", help="raw table name", type=str, required=True
42+
)
4243

4344
argparser.add_argument(
4445
"--final-dsp-pars", help="final_dsp_pars", type=str, required=True
@@ -59,8 +60,6 @@ def par_geds_dsp_eopt() -> None:
5960
sto = lh5.LH5Store()
6061
t0 = time.time()
6162

62-
channel = get_table_name(args.metadata, args.timestamp, args.datatype, args.channel)
63-
6463
dsp_config = config_dict["inputs"]["processing_chain"][args.channel]
6564
opt_json = config_dict["inputs"]["optimiser_config"][args.channel]
6665

@@ -107,14 +106,14 @@ def par_geds_dsp_eopt() -> None:
107106
)
108107

109108
peaks_rounded = [int(peak) for peak in peaks_kev]
110-
peaks = sto.read(f"{channel}/raw", args.peak_file, field_mask=["peak"])[0][
109+
peaks = sto.read(args.raw_table_name, args.peak_file, field_mask=["peak"])[0][
111110
"peak"
112111
].nda
113112
ids = np.isin(peaks, peaks_rounded)
114113
peaks = peaks[ids]
115114
idx_list = [np.where(peaks == peak)[0] for peak in peaks_rounded]
116115

117-
tb_data = sto.read(f"{channel}/raw", args.peak_file, idx=ids)[0]
116+
tb_data = sto.read(args.raw_table_name, args.peak_file, idx=ids)[0]
118117

119118
t1 = time.time()
120119
log.info(f"Data Loaded in {(t1-t0)/60} minutes")

workflow/src/legenddataflow/scripts/par/geds/dsp/evtsel.py

+14-17
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717

1818
from .....log import build_log
1919
from ....pulser_removal import get_pulser_mask
20-
from ....table_name import get_table_name
2120

2221
warnings.filterwarnings(action="ignore", category=RuntimeWarning)
2322

@@ -85,10 +84,10 @@ def par_geds_dsp_evtsel() -> None:
8584
argparser = argparse.ArgumentParser()
8685
argparser.add_argument("--raw-filelist", help="raw_filelist", type=str)
8786
argparser.add_argument(
88-
"--tcm-filelist", help="tcm_filelist", type=str, required=False
87+
"--pulser-file", help="pulser_file", type=str, required=False
8988
)
9089
argparser.add_argument(
91-
"--pulser-file", help="pulser_file", type=str, required=False
90+
"-p", "--no-pulse", help="no pulser present", action="store_true"
9291
)
9392

9493
argparser.add_argument("--decay_const", help="decay_const", type=str, required=True)
@@ -98,11 +97,13 @@ def par_geds_dsp_evtsel() -> None:
9897

9998
argparser.add_argument("--log", help="log_file", type=str)
10099
argparser.add_argument("--configs", help="configs", type=str, required=True)
101-
argparser.add_argument("--metadata", help="metadata", type=str, required=True)
102100

103101
argparser.add_argument("--datatype", help="Datatype", type=str, required=True)
104102
argparser.add_argument("--timestamp", help="Timestamp", type=str, required=True)
105103
argparser.add_argument("--channel", help="Channel", type=str, required=True)
104+
argparser.add_argument(
105+
"--raw-table-name", help="raw table name", type=str, required=True
106+
)
106107

107108
argparser.add_argument("--peak-file", help="peak_file", type=str, required=True)
108109
args = argparser.parse_args()
@@ -115,8 +116,6 @@ def par_geds_dsp_evtsel() -> None:
115116
sto = lh5.LH5Store()
116117
t0 = time.time()
117118

118-
channel = get_table_name(args.metadata, args.timestamp, args.datatype, args.channel)
119-
120119
dsp_config = config_dict["inputs"]["processing_chain"][args.channel]
121120
peak_json = config_dict["inputs"]["peak_config"][args.channel]
122121

@@ -134,16 +133,7 @@ def par_geds_dsp_evtsel() -> None:
134133
files = f.read().splitlines()
135134
raw_files = sorted(files)
136135

137-
mask = get_pulser_mask(
138-
pulser_file=args.pulser_file,
139-
tcm_filelist=args.tcm_filelist,
140-
channel=channel,
141-
pulser_multiplicity_threshold=peak_dict.get(
142-
"pulser_multiplicity_threshold"
143-
),
144-
)
145-
146-
raw_dict = Props.read_from(args.raw_cal)[channel]["pars"]["operations"]
136+
raw_dict = Props.read_from(args.raw_cal)[args.channel]["pars"]["operations"]
147137

148138
peaks_kev = peak_dict["peaks"]
149139
kev_widths = peak_dict["kev_widths"]
@@ -152,7 +142,7 @@ def par_geds_dsp_evtsel() -> None:
152142
final_cut_field = peak_dict["final_cut_field"]
153143
energy_parameter = peak_dict.get("energy_parameter", "trapTmax")
154144

155-
lh5_path = f"{channel}/raw"
145+
lh5_path = args.raw_table_name
156146

157147
if not isinstance(kev_widths, list):
158148
kev_widths = [kev_widths]
@@ -164,6 +154,13 @@ def par_geds_dsp_evtsel() -> None:
164154
lh5_path, raw_files, field_mask=["daqenergy", "t_sat_lo", "timestamp"]
165155
)[0]
166156

157+
if args.no_pulse is False:
158+
mask = get_pulser_mask(
159+
args.pulser_file,
160+
)
161+
else:
162+
mask = np.full(len(tb), False)
163+
167164
discharges = tb["t_sat_lo"].nda > 0
168165
discharge_timestamps = np.where(tb["timestamp"].nda[discharges])[0]
169166
is_recovering = np.full(len(tb), False, dtype=bool)

workflow/src/legenddataflow/scripts/par/geds/dsp/nopt.py

+15-11
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import pygama.pargen.noise_optimization as pno
99
from dbetto import TextDB
1010
from dbetto.catalog import Props
11-
from legendmeta import LegendMetadata
1211
from pygama.pargen.data_cleaning import generate_cuts, get_cut_indexes
1312
from pygama.pargen.dsp_optimize import run_one_dsp
1413

@@ -24,12 +23,14 @@ def par_geds_dsp_nopt() -> None:
2423
argparser.add_argument("--inplots", help="inplots", type=str)
2524

2625
argparser.add_argument("--configs", help="configs", type=str, required=True)
27-
argparser.add_argument("--metadata", help="metadata", type=str, required=True)
2826
argparser.add_argument("--log", help="log_file", type=str)
2927

3028
argparser.add_argument("--datatype", help="Datatype", type=str, required=True)
3129
argparser.add_argument("--timestamp", help="Timestamp", type=str, required=True)
3230
argparser.add_argument("--channel", help="Channel", type=str, required=True)
31+
argparser.add_argument(
32+
"--raw-table-name", help="raw table name", type=str, required=True
33+
)
3334

3435
argparser.add_argument("--dsp-pars", help="dsp_pars", type=str, required=True)
3536
argparser.add_argument("--plot-path", help="plot_path", type=str)
@@ -43,10 +44,6 @@ def par_geds_dsp_nopt() -> None:
4344

4445
t0 = time.time()
4546

46-
meta = LegendMetadata(path=args.metadata)
47-
channel_dict = meta.channelmap(args.timestamp, system=args.datatype)
48-
channel = f"ch{channel_dict[args.channel].daq.rawid:07}"
49-
5047
dsp_config = config_dict["inputs"]["processing_chain"][args.channel]
5148
opt_json = config_dict["inputs"]["optimiser_config"][args.channel]
5249

@@ -59,10 +56,12 @@ def par_geds_dsp_nopt() -> None:
5956

6057
raw_files = sorted(files)
6158

62-
energies = sto.read(f"{channel}/raw/daqenergy", raw_files)[0]
59+
energies = sto.read(
60+
f"{args.raw_table_name}", raw_files, field_mask=["daqenergy"]
61+
)["daqenergy"][0]
6362
idxs = np.where(energies.nda == 0)[0]
6463
tb_data = sto.read(
65-
f"{channel}/raw", raw_files, n_rows=opt_dict["n_events"], idx=idxs
64+
"args.raw_table_name", raw_files, n_rows=opt_dict["n_events"], idx=idxs
6665
)[0]
6766
t1 = time.time()
6867
log.info(f"Time to open raw files {t1-t0:.2f} s, n. baselines {len(tb_data)}")
@@ -72,7 +71,7 @@ def par_geds_dsp_nopt() -> None:
7271
cut_dict = generate_cuts(dsp_data, cut_dict=opt_dict.pop("cut_pars"))
7372
cut_idxs = get_cut_indexes(dsp_data, cut_dict)
7473
tb_data = sto.read(
75-
f"{channel}/raw",
74+
args.raw_table_name,
7675
raw_files,
7776
n_rows=opt_dict.pop("n_events"),
7877
idx=idxs[cut_idxs],
@@ -84,11 +83,16 @@ def par_geds_dsp_nopt() -> None:
8483

8584
if args.plot_path:
8685
out_dict, plot_dict = pno.noise_optimization(
87-
tb_data, dsp_config, db_dict.copy(), opt_dict, channel, display=1
86+
tb_data,
87+
dsp_config,
88+
db_dict.copy(),
89+
opt_dict,
90+
args.raw_table_name,
91+
display=1,
8892
)
8993
else:
9094
out_dict = pno.noise_optimization(
91-
raw_files, dsp_config, db_dict.copy(), opt_dict, channel
95+
raw_files, dsp_config, db_dict.copy(), opt_dict, args.raw_table_name
9296
)
9397

9498
t2 = time.time()

0 commit comments

Comments
 (0)