gammasimtools 0.21.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.
Files changed (370) hide show
  1. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/METADATA +3 -3
  2. gammasimtools-0.23.0.dist-info/RECORD +414 -0
  3. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/entry_points.txt +2 -1
  4. simtools/_version.py +2 -2
  5. simtools/application_control.py +118 -0
  6. simtools/applications/calculate_incident_angles.py +17 -25
  7. simtools/applications/convert_all_model_parameters_from_simtel.py +29 -45
  8. simtools/applications/convert_geo_coordinates_of_array_elements.py +26 -45
  9. simtools/applications/convert_model_parameter_from_simtel.py +21 -42
  10. simtools/applications/db_add_file_to_db.py +12 -13
  11. simtools/applications/db_add_simulation_model_from_repository_to_db.py +20 -33
  12. simtools/applications/db_add_value_from_json_to_db.py +28 -23
  13. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +19 -34
  14. simtools/applications/db_generate_compound_indexes.py +12 -27
  15. simtools/applications/db_get_array_layouts_from_db.py +19 -39
  16. simtools/applications/db_get_file_from_db.py +15 -17
  17. simtools/applications/db_get_parameter_from_db.py +33 -35
  18. simtools/applications/db_inspect_databases.py +10 -11
  19. simtools/applications/db_upload_model_repository.py +104 -0
  20. simtools/applications/derive_ctao_array_layouts.py +16 -21
  21. simtools/applications/derive_mirror_rnda.py +9 -14
  22. simtools/applications/derive_photon_electron_spectrum.py +7 -10
  23. simtools/applications/derive_psf_parameters.py +24 -21
  24. simtools/applications/derive_trigger_rates.py +6 -9
  25. simtools/applications/docs_produce_array_element_report.py +22 -23
  26. simtools/applications/docs_produce_calibration_reports.py +26 -24
  27. simtools/applications/docs_produce_model_parameter_reports.py +15 -22
  28. simtools/applications/docs_produce_simulation_configuration_report.py +21 -22
  29. simtools/applications/generate_array_config.py +14 -33
  30. simtools/applications/generate_corsika_histograms.py +22 -43
  31. simtools/applications/generate_default_metadata.py +15 -36
  32. simtools/applications/generate_regular_arrays.py +11 -15
  33. simtools/applications/generate_simtel_event_data.py +23 -33
  34. simtools/applications/maintain_simulation_model_add_production.py +17 -48
  35. simtools/applications/maintain_simulation_model_compare_productions.py +10 -12
  36. simtools/applications/maintain_simulation_model_verify_production_tables.py +8 -11
  37. simtools/applications/merge_tables.py +15 -24
  38. simtools/applications/plot_array_layout.py +77 -55
  39. simtools/applications/plot_simtel_events.py +11 -13
  40. simtools/applications/plot_tabular_data.py +17 -38
  41. simtools/applications/plot_tabular_data_for_model_parameter.py +16 -23
  42. simtools/applications/print_version.py +14 -42
  43. simtools/applications/production_derive_corsika_limits.py +5 -9
  44. simtools/applications/production_derive_statistics.py +12 -26
  45. simtools/applications/production_generate_grid.py +20 -48
  46. simtools/applications/production_merge_corsika_limits.py +17 -21
  47. simtools/applications/run_application.py +12 -32
  48. simtools/applications/simulate_flasher.py +79 -81
  49. simtools/applications/simulate_illuminator.py +56 -197
  50. simtools/applications/{simulate_calibration_events.py → simulate_pedestals.py} +22 -68
  51. simtools/applications/simulate_prod.py +21 -33
  52. simtools/applications/simulate_prod_htcondor_generator.py +11 -25
  53. simtools/applications/submit_array_layouts.py +15 -18
  54. simtools/applications/submit_data_from_external.py +18 -34
  55. simtools/applications/submit_model_parameter_from_external.py +27 -41
  56. simtools/applications/validate_camera_efficiency.py +23 -22
  57. simtools/applications/validate_camera_fov.py +21 -27
  58. simtools/applications/validate_cumulative_psf.py +28 -37
  59. simtools/applications/validate_file_using_schema.py +35 -45
  60. simtools/applications/validate_optics.py +27 -33
  61. simtools/camera/camera_efficiency.py +8 -13
  62. simtools/configuration/commandline_parser.py +33 -11
  63. simtools/configuration/configurator.py +0 -7
  64. simtools/corsika/corsika_config.py +9 -16
  65. simtools/corsika/corsika_histograms.py +1 -1
  66. simtools/data_model/data_reader.py +0 -2
  67. simtools/data_model/metadata_collector.py +0 -2
  68. simtools/data_model/model_data_writer.py +87 -27
  69. simtools/data_model/schema.py +61 -2
  70. simtools/data_model/validate_data.py +1 -3
  71. simtools/db/db_handler.py +58 -39
  72. simtools/db/db_model_upload.py +210 -5
  73. simtools/io/hdf5_handler.py +0 -5
  74. simtools/io/io_handler.py +31 -83
  75. simtools/io/legacy_data_handler.py +0 -5
  76. simtools/job_execution/job_manager.py +43 -1
  77. simtools/layout/array_layout.py +0 -2
  78. simtools/layout/array_layout_utils.py +1 -5
  79. simtools/layout/telescope_position.py +0 -2
  80. simtools/model/array_model.py +95 -46
  81. simtools/model/calibration_model.py +0 -2
  82. simtools/model/camera.py +0 -2
  83. simtools/model/mirrors.py +0 -2
  84. simtools/model/model_parameter.py +50 -16
  85. simtools/model/model_repository.py +139 -106
  86. simtools/model/model_utils.py +21 -11
  87. simtools/model/site_model.py +0 -2
  88. simtools/model/telescope_model.py +20 -2
  89. simtools/production_configuration/calculate_statistical_uncertainties_grid_point.py +0 -2
  90. simtools/production_configuration/derive_corsika_limits.py +1 -1
  91. simtools/production_configuration/derive_production_statistics.py +0 -2
  92. simtools/production_configuration/interpolation_handler.py +0 -2
  93. simtools/ray_tracing/incident_angles.py +7 -7
  94. simtools/ray_tracing/mirror_panel_psf.py +1 -1
  95. simtools/ray_tracing/psf_analysis.py +0 -2
  96. simtools/ray_tracing/psf_parameter_optimisation.py +180 -73
  97. simtools/ray_tracing/ray_tracing.py +1 -5
  98. simtools/reporting/docs_auto_report_generator.py +108 -0
  99. simtools/reporting/docs_read_parameters.py +168 -104
  100. simtools/resources/array_elements.yml +26 -0
  101. simtools/runners/corsika_runner.py +0 -2
  102. simtools/runners/corsika_simtel_runner.py +11 -19
  103. simtools/runners/runner_services.py +5 -6
  104. simtools/runners/simtel_runner.py +0 -2
  105. simtools/runners/simtools_runner.py +0 -2
  106. simtools/schemas/application_workflow.metaschema.yml +1 -1
  107. simtools/schemas/common_definitions.schema.yml +39 -0
  108. simtools/schemas/model_parameter.metaschema.yml +19 -13
  109. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +6 -12
  110. simtools/schemas/model_parameters/adjust_gain.schema.yml +0 -5
  111. simtools/schemas/model_parameters/altitude.schema.yml +0 -5
  112. simtools/schemas/model_parameters/array_coordinates.schema.yml +0 -5
  113. simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +0 -5
  114. simtools/schemas/model_parameters/array_element_position_ground.schema.yml +0 -7
  115. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +0 -7
  116. simtools/schemas/model_parameters/array_layouts.schema.yml +0 -5
  117. simtools/schemas/model_parameters/array_triggers.schema.yml +0 -5
  118. simtools/schemas/model_parameters/array_window.schema.yml +0 -7
  119. simtools/schemas/model_parameters/asum_clipping.schema.yml +0 -3
  120. simtools/schemas/model_parameters/asum_offset.schema.yml +0 -7
  121. simtools/schemas/model_parameters/asum_shaping.schema.yml +0 -7
  122. simtools/schemas/model_parameters/asum_threshold.schema.yml +0 -7
  123. simtools/schemas/model_parameters/atmospheric_profile.schema.yml +0 -5
  124. simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +0 -5
  125. simtools/schemas/model_parameters/axes_offsets.schema.yml +0 -7
  126. simtools/schemas/model_parameters/calibration_devices.schema.yml +30 -0
  127. simtools/schemas/model_parameters/camera_body_diameter.schema.yml +0 -7
  128. simtools/schemas/model_parameters/camera_body_shape.schema.yml +0 -7
  129. simtools/schemas/model_parameters/camera_config_file.schema.yml +0 -7
  130. simtools/schemas/model_parameters/camera_config_rotate.schema.yml +0 -7
  131. simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +0 -7
  132. simtools/schemas/model_parameters/camera_degraded_map.schema.yml +0 -7
  133. simtools/schemas/model_parameters/camera_depth.schema.yml +0 -7
  134. simtools/schemas/model_parameters/camera_filter.schema.yml +0 -7
  135. simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +0 -3
  136. simtools/schemas/model_parameters/camera_pixels.schema.yml +0 -7
  137. simtools/schemas/model_parameters/camera_transmission.schema.yml +0 -7
  138. simtools/schemas/model_parameters/channels_per_chip.schema.yml +0 -7
  139. simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +0 -7
  140. simtools/schemas/model_parameters/corsika_observation_level.schema.yml +0 -5
  141. simtools/schemas/model_parameters/dark_events.schema.yml +4 -3
  142. simtools/schemas/model_parameters/default_trigger.schema.yml +0 -7
  143. simtools/schemas/model_parameters/design_model.schema.yml +0 -7
  144. simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +0 -7
  145. simtools/schemas/model_parameters/disc_bins.schema.yml +0 -7
  146. simtools/schemas/model_parameters/disc_start.schema.yml +0 -7
  147. simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +0 -7
  148. simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +0 -7
  149. simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +0 -7
  150. simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +0 -7
  151. simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +0 -7
  152. simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +0 -7
  153. simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +0 -7
  154. simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +0 -7
  155. simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +0 -7
  156. simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +0 -7
  157. simtools/schemas/model_parameters/discriminator_threshold.schema.yml +0 -7
  158. simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +1 -9
  159. simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +0 -7
  160. simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +0 -7
  161. simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +0 -7
  162. simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +0 -7
  163. simtools/schemas/model_parameters/dish_shape_length.schema.yml +0 -5
  164. simtools/schemas/model_parameters/dsum_clipping.schema.yml +1 -5
  165. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +0 -3
  166. simtools/schemas/model_parameters/dsum_offset.schema.yml +0 -3
  167. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +0 -3
  168. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +0 -3
  169. simtools/schemas/model_parameters/dsum_prescale.schema.yml +0 -3
  170. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +0 -3
  171. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +0 -3
  172. simtools/schemas/model_parameters/dsum_shaping.schema.yml +0 -3
  173. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +0 -3
  174. simtools/schemas/model_parameters/dsum_threshold.schema.yml +2 -12
  175. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +0 -3
  176. simtools/schemas/model_parameters/effective_focal_length.schema.yml +0 -7
  177. simtools/schemas/model_parameters/epsg_code.schema.yml +0 -5
  178. simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +0 -7
  179. simtools/schemas/model_parameters/fadc_amplitude.schema.yml +2 -9
  180. simtools/schemas/model_parameters/fadc_bins.schema.yml +0 -7
  181. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +0 -7
  182. simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +0 -2
  183. simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +0 -7
  184. simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +0 -7
  185. simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +2 -9
  186. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +0 -7
  187. simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +0 -2
  188. simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +0 -7
  189. simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +0 -7
  190. simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +0 -7
  191. simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +0 -2
  192. simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +0 -7
  193. simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +0 -7
  194. simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +0 -7
  195. simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +0 -7
  196. simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +0 -7
  197. simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +0 -7
  198. simtools/schemas/model_parameters/fadc_long_event_threshold.schema.yml +0 -3
  199. simtools/schemas/model_parameters/fadc_long_sum_bins.schema.yml +0 -3
  200. simtools/schemas/model_parameters/fadc_long_sum_offset.schema.yml +0 -3
  201. simtools/schemas/model_parameters/fadc_max_signal.schema.yml +0 -7
  202. simtools/schemas/model_parameters/fadc_max_sum.schema.yml +0 -2
  203. simtools/schemas/model_parameters/fadc_mhz.schema.yml +0 -7
  204. simtools/schemas/model_parameters/fadc_noise.schema.yml +0 -7
  205. simtools/schemas/model_parameters/fadc_pedestal.schema.yml +0 -7
  206. simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +0 -7
  207. simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +0 -7
  208. simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +0 -7
  209. simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +0 -7
  210. simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +0 -7
  211. simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +0 -7
  212. simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +0 -7
  213. simtools/schemas/model_parameters/fake_mirror_list.schema.yml +0 -3
  214. simtools/schemas/model_parameters/flasher_angular_distribution.schema.yml +32 -0
  215. simtools/schemas/model_parameters/flasher_angular_distribution_width.schema.yml +32 -0
  216. simtools/schemas/model_parameters/flasher_bunch_size.schema.yml +28 -0
  217. simtools/schemas/model_parameters/flasher_external_trigger.schema.yml +32 -0
  218. simtools/schemas/model_parameters/flasher_photons.schema.yml +34 -0
  219. simtools/schemas/model_parameters/flasher_position.schema.yml +43 -0
  220. simtools/schemas/model_parameters/flasher_pulse_exp_decay.schema.yml +29 -0
  221. simtools/schemas/model_parameters/flasher_pulse_offset.schema.yml +35 -0
  222. simtools/schemas/model_parameters/flasher_pulse_shape.schema.yml +30 -0
  223. simtools/schemas/model_parameters/flasher_pulse_width.schema.yml +32 -0
  224. simtools/schemas/model_parameters/flasher_type.schema.yml +28 -0
  225. simtools/schemas/model_parameters/flasher_var_photons.schema.yml +31 -0
  226. simtools/schemas/model_parameters/flasher_wavelength.schema.yml +33 -0
  227. simtools/schemas/model_parameters/flatfielding.schema.yml +0 -7
  228. simtools/schemas/model_parameters/focal_length.schema.yml +0 -7
  229. simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +0 -3
  230. simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +0 -3
  231. simtools/schemas/model_parameters/focus_offset.schema.yml +0 -7
  232. simtools/schemas/model_parameters/gain_variation.schema.yml +0 -7
  233. simtools/schemas/model_parameters/geomag_horizontal.schema.yml +2 -7
  234. simtools/schemas/model_parameters/geomag_rotation.schema.yml +2 -7
  235. simtools/schemas/model_parameters/geomag_vertical.schema.yml +2 -7
  236. simtools/schemas/model_parameters/hg_lg_variation.schema.yml +0 -5
  237. simtools/schemas/model_parameters/iobuf_maximum.schema.yml +0 -7
  238. simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +0 -7
  239. simtools/schemas/model_parameters/laser_events.schema.yml +4 -3
  240. simtools/schemas/model_parameters/laser_external_trigger.schema.yml +4 -3
  241. simtools/schemas/model_parameters/laser_photons.schema.yml +4 -3
  242. simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +4 -3
  243. simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +4 -3
  244. simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +4 -3
  245. simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +4 -3
  246. simtools/schemas/model_parameters/laser_var_photons.schema.yml +4 -3
  247. simtools/schemas/model_parameters/laser_wavelength.schema.yml +4 -3
  248. simtools/schemas/model_parameters/led_events.schema.yml +4 -3
  249. simtools/schemas/model_parameters/led_photons.schema.yml +4 -3
  250. simtools/schemas/model_parameters/led_pulse_offset.schema.yml +4 -3
  251. simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +4 -3
  252. simtools/schemas/model_parameters/led_var_photons.schema.yml +4 -3
  253. simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +0 -7
  254. simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +0 -7
  255. simtools/schemas/model_parameters/min_photoelectrons.schema.yml +0 -7
  256. simtools/schemas/model_parameters/min_photons.schema.yml +0 -7
  257. simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +0 -5
  258. simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +0 -7
  259. simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +0 -7
  260. simtools/schemas/model_parameters/mirror_class.schema.yml +2 -9
  261. simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +0 -7
  262. simtools/schemas/model_parameters/mirror_focal_length.schema.yml +0 -5
  263. simtools/schemas/model_parameters/mirror_list.schema.yml +0 -7
  264. simtools/schemas/model_parameters/mirror_offset.schema.yml +0 -7
  265. simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +0 -7
  266. simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +0 -7
  267. simtools/schemas/model_parameters/multiplicity_offset.schema.yml +0 -7
  268. simtools/schemas/model_parameters/muon_mono_threshold.schema.yml +0 -7
  269. simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +0 -7
  270. simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +0 -3
  271. simtools/schemas/model_parameters/nsb_offaxis.schema.yml +0 -7
  272. simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +0 -7
  273. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +0 -5
  274. simtools/schemas/model_parameters/nsb_reference_value.schema.yml +0 -5
  275. simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +0 -5
  276. simtools/schemas/model_parameters/nsb_sky_map.schema.yml +0 -5
  277. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +0 -5
  278. simtools/schemas/model_parameters/num_gains.schema.yml +0 -7
  279. simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +0 -7
  280. simtools/schemas/model_parameters/optics_properties.schema.yml +0 -7
  281. simtools/schemas/model_parameters/parabolic_dish.schema.yml +0 -3
  282. simtools/schemas/model_parameters/pedestal_events.schema.yml +4 -7
  283. simtools/schemas/model_parameters/photon_delay.schema.yml +0 -7
  284. simtools/schemas/model_parameters/photons_per_run.schema.yml +4 -4
  285. simtools/schemas/model_parameters/pixel_cells.schema.yml +0 -3
  286. simtools/schemas/model_parameters/pixels_parallel.schema.yml +0 -3
  287. simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +0 -7
  288. simtools/schemas/model_parameters/pm_average_gain.schema.yml +0 -5
  289. simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +0 -5
  290. simtools/schemas/model_parameters/pm_gain_index.schema.yml +0 -5
  291. simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +0 -7
  292. simtools/schemas/model_parameters/pm_transit_time.schema.yml +4 -9
  293. simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +0 -5
  294. simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +0 -7
  295. simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +0 -3
  296. simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +0 -3
  297. simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +0 -3
  298. simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +0 -3
  299. simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +0 -3
  300. simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +0 -3
  301. simtools/schemas/model_parameters/qe_variation.schema.yml +0 -7
  302. simtools/schemas/model_parameters/quantum_efficiency.schema.yml +0 -7
  303. simtools/schemas/model_parameters/random_focal_length.schema.yml +2 -7
  304. simtools/schemas/model_parameters/random_generator.schema.yml +0 -7
  305. simtools/schemas/model_parameters/random_mono_probability.schema.yml +0 -7
  306. simtools/schemas/model_parameters/reference_point_altitude.schema.yml +0 -5
  307. simtools/schemas/model_parameters/reference_point_latitude.schema.yml +0 -5
  308. simtools/schemas/model_parameters/reference_point_longitude.schema.yml +0 -5
  309. simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +0 -5
  310. simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +0 -5
  311. simtools/schemas/model_parameters/sampled_output.schema.yml +0 -7
  312. simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +0 -7
  313. simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +0 -3
  314. simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +0 -3
  315. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +0 -3
  316. simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +0 -3
  317. simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +0 -3
  318. simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +0 -3
  319. simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +0 -3
  320. simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +0 -3
  321. simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +0 -3
  322. simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +0 -3
  323. simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +0 -3
  324. simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +0 -3
  325. simtools/schemas/model_parameters/stars.schema.yml +0 -5
  326. simtools/schemas/model_parameters/store_photoelectrons.schema.yml +0 -7
  327. simtools/schemas/model_parameters/tailcut_scale.schema.yml +0 -7
  328. simtools/schemas/model_parameters/telescope_axis_height.schema.yml +0 -7
  329. simtools/schemas/model_parameters/telescope_random_angle.schema.yml +0 -7
  330. simtools/schemas/model_parameters/telescope_random_error.schema.yml +0 -7
  331. simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +0 -7
  332. simtools/schemas/model_parameters/telescope_transmission.schema.yml +0 -7
  333. simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +0 -7
  334. simtools/schemas/model_parameters/teltrig_min_time.schema.yml +0 -7
  335. simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +0 -7
  336. simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +0 -7
  337. simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +0 -7
  338. simtools/schemas/model_parameters/transit_time_error.schema.yml +0 -7
  339. simtools/schemas/model_parameters/transit_time_jitter.schema.yml +0 -7
  340. simtools/schemas/model_parameters/transit_time_random.schema.yml +29 -0
  341. simtools/schemas/model_parameters/trigger_current_limit.schema.yml +0 -7
  342. simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +0 -7
  343. simtools/schemas/model_parameters/trigger_pixels.schema.yml +0 -7
  344. simtools/schemas/production_tables.schema.yml +8 -8
  345. simtools/schemas/simulation_models_info.schema.yml +78 -0
  346. simtools/simtel/simtel_config_reader.py +0 -2
  347. simtools/simtel/simtel_config_writer.py +118 -26
  348. simtools/simtel/simtel_io_metadata.py +3 -3
  349. simtools/simtel/simulator_array.py +43 -85
  350. simtools/simtel/simulator_camera_efficiency.py +0 -2
  351. simtools/simtel/simulator_light_emission.py +336 -631
  352. simtools/simtel/simulator_ray_tracing.py +2 -4
  353. simtools/simulator.py +45 -19
  354. simtools/testing/assertions.py +2 -2
  355. simtools/testing/configuration.py +21 -6
  356. simtools/testing/sim_telarray_metadata.py +4 -4
  357. simtools/utils/general.py +5 -13
  358. simtools/utils/geometry.py +34 -5
  359. simtools/utils/names.py +1 -13
  360. simtools/version.py +83 -0
  361. simtools/visualization/plot_array_layout.py +129 -23
  362. simtools/visualization/plot_incident_angles.py +0 -2
  363. simtools/visualization/plot_psf.py +163 -61
  364. simtools/visualization/plot_simtel_events.py +1 -12
  365. simtools/visualization/visualize.py +0 -12
  366. gammasimtools-0.21.0.dist-info/RECORD +0 -396
  367. simtools/model/flasher_model.py +0 -106
  368. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/WHEEL +0 -0
  369. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/licenses/LICENSE +0 -0
  370. {gammasimtools-0.21.0.dist-info → gammasimtools-0.23.0.dist-info}/top_level.txt +0 -0
@@ -42,10 +42,7 @@ r"""
42
42
  --updated_parameter_version 3.0.0
43
43
  """
44
44
 
45
- import logging
46
- from pathlib import Path
47
-
48
- import simtools.utils.general as gen
45
+ from simtools.application_control import get_application_label, startup_application
49
46
  from simtools.configuration import configurator
50
47
  from simtools.db import db_handler
51
48
  from simtools.layout.array_layout_utils import (
@@ -55,10 +52,10 @@ from simtools.layout.array_layout_utils import (
55
52
  )
56
53
 
57
54
 
58
- def _parse(label):
55
+ def _parse():
59
56
  """Parse command line configuration."""
60
57
  config = configurator.Configurator(
61
- label=label,
58
+ label=get_application_label(__file__),
62
59
  description="Derive CTAO array layouts from CTAO common identifiers repository.",
63
60
  )
64
61
  config.parser.add_argument(
@@ -85,34 +82,32 @@ def _parse(label):
85
82
  )
86
83
 
87
84
 
88
- def main(): # noqa: D103
89
- args_dict, db_config = _parse(Path(__file__).stem)
90
-
91
- logger = logging.getLogger()
92
- logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
85
+ def main():
86
+ """Derive CTAO array layouts from CTAO common identifiers repository."""
87
+ app_context = startup_application(_parse)
93
88
 
94
89
  ctao_array_layouts = retrieve_ctao_array_layouts(
95
- site=args_dict["site"],
96
- repository_url=args_dict["repository_url"],
97
- branch_name=args_dict["repository_branch"],
90
+ site=app_context.args["site"],
91
+ repository_url=app_context.args["repository_url"],
92
+ branch_name=app_context.args["repository_branch"],
98
93
  )
99
94
 
100
- db = db_handler.DatabaseHandler(mongo_db_config=db_config)
95
+ db = db_handler.DatabaseHandler(mongo_db_config=app_context.db_config)
101
96
  db_array_layouts = db.get_model_parameter(
102
97
  parameter="array_layouts",
103
- site=args_dict["site"],
98
+ site=app_context.args["site"],
104
99
  array_element_name=None,
105
- parameter_version=args_dict.get("parameter_version"),
106
- model_version=args_dict.get("model_version"),
100
+ parameter_version=app_context.args.get("parameter_version"),
101
+ model_version=app_context.args.get("model_version"),
107
102
  )
108
103
  db_array_layouts["array_layouts"].pop("_id", None)
109
104
  db_array_layouts["array_layouts"].pop("entry_date", None)
110
- logger.info(f"Layouts from model parameter database: {db_array_layouts}")
105
+ app_context.logger.info(f"Layouts from model parameter database: {db_array_layouts}")
111
106
 
112
107
  write_array_layouts(
113
108
  array_layouts=merge_array_layouts(db_array_layouts["array_layouts"], ctao_array_layouts),
114
- args_dict=args_dict,
115
- db_config=db_config,
109
+ args_dict=app_context.args,
110
+ db_config=app_context.db_config,
116
111
  )
117
112
 
118
113
 
@@ -125,18 +125,15 @@ r"""
125
125
 
126
126
  """
127
127
 
128
- import logging
129
- from pathlib import Path
130
-
131
- import simtools.utils.general as gen
128
+ from simtools.application_control import get_application_label, startup_application
132
129
  from simtools.configuration import configurator
133
130
  from simtools.ray_tracing.mirror_panel_psf import MirrorPanelPSF
134
131
 
135
132
 
136
- def _parse(label):
133
+ def _parse():
137
134
  """Parse command line configuration."""
138
135
  config = configurator.Configurator(
139
- description="Derive mirror random reflection angle.", label=label
136
+ description="Derive mirror random reflection angle.", label=get_application_label(__file__)
140
137
  )
141
138
  psf_group = config.parser.add_mutually_exclusive_group()
142
139
  psf_group.add_argument(
@@ -217,15 +214,13 @@ def _parse(label):
217
214
  )
218
215
 
219
216
 
220
- def main(): # noqa: D103
221
- label = Path(__file__).stem
222
-
223
- args_dict, db_config = _parse(label)
217
+ def main():
218
+ """Derive mirror random reflection angle of a single mirror panel."""
219
+ app_context = startup_application(_parse)
224
220
 
225
- logger = logging.getLogger()
226
- logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
227
-
228
- panel_psf = MirrorPanelPSF(label, args_dict, db_config)
221
+ panel_psf = MirrorPanelPSF(
222
+ app_context.args.get("label"), app_context.args, app_context.db_config
223
+ )
229
224
  panel_psf.derive_random_reflection_angle(save_figures=True)
230
225
  panel_psf.print_results()
231
226
  panel_psf.write_optimization_data()
@@ -34,18 +34,17 @@ r"""
34
34
 
35
35
  """
36
36
 
37
- import logging
38
37
  from pathlib import Path
39
38
 
40
- import simtools.utils.general as gen
39
+ from simtools.application_control import get_application_label, startup_application
41
40
  from simtools.camera.single_photon_electron_spectrum import SinglePhotonElectronSpectrum
42
41
  from simtools.configuration import configurator
43
42
 
44
43
 
45
- def _parse(label):
44
+ def _parse():
46
45
  """Parse command line configuration."""
47
46
  config = configurator.Configurator(
48
- label=label,
47
+ label=get_application_label(__file__),
49
48
  description="Derive single photon electron spectrum from a given amplitude spectrum.",
50
49
  )
51
50
  config.parser.add_argument(
@@ -112,13 +111,11 @@ def _parse(label):
112
111
  return config.initialize(db_config=False, output=True, simulation_model=["telescope"])
113
112
 
114
113
 
115
- def main(): # noqa: D103
116
- args_dict, _ = _parse(Path(__file__).stem)
114
+ def main():
115
+ """Derive single photon electron spectrum from a given amplitude spectrum."""
116
+ app_context = startup_application(_parse)
117
117
 
118
- logger = logging.getLogger()
119
- logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
120
-
121
- single_pe = SinglePhotonElectronSpectrum(args_dict)
118
+ single_pe = SinglePhotonElectronSpectrum(app_context.args)
122
119
  single_pe.derive_single_pe_spectrum()
123
120
  single_pe.write_single_pe_spectrum()
124
121
 
@@ -110,22 +110,19 @@ r"""
110
110
 
111
111
  """
112
112
 
113
- import logging
114
- from pathlib import Path
115
-
113
+ from simtools.application_control import get_application_label, startup_application
116
114
  from simtools.configuration import configurator
117
- from simtools.io import io_handler
118
115
  from simtools.model.model_utils import initialize_simulation_models
119
116
  from simtools.ray_tracing import psf_parameter_optimisation as psf_opt
120
- from simtools.utils.general import get_log_level_from_user
121
117
 
122
118
 
123
119
  def _parse():
124
120
  config = configurator.Configurator(
121
+ label=get_application_label(__file__),
125
122
  description=(
126
123
  "Derive mirror_reflection_random_angle, mirror_align_random_horizontal "
127
124
  "and mirror_align_random_vertical using cumulative PSF measurement."
128
- )
125
+ ),
129
126
  )
130
127
  config.parser.add_argument(
131
128
  "--src_distance",
@@ -184,30 +181,36 @@ def _parse():
184
181
  help="Use KS statistic for monte carlo uncertainty analysis.",
185
182
  action="store_true",
186
183
  )
184
+ config.parser.add_argument(
185
+ "--fraction",
186
+ help="PSF containment fraction for diameter calculation (e.g., 0.8 for D80, 0.95 for D95).",
187
+ type=float,
188
+ default=0.8,
189
+ )
187
190
  return config.initialize(
188
191
  db_config=True,
189
192
  simulation_model=["telescope", "model_version", "parameter_version"],
190
193
  )
191
194
 
192
195
 
193
- def main(): # noqa: D103
194
- args_dict, db_config = _parse()
195
-
196
- label = label = Path(__file__).stem
197
- logger = logging.getLogger()
198
- logger.setLevel(get_log_level_from_user(args_dict["log_level"]))
196
+ def main():
197
+ """Derive PSF parameters."""
198
+ app_context = startup_application(_parse)
199
199
 
200
- _io_handler = io_handler.IOHandler()
201
- output_dir = _io_handler.get_output_directory(label, sub_dir="application-plots")
202
- tel_model, site_model = initialize_simulation_models(
203
- label=label,
204
- db_config=db_config,
205
- site=args_dict["site"],
206
- telescope_name=args_dict["telescope"],
207
- model_version=args_dict["model_version"],
200
+ tel_model, site_model, _ = initialize_simulation_models(
201
+ label=app_context.args.get("label"),
202
+ db_config=app_context.db_config,
203
+ site=app_context.args["site"],
204
+ telescope_name=app_context.args["telescope"],
205
+ model_version=app_context.args["model_version"],
208
206
  )
209
207
 
210
- psf_opt.run_psf_optimization_workflow(tel_model, site_model, args_dict, output_dir)
208
+ psf_opt.run_psf_optimization_workflow(
209
+ tel_model,
210
+ site_model,
211
+ app_context.args,
212
+ app_context.io_handler.get_output_directory(),
213
+ )
211
214
 
212
215
 
213
216
  if __name__ == "__main__":
@@ -37,9 +37,7 @@ Derive trigger rates for the South Alpha layout:
37
37
 
38
38
  """
39
39
 
40
- import logging
41
-
42
- import simtools.utils.general as gen
40
+ from simtools.application_control import get_application_label, startup_application
43
41
  from simtools.configuration import configurator
44
42
  from simtools.telescope_trigger_rates import telescope_trigger_rates
45
43
 
@@ -47,6 +45,7 @@ from simtools.telescope_trigger_rates import telescope_trigger_rates
47
45
  def _parse():
48
46
  """Parse command line configuration."""
49
47
  config = configurator.Configurator(
48
+ label=get_application_label(__file__),
50
49
  description="Derive trigger rates for a single telescope or an array of telescopes.",
51
50
  )
52
51
  config.parser.add_argument(
@@ -78,13 +77,11 @@ def _parse():
78
77
  )
79
78
 
80
79
 
81
- def main(): # noqa: D103
82
- args_dict, db_config = _parse()
83
-
84
- logger = logging.getLogger()
85
- logger.setLevel(gen.get_log_level_from_user(args_dict.get("log_level", "info")))
80
+ def main():
81
+ """Derive trigger rates for a single telescope or an array of telescopes."""
82
+ app_context = startup_application(_parse)
86
83
 
87
- telescope_trigger_rates(args_dict, db_config)
84
+ telescope_trigger_rates(app_context.args, app_context.db_config)
88
85
 
89
86
 
90
87
  if __name__ == "__main__":
@@ -7,20 +7,18 @@ The report includes detailed information on each parameter,
7
7
  such as the parameter name, value, unit, description, and short description.
8
8
  """
9
9
 
10
- import logging
11
10
  from pathlib import Path
12
11
 
12
+ from simtools.application_control import get_application_label, startup_application
13
13
  from simtools.configuration import configurator
14
- from simtools.io import io_handler
15
14
  from simtools.reporting.docs_auto_report_generator import ReportGenerator
16
15
  from simtools.reporting.docs_read_parameters import ReadParameters
17
- from simtools.utils import general as gen
18
16
 
19
17
 
20
- def _parse(label):
18
+ def _parse():
21
19
  """Parse command line configuration."""
22
20
  config = configurator.Configurator(
23
- label=label,
21
+ label=get_application_label(__file__),
24
22
  description=("Produce a markdown report for model parameters."),
25
23
  )
26
24
 
@@ -51,34 +49,35 @@ def _parse(label):
51
49
  )
52
50
 
53
51
 
54
- def main(): # noqa: D103
55
- label_name = "reports"
56
- args, db_config = _parse(label_name)
52
+ def main():
53
+ """Produce a markdown file for a given array element, site, and model version."""
54
+ app_context = startup_application(_parse)
55
+ output_path = app_context.io_handler.get_output_directory()
57
56
 
58
- io_handler_instance = io_handler.IOHandler()
59
- output_path = io_handler_instance.get_output_directory(label=label_name, sub_dir="productions")
60
-
61
- logger = logging.getLogger()
62
- logger.setLevel(gen.get_log_level_from_user(args["log_level"]))
63
-
64
- if any([args.get("all_telescopes"), args.get("all_sites"), args.get("all_model_versions")]):
57
+ if any(
58
+ [
59
+ app_context.args.get("all_telescopes"),
60
+ app_context.args.get("all_sites"),
61
+ app_context.args.get("all_model_versions"),
62
+ ]
63
+ ):
65
64
  ReportGenerator(
66
- db_config,
67
- args,
65
+ app_context.db_config,
66
+ app_context.args,
68
67
  output_path,
69
68
  ).auto_generate_array_element_reports()
70
69
 
71
70
  else:
72
- model_version = args["model_version"]
71
+ model_version = app_context.args["model_version"]
73
72
  ReadParameters(
74
- db_config,
75
- args,
73
+ app_context.db_config,
74
+ app_context.args,
76
75
  Path(output_path / f"{model_version}"),
77
76
  ).produce_array_element_report()
78
77
 
79
- logger.info(
80
- f"Markdown report generated for {args['site']}"
81
- f" Telescope {args['telescope']} (v{model_version}):"
78
+ app_context.logger.info(
79
+ f"Markdown report generated for {app_context.args['site']}"
80
+ f" Telescope {app_context.args['telescope']} (v{model_version}):"
82
81
  f" {output_path}"
83
82
  )
84
83
 
@@ -2,47 +2,49 @@
2
2
 
3
3
  r"""Produces a markdown file for calibration reports."""
4
4
 
5
- import logging
6
-
5
+ from simtools.application_control import get_application_label, startup_application
7
6
  from simtools.configuration import configurator
8
- from simtools.io import io_handler
9
- from simtools.reporting.docs_read_parameters import ReadParameters
10
- from simtools.utils import general as gen
7
+ from simtools.reporting.docs_auto_report_generator import ReportGenerator
11
8
 
12
9
 
13
- def _parse(label):
10
+ def _parse():
14
11
  """Parse command line configuration."""
15
12
  config = configurator.Configurator(
16
- label=label,
13
+ label=get_application_label(__file__),
17
14
  description=("Produce a markdown report for calibration parameters."),
18
15
  )
19
16
 
17
+ config.parser.add_argument(
18
+ "--all_model_versions",
19
+ action="store_true",
20
+ help="Produce reports for all model versions.",
21
+ )
22
+
20
23
  return config.initialize(
21
24
  db_config=True,
22
25
  simulation_model=["model_version"],
23
26
  )
24
27
 
25
28
 
26
- def main(): # noqa: D103
27
- label_name = "reports"
28
- args, db_config = _parse(label_name)
29
-
30
- io_handler_instance = io_handler.IOHandler()
31
- output_path = io_handler_instance.get_output_directory(label=label_name, sub_dir="productions")
32
-
33
- logger = logging.getLogger()
34
- logger.setLevel(gen.get_log_level_from_user(args["log_level"]))
35
-
36
- read_parameters = ReadParameters(
37
- db_config=db_config, args=args, output_path=output_path / f"{args.get('model_version')}"
38
- )
29
+ def main():
30
+ """Produce a markdown file for calibration reports."""
31
+ app_context = startup_application(_parse)
39
32
 
40
- read_parameters.produce_calibration_reports()
33
+ output_path = app_context.io_handler.get_output_directory()
41
34
 
42
- logger.info(
43
- f"Calibation reports for model version {args.get('model_version')} produced successfully."
35
+ generator = ReportGenerator(
36
+ db_config=app_context.db_config, args=app_context.args, output_path=output_path
44
37
  )
45
- logger.info(f"Output path: {output_path}/{args.get('model_version')}/")
38
+ generator.auto_generate_calibration_reports()
39
+
40
+ if app_context.args.get("all_model_versions"):
41
+ app_context.logger.info("Calibration reports for all model versions produced successfully.")
42
+ else:
43
+ app_context.logger.info(
44
+ f"Calibration reports for model version {app_context.args.get('model_version')}"
45
+ " produced successfully."
46
+ )
47
+ app_context.logger.info(f"Output path: {output_path}")
46
48
 
47
49
 
48
50
  if __name__ == "__main__":
@@ -8,19 +8,16 @@ comparing their values over various model versions.
8
8
  Currently only implemented for telescopes.
9
9
  """
10
10
 
11
- import logging
12
-
11
+ from simtools.application_control import get_application_label, startup_application
13
12
  from simtools.configuration import configurator
14
- from simtools.io import io_handler
15
13
  from simtools.reporting.docs_auto_report_generator import ReportGenerator
16
14
  from simtools.reporting.docs_read_parameters import ReadParameters
17
- from simtools.utils import general as gen
18
15
 
19
16
 
20
- def _parse(label):
17
+ def _parse():
21
18
  """Parse command line configuration."""
22
19
  config = configurator.Configurator(
23
- label=label,
20
+ label=get_application_label(__file__),
24
21
  description=("Produce a markdown report for model parameters."),
25
22
  )
26
23
 
@@ -37,32 +34,28 @@ def _parse(label):
37
34
  return config.initialize(db_config=True, simulation_model=["site", "telescope"])
38
35
 
39
36
 
40
- def main(): # noqa: D103
41
- label_name = "reports"
42
- args, db_config = _parse(label_name)
43
- io_handler_instance = io_handler.IOHandler()
44
- output_path = io_handler_instance.get_output_directory(label=label_name, sub_dir="parameters")
45
-
46
- logger = logging.getLogger()
47
- logger.setLevel(gen.get_log_level_from_user(args["log_level"]))
37
+ def main():
38
+ """Produce a model parameter report per array element."""
39
+ app_context = startup_application(_parse)
40
+ output_path = app_context.io_handler.get_output_directory()
48
41
 
49
- if any([args.get("all_telescopes"), args.get("all_sites")]):
42
+ if any([app_context.args.get("all_telescopes"), app_context.args.get("all_sites")]):
50
43
  ReportGenerator(
51
- db_config,
52
- args,
44
+ app_context.db_config,
45
+ app_context.args,
53
46
  output_path,
54
47
  ).auto_generate_parameter_reports()
55
48
 
56
49
  else:
57
50
  ReadParameters(
58
- db_config,
59
- args,
51
+ app_context.db_config,
52
+ app_context.args,
60
53
  output_path,
61
54
  ).produce_model_parameter_reports()
62
55
 
63
- logger.info(
64
- f"Markdown report generated for {args['site']}"
65
- f"Telescope {args['telescope']}: {output_path}"
56
+ app_context.logger.info(
57
+ f"Markdown report generated for {app_context.args['site']}"
58
+ f"Telescope {app_context.args['telescope']}: {output_path}"
66
59
  )
67
60
 
68
61
 
@@ -2,21 +2,24 @@
2
2
 
3
3
  r"""Produces a markdown file for a given simulation configuration."""
4
4
 
5
- import logging
6
-
5
+ from simtools.application_control import get_application_label, startup_application
7
6
  from simtools.configuration import configurator
8
- from simtools.io import io_handler
9
- from simtools.reporting.docs_read_parameters import ReadParameters
10
- from simtools.utils import general as gen
7
+ from simtools.reporting.docs_auto_report_generator import ReportGenerator
11
8
 
12
9
 
13
- def _parse(label):
10
+ def _parse():
14
11
  """Parse command line configuration."""
15
12
  config = configurator.Configurator(
16
- label=label,
13
+ label=get_application_label(__file__),
17
14
  description=("Produce a markdown report for model parameters."),
18
15
  )
19
16
 
17
+ config.parser.add_argument(
18
+ "--all_model_versions",
19
+ action="store_true",
20
+ help="Produce reports for all model versions.",
21
+ )
22
+
20
23
  return config.initialize(
21
24
  db_config=True,
22
25
  simulation_model=["model_version"],
@@ -24,26 +27,22 @@ def _parse(label):
24
27
  )
25
28
 
26
29
 
27
- def main(): # noqa: D103
28
- label_name = "reports"
29
- args, db_config = _parse(label_name)
30
+ def main():
31
+ """Produce a markdown file for a given simulation configuration."""
32
+ app_context = startup_application(_parse)
30
33
 
31
- io_handler_instance = io_handler.IOHandler()
32
- output_path = io_handler_instance.get_output_directory(label=label_name, sub_dir="productions")
34
+ output_path = app_context.io_handler.get_output_directory()
33
35
 
34
- logger = logging.getLogger()
35
- logger.setLevel(gen.get_log_level_from_user(args["log_level"]))
36
-
37
- read_parameters = ReadParameters(
38
- db_config=db_config, args=args, output_path=output_path / f"{args.get('model_version')}"
36
+ report_generator = ReportGenerator(
37
+ db_config=app_context.db_config, args=app_context.args, output_path=output_path
39
38
  )
39
+ report_generator.auto_generate_simulation_configuration_reports()
40
40
 
41
- read_parameters.produce_simulation_configuration_report()
42
-
43
- logger.info(
44
- f"Configuration reports for {args.get('simulation_software')} produced successfully."
41
+ app_context.logger.info(
42
+ f"Configuration reports for {app_context.args.get('simulation_software')} "
43
+ "produced successfully."
45
44
  )
46
- logger.info(f"Output path: {output_path}/{args.get('model_version')}/")
45
+ app_context.logger.info(f"Output path: {output_path}")
47
46
 
48
47
 
49
48
  if __name__ == "__main__":
@@ -25,50 +25,31 @@ North - 5.0.0:
25
25
  The output is saved in simtools-output/test/model.
26
26
  """
27
27
 
28
- import logging
29
- from pathlib import Path
30
-
31
- import simtools.utils.general as gen
28
+ from simtools.application_control import get_application_label, startup_application
32
29
  from simtools.configuration import configurator
33
30
  from simtools.model.array_model import ArrayModel
34
31
 
35
32
 
36
- def _parse(label, description):
37
- """
38
- Parse command line configuration.
39
-
40
- Parameters
41
- ----------
42
- label : str
43
- Label describing the application.
44
- description : str
45
- Description of the application.
46
-
47
- Returns
48
- -------
49
- CommandLineParser
50
- Command line parser object.
51
- """
52
- config = configurator.Configurator(label=label, description=description)
33
+ def _parse():
34
+ """Parse command line configuration."""
35
+ config = configurator.Configurator(
36
+ label=get_application_label(__file__),
37
+ description="Generate sim_telarray configuration files for a given array.",
38
+ )
53
39
  return config.initialize(db_config=True, simulation_model=["site", "layout", "model_version"])
54
40
 
55
41
 
56
42
  def main():
57
43
  """Generate sim_telarray configuration files for a given array."""
58
- args_dict, db_config = _parse(
59
- label=Path(__file__).stem,
60
- description=("Generate sim_telarray configuration files for a given array."),
61
- )
62
- logger = logging.getLogger("simtools")
63
- logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
44
+ app_context = startup_application(_parse)
64
45
 
65
46
  array_model = ArrayModel(
66
- label=args_dict["label"],
67
- model_version=args_dict["model_version"],
68
- mongo_db_config=db_config,
69
- site=args_dict.get("site"),
70
- layout_name=args_dict.get("array_layout_name"),
71
- array_elements=args_dict.get("array_elements"),
47
+ label=app_context.args["label"],
48
+ model_version=app_context.args["model_version"],
49
+ mongo_db_config=app_context.db_config,
50
+ site=app_context.args.get("site"),
51
+ layout_name=app_context.args.get("array_layout_name"),
52
+ array_elements=app_context.args.get("array_elements"),
72
53
  )
73
54
  array_model.print_telescope_list()
74
55
  array_model.export_all_simtel_config_files()