gammasimtools 0.22.0__py3-none-any.whl → 0.23.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.23.0.dist-info}/METADATA +2 -1
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.23.0.dist-info}/RECORD +114 -112
- 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 +12 -13
- simtools/applications/db_add_simulation_model_from_repository_to_db.py +20 -33
- simtools/applications/db_add_value_from_json_to_db.py +28 -23
- simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +19 -34
- simtools/applications/db_generate_compound_indexes.py +11 -13
- simtools/applications/db_get_array_layouts_from_db.py +19 -39
- 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 +10 -11
- 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 +12 -19
- 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 +15 -18
- 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 +26 -32
- simtools/camera/camera_efficiency.py +0 -2
- simtools/configuration/commandline_parser.py +32 -4
- simtools/configuration/configurator.py +0 -5
- simtools/corsika/corsika_config.py +0 -5
- simtools/data_model/data_reader.py +0 -2
- simtools/data_model/metadata_collector.py +0 -2
- simtools/data_model/model_data_writer.py +0 -2
- simtools/data_model/validate_data.py +0 -2
- simtools/db/db_handler.py +0 -2
- 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 +0 -2
- simtools/layout/telescope_position.py +0 -2
- simtools/model/array_model.py +2 -4
- simtools/model/calibration_model.py +0 -2
- simtools/model/camera.py +0 -2
- simtools/model/mirrors.py +0 -2
- simtools/model/model_parameter.py +30 -7
- simtools/model/model_utils.py +0 -5
- simtools/model/site_model.py +0 -2
- simtools/model/telescope_model.py +0 -2
- 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/psf_analysis.py +0 -2
- simtools/ray_tracing/ray_tracing.py +0 -2
- simtools/reporting/docs_auto_report_generator.py +108 -0
- simtools/reporting/docs_read_parameters.py +1 -7
- 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/simtel/simtel_config_reader.py +0 -2
- simtools/simtel/simtel_config_writer.py +31 -13
- 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 +0 -5
- simtools/testing/assertions.py +2 -2
- simtools/testing/configuration.py +17 -4
- simtools/utils/general.py +5 -13
- simtools/utils/geometry.py +0 -5
- simtools/utils/names.py +1 -13
- simtools/version.py +61 -0
- simtools/visualization/plot_array_layout.py +129 -23
- simtools/visualization/plot_incident_angles.py +0 -2
- simtools/visualization/plot_simtel_events.py +0 -11
- simtools/visualization/visualize.py +0 -12
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.23.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.23.0.dist-info}/entry_points.txt +0 -0
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.23.0.dist-info}/licenses/LICENSE +0 -0
- {gammasimtools-0.22.0.dist-info → gammasimtools-0.23.0.dist-info}/top_level.txt +0 -0
|
@@ -60,38 +60,24 @@ r"""
|
|
|
60
60
|
|
|
61
61
|
"""
|
|
62
62
|
|
|
63
|
-
import logging
|
|
64
63
|
from pathlib import Path
|
|
65
64
|
|
|
66
65
|
import numpy as np
|
|
67
66
|
|
|
68
67
|
import simtools.data_model.model_data_writer as writer
|
|
69
|
-
|
|
68
|
+
from simtools.application_control import get_application_label, startup_application
|
|
70
69
|
from simtools.configuration import configurator
|
|
71
70
|
from simtools.data_model import schema
|
|
72
71
|
from simtools.io import ascii_handler
|
|
73
|
-
from simtools.io.io_handler import IOHandler
|
|
74
72
|
from simtools.simtel import simtel_config_reader
|
|
75
73
|
|
|
76
74
|
|
|
77
|
-
def _parse(
|
|
78
|
-
"""
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
label: str
|
|
84
|
-
Label describing application.
|
|
85
|
-
description: str
|
|
86
|
-
Description of application.
|
|
87
|
-
|
|
88
|
-
Returns
|
|
89
|
-
-------
|
|
90
|
-
CommandLineParser
|
|
91
|
-
Command line parser object
|
|
92
|
-
|
|
93
|
-
"""
|
|
94
|
-
config = configurator.Configurator(label=label, description=description)
|
|
75
|
+
def _parse():
|
|
76
|
+
"""Parse command line configuration."""
|
|
77
|
+
config = configurator.Configurator(
|
|
78
|
+
label=get_application_label(__file__),
|
|
79
|
+
description="Convert all model parameters from sim_telarray",
|
|
80
|
+
)
|
|
95
81
|
|
|
96
82
|
config.parser.add_argument(
|
|
97
83
|
"--simtel_cfg_file",
|
|
@@ -156,8 +142,8 @@ def get_number_of_camera_pixel(args_dict, logger):
|
|
|
156
142
|
----------
|
|
157
143
|
args_dict: dict
|
|
158
144
|
Dictionary with command line arguments.
|
|
159
|
-
logger: logging.
|
|
160
|
-
|
|
145
|
+
logger: logging.logger
|
|
146
|
+
logger object
|
|
161
147
|
|
|
162
148
|
Returns
|
|
163
149
|
-------
|
|
@@ -177,7 +163,7 @@ def get_number_of_camera_pixel(args_dict, logger):
|
|
|
177
163
|
return _camera_pixel
|
|
178
164
|
|
|
179
165
|
|
|
180
|
-
def read_and_export_parameters(args_dict, logger):
|
|
166
|
+
def read_and_export_parameters(args_dict, logger, io_handler):
|
|
181
167
|
"""
|
|
182
168
|
Read and export parameters from sim_telarray configuration file to json files.
|
|
183
169
|
|
|
@@ -188,8 +174,10 @@ def read_and_export_parameters(args_dict, logger):
|
|
|
188
174
|
----------
|
|
189
175
|
args_dict: dict
|
|
190
176
|
Dictionary with command line arguments.
|
|
191
|
-
logger: logging.
|
|
192
|
-
|
|
177
|
+
logger: logging.logger
|
|
178
|
+
logger object
|
|
179
|
+
io_handler: IOHandler
|
|
180
|
+
IOHandler object
|
|
193
181
|
|
|
194
182
|
Returns
|
|
195
183
|
-------
|
|
@@ -205,9 +193,6 @@ def read_and_export_parameters(args_dict, logger):
|
|
|
205
193
|
)
|
|
206
194
|
logger.info(f"Found {len(_simtel_parameters)} parameters in sim_telarray configuration file.")
|
|
207
195
|
|
|
208
|
-
io_handler = IOHandler()
|
|
209
|
-
io_handler.set_paths(output_path=args_dict["output_path"])
|
|
210
|
-
|
|
211
196
|
_camera_pixel = get_number_of_camera_pixel(args_dict, logger)
|
|
212
197
|
|
|
213
198
|
_parameters_not_in_simtel = []
|
|
@@ -263,8 +248,8 @@ def print_parameters_not_found(_parameters_not_in_simtel, _simtel_parameters, ar
|
|
|
263
248
|
List of sim_telarray parameters not found in simtools schema files.
|
|
264
249
|
args_dict: dict
|
|
265
250
|
Dictionary with command line arguments.
|
|
266
|
-
logger: logging.
|
|
267
|
-
|
|
251
|
+
logger: logging.logger
|
|
252
|
+
logger object
|
|
268
253
|
|
|
269
254
|
"""
|
|
270
255
|
logger.info(
|
|
@@ -313,8 +298,8 @@ def print_list_of_files(args_dict, logger):
|
|
|
313
298
|
----------
|
|
314
299
|
args_dict: dict
|
|
315
300
|
Dictionary with command line arguments.
|
|
316
|
-
logger: logging.
|
|
317
|
-
|
|
301
|
+
logger: logging.logger
|
|
302
|
+
logger object
|
|
318
303
|
|
|
319
304
|
"""
|
|
320
305
|
model_files = sorted(Path(args_dict["output_path"]).rglob("*.json"))
|
|
@@ -324,17 +309,17 @@ def print_list_of_files(args_dict, logger):
|
|
|
324
309
|
logger.info(f"{file.name}: {model_dict['value']}")
|
|
325
310
|
|
|
326
311
|
|
|
327
|
-
def main():
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
description="Convert simulation model parameters from sim_telarray to simtools format.",
|
|
331
|
-
)
|
|
332
|
-
logger = logging.getLogger()
|
|
333
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
312
|
+
def main():
|
|
313
|
+
"""Convert all simulation model parameters exported from sim_telarray format."""
|
|
314
|
+
app_context = startup_application(_parse)
|
|
334
315
|
|
|
335
|
-
_parameters_not_in_simtel, _simtel_parameters = read_and_export_parameters(
|
|
336
|
-
|
|
337
|
-
|
|
316
|
+
_parameters_not_in_simtel, _simtel_parameters = read_and_export_parameters(
|
|
317
|
+
app_context.args, app_context.logger, app_context.io_handler
|
|
318
|
+
)
|
|
319
|
+
print_parameters_not_found(
|
|
320
|
+
_parameters_not_in_simtel, _simtel_parameters, app_context.args, app_context.logger
|
|
321
|
+
)
|
|
322
|
+
print_list_of_files(app_context.args, app_context.logger)
|
|
338
323
|
|
|
339
324
|
|
|
340
325
|
if __name__ == "__main__":
|
|
@@ -54,33 +54,19 @@ Expected output is a ecsv file in the directory printed to the screen.
|
|
|
54
54
|
|
|
55
55
|
"""
|
|
56
56
|
|
|
57
|
-
import logging
|
|
58
|
-
from pathlib import Path
|
|
59
|
-
|
|
60
57
|
import simtools.data_model.model_data_writer as writer
|
|
61
|
-
|
|
58
|
+
from simtools.application_control import get_application_label, startup_application
|
|
62
59
|
from simtools.configuration import configurator
|
|
63
60
|
from simtools.data_model.metadata_collector import MetadataCollector
|
|
64
61
|
from simtools.layout import array_layout
|
|
65
62
|
|
|
66
63
|
|
|
67
|
-
def _parse(
|
|
68
|
-
"""
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
label: str
|
|
74
|
-
Label describing application.
|
|
75
|
-
description: str
|
|
76
|
-
Description of application.
|
|
77
|
-
|
|
78
|
-
Returns
|
|
79
|
-
-------
|
|
80
|
-
CommandLineParser
|
|
81
|
-
Command line parser object
|
|
82
|
-
"""
|
|
83
|
-
config = configurator.Configurator(label=label, description=description)
|
|
64
|
+
def _parse():
|
|
65
|
+
"""Parse command line configuration."""
|
|
66
|
+
config = configurator.Configurator(
|
|
67
|
+
label=get_application_label(__file__),
|
|
68
|
+
description="Print a list of array element positions",
|
|
69
|
+
)
|
|
84
70
|
|
|
85
71
|
config.parser.add_argument(
|
|
86
72
|
"--input",
|
|
@@ -139,52 +125,47 @@ def _parse(label=None, description=None):
|
|
|
139
125
|
|
|
140
126
|
def main():
|
|
141
127
|
"""Print a list of array elements."""
|
|
142
|
-
|
|
143
|
-
model_parameter_name = "array_coordinates"
|
|
144
|
-
args_dict, db_config = _parse(
|
|
145
|
-
label,
|
|
146
|
-
description=f"Print a list of array element positions ({model_parameter_name})",
|
|
147
|
-
)
|
|
148
|
-
|
|
149
|
-
logger = logging.getLogger()
|
|
150
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
128
|
+
app_context = startup_application(_parse)
|
|
151
129
|
|
|
152
|
-
if
|
|
153
|
-
site =
|
|
130
|
+
if app_context.args.get("input", "").endswith(".json"):
|
|
131
|
+
site = app_context.args.get("site", None)
|
|
154
132
|
metadata, validate_schema_file = None, None
|
|
155
133
|
else:
|
|
156
|
-
metadata = MetadataCollector(
|
|
134
|
+
metadata = MetadataCollector(
|
|
135
|
+
args_dict=app_context.args, model_parameter_name="array_coordinates"
|
|
136
|
+
)
|
|
157
137
|
site = metadata.get_site(from_input_meta=True)
|
|
158
138
|
validate_schema_file = metadata.get_data_model_schema_file_name()
|
|
159
139
|
|
|
160
140
|
layout = array_layout.ArrayLayout(
|
|
161
|
-
mongo_db_config=db_config,
|
|
162
|
-
model_version=
|
|
141
|
+
mongo_db_config=app_context.db_config,
|
|
142
|
+
model_version=app_context.args["model_version"],
|
|
163
143
|
site=site,
|
|
164
|
-
telescope_list_file=
|
|
165
|
-
telescope_list_metadata_file=
|
|
166
|
-
validate=not
|
|
144
|
+
telescope_list_file=app_context.args["input"],
|
|
145
|
+
telescope_list_metadata_file=app_context.args["input_meta"],
|
|
146
|
+
validate=not app_context.args["skip_input_validation"],
|
|
167
147
|
)
|
|
168
|
-
layout.select_assets(
|
|
148
|
+
layout.select_assets(app_context.args["select_assets"])
|
|
169
149
|
layout.convert_coordinates()
|
|
170
150
|
|
|
171
|
-
if
|
|
151
|
+
if app_context.args["export"] is not None:
|
|
172
152
|
product_data = (
|
|
173
153
|
layout.export_one_telescope_as_json(
|
|
174
|
-
crs_name=
|
|
154
|
+
crs_name=app_context.args["export"],
|
|
155
|
+
parameter_version=app_context.args.get("parameter_version"),
|
|
175
156
|
)
|
|
176
|
-
if
|
|
177
|
-
else layout.export_telescope_list_table(crs_name=
|
|
157
|
+
if app_context.args.get("input", "").endswith(".json")
|
|
158
|
+
else layout.export_telescope_list_table(crs_name=app_context.args["export"])
|
|
178
159
|
)
|
|
179
160
|
writer.ModelDataWriter.dump(
|
|
180
|
-
args_dict=
|
|
161
|
+
args_dict=app_context.args,
|
|
181
162
|
metadata=metadata,
|
|
182
163
|
product_data=product_data,
|
|
183
164
|
validate_schema_file=validate_schema_file,
|
|
184
165
|
)
|
|
185
166
|
else:
|
|
186
167
|
layout.print_telescope_list(
|
|
187
|
-
crs_name=
|
|
168
|
+
crs_name=app_context.args["print"],
|
|
188
169
|
)
|
|
189
170
|
|
|
190
171
|
|
|
@@ -35,33 +35,18 @@ r"""
|
|
|
35
35
|
|
|
36
36
|
"""
|
|
37
37
|
|
|
38
|
-
import logging
|
|
39
|
-
from pathlib import Path
|
|
40
|
-
|
|
41
38
|
import simtools.data_model.model_data_writer as writer
|
|
42
|
-
|
|
39
|
+
from simtools.application_control import get_application_label, startup_application
|
|
43
40
|
from simtools.configuration import configurator
|
|
44
41
|
from simtools.simtel.simtel_config_reader import SimtelConfigReader
|
|
45
42
|
|
|
46
43
|
|
|
47
|
-
def _parse(
|
|
48
|
-
"""
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
label: str
|
|
54
|
-
Label describing application.
|
|
55
|
-
description: str
|
|
56
|
-
Description of application.
|
|
57
|
-
|
|
58
|
-
Returns
|
|
59
|
-
-------
|
|
60
|
-
CommandLineParser
|
|
61
|
-
Command line parser object
|
|
62
|
-
|
|
63
|
-
"""
|
|
64
|
-
config = configurator.Configurator(label=label, description=description)
|
|
44
|
+
def _parse():
|
|
45
|
+
"""Parse command line configuration."""
|
|
46
|
+
config = configurator.Configurator(
|
|
47
|
+
label=get_application_label(__file__),
|
|
48
|
+
description="Convert simulation model parameter from sim_telarray to simtools format.",
|
|
49
|
+
)
|
|
65
50
|
|
|
66
51
|
config.parser.add_argument(
|
|
67
52
|
"--schema", help="Schema file for model parameter validation", required=True
|
|
@@ -81,36 +66,31 @@ def _parse(label=None, description=None):
|
|
|
81
66
|
return config.initialize(simulation_model=["telescope", "parameter_version"], output=True)
|
|
82
67
|
|
|
83
68
|
|
|
84
|
-
def main():
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
description="Convert simulation model parameter from sim_telarray to simtools format.",
|
|
88
|
-
)
|
|
89
|
-
|
|
90
|
-
logger = logging.getLogger()
|
|
91
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
69
|
+
def main():
|
|
70
|
+
"""Convert simulation model parameter from sim_telarray to simtools format."""
|
|
71
|
+
app_context = startup_application(_parse, setup_io_handler=False)
|
|
92
72
|
|
|
93
73
|
simtel_config_reader = SimtelConfigReader(
|
|
94
|
-
schema_file=
|
|
95
|
-
simtel_config_file=
|
|
96
|
-
simtel_telescope_name=
|
|
74
|
+
schema_file=app_context.args["schema"],
|
|
75
|
+
simtel_config_file=app_context.args["simtel_cfg_file"],
|
|
76
|
+
simtel_telescope_name=app_context.args["simtel_telescope_name"],
|
|
97
77
|
)
|
|
98
|
-
logger.info(f"Simtel parameter: {simtel_config_reader.parameter_dict}")
|
|
78
|
+
app_context.logger.info(f"Simtel parameter: {simtel_config_reader.parameter_dict}")
|
|
99
79
|
if simtel_config_reader.parameter_dict is None or len(simtel_config_reader.parameter_dict) == 0:
|
|
100
|
-
logger.error("Parameter not found in sim_telarray configuration file.")
|
|
80
|
+
app_context.logger.error("Parameter not found in sim_telarray configuration file.")
|
|
101
81
|
return
|
|
102
82
|
|
|
103
83
|
simtel_config_reader.compare_simtel_config_with_schema()
|
|
104
84
|
|
|
105
85
|
_json_dict = writer.ModelDataWriter.dump_model_parameter(
|
|
106
86
|
parameter_name=simtel_config_reader.parameter_name,
|
|
107
|
-
value=simtel_config_reader.parameter_dict.get(
|
|
108
|
-
instrument=
|
|
109
|
-
parameter_version=
|
|
110
|
-
output_file=
|
|
111
|
-
output_path=
|
|
87
|
+
value=simtel_config_reader.parameter_dict.get(app_context.args["simtel_telescope_name"]),
|
|
88
|
+
instrument=app_context.args["telescope"],
|
|
89
|
+
parameter_version=app_context.args["parameter_version"],
|
|
90
|
+
output_file=app_context.args["output_file"],
|
|
91
|
+
output_path=app_context.args.get("output_path"),
|
|
112
92
|
)
|
|
113
|
-
logger.info(f"Validated parameter: {_json_dict}")
|
|
93
|
+
app_context.logger.info(f"Validated parameter: {_json_dict}")
|
|
114
94
|
|
|
115
95
|
|
|
116
96
|
if __name__ == "__main__":
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/python3
|
|
2
2
|
|
|
3
|
-
"""
|
|
3
|
+
r"""
|
|
4
4
|
Add a file to a DB.
|
|
5
5
|
|
|
6
6
|
The name and location of the file are required.
|
|
@@ -37,21 +37,22 @@
|
|
|
37
37
|
|
|
38
38
|
"""
|
|
39
39
|
|
|
40
|
-
import logging
|
|
41
40
|
import uuid
|
|
42
41
|
from pathlib import Path
|
|
43
42
|
|
|
44
43
|
import simtools.utils.general as gen
|
|
44
|
+
from simtools.application_control import get_application_label, startup_application
|
|
45
45
|
from simtools.configuration import configurator
|
|
46
46
|
from simtools.db import db_handler
|
|
47
47
|
|
|
48
48
|
|
|
49
49
|
def _parse():
|
|
50
|
+
"""Parse command line configuration."""
|
|
50
51
|
config = configurator.Configurator(
|
|
52
|
+
label=get_application_label(__file__),
|
|
51
53
|
description="Add file to the DB.",
|
|
52
54
|
usage="simtools-add-file-to-db --file_name test_application.dat --db test-data",
|
|
53
55
|
)
|
|
54
|
-
|
|
55
56
|
group = config.parser.add_mutually_exclusive_group(required=True)
|
|
56
57
|
group.add_argument(
|
|
57
58
|
"--file_name",
|
|
@@ -135,8 +136,8 @@ def confirm_and_insert_files(files_to_insert, args_dict, db, logger):
|
|
|
135
136
|
Dictionary of parsed command-line arguments.
|
|
136
137
|
db : DatabaseHandler
|
|
137
138
|
Database handler object.
|
|
138
|
-
logger : logging.
|
|
139
|
-
|
|
139
|
+
logger : logging.logger
|
|
140
|
+
logger object for logging messages.
|
|
140
141
|
"""
|
|
141
142
|
plural = "" if len(files_to_insert) == 1 else "s"
|
|
142
143
|
|
|
@@ -161,16 +162,14 @@ def confirm_and_insert_files(files_to_insert, args_dict, db, logger):
|
|
|
161
162
|
db.db_client.drop_database(args_dict["db"])
|
|
162
163
|
|
|
163
164
|
|
|
164
|
-
def main():
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
logger = logging.getLogger()
|
|
168
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
165
|
+
def main():
|
|
166
|
+
"""Add files to the database."""
|
|
167
|
+
app_context = startup_application(_parse, setup_io_handler=False)
|
|
169
168
|
|
|
170
|
-
db = db_handler.DatabaseHandler(mongo_db_config=db_config)
|
|
169
|
+
db = db_handler.DatabaseHandler(mongo_db_config=app_context.db_config)
|
|
171
170
|
|
|
172
|
-
files_to_insert = collect_files_to_insert(
|
|
173
|
-
confirm_and_insert_files(files_to_insert,
|
|
171
|
+
files_to_insert = collect_files_to_insert(app_context.args, app_context.logger, db)
|
|
172
|
+
confirm_and_insert_files(files_to_insert, app_context.args, db, app_context.logger)
|
|
174
173
|
|
|
175
174
|
|
|
176
175
|
if __name__ == "__main__":
|
|
@@ -51,31 +51,19 @@ r"""
|
|
|
51
51
|
|
|
52
52
|
"""
|
|
53
53
|
|
|
54
|
-
import logging
|
|
55
54
|
from pathlib import Path
|
|
56
55
|
|
|
57
|
-
|
|
56
|
+
from simtools.application_control import get_application_label, startup_application
|
|
58
57
|
from simtools.configuration import configurator
|
|
59
58
|
from simtools.db import db_handler, db_model_upload
|
|
60
59
|
|
|
61
60
|
|
|
62
|
-
def _parse(
|
|
63
|
-
"""
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
label : str
|
|
69
|
-
Label describing application.
|
|
70
|
-
description : str
|
|
71
|
-
Description of application.
|
|
72
|
-
|
|
73
|
-
Returns
|
|
74
|
-
-------
|
|
75
|
-
CommandLineParser
|
|
76
|
-
Command line parser object.
|
|
77
|
-
"""
|
|
78
|
-
config = configurator.Configurator(label=label, description=description)
|
|
61
|
+
def _parse():
|
|
62
|
+
"""Parse command line configuration."""
|
|
63
|
+
config = configurator.Configurator(
|
|
64
|
+
label=get_application_label(__file__),
|
|
65
|
+
description="Add or update a model parameter database to the DB",
|
|
66
|
+
)
|
|
79
67
|
config.parser.add_argument(
|
|
80
68
|
"--input_path",
|
|
81
69
|
help="Path to simulation model repository.",
|
|
@@ -102,20 +90,19 @@ def _parse(label=None, description=None):
|
|
|
102
90
|
|
|
103
91
|
|
|
104
92
|
def main():
|
|
105
|
-
"""
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
db_model_upload.add_production_tables_to_db(input_path=Path(args_dict["input_path"]), db=db)
|
|
93
|
+
"""Add or update a model parameter database to the DB."""
|
|
94
|
+
app_context = startup_application(_parse, setup_io_handler=False)
|
|
95
|
+
|
|
96
|
+
db = db_handler.DatabaseHandler(mongo_db_config=app_context.db_config)
|
|
97
|
+
|
|
98
|
+
if app_context.args.get("type") == "model_parameters":
|
|
99
|
+
db_model_upload.add_model_parameters_to_db(
|
|
100
|
+
input_path=Path(app_context.args["input_path"]), db=db
|
|
101
|
+
)
|
|
102
|
+
elif app_context.args.get("type") == "production_tables":
|
|
103
|
+
db_model_upload.add_production_tables_to_db(
|
|
104
|
+
input_path=Path(app_context.args["input_path"]), db=db
|
|
105
|
+
)
|
|
119
106
|
|
|
120
107
|
|
|
121
108
|
if __name__ == "__main__":
|
|
@@ -25,18 +25,21 @@ r"""
|
|
|
25
25
|
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
|
-
import logging
|
|
29
28
|
import uuid
|
|
30
29
|
from pathlib import Path
|
|
31
30
|
|
|
32
31
|
import simtools.utils.general as gen
|
|
32
|
+
from simtools.application_control import get_application_label, startup_application
|
|
33
33
|
from simtools.configuration import configurator
|
|
34
34
|
from simtools.db import db_handler
|
|
35
35
|
from simtools.io import ascii_handler
|
|
36
36
|
|
|
37
37
|
|
|
38
38
|
def _parse():
|
|
39
|
-
|
|
39
|
+
"""Parse command line configuration."""
|
|
40
|
+
config = configurator.Configurator(
|
|
41
|
+
label=get_application_label(__file__), description="Add a new parameter to the DB."
|
|
42
|
+
)
|
|
40
43
|
group = config.parser.add_mutually_exclusive_group(required=True)
|
|
41
44
|
group.add_argument("--file_name", help="file to be added", type=str)
|
|
42
45
|
group.add_argument(
|
|
@@ -55,22 +58,22 @@ def _parse():
|
|
|
55
58
|
return config.initialize(db_config=True)
|
|
56
59
|
|
|
57
60
|
|
|
58
|
-
def main():
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
logger = logging.getLogger()
|
|
62
|
-
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
61
|
+
def main():
|
|
62
|
+
"""Add value from JSON to database."""
|
|
63
|
+
app_context = startup_application(_parse)
|
|
63
64
|
|
|
64
|
-
if
|
|
65
|
-
db_config["db_simulation_model_version"] = str(uuid.uuid4())
|
|
66
|
-
logger.info(
|
|
67
|
-
|
|
65
|
+
if app_context.args.get("test_db", False):
|
|
66
|
+
app_context.db_config["db_simulation_model_version"] = str(uuid.uuid4())
|
|
67
|
+
app_context.logger.info(
|
|
68
|
+
f"Using test database version {app_context.db_config['db_simulation_model_version']}"
|
|
69
|
+
)
|
|
70
|
+
db = db_handler.DatabaseHandler(mongo_db_config=app_context.db_config)
|
|
68
71
|
|
|
69
72
|
files_to_insert = []
|
|
70
|
-
if
|
|
71
|
-
files_to_insert.append(
|
|
73
|
+
if app_context.args.get("file_name", None) is not None:
|
|
74
|
+
files_to_insert.append(app_context.args["file_name"])
|
|
72
75
|
else:
|
|
73
|
-
files_to_insert.extend(Path(
|
|
76
|
+
files_to_insert.extend(Path(app_context.args["input_path"]).glob("*json"))
|
|
74
77
|
|
|
75
78
|
if len(files_to_insert) < 1:
|
|
76
79
|
raise ValueError("No files were provided to upload")
|
|
@@ -78,32 +81,34 @@ def main(): # noqa: D103
|
|
|
78
81
|
|
|
79
82
|
print(
|
|
80
83
|
f"Should the following parameter{plural} be inserted to the "
|
|
81
|
-
f"{
|
|
84
|
+
f"{app_context.args['db_collection']} DB collection?:\n"
|
|
82
85
|
)
|
|
83
86
|
print(*files_to_insert, sep="\n")
|
|
84
87
|
print()
|
|
85
88
|
|
|
86
|
-
logger.info(f"DB {db.get_db_name()} selected.")
|
|
89
|
+
app_context.logger.info(f"DB {db.get_db_name()} selected.")
|
|
87
90
|
|
|
88
91
|
if gen.user_confirm():
|
|
89
92
|
for file_to_insert_now in files_to_insert:
|
|
90
93
|
par_dict = ascii_handler.collect_data_from_file(file_name=file_to_insert_now)
|
|
91
|
-
logger.info(
|
|
94
|
+
app_context.logger.info(
|
|
95
|
+
f"Adding the following parameter to the DB: {par_dict['parameter']}"
|
|
96
|
+
)
|
|
92
97
|
db.add_new_parameter(
|
|
93
98
|
par_dict=par_dict,
|
|
94
|
-
collection_name=
|
|
99
|
+
collection_name=app_context.args["db_collection"],
|
|
95
100
|
file_prefix="./",
|
|
96
101
|
)
|
|
97
|
-
logger.info(
|
|
102
|
+
app_context.logger.info(
|
|
98
103
|
f"Value for {par_dict['parameter']} added to "
|
|
99
|
-
f"{
|
|
104
|
+
f"{app_context.args['db_collection']} collection."
|
|
100
105
|
)
|
|
101
106
|
else:
|
|
102
|
-
logger.info("Aborted, no change applied to the database")
|
|
107
|
+
app_context.logger.info("Aborted, no change applied to the database")
|
|
103
108
|
|
|
104
109
|
# drop test database; be safe and required DB name is sandbox
|
|
105
|
-
if
|
|
106
|
-
logger.info(f"Test database used. Dropping all data from {db.get_db_name()}")
|
|
110
|
+
if app_context.args.get("test_db", False) and "sandbox" in db.get_db_name():
|
|
111
|
+
app_context.logger.info(f"Test database used. Dropping all data from {db.get_db_name()}")
|
|
107
112
|
db.db_client.drop_database(db.get_db_name())
|
|
108
113
|
|
|
109
114
|
|