gammasimtools 0.25.0__py3-none-any.whl → 0.26.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.
Files changed (125) hide show
  1. {gammasimtools-0.25.0.dist-info → gammasimtools-0.26.0.dist-info}/METADATA +2 -1
  2. {gammasimtools-0.25.0.dist-info → gammasimtools-0.26.0.dist-info}/RECORD +122 -121
  3. {gammasimtools-0.25.0.dist-info → gammasimtools-0.26.0.dist-info}/entry_points.txt +2 -1
  4. {gammasimtools-0.25.0.dist-info → gammasimtools-0.26.0.dist-info}/licenses/LICENSE +1 -1
  5. simtools/_version.py +2 -2
  6. simtools/application_control.py +35 -7
  7. simtools/applications/calculate_incident_angles.py +0 -2
  8. simtools/applications/convert_geo_coordinates_of_array_elements.py +1 -2
  9. simtools/applications/db_add_file_to_db.py +1 -1
  10. simtools/applications/db_add_simulation_model_from_repository_to_db.py +1 -1
  11. simtools/applications/db_add_value_from_json_to_db.py +1 -1
  12. simtools/applications/db_generate_compound_indexes.py +1 -1
  13. simtools/applications/db_get_array_layouts_from_db.py +2 -6
  14. simtools/applications/db_get_file_from_db.py +1 -1
  15. simtools/applications/db_get_parameter_from_db.py +1 -1
  16. simtools/applications/db_inspect_databases.py +1 -1
  17. simtools/applications/db_upload_model_repository.py +1 -1
  18. simtools/applications/derive_ctao_array_layouts.py +1 -2
  19. simtools/applications/derive_mirror_rnda.py +1 -3
  20. simtools/applications/derive_psf_parameters.py +0 -1
  21. simtools/applications/derive_pulse_shape_parameters.py +0 -1
  22. simtools/applications/derive_trigger_rates.py +1 -1
  23. simtools/applications/docs_produce_array_element_report.py +2 -8
  24. simtools/applications/docs_produce_calibration_reports.py +1 -3
  25. simtools/applications/docs_produce_model_parameter_reports.py +0 -2
  26. simtools/applications/docs_produce_simulation_configuration_report.py +1 -3
  27. simtools/applications/generate_array_config.py +0 -1
  28. simtools/applications/generate_corsika_histograms.py +48 -235
  29. simtools/applications/generate_regular_arrays.py +5 -35
  30. simtools/applications/generate_simtel_event_data.py +2 -2
  31. simtools/applications/maintain_simulation_model_add_production.py +2 -2
  32. simtools/applications/maintain_simulation_model_write_array_element_positions.py +87 -0
  33. simtools/applications/plot_array_layout.py +5 -111
  34. simtools/applications/plot_simulated_event_distributions.py +57 -0
  35. simtools/applications/plot_tabular_data.py +0 -1
  36. simtools/applications/plot_tabular_data_for_model_parameter.py +1 -6
  37. simtools/applications/production_derive_corsika_limits.py +1 -1
  38. simtools/applications/production_generate_grid.py +0 -1
  39. simtools/applications/run_application.py +1 -1
  40. simtools/applications/simulate_flasher.py +0 -2
  41. simtools/applications/simulate_illuminator.py +0 -1
  42. simtools/applications/simulate_pedestals.py +1 -5
  43. simtools/applications/simulate_prod.py +1 -5
  44. simtools/applications/simulate_prod_htcondor_generator.py +1 -1
  45. simtools/applications/submit_array_layouts.py +2 -4
  46. simtools/applications/submit_model_parameter_from_external.py +1 -3
  47. simtools/applications/validate_camera_efficiency.py +0 -1
  48. simtools/applications/validate_camera_fov.py +0 -1
  49. simtools/applications/validate_cumulative_psf.py +0 -2
  50. simtools/applications/validate_optics.py +0 -13
  51. simtools/camera/camera_efficiency.py +1 -6
  52. simtools/camera/single_photon_electron_spectrum.py +2 -1
  53. simtools/configuration/commandline_parser.py +35 -2
  54. simtools/configuration/configurator.py +6 -11
  55. simtools/corsika/corsika_config.py +16 -21
  56. simtools/corsika/corsika_histograms.py +411 -1735
  57. simtools/corsika/primary_particle.py +1 -1
  58. simtools/data_model/metadata_collector.py +5 -2
  59. simtools/data_model/metadata_model.py +0 -4
  60. simtools/data_model/model_data_writer.py +13 -15
  61. simtools/data_model/validate_data.py +1 -3
  62. simtools/db/db_handler.py +19 -8
  63. simtools/dependencies.py +81 -38
  64. simtools/io/ascii_handler.py +4 -2
  65. simtools/io/table_handler.py +1 -1
  66. simtools/layout/array_layout.py +4 -12
  67. simtools/layout/array_layout_utils.py +226 -57
  68. simtools/model/array_model.py +1 -13
  69. simtools/model/calibration_model.py +0 -4
  70. simtools/model/legacy_model_parameter.py +134 -0
  71. simtools/model/model_parameter.py +24 -13
  72. simtools/model/model_utils.py +1 -6
  73. simtools/model/site_model.py +0 -4
  74. simtools/model/telescope_model.py +6 -11
  75. simtools/production_configuration/derive_corsika_limits.py +6 -11
  76. simtools/production_configuration/interpolation_handler.py +16 -16
  77. simtools/ray_tracing/incident_angles.py +5 -11
  78. simtools/ray_tracing/mirror_panel_psf.py +3 -7
  79. simtools/ray_tracing/psf_analysis.py +18 -19
  80. simtools/ray_tracing/psf_parameter_optimisation.py +0 -1
  81. simtools/ray_tracing/ray_tracing.py +6 -15
  82. simtools/reporting/docs_auto_report_generator.py +8 -13
  83. simtools/reporting/docs_read_parameters.py +2 -8
  84. simtools/runners/corsika_runner.py +5 -9
  85. simtools/runners/corsika_simtel_runner.py +3 -8
  86. simtools/runners/simtel_runner.py +0 -5
  87. simtools/runners/simtools_runner.py +2 -4
  88. simtools/settings.py +154 -0
  89. simtools/{io/eventio_handler.py → sim_events/file_info.py} +3 -3
  90. simtools/{simtel/simtel_io_event_histograms.py → sim_events/histograms.py} +25 -15
  91. simtools/{simtel/simtel_io_event_reader.py → sim_events/reader.py} +20 -17
  92. simtools/{simtel/simtel_io_event_writer.py → sim_events/writer.py} +84 -25
  93. simtools/simtel/pulse_shapes.py +7 -2
  94. simtools/simtel/simtel_config_writer.py +79 -36
  95. simtools/simtel/simtel_table_reader.py +6 -4
  96. simtools/simtel/simulator_array.py +4 -11
  97. simtools/simtel/simulator_camera_efficiency.py +4 -6
  98. simtools/simtel/simulator_light_emission.py +69 -24
  99. simtools/simtel/simulator_ray_tracing.py +4 -10
  100. simtools/simulator.py +7 -14
  101. simtools/telescope_trigger_rates.py +3 -4
  102. simtools/testing/assertions.py +84 -33
  103. simtools/testing/configuration.py +1 -2
  104. simtools/testing/helpers.py +2 -3
  105. simtools/testing/log_inspector.py +1 -0
  106. simtools/testing/sim_telarray_metadata.py +1 -1
  107. simtools/testing/validate_output.py +34 -23
  108. simtools/utils/general.py +37 -0
  109. simtools/utils/geometry.py +0 -77
  110. simtools/utils/names.py +5 -5
  111. simtools/visualization/legend_handlers.py +7 -6
  112. simtools/visualization/plot_array_layout.py +91 -16
  113. simtools/visualization/plot_corsika_histograms.py +143 -605
  114. simtools/visualization/plot_mirrors.py +1 -4
  115. simtools/visualization/plot_pixels.py +2 -4
  116. simtools/visualization/plot_psf.py +0 -1
  117. simtools/visualization/plot_simtel_event_histograms.py +4 -4
  118. simtools/visualization/plot_simtel_events.py +6 -11
  119. simtools/visualization/plot_tables.py +8 -19
  120. simtools/visualization/visualize.py +22 -2
  121. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +0 -160
  122. simtools/applications/print_version.py +0 -53
  123. simtools/io/hdf5_handler.py +0 -139
  124. {gammasimtools-0.25.0.dist-info → gammasimtools-0.26.0.dist-info}/WHEEL +0 -0
  125. {gammasimtools-0.25.0.dist-info → gammasimtools-0.26.0.dist-info}/top_level.txt +0 -0
@@ -6,9 +6,11 @@ from pathlib import Path
6
6
  import numpy as np
7
7
  from astropy import units as u
8
8
 
9
+ from simtools import settings
9
10
  from simtools.corsika.primary_particle import PrimaryParticle
10
- from simtools.io import eventio_handler, io_handler
11
+ from simtools.io import io_handler
11
12
  from simtools.model.model_parameter import ModelParameter
13
+ from simtools.sim_events import file_info
12
14
  from simtools.utils import general as gen
13
15
 
14
16
 
@@ -27,8 +29,6 @@ class CorsikaConfig:
27
29
  Array model.
28
30
  args_dict : dict
29
31
  Configuration dictionary.
30
- db_config : dict
31
- MongoDB configuration.
32
32
  label : str
33
33
  Instance label.
34
34
  dummy_simulations : bool
@@ -36,7 +36,7 @@ class CorsikaConfig:
36
36
  (e.g., sim_telarray requires for some run modes a valid CORSIKA input file).
37
37
  """
38
38
 
39
- def __init__(self, array_model, args_dict, db_config=None, label=None, dummy_simulations=False):
39
+ def __init__(self, array_model, args_dict, label=None, dummy_simulations=False):
40
40
  """Initialize CorsikaConfig."""
41
41
  self._logger = logging.getLogger(__name__)
42
42
  self._logger.debug("Init CorsikaConfig")
@@ -53,7 +53,7 @@ class CorsikaConfig:
53
53
 
54
54
  self.io_handler = io_handler.IOHandler()
55
55
  self.array_model = array_model
56
- self.config = self._fill_corsika_configuration(args_dict, db_config)
56
+ self.config = self._fill_corsika_configuration(args_dict)
57
57
  self._initialize_from_config(args_dict)
58
58
  self.is_file_updated = False
59
59
 
@@ -110,7 +110,7 @@ class CorsikaConfig:
110
110
  except KeyError:
111
111
  self._use_curved_atmosphere = False
112
112
 
113
- def _fill_corsika_configuration(self, args_dict, db_config=None):
113
+ def _fill_corsika_configuration(self, args_dict):
114
114
  """
115
115
  Fill CORSIKA configuration.
116
116
 
@@ -121,8 +121,6 @@ class CorsikaConfig:
121
121
  ----------
122
122
  args_dict : dict
123
123
  Configuration dictionary.
124
- db_config: dict
125
- Database configuration.
126
124
 
127
125
  Returns
128
126
  -------
@@ -144,23 +142,24 @@ class CorsikaConfig:
144
142
 
145
143
  config.update(
146
144
  self._fill_corsika_configuration_from_db(
147
- gen.ensure_iterable(args_dict.get("model_version")), db_config
145
+ gen.ensure_iterable(args_dict.get("model_version"))
148
146
  )
149
147
  )
150
148
  return config
151
149
 
152
- def _fill_corsika_configuration_from_db(self, model_versions, db_config):
150
+ def _fill_corsika_configuration_from_db(self, model_versions):
153
151
  """Fill CORSIKA configuration from database."""
154
152
  config = {}
155
- if db_config is None: # all following parameter require DB
153
+ # all following parameters require DB
154
+ if settings.config.db_config is None or not model_versions:
156
155
  return config
157
156
 
158
157
  # For multiple model versions, check that CORSIKA parameters are identical
159
- self.assert_corsika_configurations_match(model_versions, db_config=db_config)
158
+ self.assert_corsika_configurations_match(model_versions)
160
159
  model_version = model_versions[0]
161
160
 
162
161
  self._logger.debug(f"Using model version {model_version} for CORSIKA parameters from DB")
163
- db_model_parameters = ModelParameter(db_config=db_config, model_version=model_version)
162
+ db_model_parameters = ModelParameter(model_version=model_version)
164
163
  parameters_from_db = db_model_parameters.get_simulation_software_parameters("corsika")
165
164
 
166
165
  config["INTERACTION_FLAGS"] = self._corsika_configuration_interaction_flags(
@@ -206,7 +205,7 @@ class CorsikaConfig:
206
205
  args_dict.get("curved_atmosphere_min_zenith_angle", 90.0 * u.deg).to("deg").value
207
206
  )
208
207
 
209
- def assert_corsika_configurations_match(self, model_versions, db_config=None):
208
+ def assert_corsika_configurations_match(self, model_versions):
210
209
  """
211
210
  Assert that CORSIKA configurations match across all model versions.
212
211
 
@@ -214,8 +213,6 @@ class CorsikaConfig:
214
213
  ----------
215
214
  model_versions : list
216
215
  List of model versions to check.
217
- db_config : dict, optional
218
- Database configuration.
219
216
 
220
217
  Raises
221
218
  ------
@@ -229,7 +226,7 @@ class CorsikaConfig:
229
226
 
230
227
  # Get parameters for all model versions
231
228
  for model_version in model_versions:
232
- db_model_parameters = ModelParameter(db_config=db_config, model_version=model_version)
229
+ db_model_parameters = ModelParameter(model_version=model_version)
233
230
  parameters_from_db_list.append(
234
231
  db_model_parameters.get_simulation_software_parameters("corsika")
235
232
  )
@@ -301,9 +298,7 @@ class CorsikaConfig:
301
298
  dict
302
299
  Dictionary with CORSIKA parameters from input file.
303
300
  """
304
- run_header, event_header = eventio_handler.get_corsika_run_and_event_headers(
305
- corsika_input_file
306
- )
301
+ run_header, event_header = file_info.get_corsika_run_and_event_headers(corsika_input_file)
307
302
  self._logger.debug(f"CORSIKA run header from {corsika_input_file}")
308
303
 
309
304
  def to_float32(value):
@@ -621,7 +616,7 @@ class CorsikaConfig:
621
616
  Value(s) of the parameter.
622
617
  """
623
618
  par_value = []
624
- for _, values in self.config.items():
619
+ for values in self.config.values():
625
620
  if par_name in values:
626
621
  par_value = values[par_name]
627
622
  if len(par_value) == 0: