gammasimtools 0.22.0__py3-none-any.whl → 0.24.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.
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.24.0.dist-info}/METADATA +2 -1
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.24.0.dist-info}/RECORD +128 -125
- simtools/_version.py +2 -2
- simtools/application_control.py +118 -0
- simtools/applications/calculate_incident_angles.py +17 -22
- simtools/applications/convert_all_model_parameters_from_simtel.py +28 -43
- simtools/applications/convert_geo_coordinates_of_array_elements.py +26 -45
- simtools/applications/convert_model_parameter_from_simtel.py +21 -41
- simtools/applications/db_add_file_to_db.py +13 -14
- simtools/applications/db_add_simulation_model_from_repository_to_db.py +20 -33
- simtools/applications/db_add_value_from_json_to_db.py +29 -24
- simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +20 -35
- simtools/applications/db_generate_compound_indexes.py +11 -13
- simtools/applications/db_get_array_layouts_from_db.py +20 -40
- simtools/applications/db_get_file_from_db.py +15 -17
- simtools/applications/db_get_parameter_from_db.py +33 -35
- simtools/applications/db_inspect_databases.py +13 -12
- simtools/applications/db_upload_model_repository.py +13 -31
- simtools/applications/derive_ctao_array_layouts.py +16 -21
- simtools/applications/derive_mirror_rnda.py +9 -14
- simtools/applications/derive_photon_electron_spectrum.py +7 -10
- simtools/applications/derive_psf_parameters.py +13 -20
- simtools/applications/derive_trigger_rates.py +6 -9
- simtools/applications/docs_produce_array_element_report.py +22 -23
- simtools/applications/docs_produce_calibration_reports.py +26 -24
- simtools/applications/docs_produce_model_parameter_reports.py +15 -22
- simtools/applications/docs_produce_simulation_configuration_report.py +21 -22
- simtools/applications/generate_array_config.py +14 -33
- simtools/applications/generate_corsika_histograms.py +22 -43
- simtools/applications/generate_default_metadata.py +15 -36
- simtools/applications/generate_regular_arrays.py +11 -15
- simtools/applications/generate_simtel_event_data.py +23 -33
- simtools/applications/maintain_simulation_model_add_production.py +20 -37
- simtools/applications/maintain_simulation_model_compare_productions.py +10 -12
- simtools/applications/maintain_simulation_model_verify_production_tables.py +8 -11
- simtools/applications/merge_tables.py +14 -23
- simtools/applications/plot_array_layout.py +77 -54
- simtools/applications/plot_simtel_events.py +11 -13
- simtools/applications/plot_tabular_data.py +17 -38
- simtools/applications/plot_tabular_data_for_model_parameter.py +16 -23
- simtools/applications/print_version.py +14 -42
- simtools/applications/production_derive_corsika_limits.py +5 -9
- simtools/applications/production_derive_statistics.py +12 -25
- simtools/applications/production_generate_grid.py +20 -48
- simtools/applications/production_merge_corsika_limits.py +17 -21
- simtools/applications/run_application.py +12 -32
- simtools/applications/simulate_flasher.py +21 -25
- simtools/applications/simulate_illuminator.py +7 -14
- simtools/applications/simulate_pedestals.py +13 -13
- simtools/applications/simulate_prod.py +21 -33
- simtools/applications/simulate_prod_htcondor_generator.py +11 -25
- simtools/applications/submit_array_layouts.py +16 -19
- simtools/applications/submit_data_from_external.py +18 -34
- simtools/applications/submit_model_parameter_from_external.py +27 -40
- simtools/applications/validate_camera_efficiency.py +23 -21
- simtools/applications/validate_camera_fov.py +21 -26
- simtools/applications/validate_cumulative_psf.py +27 -35
- simtools/applications/validate_file_using_schema.py +15 -33
- simtools/applications/validate_optics.py +27 -33
- simtools/camera/camera_efficiency.py +0 -2
- simtools/configuration/commandline_parser.py +39 -13
- simtools/configuration/configurator.py +1 -6
- simtools/corsika/corsika_config.py +2 -9
- simtools/data_model/data_reader.py +0 -2
- simtools/data_model/metadata_collector.py +0 -2
- simtools/data_model/model_data_writer.py +1 -3
- simtools/data_model/schema.py +36 -34
- simtools/data_model/validate_data.py +0 -2
- simtools/db/db_handler.py +61 -296
- simtools/db/db_model_upload.py +1 -1
- simtools/db/mongo_db.py +535 -0
- simtools/dependencies.py +33 -8
- simtools/io/hdf5_handler.py +0 -5
- simtools/io/legacy_data_handler.py +0 -5
- simtools/job_execution/job_manager.py +0 -3
- simtools/layout/array_layout.py +7 -9
- simtools/layout/array_layout_utils.py +3 -3
- simtools/layout/telescope_position.py +0 -2
- simtools/model/array_model.py +38 -71
- simtools/model/calibration_model.py +12 -11
- simtools/model/camera.py +0 -2
- simtools/model/mirrors.py +0 -2
- simtools/model/model_parameter.py +200 -140
- simtools/model/model_repository.py +159 -35
- simtools/model/model_utils.py +3 -8
- simtools/model/site_model.py +59 -29
- simtools/model/telescope_model.py +21 -15
- simtools/production_configuration/calculate_statistical_uncertainties_grid_point.py +0 -2
- simtools/production_configuration/derive_production_statistics.py +0 -2
- simtools/production_configuration/interpolation_handler.py +0 -2
- simtools/ray_tracing/mirror_panel_psf.py +4 -4
- simtools/ray_tracing/psf_analysis.py +0 -2
- simtools/ray_tracing/psf_parameter_optimisation.py +1 -1
- simtools/ray_tracing/ray_tracing.py +0 -2
- simtools/reporting/docs_auto_report_generator.py +109 -1
- simtools/reporting/docs_read_parameters.py +4 -9
- simtools/runners/corsika_runner.py +0 -2
- simtools/runners/corsika_simtel_runner.py +0 -2
- simtools/runners/simtel_runner.py +0 -2
- simtools/schemas/model_parameters/transit_time_random.schema.yml +29 -0
- simtools/schemas/simulation_models_info.schema.yml +2 -1
- simtools/simtel/simtel_config_reader.py +0 -2
- simtools/simtel/simtel_config_writer.py +128 -33
- simtools/simtel/simtel_io_metadata.py +3 -3
- simtools/simtel/simulator_array.py +9 -21
- simtools/simtel/simulator_camera_efficiency.py +0 -2
- simtools/simtel/simulator_light_emission.py +1 -3
- simtools/simtel/simulator_ray_tracing.py +0 -2
- simtools/simulator.py +2 -6
- simtools/testing/assertions.py +52 -8
- simtools/testing/configuration.py +17 -4
- simtools/testing/validate_output.py +4 -8
- simtools/utils/general.py +5 -13
- simtools/utils/geometry.py +0 -5
- simtools/utils/names.py +1 -13
- simtools/utils/value_conversion.py +10 -5
- simtools/version.py +85 -0
- simtools/visualization/plot_array_layout.py +129 -23
- simtools/visualization/plot_incident_angles.py +0 -2
- simtools/visualization/plot_pixels.py +1 -1
- simtools/visualization/plot_psf.py +1 -1
- simtools/visualization/plot_simtel_events.py +0 -11
- simtools/visualization/plot_tables.py +1 -1
- simtools/visualization/visualize.py +0 -12
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.24.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.24.0.dist-info}/entry_points.txt +0 -0
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.24.0.dist-info}/licenses/LICENSE +0 -0
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.24.0.dist-info}/top_level.txt +0 -0
|
@@ -56,18 +56,17 @@ telescope (str, optional)
|
|
|
56
56
|
Telescope name (required for full simulation mode).
|
|
57
57
|
"""
|
|
58
58
|
|
|
59
|
-
import
|
|
60
|
-
from pathlib import Path
|
|
61
|
-
|
|
62
|
-
import simtools.utils.general as gen
|
|
59
|
+
from simtools.application_control import get_application_label, startup_application
|
|
63
60
|
from simtools.configuration import configurator
|
|
64
61
|
from simtools.simtel.simulator_light_emission import SimulatorLightEmission
|
|
65
62
|
from simtools.simulator import Simulator
|
|
66
63
|
|
|
67
64
|
|
|
68
|
-
def _parse(
|
|
65
|
+
def _parse():
|
|
69
66
|
"""Parse command line configuration."""
|
|
70
|
-
config = configurator.Configurator(
|
|
67
|
+
config = configurator.Configurator(
|
|
68
|
+
label=get_application_label(__file__), description="Simulate flasher devices."
|
|
69
|
+
)
|
|
71
70
|
config.parser.add_argument(
|
|
72
71
|
"--run_mode",
|
|
73
72
|
help="Flasher simulation run mode",
|
|
@@ -108,35 +107,32 @@ def _parse(label):
|
|
|
108
107
|
|
|
109
108
|
def main():
|
|
110
109
|
"""Simulate flasher devices."""
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
args_dict, db_config = _parse(label)
|
|
114
|
-
logger = logging.getLogger()
|
|
115
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
110
|
+
app_context = startup_application(_parse)
|
|
116
111
|
|
|
117
|
-
logger.info(
|
|
118
|
-
f"Flasher simulation for telescope {
|
|
119
|
-
f" with light source {
|
|
120
|
-
f" ({
|
|
112
|
+
app_context.logger.info(
|
|
113
|
+
f"Flasher simulation for telescope {app_context.args['telescope']} "
|
|
114
|
+
f" with light source {app_context.args['light_source']} "
|
|
115
|
+
f" ({app_context.args['number_of_events']} events, "
|
|
116
|
+
f"run mode: {app_context.args['run_mode']})"
|
|
121
117
|
)
|
|
122
118
|
|
|
123
|
-
if
|
|
119
|
+
if app_context.args["run_mode"] == "full_simulation":
|
|
124
120
|
light_source = SimulatorLightEmission(
|
|
125
|
-
light_emission_config=
|
|
126
|
-
db_config=db_config,
|
|
127
|
-
label=
|
|
121
|
+
light_emission_config=app_context.args,
|
|
122
|
+
db_config=app_context.db_config,
|
|
123
|
+
label=app_context.args.get("label"),
|
|
128
124
|
)
|
|
129
|
-
elif
|
|
125
|
+
elif app_context.args["run_mode"] == "direct_injection":
|
|
130
126
|
light_source = Simulator(
|
|
131
|
-
args_dict=
|
|
132
|
-
db_config=db_config,
|
|
133
|
-
label=
|
|
127
|
+
args_dict=app_context.args,
|
|
128
|
+
db_config=app_context.db_config,
|
|
129
|
+
label=app_context.args.get("label"),
|
|
134
130
|
)
|
|
135
131
|
else:
|
|
136
|
-
raise ValueError(f"Unsupported run_mode: {
|
|
132
|
+
raise ValueError(f"Unsupported run_mode: {app_context.args['run_mode']}")
|
|
137
133
|
|
|
138
134
|
light_source.simulate()
|
|
139
|
-
logger.info("Flasher simulation completed.")
|
|
135
|
+
app_context.logger.info("Flasher simulation completed.")
|
|
140
136
|
|
|
141
137
|
|
|
142
138
|
if __name__ == "__main__":
|
|
@@ -53,18 +53,15 @@ output_prefix (str, optional)
|
|
|
53
53
|
Prefix for output files (default: empty).
|
|
54
54
|
"""
|
|
55
55
|
|
|
56
|
-
import
|
|
57
|
-
from pathlib import Path
|
|
58
|
-
|
|
59
|
-
import simtools.utils.general as gen
|
|
56
|
+
from simtools.application_control import get_application_label, startup_application
|
|
60
57
|
from simtools.configuration import configurator
|
|
61
58
|
from simtools.simtel.simulator_light_emission import SimulatorLightEmission
|
|
62
59
|
|
|
63
60
|
|
|
64
|
-
def _parse(
|
|
61
|
+
def _parse():
|
|
65
62
|
"""Parse command line configuration."""
|
|
66
63
|
config = configurator.Configurator(
|
|
67
|
-
label=
|
|
64
|
+
label=get_application_label(__file__),
|
|
68
65
|
description=(
|
|
69
66
|
"Simulate light emission by a calibration light source (not attached to a telescope)."
|
|
70
67
|
),
|
|
@@ -119,16 +116,12 @@ def _parse(label):
|
|
|
119
116
|
|
|
120
117
|
def main():
|
|
121
118
|
"""Simulate light emission from illuminator."""
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
args_dict, db_config = _parse(label)
|
|
125
|
-
logger = logging.getLogger()
|
|
126
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
119
|
+
app_context = startup_application(_parse)
|
|
127
120
|
|
|
128
121
|
light_source = SimulatorLightEmission(
|
|
129
|
-
light_emission_config=
|
|
130
|
-
db_config=db_config,
|
|
131
|
-
label=label,
|
|
122
|
+
light_emission_config=app_context.args,
|
|
123
|
+
db_config=app_context.db_config,
|
|
124
|
+
label=app_context.args.get("label"),
|
|
132
125
|
)
|
|
133
126
|
light_source.simulate()
|
|
134
127
|
|
|
@@ -54,17 +54,16 @@ azimuth_angle (float, optional)
|
|
|
54
54
|
Azimuth angle in degrees.
|
|
55
55
|
"""
|
|
56
56
|
|
|
57
|
-
import
|
|
58
|
-
from pathlib import Path
|
|
59
|
-
|
|
60
|
-
import simtools.utils.general as gen
|
|
57
|
+
from simtools.application_control import get_application_label, startup_application
|
|
61
58
|
from simtools.configuration import configurator
|
|
62
59
|
from simtools.simulator import Simulator
|
|
63
60
|
|
|
64
61
|
|
|
65
|
-
def _parse(
|
|
62
|
+
def _parse():
|
|
66
63
|
"""Parse command line configuration."""
|
|
67
|
-
config = configurator.Configurator(
|
|
64
|
+
config = configurator.Configurator(
|
|
65
|
+
label=get_application_label(__file__), description="Simulate calibration events."
|
|
66
|
+
)
|
|
68
67
|
config.parser.add_argument(
|
|
69
68
|
"--run_mode",
|
|
70
69
|
help="Calibration run mode",
|
|
@@ -105,14 +104,15 @@ def _parse(label):
|
|
|
105
104
|
)
|
|
106
105
|
|
|
107
106
|
|
|
108
|
-
def main():
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
def main():
|
|
108
|
+
"""Simulate pedestal events."""
|
|
109
|
+
app_context = startup_application(_parse)
|
|
111
110
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
111
|
+
simulator = Simulator(
|
|
112
|
+
label=app_context.args.get("label"),
|
|
113
|
+
args_dict=app_context.args,
|
|
114
|
+
db_config=app_context.db_config,
|
|
115
|
+
)
|
|
116
116
|
simulator.simulate()
|
|
117
117
|
|
|
118
118
|
|
|
@@ -67,29 +67,14 @@ r"""
|
|
|
67
67
|
will be written to data_directory/label/simtel-data.
|
|
68
68
|
"""
|
|
69
69
|
|
|
70
|
-
import
|
|
71
|
-
|
|
72
|
-
import simtools.utils.general as gen
|
|
70
|
+
from simtools.application_control import startup_application
|
|
73
71
|
from simtools.configuration import configurator
|
|
74
72
|
from simtools.simulator import Simulator
|
|
75
73
|
|
|
76
74
|
|
|
77
|
-
def _parse(
|
|
78
|
-
"""
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
Parameters
|
|
82
|
-
----------
|
|
83
|
-
description: str
|
|
84
|
-
Application description.
|
|
85
|
-
|
|
86
|
-
Returns
|
|
87
|
-
-------
|
|
88
|
-
CommandLineParser
|
|
89
|
-
Command line parser object.
|
|
90
|
-
|
|
91
|
-
"""
|
|
92
|
-
config = configurator.Configurator(description=description)
|
|
75
|
+
def _parse():
|
|
76
|
+
"""Parse command line configuration."""
|
|
77
|
+
config = configurator.Configurator(description="Run simulations for productions")
|
|
93
78
|
config.parser.add_argument(
|
|
94
79
|
"--data_directory",
|
|
95
80
|
help=(
|
|
@@ -152,27 +137,30 @@ def _parse(description=None):
|
|
|
152
137
|
)
|
|
153
138
|
|
|
154
139
|
|
|
155
|
-
def main():
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
logger = logging.getLogger()
|
|
159
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
140
|
+
def main():
|
|
141
|
+
"""Run simulations for productions."""
|
|
142
|
+
app_context = startup_application(_parse, setup_io_handler=False)
|
|
160
143
|
|
|
161
|
-
simulator = Simulator(
|
|
144
|
+
simulator = Simulator(
|
|
145
|
+
label=app_context.args.get("label"),
|
|
146
|
+
args_dict=app_context.args,
|
|
147
|
+
db_config=app_context.db_config,
|
|
148
|
+
)
|
|
162
149
|
|
|
163
150
|
simulator.simulate()
|
|
164
151
|
simulator.validate_metadata()
|
|
165
152
|
|
|
166
|
-
logger.info(
|
|
167
|
-
f"Production run complete for primary {
|
|
168
|
-
f"from {
|
|
169
|
-
f"
|
|
153
|
+
app_context.logger.info(
|
|
154
|
+
f"Production run complete for primary {app_context.args['primary']} showers "
|
|
155
|
+
f"from {app_context.args['azimuth_angle']} azimuth and "
|
|
156
|
+
f"{app_context.args['zenith_angle']} zenith "
|
|
157
|
+
f"at {app_context.args['site']} site, using {app_context.args['model_version']} model."
|
|
170
158
|
)
|
|
171
|
-
if
|
|
159
|
+
if app_context.args["save_reduced_event_lists"]:
|
|
172
160
|
simulator.save_reduced_event_lists()
|
|
173
|
-
if
|
|
174
|
-
simulator.pack_for_register(
|
|
175
|
-
if
|
|
161
|
+
if app_context.args.get("pack_for_grid_register"):
|
|
162
|
+
simulator.pack_for_register(app_context.args["pack_for_grid_register"])
|
|
163
|
+
if app_context.args["save_file_lists"]:
|
|
176
164
|
simulator.save_file_lists()
|
|
177
165
|
|
|
178
166
|
|
|
@@ -45,29 +45,17 @@ priority (int, optional)
|
|
|
45
45
|
|
|
46
46
|
"""
|
|
47
47
|
|
|
48
|
-
import
|
|
49
|
-
|
|
50
|
-
import simtools.utils.general as gen
|
|
48
|
+
from simtools.application_control import get_application_label, startup_application
|
|
51
49
|
from simtools.configuration import configurator
|
|
52
50
|
from simtools.job_execution import htcondor_script_generator
|
|
53
51
|
|
|
54
52
|
|
|
55
|
-
def _parse(
|
|
56
|
-
"""
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
description: str
|
|
62
|
-
Application description.
|
|
63
|
-
|
|
64
|
-
Returns
|
|
65
|
-
-------
|
|
66
|
-
CommandLineParser
|
|
67
|
-
Command line parser object.
|
|
68
|
-
|
|
69
|
-
"""
|
|
70
|
-
config = configurator.Configurator(description=description)
|
|
53
|
+
def _parse():
|
|
54
|
+
"""Parse command line configuration."""
|
|
55
|
+
config = configurator.Configurator(
|
|
56
|
+
label=get_application_label(__file__),
|
|
57
|
+
description="Prepare simulations production for HT Condor job submission",
|
|
58
|
+
)
|
|
71
59
|
config.parser.add_argument(
|
|
72
60
|
"--apptainer_image",
|
|
73
61
|
help="Apptainer image to use for the simulation (full path).",
|
|
@@ -88,13 +76,11 @@ def _parse(description=None):
|
|
|
88
76
|
)
|
|
89
77
|
|
|
90
78
|
|
|
91
|
-
def main():
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
logger = logging.getLogger()
|
|
95
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
79
|
+
def main():
|
|
80
|
+
"""Generate HT Condor submission script and submit file."""
|
|
81
|
+
app_context = startup_application(_parse)
|
|
96
82
|
|
|
97
|
-
htcondor_script_generator.generate_submission_script(
|
|
83
|
+
htcondor_script_generator.generate_submission_script(app_context.args)
|
|
98
84
|
|
|
99
85
|
|
|
100
86
|
if __name__ == "__main__":
|
|
@@ -32,19 +32,19 @@ r"""
|
|
|
32
32
|
|
|
33
33
|
"""
|
|
34
34
|
|
|
35
|
-
import
|
|
36
|
-
from pathlib import Path
|
|
37
|
-
|
|
38
|
-
import simtools.utils.general as gen
|
|
35
|
+
from simtools.application_control import get_application_label, startup_application
|
|
39
36
|
from simtools.configuration import configurator
|
|
40
37
|
from simtools.db import db_handler
|
|
41
38
|
from simtools.io import ascii_handler
|
|
42
39
|
from simtools.layout.array_layout_utils import validate_array_layouts_with_db, write_array_layouts
|
|
43
40
|
|
|
44
41
|
|
|
45
|
-
def _parse(
|
|
42
|
+
def _parse():
|
|
46
43
|
"""Parse command line configuration."""
|
|
47
|
-
config = configurator.Configurator(
|
|
44
|
+
config = configurator.Configurator(
|
|
45
|
+
label=get_application_label(__file__),
|
|
46
|
+
description="Submit and validate array layouts.",
|
|
47
|
+
)
|
|
48
48
|
|
|
49
49
|
config.parser.add_argument(
|
|
50
50
|
"--array_layouts",
|
|
@@ -69,25 +69,22 @@ def _parse(label, description):
|
|
|
69
69
|
return config.initialize(output=True, db_config=True, simulation_model=["model_version"])
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
def main():
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
description="Submit and validate array layouts.",
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
logger = logging.getLogger()
|
|
79
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
72
|
+
def main():
|
|
73
|
+
"""Submit and validate array layouts."""
|
|
74
|
+
app_context = startup_application(_parse)
|
|
80
75
|
|
|
81
|
-
db = db_handler.DatabaseHandler(
|
|
76
|
+
db = db_handler.DatabaseHandler(db_config=app_context.db_config)
|
|
82
77
|
|
|
83
78
|
array_layouts = validate_array_layouts_with_db(
|
|
84
|
-
production_table=db.
|
|
85
|
-
collection_name="telescopes", model_version=
|
|
79
|
+
production_table=db.read_production_table_from_db(
|
|
80
|
+
collection_name="telescopes", model_version=app_context.args["model_version"]
|
|
86
81
|
),
|
|
87
|
-
array_layouts=ascii_handler.collect_data_from_file(
|
|
82
|
+
array_layouts=ascii_handler.collect_data_from_file(app_context.args["array_layouts"]),
|
|
88
83
|
)
|
|
89
84
|
|
|
90
|
-
write_array_layouts(
|
|
85
|
+
write_array_layouts(
|
|
86
|
+
array_layouts=array_layouts, args_dict=app_context.args, db_config=app_context.db_config
|
|
87
|
+
)
|
|
91
88
|
|
|
92
89
|
|
|
93
90
|
if __name__ == "__main__":
|
|
@@ -36,34 +36,19 @@ r"""
|
|
|
36
36
|
|
|
37
37
|
"""
|
|
38
38
|
|
|
39
|
-
import logging
|
|
40
|
-
from pathlib import Path
|
|
41
|
-
|
|
42
39
|
import simtools.data_model.model_data_writer as writer
|
|
43
|
-
|
|
40
|
+
from simtools.application_control import get_application_label, startup_application
|
|
44
41
|
from simtools.configuration import configurator
|
|
45
42
|
from simtools.data_model import validate_data
|
|
46
43
|
from simtools.data_model.metadata_collector import MetadataCollector
|
|
47
44
|
|
|
48
45
|
|
|
49
|
-
def _parse(
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
label: str
|
|
56
|
-
Label describing application.
|
|
57
|
-
description: str
|
|
58
|
-
Description of application.
|
|
59
|
-
|
|
60
|
-
Returns
|
|
61
|
-
-------
|
|
62
|
-
CommandLineParser
|
|
63
|
-
Command line parser object
|
|
64
|
-
|
|
65
|
-
"""
|
|
66
|
-
config = configurator.Configurator(label=label, description=description)
|
|
46
|
+
def _parse():
|
|
47
|
+
"""Parse command line configuration."""
|
|
48
|
+
config = configurator.Configurator(
|
|
49
|
+
label=get_application_label(__file__),
|
|
50
|
+
description="Submit and validate data (e.g., input data to tools, model parameters).",
|
|
51
|
+
)
|
|
67
52
|
|
|
68
53
|
config.parser.add_argument(
|
|
69
54
|
"--input_meta",
|
|
@@ -92,26 +77,25 @@ def _parse(label, description):
|
|
|
92
77
|
return config.initialize(output=True)
|
|
93
78
|
|
|
94
79
|
|
|
95
|
-
def main():
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
description="Submit and validate data (e.g., input data to tools, model parameters).",
|
|
99
|
-
)
|
|
80
|
+
def main():
|
|
81
|
+
"""Submit and validate data (e.g., input data to tools, model parameters)."""
|
|
82
|
+
app_context = startup_application(_parse)
|
|
100
83
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
_metadata = None if args_dict.get("ignore_metadata") else MetadataCollector(args_dict)
|
|
84
|
+
_metadata = (
|
|
85
|
+
None if app_context.args.get("ignore_metadata") else MetadataCollector(app_context.args)
|
|
86
|
+
)
|
|
105
87
|
|
|
106
88
|
data_validator = validate_data.DataValidator(
|
|
107
89
|
schema_file=(
|
|
108
|
-
_metadata.get_data_model_schema_file_name()
|
|
90
|
+
_metadata.get_data_model_schema_file_name()
|
|
91
|
+
if _metadata
|
|
92
|
+
else app_context.args.get("schema")
|
|
109
93
|
),
|
|
110
|
-
data_file=
|
|
94
|
+
data_file=app_context.args["input"],
|
|
111
95
|
)
|
|
112
96
|
|
|
113
97
|
writer.ModelDataWriter.dump(
|
|
114
|
-
args_dict=
|
|
98
|
+
args_dict=app_context.args,
|
|
115
99
|
metadata=_metadata,
|
|
116
100
|
product_data=data_validator.validate_and_transform(),
|
|
117
101
|
)
|
|
@@ -38,32 +38,19 @@ r"""
|
|
|
38
38
|
|
|
39
39
|
"""
|
|
40
40
|
|
|
41
|
-
import logging
|
|
42
41
|
from pathlib import Path
|
|
43
42
|
|
|
44
43
|
import simtools.data_model.model_data_writer as writer
|
|
45
|
-
|
|
44
|
+
from simtools.application_control import get_application_label, startup_application
|
|
46
45
|
from simtools.configuration import configurator
|
|
47
46
|
|
|
48
47
|
|
|
49
|
-
def _parse(
|
|
50
|
-
"""
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
label: str
|
|
56
|
-
Label describing application.
|
|
57
|
-
description: str
|
|
58
|
-
Description of application.
|
|
59
|
-
|
|
60
|
-
Returns
|
|
61
|
-
-------
|
|
62
|
-
CommandLineParser
|
|
63
|
-
Command line parser object
|
|
64
|
-
|
|
65
|
-
"""
|
|
66
|
-
config = configurator.Configurator(label=label, description=description)
|
|
48
|
+
def _parse():
|
|
49
|
+
"""Parse command line configuration."""
|
|
50
|
+
config = configurator.Configurator(
|
|
51
|
+
label=get_application_label(__file__),
|
|
52
|
+
description="Submit and validate a model parameter.",
|
|
53
|
+
)
|
|
67
54
|
|
|
68
55
|
config.parser.add_argument(
|
|
69
56
|
"--parameter", type=str, required=True, help="Parameter for simulation model"
|
|
@@ -98,30 +85,30 @@ def _parse(label, description):
|
|
|
98
85
|
return config.initialize(output=True, db_config=True)
|
|
99
86
|
|
|
100
87
|
|
|
101
|
-
def main():
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
description="Submit and validate a model parameters).",
|
|
105
|
-
)
|
|
106
|
-
|
|
107
|
-
logger = logging.getLogger()
|
|
108
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
88
|
+
def main():
|
|
89
|
+
"""Submit and validate a model parameter value and metadata."""
|
|
90
|
+
app_context = startup_application(_parse)
|
|
109
91
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
92
|
+
if app_context.args.get("output_path"):
|
|
93
|
+
output_path = app_context.io_handler.get_output_directory(
|
|
94
|
+
sub_dir=app_context.args.get("parameter")
|
|
95
|
+
)
|
|
96
|
+
else:
|
|
97
|
+
output_path = None
|
|
115
98
|
|
|
116
99
|
writer.ModelDataWriter.dump_model_parameter(
|
|
117
|
-
parameter_name=
|
|
118
|
-
value=
|
|
119
|
-
instrument=
|
|
120
|
-
parameter_version=
|
|
121
|
-
output_file=Path(
|
|
100
|
+
parameter_name=app_context.args["parameter"],
|
|
101
|
+
value=app_context.args["value"],
|
|
102
|
+
instrument=app_context.args["instrument"],
|
|
103
|
+
parameter_version=app_context.args["parameter_version"],
|
|
104
|
+
output_file=Path(
|
|
105
|
+
app_context.args["parameter"] + "-" + app_context.args["parameter_version"] + ".json"
|
|
106
|
+
),
|
|
122
107
|
output_path=output_path,
|
|
123
|
-
metadata_input_dict=
|
|
124
|
-
db_config=db_config
|
|
108
|
+
metadata_input_dict=app_context.args,
|
|
109
|
+
db_config=app_context.db_config
|
|
110
|
+
if app_context.args.get("check_parameter_version")
|
|
111
|
+
else None,
|
|
125
112
|
)
|
|
126
113
|
|
|
127
114
|
|
|
@@ -44,19 +44,18 @@ r"""
|
|
|
44
44
|
The output is saved in simtools-output/validate_camera_efficiency.
|
|
45
45
|
"""
|
|
46
46
|
|
|
47
|
-
import logging
|
|
48
47
|
from pathlib import Path
|
|
49
48
|
|
|
50
49
|
import simtools.data_model.model_data_writer as writer
|
|
51
|
-
|
|
50
|
+
from simtools.application_control import get_application_label, startup_application
|
|
52
51
|
from simtools.camera.camera_efficiency import CameraEfficiency
|
|
53
52
|
from simtools.configuration import configurator
|
|
54
53
|
|
|
55
54
|
|
|
56
|
-
def _parse(
|
|
55
|
+
def _parse():
|
|
57
56
|
"""Parse command line configuration."""
|
|
58
57
|
config = configurator.Configurator(
|
|
59
|
-
label=
|
|
58
|
+
label=get_application_label(__file__),
|
|
60
59
|
description=(
|
|
61
60
|
"Calculate the camera efficiency and NSB pixel rates. "
|
|
62
61
|
"Plot the camera efficiency vs wavelength for Cherenkov and NSB light."
|
|
@@ -91,29 +90,26 @@ def _parse(label):
|
|
|
91
90
|
action="store_true",
|
|
92
91
|
required=False,
|
|
93
92
|
)
|
|
94
|
-
|
|
93
|
+
args_dict, db_config = config.initialize(
|
|
95
94
|
db_config=True,
|
|
96
95
|
simulation_model=["telescope", "model_version", "parameter_version"],
|
|
97
96
|
simulation_configuration={"corsika_configuration": ["zenith_angle", "azimuth_angle"]},
|
|
98
97
|
)
|
|
99
|
-
if
|
|
98
|
+
if args_dict["site"] is None or args_dict["telescope"] is None:
|
|
100
99
|
config.parser.print_help()
|
|
101
100
|
print("\n\nSite and telescope must be provided\n\n")
|
|
102
101
|
raise RuntimeError("Site and telescope must be provided")
|
|
103
|
-
return
|
|
102
|
+
return args_dict, db_config
|
|
104
103
|
|
|
105
104
|
|
|
106
|
-
def main():
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
logger = logging.getLogger()
|
|
111
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
105
|
+
def main():
|
|
106
|
+
"""Calculate the camera efficiency and NSB pixel rates."""
|
|
107
|
+
app_context = startup_application(_parse)
|
|
112
108
|
|
|
113
109
|
ce = CameraEfficiency(
|
|
114
|
-
db_config=db_config,
|
|
115
|
-
label=
|
|
116
|
-
config_data=
|
|
110
|
+
db_config=app_context.db_config,
|
|
111
|
+
label=app_context.args.get("label"),
|
|
112
|
+
config_data=app_context.args,
|
|
117
113
|
)
|
|
118
114
|
ce.simulate()
|
|
119
115
|
ce.analyze(force=True)
|
|
@@ -123,12 +119,18 @@ def main(): # noqa: D103
|
|
|
123
119
|
writer.ModelDataWriter.dump_model_parameter(
|
|
124
120
|
parameter_name="nsb_pixel_rate",
|
|
125
121
|
value=ce.get_nsb_pixel_rate(
|
|
126
|
-
reference_conditions=
|
|
122
|
+
reference_conditions=app_context.args.get(
|
|
123
|
+
"write_reference_nsb_rate_as_parameter", False
|
|
124
|
+
)
|
|
125
|
+
),
|
|
126
|
+
instrument=app_context.args["telescope"],
|
|
127
|
+
parameter_version=app_context.args.get("parameter_version", "0.0.0"),
|
|
128
|
+
output_file=Path(
|
|
129
|
+
f"nsb_pixel_rate-{app_context.args.get('parameter_version', '0.0.0')}.json"
|
|
127
130
|
),
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
output_path=Path(args_dict["output_path"]) / args_dict["telescope"] / "nsb_pixel_rate",
|
|
131
|
+
output_path=app_context.io_handler.get_output_directory()
|
|
132
|
+
/ app_context.args["telescope"]
|
|
133
|
+
/ "nsb_pixel_rate",
|
|
132
134
|
)
|
|
133
135
|
|
|
134
136
|
|