gammasimtools 0.6.0__py3-none-any.whl → 0.8.1__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 (353) hide show
  1. gammasimtools-0.8.1.dist-info/METADATA +172 -0
  2. gammasimtools-0.8.1.dist-info/RECORD +346 -0
  3. {gammasimtools-0.6.0.dist-info → gammasimtools-0.8.1.dist-info}/WHEEL +1 -1
  4. gammasimtools-0.8.1.dist-info/entry_points.txt +31 -0
  5. simtools/_version.py +2 -2
  6. simtools/applications/calculate_trigger_rate.py +210 -0
  7. simtools/applications/convert_all_model_parameters_from_simtel.py +372 -0
  8. simtools/applications/{print_array_elements.py → convert_geo_coordinates_of_array_elements.py} +58 -63
  9. simtools/applications/convert_model_parameter_from_simtel.py +119 -0
  10. simtools/applications/{add_file_to_db.py → db_add_file_to_db.py} +70 -60
  11. simtools/applications/db_add_model_parameters_from_repository_to_db.py +184 -0
  12. simtools/applications/db_add_value_from_json_to_db.py +105 -0
  13. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +180 -0
  14. simtools/applications/db_get_array_layouts_from_db.py +162 -0
  15. simtools/applications/{get_file_from_db.py → db_get_file_from_db.py} +30 -34
  16. simtools/applications/db_get_parameter_from_db.py +131 -0
  17. simtools/applications/db_inspect_databases.py +52 -0
  18. simtools/applications/derive_mirror_rnda.py +39 -255
  19. simtools/applications/derive_psf_parameters.py +441 -0
  20. simtools/applications/generate_array_config.py +82 -0
  21. simtools/applications/generate_corsika_histograms.py +52 -52
  22. simtools/applications/generate_default_metadata.py +5 -8
  23. simtools/applications/generate_regular_arrays.py +117 -0
  24. simtools/applications/generate_simtel_array_histograms.py +97 -56
  25. simtools/applications/plot_array_layout.py +345 -115
  26. simtools/applications/production_generate_simulation_config.py +158 -0
  27. simtools/applications/production_scale_events.py +168 -0
  28. simtools/applications/simulate_light_emission.py +478 -0
  29. simtools/applications/simulate_prod.py +97 -175
  30. simtools/applications/submit_data_from_external.py +9 -12
  31. simtools/applications/submit_model_parameter_from_external.py +122 -0
  32. simtools/applications/validate_camera_efficiency.py +35 -102
  33. simtools/applications/validate_camera_fov.py +20 -19
  34. simtools/applications/{compare_cumulative_psf.py → validate_cumulative_psf.py} +45 -44
  35. simtools/applications/validate_file_using_schema.py +113 -47
  36. simtools/applications/validate_optics.py +17 -22
  37. simtools/camera_efficiency.py +193 -202
  38. simtools/configuration/commandline_parser.py +384 -96
  39. simtools/configuration/configurator.py +55 -71
  40. simtools/constants.py +5 -5
  41. simtools/corsika/corsika_config.py +482 -342
  42. simtools/corsika/corsika_histograms.py +226 -204
  43. simtools/corsika/corsika_histograms_visualize.py +23 -24
  44. simtools/corsika/primary_particle.py +159 -0
  45. simtools/data_model/data_reader.py +25 -20
  46. simtools/data_model/format_checkers.py +52 -0
  47. simtools/data_model/metadata_collector.py +210 -184
  48. simtools/data_model/metadata_model.py +115 -37
  49. simtools/data_model/model_data_writer.py +335 -26
  50. simtools/data_model/validate_data.py +366 -154
  51. simtools/db/db_array_elements.py +130 -0
  52. simtools/db/db_from_repo_handler.py +106 -0
  53. simtools/db/db_handler.py +1246 -0
  54. simtools/io_operations/hdf5_handler.py +3 -1
  55. simtools/io_operations/io_handler.py +32 -57
  56. simtools/job_execution/job_manager.py +82 -69
  57. simtools/layout/array_layout.py +329 -533
  58. simtools/layout/geo_coordinates.py +8 -11
  59. simtools/layout/telescope_position.py +163 -86
  60. simtools/model/array_model.py +305 -256
  61. simtools/model/calibration_model.py +50 -0
  62. simtools/model/camera.py +233 -496
  63. simtools/model/mirrors.py +61 -44
  64. simtools/model/model_parameter.py +602 -0
  65. simtools/model/model_utils.py +7 -103
  66. simtools/model/site_model.py +161 -0
  67. simtools/model/telescope_model.py +127 -621
  68. simtools/production_configuration/calculate_statistical_errors_grid_point.py +454 -0
  69. simtools/production_configuration/event_scaler.py +146 -0
  70. simtools/production_configuration/generate_simulation_config.py +193 -0
  71. simtools/production_configuration/interpolation_handler.py +197 -0
  72. simtools/ray_tracing/__init__.py +0 -0
  73. simtools/ray_tracing/mirror_panel_psf.py +280 -0
  74. simtools/{psf_analysis.py → ray_tracing/psf_analysis.py} +133 -47
  75. simtools/ray_tracing/ray_tracing.py +646 -0
  76. simtools/runners/__init__.py +0 -0
  77. simtools/runners/corsika_runner.py +240 -0
  78. simtools/runners/corsika_simtel_runner.py +225 -0
  79. simtools/runners/runner_services.py +307 -0
  80. simtools/runners/simtel_runner.py +224 -0
  81. simtools/schemas/array_elements.yml +137 -0
  82. simtools/schemas/integration_tests_config.metaschema.yml +93 -0
  83. simtools/schemas/metadata.metaschema.yml +6 -0
  84. simtools/schemas/model_parameter.metaschema.yml +78 -0
  85. simtools/schemas/{data.metaschema.yml → model_parameter_and_data_schema.metaschema.yml} +27 -44
  86. simtools/schemas/model_parameters/adjust_gain.schema.yml +37 -0
  87. simtools/schemas/model_parameters/altitude.schema.yml +37 -0
  88. simtools/schemas/model_parameters/array_coordinates.schema.yml +33 -0
  89. simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +77 -0
  90. simtools/schemas/model_parameters/array_element_position_ground.schema.yml +39 -0
  91. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +39 -0
  92. simtools/schemas/model_parameters/array_layouts.schema.yml +48 -0
  93. simtools/schemas/model_parameters/array_triggers.schema.yml +93 -0
  94. simtools/schemas/model_parameters/asum_clipping.schema.yml +38 -0
  95. simtools/schemas/model_parameters/asum_offset.schema.yml +35 -0
  96. simtools/schemas/model_parameters/asum_shaping.schema.yml +35 -0
  97. simtools/schemas/model_parameters/asum_threshold.schema.yml +38 -0
  98. simtools/schemas/model_parameters/atmospheric_profile.schema.yml +32 -0
  99. simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +35 -0
  100. simtools/schemas/model_parameters/axes_offsets.schema.yml +53 -0
  101. simtools/schemas/model_parameters/camera_body_diameter.schema.yml +40 -0
  102. simtools/schemas/model_parameters/camera_body_shape.schema.yml +45 -0
  103. simtools/schemas/model_parameters/camera_config_file.schema.yml +40 -0
  104. simtools/schemas/model_parameters/camera_config_rotate.schema.yml +36 -0
  105. simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +43 -0
  106. simtools/schemas/model_parameters/camera_degraded_map.schema.yml +42 -0
  107. simtools/schemas/model_parameters/camera_depth.schema.yml +42 -0
  108. simtools/schemas/model_parameters/camera_filter.schema.yml +45 -0
  109. simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +29 -0
  110. simtools/schemas/model_parameters/camera_pixels.schema.yml +36 -0
  111. simtools/schemas/model_parameters/camera_transmission.schema.yml +41 -0
  112. simtools/schemas/model_parameters/channels_per_chip.schema.yml +36 -0
  113. simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +35 -0
  114. simtools/schemas/model_parameters/corsika_cherenkov_photon_bunch_size.schema.yml +27 -0
  115. simtools/schemas/model_parameters/corsika_cherenkov_photon_wavelength_range.schema.yml +38 -0
  116. simtools/schemas/model_parameters/corsika_first_interaction_height.schema.yml +28 -0
  117. simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +23 -0
  118. simtools/schemas/model_parameters/corsika_iact_max_bunches.schema.yml +27 -0
  119. simtools/schemas/model_parameters/corsika_iact_split_auto.schema.yml +28 -0
  120. simtools/schemas/model_parameters/corsika_longitudinal_shower_development.schema.yml +27 -0
  121. simtools/schemas/model_parameters/corsika_observation_level.schema.yml +38 -0
  122. simtools/schemas/model_parameters/corsika_particle_kinetic_energy_cutoff.schema.yml +52 -0
  123. simtools/schemas/model_parameters/corsika_starting_grammage.schema.yml +27 -0
  124. simtools/schemas/model_parameters/dark_events.schema.yml +32 -0
  125. simtools/schemas/model_parameters/default_trigger.schema.yml +35 -0
  126. simtools/schemas/model_parameters/design_model.schema.yml +31 -0
  127. simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +32 -0
  128. simtools/schemas/model_parameters/disc_bins.schema.yml +39 -0
  129. simtools/schemas/model_parameters/disc_start.schema.yml +41 -0
  130. simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +42 -0
  131. simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +41 -0
  132. simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +41 -0
  133. simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +39 -0
  134. simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +40 -0
  135. simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +41 -0
  136. simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +33 -0
  137. simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +42 -0
  138. simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +37 -0
  139. simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +44 -0
  140. simtools/schemas/model_parameters/discriminator_threshold.schema.yml +36 -0
  141. simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +45 -0
  142. simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +40 -0
  143. simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +41 -0
  144. simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +38 -0
  145. simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +38 -0
  146. simtools/schemas/model_parameters/dish_shape_length.schema.yml +41 -0
  147. simtools/schemas/model_parameters/dsum_clipping.schema.yml +38 -0
  148. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +38 -0
  149. simtools/schemas/model_parameters/dsum_offset.schema.yml +37 -0
  150. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +33 -0
  151. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +39 -0
  152. simtools/schemas/model_parameters/dsum_prescale.schema.yml +44 -0
  153. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +38 -0
  154. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +45 -0
  155. simtools/schemas/model_parameters/dsum_shaping.schema.yml +44 -0
  156. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +32 -0
  157. simtools/schemas/model_parameters/dsum_threshold.schema.yml +43 -0
  158. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +42 -0
  159. simtools/schemas/model_parameters/effective_focal_length.schema.yml +61 -0
  160. simtools/schemas/model_parameters/epsg_code.schema.yml +37 -0
  161. simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +35 -0
  162. simtools/schemas/model_parameters/fadc_amplitude.schema.yml +46 -0
  163. simtools/schemas/model_parameters/fadc_bins.schema.yml +40 -0
  164. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +50 -0
  165. simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +38 -0
  166. simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +42 -0
  167. simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +49 -0
  168. simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +47 -0
  169. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +51 -0
  170. simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +37 -0
  171. simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +43 -0
  172. simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +49 -0
  173. simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +43 -0
  174. simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +39 -0
  175. simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +42 -0
  176. simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +40 -0
  177. simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +50 -0
  178. simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +42 -0
  179. simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +41 -0
  180. simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +42 -0
  181. simtools/schemas/model_parameters/fadc_max_signal.schema.yml +43 -0
  182. simtools/schemas/model_parameters/fadc_max_sum.schema.yml +39 -0
  183. simtools/schemas/model_parameters/fadc_mhz.schema.yml +31 -0
  184. simtools/schemas/model_parameters/fadc_noise.schema.yml +41 -0
  185. simtools/schemas/model_parameters/fadc_pedestal.schema.yml +40 -0
  186. simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +39 -0
  187. simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +50 -0
  188. simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +43 -0
  189. simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +43 -0
  190. simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +42 -0
  191. simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +41 -0
  192. simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +42 -0
  193. simtools/schemas/model_parameters/flatfielding.schema.yml +37 -0
  194. simtools/schemas/model_parameters/focal_length.schema.yml +45 -0
  195. simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +158 -0
  196. simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +29 -0
  197. simtools/schemas/model_parameters/focus_offset.schema.yml +66 -0
  198. simtools/schemas/model_parameters/gain_variation.schema.yml +43 -0
  199. simtools/schemas/model_parameters/geomag_horizontal.schema.yml +34 -0
  200. simtools/schemas/model_parameters/geomag_rotation.schema.yml +37 -0
  201. simtools/schemas/model_parameters/geomag_vertical.schema.yml +34 -0
  202. simtools/schemas/model_parameters/hg_lg_variation.schema.yml +36 -0
  203. simtools/schemas/model_parameters/iobuf_maximum.schema.yml +34 -0
  204. simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +34 -0
  205. simtools/schemas/model_parameters/laser_events.schema.yml +36 -0
  206. simtools/schemas/model_parameters/laser_external_trigger.schema.yml +35 -0
  207. simtools/schemas/model_parameters/laser_photons.schema.yml +32 -0
  208. simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +34 -0
  209. simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +34 -0
  210. simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +33 -0
  211. simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +33 -0
  212. simtools/schemas/model_parameters/laser_var_photons.schema.yml +33 -0
  213. simtools/schemas/model_parameters/laser_wavelength.schema.yml +33 -0
  214. simtools/schemas/model_parameters/led_events.schema.yml +34 -0
  215. simtools/schemas/model_parameters/led_photons.schema.yml +34 -0
  216. simtools/schemas/model_parameters/led_pulse_offset.schema.yml +32 -0
  217. simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +33 -0
  218. simtools/schemas/model_parameters/led_var_photons.schema.yml +34 -0
  219. simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +41 -0
  220. simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +43 -0
  221. simtools/schemas/model_parameters/min_photoelectrons.schema.yml +35 -0
  222. simtools/schemas/model_parameters/min_photons.schema.yml +32 -0
  223. simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +36 -0
  224. simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +64 -0
  225. simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +64 -0
  226. simtools/schemas/model_parameters/mirror_class.schema.yml +41 -0
  227. simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +51 -0
  228. simtools/schemas/model_parameters/mirror_focal_length.schema.yml +42 -0
  229. simtools/schemas/model_parameters/mirror_list.schema.yml +38 -0
  230. simtools/schemas/model_parameters/mirror_offset.schema.yml +41 -0
  231. simtools/schemas/model_parameters/mirror_panel_2f_measurements.schema.yml +39 -0
  232. simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +61 -0
  233. simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +40 -0
  234. simtools/schemas/model_parameters/multiplicity_offset.schema.yml +46 -0
  235. simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +51 -0
  236. simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +37 -0
  237. simtools/schemas/model_parameters/nsb_offaxis.schema.yml +79 -0
  238. simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +47 -0
  239. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +34 -0
  240. simtools/schemas/model_parameters/nsb_reference_value.schema.yml +33 -0
  241. simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +35 -0
  242. simtools/schemas/model_parameters/nsb_skymap.schema.yml +39 -0
  243. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +50 -0
  244. simtools/schemas/model_parameters/num_gains.schema.yml +34 -0
  245. simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +33 -0
  246. simtools/schemas/model_parameters/optics_properties.schema.yml +31 -0
  247. simtools/schemas/model_parameters/parabolic_dish.schema.yml +32 -0
  248. simtools/schemas/model_parameters/pedestal_events.schema.yml +32 -0
  249. simtools/schemas/model_parameters/photon_delay.schema.yml +38 -0
  250. simtools/schemas/model_parameters/photons_per_run.schema.yml +33 -0
  251. simtools/schemas/model_parameters/pixel_cells.schema.yml +35 -0
  252. simtools/schemas/model_parameters/pixels_parallel.schema.yml +54 -0
  253. simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +40 -0
  254. simtools/schemas/model_parameters/pm_average_gain.schema.yml +34 -0
  255. simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +40 -0
  256. simtools/schemas/model_parameters/pm_gain_index.schema.yml +36 -0
  257. simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +41 -0
  258. simtools/schemas/model_parameters/pm_transit_time.schema.yml +63 -0
  259. simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +39 -0
  260. simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +42 -0
  261. simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +33 -0
  262. simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +33 -0
  263. simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +29 -0
  264. simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +168 -0
  265. simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +36 -0
  266. simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +34 -0
  267. simtools/schemas/model_parameters/qe_variation.schema.yml +43 -0
  268. simtools/schemas/model_parameters/quantum_efficiency.schema.yml +42 -0
  269. simtools/schemas/model_parameters/random_focal_length.schema.yml +45 -0
  270. simtools/schemas/model_parameters/random_generator.schema.yml +36 -0
  271. simtools/schemas/model_parameters/reference_point_altitude.schema.yml +35 -0
  272. simtools/schemas/model_parameters/reference_point_latitude.schema.yml +36 -0
  273. simtools/schemas/model_parameters/reference_point_longitude.schema.yml +36 -0
  274. simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +34 -0
  275. simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +34 -0
  276. simtools/schemas/model_parameters/sampled_output.schema.yml +31 -0
  277. simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +34 -0
  278. simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +79 -0
  279. simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +42 -0
  280. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +41 -0
  281. simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +33 -0
  282. simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +36 -0
  283. simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +29 -0
  284. simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +168 -0
  285. simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +36 -0
  286. simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +35 -0
  287. simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +37 -0
  288. simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +40 -0
  289. simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +40 -0
  290. simtools/schemas/model_parameters/store_photoelectrons.schema.yml +41 -0
  291. simtools/schemas/model_parameters/tailcut_scale.schema.yml +40 -0
  292. simtools/schemas/model_parameters/telescope_axis_height.schema.yml +31 -0
  293. simtools/schemas/model_parameters/telescope_random_angle.schema.yml +35 -0
  294. simtools/schemas/model_parameters/telescope_random_error.schema.yml +34 -0
  295. simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +37 -0
  296. simtools/schemas/model_parameters/telescope_transmission.schema.yml +113 -0
  297. simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +41 -0
  298. simtools/schemas/model_parameters/teltrig_min_time.schema.yml +36 -0
  299. simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +36 -0
  300. simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +37 -0
  301. simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +38 -0
  302. simtools/schemas/model_parameters/transit_time_error.schema.yml +45 -0
  303. simtools/schemas/model_parameters/transit_time_jitter.schema.yml +36 -0
  304. simtools/schemas/model_parameters/trigger_current_limit.schema.yml +32 -0
  305. simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +53 -0
  306. simtools/schemas/model_parameters/trigger_pixels.schema.yml +40 -0
  307. simtools/simtel/simtel_config_reader.py +353 -0
  308. simtools/simtel/simtel_config_writer.py +244 -63
  309. simtools/simtel/{simtel_events.py → simtel_io_events.py} +26 -25
  310. simtools/simtel/simtel_io_histogram.py +661 -0
  311. simtools/simtel/simtel_io_histograms.py +569 -0
  312. simtools/simtel/simulator_array.py +145 -0
  313. simtools/simtel/{simtel_runner_camera_efficiency.py → simulator_camera_efficiency.py} +76 -52
  314. simtools/simtel/simulator_light_emission.py +473 -0
  315. simtools/simtel/simulator_ray_tracing.py +262 -0
  316. simtools/simulator.py +220 -446
  317. simtools/testing/__init__.py +0 -0
  318. simtools/testing/assertions.py +151 -0
  319. simtools/testing/configuration.py +226 -0
  320. simtools/testing/helpers.py +42 -0
  321. simtools/testing/validate_output.py +240 -0
  322. simtools/utils/general.py +340 -437
  323. simtools/utils/geometry.py +12 -12
  324. simtools/utils/names.py +266 -568
  325. simtools/utils/value_conversion.py +176 -0
  326. simtools/version.py +2 -0
  327. simtools/visualization/legend_handlers.py +135 -152
  328. simtools/visualization/plot_camera.py +379 -0
  329. simtools/visualization/visualize.py +346 -167
  330. gammasimtools-0.6.0.dist-info/METADATA +0 -180
  331. gammasimtools-0.6.0.dist-info/RECORD +0 -91
  332. gammasimtools-0.6.0.dist-info/entry_points.txt +0 -23
  333. simtools/applications/db_development_tools/add_new_parameter_to_db.py +0 -81
  334. simtools/applications/db_development_tools/add_unit_to_parameter_in_db.py +0 -59
  335. simtools/applications/db_development_tools/mark_non_optics_parameters_non_applicable.py +0 -102
  336. simtools/applications/get_parameter.py +0 -92
  337. simtools/applications/make_regular_arrays.py +0 -160
  338. simtools/applications/produce_array_config.py +0 -136
  339. simtools/applications/production.py +0 -313
  340. simtools/applications/sim_showers_for_trigger_rates.py +0 -187
  341. simtools/applications/tune_psf.py +0 -334
  342. simtools/corsika/corsika_default_config.py +0 -282
  343. simtools/corsika/corsika_runner.py +0 -450
  344. simtools/corsika_simtel/corsika_simtel_runner.py +0 -197
  345. simtools/db_handler.py +0 -1481
  346. simtools/ray_tracing.py +0 -525
  347. simtools/simtel/simtel_histograms.py +0 -414
  348. simtools/simtel/simtel_runner.py +0 -244
  349. simtools/simtel/simtel_runner_array.py +0 -293
  350. simtools/simtel/simtel_runner_ray_tracing.py +0 -277
  351. {gammasimtools-0.6.0.dist-info → gammasimtools-0.8.1.dist-info}/LICENSE +0 -0
  352. {gammasimtools-0.6.0.dist-info → gammasimtools-0.8.1.dist-info}/top_level.txt +0 -0
  353. /simtools/{corsika_simtel → db}/__init__.py +0 -0
@@ -1,15 +1,19 @@
1
1
  #!/usr/bin/python3
2
- """
3
- Summary
4
- -------
5
- Validate yaml, json, or ecsv file using a json schema file.
2
+ r"""
3
+ Validate a file or files in a directory using a schema.
4
+
5
+ Input files can be metadata, schema, or data files in yaml, json, or ecsv format.
6
6
 
7
7
  Command line arguments
8
8
  ----------------------
9
9
  file_name (str)
10
10
  input file to be validated
11
+ model_parameters_directory (str)
12
+ directory with json files of model parameters to be validated
11
13
  schema (str)
12
14
  schema file (jsonschema format) used for validation
15
+ data_type (str)
16
+ type of input data (allowed types: metadata, schema, data)
13
17
 
14
18
  Raises
15
19
  ------
@@ -21,9 +25,10 @@
21
25
 
22
26
  .. code-block:: console
23
27
 
24
- simtools-validate-file-using-schema \
25
- --file_name tests/resources/MLTdata-preproduction.meta.yml \
26
- --schema simtools/schemas/metadata.metaschema.yml
28
+ simtools-validate-file-using-schema \\
29
+ --file_name tests/resources/MLTdata-preproduction.meta.yml \\
30
+ --schema simtools/schemas/metadata.metaschema.yml \\
31
+ --data_type metadata
27
32
 
28
33
  """
29
34
 
@@ -32,12 +37,12 @@ from pathlib import Path
32
37
 
33
38
  import simtools.utils.general as gen
34
39
  from simtools.configuration import configurator
35
- from simtools.data_model import data_reader, metadata_collector, validate_data
40
+ from simtools.data_model import metadata_collector, metadata_model, validate_data
36
41
 
37
42
 
38
43
  def _parse(label, description):
39
44
  """
40
- Parse command line configuration
45
+ Parse command line configuration.
41
46
 
42
47
  Parameters
43
48
  ----------
@@ -52,75 +57,136 @@ def _parse(label, description):
52
57
  application configuration
53
58
 
54
59
  """
55
-
56
60
  config = configurator.Configurator(label=label, description=description)
57
- config.parser.add_argument("--file_name", help="file to be validated", required=True)
58
- config.parser.add_argument("--schema", help="json schema file", required=False)
61
+ group = config.parser.add_mutually_exclusive_group(required=True)
62
+ group.add_argument("--file_name", help="File to be validated")
63
+ group.add_argument(
64
+ "--model_parameters_directory",
65
+ help=(
66
+ "Directory with json files with model parameters to be validated."
67
+ "All *.json files in the directory will be validated."
68
+ "Schema files will be taken from simtools/schemas/model_parameters/."
69
+ "Note that in this case the data_type argument is ignored"
70
+ "and data_type=model_parameter is always used."
71
+ ),
72
+ )
73
+ config.parser.add_argument("--schema", help="Json schema file", required=False)
74
+ config.parser.add_argument(
75
+ "--data_type",
76
+ help="Type of input data",
77
+ choices=["metadata", "schema", "data", "model_parameter"],
78
+ default="data",
79
+ )
59
80
  config.parser.add_argument(
60
- "--validate_metadata",
61
- help="validate metadata",
81
+ "--require_exact_data_type",
82
+ help="Require exact data type for validation",
62
83
  action="store_true",
63
- default=False,
64
84
  )
65
85
  return config.initialize(paths=False)
66
86
 
67
87
 
68
- def _validate_yaml_or_json_file(args_dict, logger):
69
- """
70
- Validate a yaml or json file.
71
- Schema is either given as command line argument, read from the meta_schema_url or from
72
- the metadata section of the data dictionary.
73
-
88
+ def _get_schema_file_name(args_dict, data_dict=None):
74
89
  """
90
+ Get schema file name from metadata, data dict, or from command line argument.
75
91
 
76
- data_reader.read_value_from_file(
77
- file_name=args_dict["file_name"],
78
- schema_file=args_dict["schema"],
79
- validate=True,
80
- )
81
- logger.debug("Successful validation of json/yaml file")
92
+ Parameters
93
+ ----------
94
+ args_dict (dict)
95
+ command line arguments
96
+ data_dict (dict)
97
+ dictionary with metaschema information
82
98
 
99
+ Returns
100
+ -------
101
+ schema_file: str
102
+ schema file name
83
103
 
84
- def _validate_ecsv_file(args_dict, logger):
85
104
  """
86
- Validate an ecsv file
105
+ schema_file = args_dict.get("schema")
106
+ if schema_file is None and data_dict is not None:
107
+ schema_file = data_dict.get("meta_schema_url")
108
+ if schema_file is None:
109
+ metadata = metadata_collector.MetadataCollector(
110
+ None, metadata_file_name=args_dict["file_name"]
111
+ )
112
+ schema_file = metadata.get_data_model_schema_file_name()
113
+ return schema_file
114
+
115
+
116
+ def validate_schema(args_dict, logger):
117
+ """
118
+ Validate a schema file given in yaml or json format.
119
+
120
+ Schema is either given as command line argument, read from the meta_schema_url or from
121
+ the metadata section of the data dictionary.
87
122
 
88
123
  """
124
+ try:
125
+ data = gen.collect_data_from_file(file_name=args_dict["file_name"])
126
+ except FileNotFoundError as exc:
127
+ logger.error(f"Error reading schema file from {args_dict['file_name']}")
128
+ raise exc
129
+ metadata_model.validate_schema(data, _get_schema_file_name(args_dict, data))
130
+ logger.info(f"Successful validation of schema file {args_dict['file_name']}")
131
+
132
+
133
+ def validate_data_files(args_dict, logger):
134
+ """Validate data files."""
135
+ model_parameters_directory = args_dict.get("model_parameters_directory")
136
+ if model_parameters_directory is not None:
137
+ tmp_args_dict = {}
138
+ for file_name in Path(model_parameters_directory).rglob("*.json"):
139
+ tmp_args_dict["file_name"] = file_name
140
+ schema_file = (
141
+ Path(__file__).parent
142
+ / "../schemas"
143
+ / "model_parameters"
144
+ / f"{file_name.stem}.schema.yml"
145
+ )
146
+ tmp_args_dict["schema"] = schema_file
147
+ tmp_args_dict["data_type"] = "model_parameter"
148
+ tmp_args_dict["require_exact_data_type"] = args_dict["require_exact_data_type"]
149
+ validate_data_file(tmp_args_dict, logger)
150
+ else:
151
+ validate_data_file(args_dict, logger)
152
+
89
153
 
154
+ def validate_data_file(args_dict, logger):
155
+ """Validate a data file (e.g., in ecsv, json, yaml format)."""
90
156
  data_validator = validate_data.DataValidator(
91
- schema_file=args_dict["schema"],
157
+ schema_file=_get_schema_file_name(args_dict),
92
158
  data_file=args_dict["file_name"],
159
+ check_exact_data_type=args_dict["require_exact_data_type"],
93
160
  )
94
- data_validator.validate_and_transform()
95
- logger.debug("Successful validation of escv file")
96
-
161
+ data_validator.validate_and_transform(is_model_parameter=True)
162
+ if args_dict["data_type"].lower() == "model_parameter":
163
+ data_validator.validate_parameter_and_file_name()
97
164
 
98
- def _validate_metadata(args_dict, logger):
99
- """
100
- Validate metadata.
165
+ logger.info(f"Successful validation of data file {args_dict['file_name']}")
101
166
 
102
- """
103
167
 
168
+ def validate_metadata(args_dict, logger):
169
+ """Validate metadata."""
104
170
  # metadata_collector runs the metadata validation by default, no need to do anything else
105
171
  metadata_collector.MetadataCollector(None, metadata_file_name=args_dict["file_name"])
106
- logger.debug("Successful validation of metadata")
172
+ logger.info(f"Successful validation of metadata {args_dict['file_name']}")
107
173
 
108
174
 
109
- def main():
175
+ def main(): # noqa: D103
110
176
  label = Path(__file__).stem
111
- args_dict, _ = _parse(label, description="Validate yaml or ecsv file using a json schema file.")
177
+ args_dict, _ = _parse(
178
+ label, description="Validate a file (metadata, schema, or data file) using a schema."
179
+ )
112
180
 
113
181
  logger = logging.getLogger()
114
182
  logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
115
183
 
116
- if args_dict["validate_metadata"]:
117
- _validate_metadata(args_dict, logger)
118
- elif any(args_dict["file_name"].endswith(ext) for ext in (".yml", ".yaml", ".json")):
119
- _validate_yaml_or_json_file(args_dict, logger)
120
- elif args_dict["file_name"].endswith(".ecsv"):
121
- _validate_ecsv_file(args_dict, logger)
184
+ if args_dict["data_type"].lower() == "metadata":
185
+ validate_metadata(args_dict, logger)
186
+ elif args_dict["data_type"].lower() == "schema":
187
+ validate_schema(args_dict, logger)
122
188
  else:
123
- logger.error(f"File extension not supported for {args_dict['file_name']}")
189
+ validate_data_files(args_dict, logger)
124
190
 
125
191
 
126
192
  if __name__ == "__main__":
@@ -1,10 +1,9 @@
1
1
  #!/usr/bin/python3
2
2
 
3
- """
4
- Summary
5
- -------
6
- This application validates the optical model parameters through ray tracing simulations \
7
- of the whole telescope, assuming a point-like light source. The output includes PSF (D80), \
3
+ r"""
4
+ Validate the optical model parameters through ray tracing simulations of the whole telescope.
5
+
6
+ A point-like light source is assumed. The output includes PSF (D80), \
8
7
  effective mirror area and effective focal length as a function of the off-axis angle. \
9
8
 
10
9
  The telescope zenith angle and the source distance can be set by command line arguments.
@@ -45,16 +44,14 @@
45
44
  Produce a multiple pages pdf file with the image plots.
46
45
  test (activation mode, optional)
47
46
  If activated, application will be faster by simulating fewer photons.
48
- verbosity (str, optional)
49
- Log level to print.
50
47
 
51
48
  Example
52
49
  -------
53
- LST-1 Prod5
50
+ LST-1 5.0.0
54
51
 
55
52
  .. code-block:: console
56
53
 
57
- simtools-validate-optics --site North --telescope LST-1 --max_offset 1.0 \
54
+ simtools-validate-optics --site North --telescope LST-1 --max_offset 1.0 \\
58
55
  --zenith 20 --src_distance 10 --test
59
56
 
60
57
  The output is saved in simtools-output/validate_optics
@@ -80,15 +77,11 @@ import simtools.utils.general as gen
80
77
  from simtools.configuration import configurator
81
78
  from simtools.io_operations import io_handler
82
79
  from simtools.model.telescope_model import TelescopeModel
83
- from simtools.ray_tracing import RayTracing
80
+ from simtools.ray_tracing.ray_tracing import RayTracing
84
81
 
85
82
 
86
83
  def _parse(label):
87
- """
88
- Parse command line configuratio
89
-
90
- """
91
-
84
+ """Parse command line configuration."""
92
85
  config = configurator.Configurator(
93
86
  label=label,
94
87
  description=(
@@ -121,10 +114,10 @@ def _parse(label):
121
114
  help="Produce a multiple pages pdf file with the image plots.",
122
115
  action="store_true",
123
116
  )
124
- return config.initialize(db_config=True, telescope_model=True)
117
+ return config.initialize(db_config=True, simulation_model=["telescope"])
125
118
 
126
119
 
127
- def main():
120
+ def main(): # noqa: D103
128
121
  label = Path(__file__).stem
129
122
  args_dict, db_config = _parse(label)
130
123
 
@@ -136,7 +129,7 @@ def main():
136
129
 
137
130
  tel_model = TelescopeModel(
138
131
  site=args_dict["site"],
139
- telescope_model_name=args_dict["telescope"],
132
+ telescope_name=args_dict["telescope"],
140
133
  model_version=args_dict["model_version"],
141
134
  label=label,
142
135
  mongo_db_config=db_config,
@@ -155,13 +148,15 @@ def main():
155
148
 
156
149
  print(f"\nValidating telescope optics with ray tracing simulations for {tel_model.name}\n")
157
150
 
158
- ray = RayTracing.from_kwargs(
151
+ ray = RayTracing(
159
152
  telescope_model=tel_model,
160
- simtel_source_path=args_dict["simtel_path"],
161
- source_distance=args_dict["src_distance"] * u.km,
153
+ simtel_path=args_dict["simtel_path"],
162
154
  zenith_angle=args_dict["zenith"] * u.deg,
155
+ source_distance=args_dict["src_distance"] * u.km,
163
156
  off_axis_angle=np.linspace(
164
- 0, args_dict["max_offset"], int(args_dict["max_offset"] / args_dict["offset_steps"]) + 1
157
+ 0,
158
+ args_dict["max_offset"],
159
+ int(args_dict["max_offset"] / args_dict["offset_steps"]) + 1,
165
160
  )
166
161
  * u.deg,
167
162
  )