Skip to content

Commit b1ee8dd

Browse files
committed
add test for get_RF_model function + adapt tests
1 parent d02eff4 commit b1ee8dd

File tree

13 files changed

+156
-50
lines changed

13 files changed

+156
-50
lines changed

Diff for: extra/history_files/sequence_LST1_04185.0010.history

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
04185.0010 lstchain_data_r0_to_dl1 v0.7.0 Thu Mar 25 12:53:40 UTC 2021 calibration.Run04183.0000.hdf5 drs4_pedestal.Run04179.0000.fits 0
22
04185.0010 lstchain_dl1ab tailcut84 Thu Mar 25 13:06:09 UTC 2021 dl1_LST-1.Run04185.0010.h5 lstchain_standard_config_tailcut84.json 0
33
04185.0010 lstchain_check_dl1 tailcut84 Thu Mar 25 13:07:02 UTC 2021 dl1_LST-1.Run04185.0010.h5 None 0
4-
04185.0010 lstchain_dl1_to_dl2 model1 Thu Mar 25 13:07:02 UTC 2021 dl1_LST-1.Run04185.0010.h5 None 0
4+
04185.0010 lstchain_dl1_to_dl2 tailcut84/nsb_tuning_0.14 Thu Mar 25 13:07:02 UTC 2021 dl1_LST-1.Run04185.0010.h5 None 0

Diff for: src/osa/configs/sequencer.cfg

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ tailcuts_finder: lstchain_find_tailcuts
6262
dl1a_config: /software/lstchain/data/lstchain_standard_config.json
6363
store_image_dl1ab: True
6464
merge_dl1_datacheck: True
65-
apply_catB_calibration: True
65+
apply_catB_calibration: False
6666
apply_standard_dl1b_config: False
6767
use_ff_heuristic_gain_selection: False
6868
dl1b_config: /software/lstchain/data/lstchain_standard_config.json
6969
dl2_config: /software/lstchain/data/lstchain_standard_config.json
70-
mc_prod: 20240918_v0.10.12
70+
mc_prod: 20240918_v0.10.12_allsky_
7171
dl3_config: /software/lstchain/data/dl3_std_config.json
7272
max_tries: 3
7373

Diff for: src/osa/conftest.py

+54-5
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,9 @@ def sequence_list(
412412
r0_data,
413413
pedestal_ids_file,
414414
merged_run_summary,
415+
dl1b_config_files,
416+
tailcuts_log_files,
417+
rf_models,
415418
):
416419
"""Creates a sequence list from a run summary file."""
417420
options.directory = running_analysis_dir
@@ -624,7 +627,7 @@ def catB_calibration_file(catB_calib_dir):
624627

625628

626629
@pytest.fixture(scope="session")
627-
def dl1b_config_file(running_analysis_dir):
630+
def dl1b_config_files(running_analysis_dir):
628631
config_information = dedent(
629632
"""\
630633
{
@@ -644,8 +647,54 @@ def dl1b_config_file(running_analysis_dir):
644647
}
645648
}"""
646649
)
647-
config_file = running_analysis_dir / "dl1ab_Run00003.json"
648-
config_file.touch()
649-
config_file.write_text(config_information)
650-
return config_file
650+
config_file1 = running_analysis_dir / "dl1ab_Run01807.json"
651+
config_file1.touch()
652+
config_file1.write_text(config_information)
653+
config_file2 = running_analysis_dir / "dl1ab_Run01808.json"
654+
config_file2.touch()
655+
config_file2.write_text(config_information)
656+
config_file3 = running_analysis_dir / "dl1ab_Run04185.json"
657+
config_file3.touch()
658+
config_file3.write_text(config_information)
659+
return config_file1, config_file2, config_file3
651660

661+
662+
@pytest.fixture(scope="session")
663+
def tailcuts_log_files(running_analysis_dir):
664+
log_information = dedent(
665+
"""\
666+
Median of 95% quantile of pedestal charge: 5.416 p.e.
667+
668+
Additional NSB rate (over dark MC): 0.2221 p.e./ns
669+
lstchain_find_tailcuts finished successfully!
670+
"""
671+
)
672+
log_file1 = running_analysis_dir / "log_find_tailcuts_Run01807.log"
673+
log_file1.touch()
674+
log_file1.write_text(log_information)
675+
log_file2 = running_analysis_dir / "log_find_tailcuts_Run01808.log"
676+
log_file2.touch()
677+
log_file2.write_text(log_information)
678+
log_file3 = running_analysis_dir / "log_find_tailcuts_Run04185.log"
679+
log_file3.touch()
680+
log_file3.write_text(log_information)
681+
return log_file1, log_file2, log_file3
682+
683+
684+
@pytest.fixture(scope="session")
685+
def rf_models_base_dir(base_test_dir):
686+
directory = base_test_dir / "models/AllSky"
687+
directory.mkdir(parents=True, exist_ok=True)
688+
return directory
689+
690+
691+
@pytest.fixture(scope="session")
692+
def rf_models(rf_models_base_dir):
693+
rf_models_prefix = cfg.get("lstchain", "mc_prod")
694+
rf_models_path1 = rf_models_base_dir / f"{rf_models_prefix}nsb_tuning_0.00"
695+
rf_models_path1.mkdir(parents=True, exist_ok=True)
696+
rf_models_path2 = rf_models_base_dir / f"{rf_models_prefix}nsb_tuning_0.14/dec_2276"
697+
rf_models_path2.mkdir(parents=True, exist_ok=True)
698+
rf_models_path3 = rf_models_base_dir / f"{rf_models_prefix}nsb_tuning_0.14/dec_4822"
699+
rf_models_path3.mkdir(parents=True, exist_ok=True)
700+
return rf_models_path1, rf_models_path2, rf_models_path3

Diff for: src/osa/high_level/significance.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626
from osa.configs.config import cfg
2727
from osa.nightsummary.extract import get_source_list
2828
from osa.paths import DEFAULT_CFG, destination_dir, analysis_path
29-
from osa.utils.cliopts import get_prod_id, get_dl2_prod_id
29+
from osa.utils.cliopts import get_prod_id
30+
from osa.paths import get_dl2_prod_id
3031
from osa.utils.logging import myLogger
3132
from osa.utils.utils import date_to_dir, YESTERDAY
3233

@@ -209,7 +210,6 @@ def main(
209210
flat_date = date_to_dir(date)
210211
options.tel_id = telescope
211212
options.prod_id = get_prod_id()
212-
options.dl2_prod_id = get_dl2_prod_id()
213213
options.directory = analysis_path(options.tel_id)
214214
dl2_directory = Path(cfg.get("LST1", "DL2_DIR"))
215215
highlevel_directory = destination_dir("HIGH_LEVEL", create_dir=True)
@@ -232,7 +232,7 @@ def main(
232232
dl2_directory
233233
/ flat_date
234234
/ options.prod_id
235-
/ options.dl2_prod_id
235+
/ get_dl2_prod_id(run)
236236
/ f"dl2_LST-1.Run{run:05d}.h5"
237237
)
238238
df = pd.concat([df, pd.read_hdf(input_file, key=dl2_params_lstcam_key)])

Diff for: src/osa/high_level/tests/test_significance.py

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ def test_significance(
1010
systematic_correction_files,
1111
pedestal_ids_file,
1212
merged_run_summary,
13+
dl1b_config_files,
14+
tailcuts_log_files,
15+
rf_models,
1316
):
1417
output = sp.run(
1518
["theta2_significance", "-d", "2020-01-17", "-s", "LST1"],

Diff for: src/osa/job.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,10 @@ def historylevel(history_file: Path, data_type: str):
220220
exit_status = 0
221221

222222
if history_file.exists():
223-
match = re.search(r"sequence_LST1_(\d+)\.\d+", str(history_file))
223+
if data_type == "DATA":
224+
match = re.search(r"sequence_LST1_(\d+)\.\d+", str(history_file))
225+
elif data_type == "PEDCALIB":
226+
match = re.search(r"sequence_LST1_(\d+)\.history", str(history_file))
224227
run_id = int(match.group(1))
225228
for line in history_file.read_text().splitlines():
226229
words = line.split()

Diff for: src/osa/nightsummary/tests/test_extract.py

+3
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ def test_source_list(
1111
systematic_correction_files,
1212
pedestal_ids_file,
1313
merged_run_summary,
14+
dl1b_config_files,
15+
tailcuts_log_files,
16+
rf_models,
1417
):
1518
"""Test that the list of name of sources is correct."""
1619
from osa.nightsummary.extract import get_source_list

Diff for: src/osa/scripts/tests/test_osa_scripts.py

+33-8
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,10 @@ def test_simulate_processing(
6565
run_summary_file,
6666
r0_data,
6767
merged_run_summary,
68-
drive_log
68+
drive_log,
69+
dl1b_config_files,
70+
tailcuts_log_files,
71+
rf_models,
6972
):
7073

7174
for file in drs4_time_calibration_files:
@@ -80,6 +83,9 @@ def test_simulate_processing(
8083
assert run_summary_file.exists()
8184
assert merged_run_summary.exists()
8285
assert drive_log.exists()
86+
assert rf_models[1].exists()
87+
assert dl1b_config_files[0].exists()
88+
assert tailcuts_log_files[1].exists()
8389

8490
remove_provlog()
8591
rc = run_program("simulate_processing", "-p", "--force")
@@ -129,6 +135,9 @@ def test_simulated_sequencer(
129135
r0_data,
130136
merged_run_summary,
131137
gain_selection_flag_file,
138+
dl1b_config_files,
139+
tailcuts_log_files,
140+
rf_models,
132141
):
133142
assert run_summary_file.exists()
134143
assert run_catalog.exists()
@@ -186,6 +195,9 @@ def test_closer(
186195
longterm_dir,
187196
longterm_link_latest_dir,
188197
daily_datacheck_dl1_files,
198+
dl1b_config_files,
199+
tailcuts_log_files,
200+
rf_models,
189201
):
190202
# First assure that the end of night flag is not set and remove it otherwise
191203
night_finished_flag = Path(
@@ -246,10 +258,11 @@ def test_datasequence(
246258
running_analysis_dir,
247259
run_catalog,
248260
run_catalog_dir,
249-
rf_models_allsky_basedir,
250-
rf_model_path,
261+
rf_models_base_dir,
262+
rf_models,
251263
catB_closed_file,
252-
dl1b_config_file
264+
dl1b_config_files,
265+
tailcuts_log_files,
253266
):
254267
drs4_file = "drs4_pedestal.Run00001.0000.fits"
255268
calib_file = "calibration.Run00002.0000.hdf5"
@@ -263,10 +276,10 @@ def test_datasequence(
263276

264277
assert run_catalog_dir.exists()
265278
assert run_catalog.exists()
266-
assert rf_models_allsky_basedir.exists()
267-
assert rf_model_path.exists()
279+
assert rf_models_base_dir.exists()
280+
assert rf_models[1].exists()
268281
assert catB_closed_file.exists()
269-
assert dl1b_config_file.exists()
282+
assert dl1b_config_files[0].exists()
270283

271284
output = run_program(
272285
"datasequence",
@@ -279,6 +292,10 @@ def test_datasequence(
279292
f"--systematic-correction-file={systematic_correction_file}",
280293
f"--drive-file={drive_file}",
281294
f"--run-summary={runsummary_file}",
295+
f"--rf-model-path={rf_models[1]}",
296+
f"--dl1b-config={dl1b_config_files[0]}",
297+
"--dl1-prod-id=tailcut84",
298+
"--dl2-prod-id=tailcut84/nsb_tuning_0.14",
282299
run_number,
283300
"LST1",
284301
)
@@ -303,7 +320,15 @@ def test_calibration_pipeline(running_analysis_dir):
303320
assert output.returncode == 0
304321

305322

306-
def test_is_sequencer_successful(run_summary, running_analysis_dir):
323+
def test_is_sequencer_successful(
324+
run_summary,
325+
running_analysis_dir,
326+
dl1b_config_files,
327+
tailcuts_log_files,
328+
rf_models,
329+
merged_run_summary,
330+
):
331+
assert merged_run_summary.exists()
307332
options.directory = running_analysis_dir
308333
options.test = True
309334
seq_tuple = is_finished_check(run_summary)

Diff for: src/osa/tests/test_jobs.py

+24-13
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@
1515
options.prod_id = "v0.1.0"
1616

1717

18-
def test_historylevel():
18+
def test_historylevel(
19+
run_catalog,
20+
dl1b_config_files,
21+
tailcuts_log_files,
22+
rf_models,
23+
):
1924
from osa.job import historylevel
2025

21-
options.dl1_prod_id = "tailcut84"
22-
options.dl2_prod_id = "model1"
23-
2426
level, rc = historylevel(datasequence_history_file, "DATA")
2527
assert level == 0
2628
assert rc == 0
@@ -29,9 +31,6 @@ def test_historylevel():
2931
assert level == 0
3032
assert rc == 0
3133

32-
options.dl1_prod_id = "tailcut84"
33-
options.dl2_prod_id = "model2"
34-
3534
level, rc = historylevel(datasequence_history_file, "DATA")
3635
assert level == 1
3736
assert rc == 0
@@ -140,12 +139,13 @@ def test_create_job_template_scheduler(
140139
calibration_file,
141140
run_summary_file,
142141
pedestal_ids_file,
143-
rf_model_path,
142+
dl1b_config_files,
143+
rf_models,
144144
):
145145
from osa.job import data_sequence_job_template
146146

147147
assert pedestal_ids_file.exists()
148-
assert rf_model_path.exists()
148+
assert rf_models[1].exists()
149149

150150
options.test = False
151151
options.simulate = False
@@ -191,6 +191,8 @@ def test_create_job_template_scheduler(
191191
'--systematic-correction-file={Path.cwd()}/test_osa/test_files0/monitoring/PixelCalibration/Cat-A/ffactor_systematics/20200725/pro/ffactor_systematics_20200725.h5',
192192
'--drive-file={Path.cwd()}/test_osa/test_files0/monitoring/DrivePositioning/DrivePosition_log_20200117.txt',
193193
'--run-summary={run_summary_file}',
194+
'--dl1b-config={dl1b_config_files[0]}',
195+
'--dl1-prod-id=tailcut84',
194196
f'01807.{{subruns:04d}}',
195197
'LST1'
196198
])
@@ -238,6 +240,8 @@ def test_create_job_template_scheduler(
238240
'--systematic-correction-file={Path.cwd()}/test_osa/test_files0/monitoring/PixelCalibration/Cat-A/ffactor_systematics/20200725/pro/ffactor_systematics_20200725.h5',
239241
'--drive-file={Path.cwd()}/test_osa/test_files0/monitoring/DrivePositioning/DrivePosition_log_20200117.txt',
240242
'--run-summary={run_summary_file}',
243+
'--dl1b-config={dl1b_config_files[1]}',
244+
'--dl1-prod-id=tailcut84',
241245
f'--pedestal-ids-file={Path.cwd()}/test_osa/test_files0/auxiliary/PedestalFinder/20200117/pedestal_ids_Run01808.{{subruns:04d}}.h5',
242246
f'01808.{{subruns:04d}}',
243247
'LST1'
@@ -260,7 +264,8 @@ def test_create_job_template_local(
260264
run_summary_file,
261265
pedestal_ids_file,
262266
r0_data,
263-
rf_model_path,
267+
dl1b_config_files,
268+
rf_models,
264269
):
265270
"""Check the job file in local mode (assuming no scheduler)."""
266271
from osa.job import data_sequence_job_template
@@ -275,7 +280,7 @@ def test_create_job_template_local(
275280
assert file.exists()
276281

277282
assert pedestal_ids_file.exists()
278-
assert rf_model_path.exists()
283+
assert rf_models[0].exists()
279284

280285
options.test = True
281286
options.simulate = False
@@ -307,7 +312,10 @@ def test_create_job_template_local(
307312
'--systematic-correction-file={Path.cwd()}/test_osa/test_files0/monitoring/PixelCalibration/Cat-A/ffactor_systematics/20200725/pro/ffactor_systematics_20200725.h5',
308313
'--drive-file={Path.cwd()}/test_osa/test_files0/monitoring/DrivePositioning/DrivePosition_log_20200117.txt',
309314
'--run-summary={run_summary_file}',
310-
'--rf-model-path={rf_model_path}',
315+
'--dl1b-config={dl1b_config_files[0]}',
316+
'--dl1-prod-id=tailcut84',
317+
'--rf-model-path={rf_models[1]}',
318+
'--dl2-prod-id=tailcut84/nsb_tuning_0.14',
311319
f'01807.{{subruns:04d}}',
312320
'LST1'
313321
])
@@ -341,7 +349,10 @@ def test_create_job_template_local(
341349
'--systematic-correction-file={Path.cwd()}/test_osa/test_files0/monitoring/PixelCalibration/Cat-A/ffactor_systematics/20200725/pro/ffactor_systematics_20200725.h5',
342350
'--drive-file={Path.cwd()}/test_osa/test_files0/monitoring/DrivePositioning/DrivePosition_log_20200117.txt',
343351
'--run-summary={run_summary_file}',
344-
'--rf-model-path={rf_model_path}',
352+
'--dl1b-config={dl1b_config_files[1]}',
353+
'--dl1-prod-id=tailcut84',
354+
'--rf-model-path={rf_models[1]}',
355+
'--dl2-prod-id=tailcut84/nsb_tuning_0.14',
345356
f'--pedestal-ids-file={Path.cwd()}/test_osa/test_files0/auxiliary/PedestalFinder/20200117/pedestal_ids_Run01808.{{subruns:04d}}.h5',
346357
f'01808.{{subruns:04d}}',
347358
'LST1'

0 commit comments

Comments
 (0)