gammasimtools 0.6.1__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.
- gammasimtools-0.8.1.dist-info/METADATA +172 -0
- gammasimtools-0.8.1.dist-info/RECORD +346 -0
- {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.1.dist-info}/WHEEL +1 -1
- gammasimtools-0.8.1.dist-info/entry_points.txt +31 -0
- simtools/_version.py +2 -2
- simtools/applications/calculate_trigger_rate.py +210 -0
- simtools/applications/convert_all_model_parameters_from_simtel.py +372 -0
- simtools/applications/{print_array_elements.py → convert_geo_coordinates_of_array_elements.py} +58 -63
- simtools/applications/convert_model_parameter_from_simtel.py +119 -0
- simtools/applications/{add_file_to_db.py → db_add_file_to_db.py} +70 -60
- simtools/applications/db_add_model_parameters_from_repository_to_db.py +184 -0
- simtools/applications/db_add_value_from_json_to_db.py +105 -0
- simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +180 -0
- simtools/applications/db_get_array_layouts_from_db.py +162 -0
- simtools/applications/{get_file_from_db.py → db_get_file_from_db.py} +30 -34
- simtools/applications/db_get_parameter_from_db.py +131 -0
- simtools/applications/db_inspect_databases.py +52 -0
- simtools/applications/derive_mirror_rnda.py +39 -255
- simtools/applications/derive_psf_parameters.py +441 -0
- simtools/applications/generate_array_config.py +82 -0
- simtools/applications/generate_corsika_histograms.py +52 -52
- simtools/applications/generate_default_metadata.py +5 -8
- simtools/applications/generate_regular_arrays.py +117 -0
- simtools/applications/generate_simtel_array_histograms.py +97 -56
- simtools/applications/plot_array_layout.py +345 -115
- simtools/applications/production_generate_simulation_config.py +158 -0
- simtools/applications/production_scale_events.py +168 -0
- simtools/applications/simulate_light_emission.py +478 -0
- simtools/applications/simulate_prod.py +97 -175
- simtools/applications/submit_data_from_external.py +9 -12
- simtools/applications/submit_model_parameter_from_external.py +122 -0
- simtools/applications/validate_camera_efficiency.py +35 -102
- simtools/applications/validate_camera_fov.py +20 -19
- simtools/applications/{compare_cumulative_psf.py → validate_cumulative_psf.py} +45 -44
- simtools/applications/validate_file_using_schema.py +113 -47
- simtools/applications/validate_optics.py +17 -22
- simtools/camera_efficiency.py +193 -202
- simtools/configuration/commandline_parser.py +384 -96
- simtools/configuration/configurator.py +55 -71
- simtools/constants.py +5 -5
- simtools/corsika/corsika_config.py +482 -342
- simtools/corsika/corsika_histograms.py +226 -204
- simtools/corsika/corsika_histograms_visualize.py +23 -24
- simtools/corsika/primary_particle.py +159 -0
- simtools/data_model/data_reader.py +25 -20
- simtools/data_model/format_checkers.py +52 -0
- simtools/data_model/metadata_collector.py +210 -184
- simtools/data_model/metadata_model.py +115 -37
- simtools/data_model/model_data_writer.py +335 -26
- simtools/data_model/validate_data.py +366 -154
- simtools/db/db_array_elements.py +130 -0
- simtools/db/db_from_repo_handler.py +106 -0
- simtools/db/db_handler.py +1246 -0
- simtools/io_operations/hdf5_handler.py +3 -1
- simtools/io_operations/io_handler.py +32 -57
- simtools/job_execution/job_manager.py +82 -69
- simtools/layout/array_layout.py +325 -537
- simtools/layout/geo_coordinates.py +8 -11
- simtools/layout/telescope_position.py +163 -86
- simtools/model/array_model.py +305 -256
- simtools/model/calibration_model.py +50 -0
- simtools/model/camera.py +233 -493
- simtools/model/mirrors.py +61 -44
- simtools/model/model_parameter.py +602 -0
- simtools/model/model_utils.py +7 -35
- simtools/model/site_model.py +161 -0
- simtools/model/telescope_model.py +127 -621
- simtools/production_configuration/calculate_statistical_errors_grid_point.py +454 -0
- simtools/production_configuration/event_scaler.py +146 -0
- simtools/production_configuration/generate_simulation_config.py +193 -0
- simtools/production_configuration/interpolation_handler.py +197 -0
- simtools/ray_tracing/__init__.py +0 -0
- simtools/ray_tracing/mirror_panel_psf.py +280 -0
- simtools/{psf_analysis.py → ray_tracing/psf_analysis.py} +133 -47
- simtools/ray_tracing/ray_tracing.py +646 -0
- simtools/runners/__init__.py +0 -0
- simtools/runners/corsika_runner.py +240 -0
- simtools/runners/corsika_simtel_runner.py +225 -0
- simtools/runners/runner_services.py +307 -0
- simtools/runners/simtel_runner.py +224 -0
- simtools/schemas/array_elements.yml +137 -0
- simtools/schemas/integration_tests_config.metaschema.yml +93 -0
- simtools/schemas/metadata.metaschema.yml +6 -0
- simtools/schemas/model_parameter.metaschema.yml +78 -0
- simtools/schemas/{data.metaschema.yml → model_parameter_and_data_schema.metaschema.yml} +27 -44
- simtools/schemas/model_parameters/adjust_gain.schema.yml +37 -0
- simtools/schemas/model_parameters/altitude.schema.yml +37 -0
- simtools/schemas/model_parameters/array_coordinates.schema.yml +33 -0
- simtools/schemas/model_parameters/array_coordinates_UTM.schema.yml +77 -0
- simtools/schemas/model_parameters/array_element_position_ground.schema.yml +39 -0
- simtools/schemas/model_parameters/array_element_position_utm.schema.yml +39 -0
- simtools/schemas/model_parameters/array_layouts.schema.yml +48 -0
- simtools/schemas/model_parameters/array_triggers.schema.yml +93 -0
- simtools/schemas/model_parameters/asum_clipping.schema.yml +38 -0
- simtools/schemas/model_parameters/asum_offset.schema.yml +35 -0
- simtools/schemas/model_parameters/asum_shaping.schema.yml +35 -0
- simtools/schemas/model_parameters/asum_threshold.schema.yml +38 -0
- simtools/schemas/model_parameters/atmospheric_profile.schema.yml +32 -0
- simtools/schemas/model_parameters/atmospheric_transmission.schema.yml +35 -0
- simtools/schemas/model_parameters/axes_offsets.schema.yml +53 -0
- simtools/schemas/model_parameters/camera_body_diameter.schema.yml +40 -0
- simtools/schemas/model_parameters/camera_body_shape.schema.yml +45 -0
- simtools/schemas/model_parameters/camera_config_file.schema.yml +40 -0
- simtools/schemas/model_parameters/camera_config_rotate.schema.yml +36 -0
- simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +43 -0
- simtools/schemas/model_parameters/camera_degraded_map.schema.yml +42 -0
- simtools/schemas/model_parameters/camera_depth.schema.yml +42 -0
- simtools/schemas/model_parameters/camera_filter.schema.yml +45 -0
- simtools/schemas/model_parameters/camera_filter_incidence_angle.schema.yml +29 -0
- simtools/schemas/model_parameters/camera_pixels.schema.yml +36 -0
- simtools/schemas/model_parameters/camera_transmission.schema.yml +41 -0
- simtools/schemas/model_parameters/channels_per_chip.schema.yml +36 -0
- simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +35 -0
- simtools/schemas/model_parameters/corsika_cherenkov_photon_bunch_size.schema.yml +27 -0
- simtools/schemas/model_parameters/corsika_cherenkov_photon_wavelength_range.schema.yml +38 -0
- simtools/schemas/model_parameters/corsika_first_interaction_height.schema.yml +28 -0
- simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +23 -0
- simtools/schemas/model_parameters/corsika_iact_max_bunches.schema.yml +27 -0
- simtools/schemas/model_parameters/corsika_iact_split_auto.schema.yml +28 -0
- simtools/schemas/model_parameters/corsika_longitudinal_shower_development.schema.yml +27 -0
- simtools/schemas/model_parameters/corsika_observation_level.schema.yml +38 -0
- simtools/schemas/model_parameters/corsika_particle_kinetic_energy_cutoff.schema.yml +52 -0
- simtools/schemas/model_parameters/corsika_starting_grammage.schema.yml +27 -0
- simtools/schemas/model_parameters/dark_events.schema.yml +32 -0
- simtools/schemas/model_parameters/default_trigger.schema.yml +35 -0
- simtools/schemas/model_parameters/design_model.schema.yml +31 -0
- simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +32 -0
- simtools/schemas/model_parameters/disc_bins.schema.yml +39 -0
- simtools/schemas/model_parameters/disc_start.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +42 -0
- simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +39 -0
- simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +40 -0
- simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +33 -0
- simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +42 -0
- simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +37 -0
- simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +44 -0
- simtools/schemas/model_parameters/discriminator_threshold.schema.yml +36 -0
- simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +45 -0
- simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +40 -0
- simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +41 -0
- simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +38 -0
- simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +38 -0
- simtools/schemas/model_parameters/dish_shape_length.schema.yml +41 -0
- simtools/schemas/model_parameters/dsum_clipping.schema.yml +38 -0
- simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +38 -0
- simtools/schemas/model_parameters/dsum_offset.schema.yml +37 -0
- simtools/schemas/model_parameters/dsum_pedsub.schema.yml +33 -0
- simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +39 -0
- simtools/schemas/model_parameters/dsum_prescale.schema.yml +44 -0
- simtools/schemas/model_parameters/dsum_presum_max.schema.yml +38 -0
- simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +45 -0
- simtools/schemas/model_parameters/dsum_shaping.schema.yml +44 -0
- simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +32 -0
- simtools/schemas/model_parameters/dsum_threshold.schema.yml +43 -0
- simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +42 -0
- simtools/schemas/model_parameters/effective_focal_length.schema.yml +61 -0
- simtools/schemas/model_parameters/epsg_code.schema.yml +37 -0
- simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +35 -0
- simtools/schemas/model_parameters/fadc_amplitude.schema.yml +46 -0
- simtools/schemas/model_parameters/fadc_bins.schema.yml +40 -0
- simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +50 -0
- simtools/schemas/model_parameters/fadc_dev_pedestal.schema.yml +38 -0
- simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +49 -0
- simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +47 -0
- simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +51 -0
- simtools/schemas/model_parameters/fadc_lg_dev_pedestal.schema.yml +37 -0
- simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +49 -0
- simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_lg_max_sum.schema.yml +39 -0
- simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +40 -0
- simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +50 -0
- simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +41 -0
- simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_max_signal.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_max_sum.schema.yml +39 -0
- simtools/schemas/model_parameters/fadc_mhz.schema.yml +31 -0
- simtools/schemas/model_parameters/fadc_noise.schema.yml +41 -0
- simtools/schemas/model_parameters/fadc_pedestal.schema.yml +40 -0
- simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +39 -0
- simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +50 -0
- simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +43 -0
- simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +42 -0
- simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +41 -0
- simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +42 -0
- simtools/schemas/model_parameters/flatfielding.schema.yml +37 -0
- simtools/schemas/model_parameters/focal_length.schema.yml +45 -0
- simtools/schemas/model_parameters/focal_surface_parameters.schema.yml +158 -0
- simtools/schemas/model_parameters/focal_surface_ref_radius.schema.yml +29 -0
- simtools/schemas/model_parameters/focus_offset.schema.yml +66 -0
- simtools/schemas/model_parameters/gain_variation.schema.yml +43 -0
- simtools/schemas/model_parameters/geomag_horizontal.schema.yml +34 -0
- simtools/schemas/model_parameters/geomag_rotation.schema.yml +37 -0
- simtools/schemas/model_parameters/geomag_vertical.schema.yml +34 -0
- simtools/schemas/model_parameters/hg_lg_variation.schema.yml +36 -0
- simtools/schemas/model_parameters/iobuf_maximum.schema.yml +34 -0
- simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +34 -0
- simtools/schemas/model_parameters/laser_events.schema.yml +36 -0
- simtools/schemas/model_parameters/laser_external_trigger.schema.yml +35 -0
- simtools/schemas/model_parameters/laser_photons.schema.yml +32 -0
- simtools/schemas/model_parameters/laser_pulse_exptime.schema.yml +34 -0
- simtools/schemas/model_parameters/laser_pulse_offset.schema.yml +34 -0
- simtools/schemas/model_parameters/laser_pulse_sigtime.schema.yml +33 -0
- simtools/schemas/model_parameters/laser_pulse_twidth.schema.yml +33 -0
- simtools/schemas/model_parameters/laser_var_photons.schema.yml +33 -0
- simtools/schemas/model_parameters/laser_wavelength.schema.yml +33 -0
- simtools/schemas/model_parameters/led_events.schema.yml +34 -0
- simtools/schemas/model_parameters/led_photons.schema.yml +34 -0
- simtools/schemas/model_parameters/led_pulse_offset.schema.yml +32 -0
- simtools/schemas/model_parameters/led_pulse_sigtime.schema.yml +33 -0
- simtools/schemas/model_parameters/led_var_photons.schema.yml +34 -0
- simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +41 -0
- simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +43 -0
- simtools/schemas/model_parameters/min_photoelectrons.schema.yml +35 -0
- simtools/schemas/model_parameters/min_photons.schema.yml +32 -0
- simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +36 -0
- simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +64 -0
- simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +64 -0
- simtools/schemas/model_parameters/mirror_class.schema.yml +41 -0
- simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +51 -0
- simtools/schemas/model_parameters/mirror_focal_length.schema.yml +42 -0
- simtools/schemas/model_parameters/mirror_list.schema.yml +38 -0
- simtools/schemas/model_parameters/mirror_offset.schema.yml +41 -0
- simtools/schemas/model_parameters/mirror_panel_2f_measurements.schema.yml +39 -0
- simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +61 -0
- simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +40 -0
- simtools/schemas/model_parameters/multiplicity_offset.schema.yml +46 -0
- simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +51 -0
- simtools/schemas/model_parameters/nsb_gain_drop_scale.schema.yml +37 -0
- simtools/schemas/model_parameters/nsb_offaxis.schema.yml +79 -0
- simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +47 -0
- simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +34 -0
- simtools/schemas/model_parameters/nsb_reference_value.schema.yml +33 -0
- simtools/schemas/model_parameters/nsb_scaling_factor.schema.yml +35 -0
- simtools/schemas/model_parameters/nsb_skymap.schema.yml +39 -0
- simtools/schemas/model_parameters/nsb_spectrum.schema.yml +50 -0
- simtools/schemas/model_parameters/num_gains.schema.yml +34 -0
- simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +33 -0
- simtools/schemas/model_parameters/optics_properties.schema.yml +31 -0
- simtools/schemas/model_parameters/parabolic_dish.schema.yml +32 -0
- simtools/schemas/model_parameters/pedestal_events.schema.yml +32 -0
- simtools/schemas/model_parameters/photon_delay.schema.yml +38 -0
- simtools/schemas/model_parameters/photons_per_run.schema.yml +33 -0
- simtools/schemas/model_parameters/pixel_cells.schema.yml +35 -0
- simtools/schemas/model_parameters/pixels_parallel.schema.yml +54 -0
- simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +40 -0
- simtools/schemas/model_parameters/pm_average_gain.schema.yml +34 -0
- simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +40 -0
- simtools/schemas/model_parameters/pm_gain_index.schema.yml +36 -0
- simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +41 -0
- simtools/schemas/model_parameters/pm_transit_time.schema.yml +63 -0
- simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +39 -0
- simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +42 -0
- simtools/schemas/model_parameters/primary_mirror_diameter.schema.yml +33 -0
- simtools/schemas/model_parameters/primary_mirror_hole_diameter.schema.yml +33 -0
- simtools/schemas/model_parameters/primary_mirror_incidence_angle.schema.yml +29 -0
- simtools/schemas/model_parameters/primary_mirror_parameters.schema.yml +168 -0
- simtools/schemas/model_parameters/primary_mirror_ref_radius.schema.yml +36 -0
- simtools/schemas/model_parameters/primary_mirror_segmentation.schema.yml +34 -0
- simtools/schemas/model_parameters/qe_variation.schema.yml +43 -0
- simtools/schemas/model_parameters/quantum_efficiency.schema.yml +42 -0
- simtools/schemas/model_parameters/random_focal_length.schema.yml +45 -0
- simtools/schemas/model_parameters/random_generator.schema.yml +36 -0
- simtools/schemas/model_parameters/reference_point_altitude.schema.yml +35 -0
- simtools/schemas/model_parameters/reference_point_latitude.schema.yml +36 -0
- simtools/schemas/model_parameters/reference_point_longitude.schema.yml +36 -0
- simtools/schemas/model_parameters/reference_point_utm_east.schema.yml +34 -0
- simtools/schemas/model_parameters/reference_point_utm_north.schema.yml +34 -0
- simtools/schemas/model_parameters/sampled_output.schema.yml +31 -0
- simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +34 -0
- simtools/schemas/model_parameters/secondary_mirror_baffle.schema.yml +79 -0
- simtools/schemas/model_parameters/secondary_mirror_degraded_map.schema.yml +42 -0
- simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +41 -0
- simtools/schemas/model_parameters/secondary_mirror_diameter.schema.yml +33 -0
- simtools/schemas/model_parameters/secondary_mirror_hole_diameter.schema.yml +36 -0
- simtools/schemas/model_parameters/secondary_mirror_incidence_angle.schema.yml +29 -0
- simtools/schemas/model_parameters/secondary_mirror_parameters.schema.yml +168 -0
- simtools/schemas/model_parameters/secondary_mirror_ref_radius.schema.yml +36 -0
- simtools/schemas/model_parameters/secondary_mirror_reflectivity.schema.yml +35 -0
- simtools/schemas/model_parameters/secondary_mirror_segmentation.schema.yml +37 -0
- simtools/schemas/model_parameters/secondary_mirror_shadow_diameter.schema.yml +40 -0
- simtools/schemas/model_parameters/secondary_mirror_shadow_offset.schema.yml +40 -0
- simtools/schemas/model_parameters/store_photoelectrons.schema.yml +41 -0
- simtools/schemas/model_parameters/tailcut_scale.schema.yml +40 -0
- simtools/schemas/model_parameters/telescope_axis_height.schema.yml +31 -0
- simtools/schemas/model_parameters/telescope_random_angle.schema.yml +35 -0
- simtools/schemas/model_parameters/telescope_random_error.schema.yml +34 -0
- simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +37 -0
- simtools/schemas/model_parameters/telescope_transmission.schema.yml +113 -0
- simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +41 -0
- simtools/schemas/model_parameters/teltrig_min_time.schema.yml +36 -0
- simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +36 -0
- simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +37 -0
- simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +38 -0
- simtools/schemas/model_parameters/transit_time_error.schema.yml +45 -0
- simtools/schemas/model_parameters/transit_time_jitter.schema.yml +36 -0
- simtools/schemas/model_parameters/trigger_current_limit.schema.yml +32 -0
- simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +53 -0
- simtools/schemas/model_parameters/trigger_pixels.schema.yml +40 -0
- simtools/simtel/simtel_config_reader.py +353 -0
- simtools/simtel/simtel_config_writer.py +244 -63
- simtools/simtel/{simtel_events.py → simtel_io_events.py} +26 -25
- simtools/simtel/simtel_io_histogram.py +661 -0
- simtools/simtel/simtel_io_histograms.py +569 -0
- simtools/simtel/simulator_array.py +145 -0
- simtools/simtel/{simtel_runner_camera_efficiency.py → simulator_camera_efficiency.py} +76 -52
- simtools/simtel/simulator_light_emission.py +473 -0
- simtools/simtel/simulator_ray_tracing.py +262 -0
- simtools/simulator.py +220 -446
- simtools/testing/__init__.py +0 -0
- simtools/testing/assertions.py +151 -0
- simtools/testing/configuration.py +226 -0
- simtools/testing/helpers.py +42 -0
- simtools/testing/validate_output.py +240 -0
- simtools/utils/general.py +340 -437
- simtools/utils/geometry.py +12 -12
- simtools/utils/names.py +258 -644
- simtools/utils/value_conversion.py +176 -0
- simtools/version.py +2 -0
- simtools/visualization/legend_handlers.py +135 -152
- simtools/visualization/plot_camera.py +379 -0
- simtools/visualization/visualize.py +346 -167
- gammasimtools-0.6.1.dist-info/METADATA +0 -180
- gammasimtools-0.6.1.dist-info/RECORD +0 -91
- gammasimtools-0.6.1.dist-info/entry_points.txt +0 -23
- simtools/applications/db_development_tools/add_new_parameter_to_db.py +0 -81
- simtools/applications/db_development_tools/add_unit_to_parameter_in_db.py +0 -59
- simtools/applications/db_development_tools/mark_non_optics_parameters_non_applicable.py +0 -102
- simtools/applications/get_parameter.py +0 -92
- simtools/applications/make_regular_arrays.py +0 -160
- simtools/applications/produce_array_config.py +0 -136
- simtools/applications/production.py +0 -313
- simtools/applications/sim_showers_for_trigger_rates.py +0 -187
- simtools/applications/tune_psf.py +0 -334
- simtools/corsika/corsika_default_config.py +0 -282
- simtools/corsika/corsika_runner.py +0 -450
- simtools/corsika_simtel/corsika_simtel_runner.py +0 -197
- simtools/db_handler.py +0 -1480
- simtools/ray_tracing.py +0 -525
- simtools/simtel/simtel_histograms.py +0 -414
- simtools/simtel/simtel_runner.py +0 -244
- simtools/simtel/simtel_runner_array.py +0 -293
- simtools/simtel/simtel_runner_ray_tracing.py +0 -277
- {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.1.dist-info}/LICENSE +0 -0
- {gammasimtools-0.6.1.dist-info → gammasimtools-0.8.1.dist-info}/top_level.txt +0 -0
- /simtools/{corsika_simtel → db}/__init__.py +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"""Helper module for reading and writing in hd5 format."""
|
|
2
|
+
|
|
1
3
|
import logging
|
|
2
4
|
from pathlib import PosixPath
|
|
3
5
|
|
|
@@ -19,6 +21,7 @@ _logger = logging.getLogger(__name__)
|
|
|
19
21
|
def fill_hdf5_table(hist, x_bin_edges, y_bin_edges, x_label, y_label, meta_data):
|
|
20
22
|
"""
|
|
21
23
|
Create and fill an hdf5 table with the histogram information.
|
|
24
|
+
|
|
22
25
|
It works for both 1D and 2D distributions.
|
|
23
26
|
|
|
24
27
|
Parameters
|
|
@@ -38,7 +41,6 @@ def fill_hdf5_table(hist, x_bin_edges, y_bin_edges, x_label, y_label, meta_data)
|
|
|
38
41
|
meta_data: dict
|
|
39
42
|
Dictionary with the histogram metadata.
|
|
40
43
|
"""
|
|
41
|
-
|
|
42
44
|
# Complement metadata
|
|
43
45
|
if x_label is not None:
|
|
44
46
|
meta_data["x_bin_edges"] = sanitize_name(x_label)
|
|
@@ -1,38 +1,37 @@
|
|
|
1
|
+
"""Handle input and output paths."""
|
|
2
|
+
|
|
1
3
|
import datetime
|
|
2
4
|
import logging
|
|
3
|
-
import re
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
|
|
6
|
-
__all__ = ["
|
|
7
|
+
__all__ = ["IOHandler", "IOHandlerSingleton"]
|
|
7
8
|
|
|
8
9
|
|
|
9
|
-
class
|
|
10
|
-
"""Exception raised when IOHandler is not initialized"""
|
|
10
|
+
class IncompleteIOHandlerInitError(Exception):
|
|
11
|
+
"""Exception raised when IOHandler is not initialized."""
|
|
11
12
|
|
|
12
13
|
|
|
13
14
|
class IOHandlerSingleton(type):
|
|
14
|
-
"""
|
|
15
|
-
Singleton base class
|
|
16
|
-
"""
|
|
15
|
+
"""Singleton base class."""
|
|
17
16
|
|
|
18
17
|
_instances = {}
|
|
19
18
|
|
|
20
19
|
def __call__(cls, *args, **kwargs):
|
|
20
|
+
"""
|
|
21
|
+
Ensure a single instance of the IOHandlerSingleton class.
|
|
22
|
+
|
|
23
|
+
Creates a new instance if it doesn't exist, otherwise returns the existing instance.
|
|
24
|
+
"""
|
|
21
25
|
if cls not in cls._instances:
|
|
22
|
-
cls._instances[cls] = super(
|
|
26
|
+
cls._instances[cls] = super().__call__(*args, **kwargs)
|
|
23
27
|
return cls._instances[cls]
|
|
24
28
|
|
|
25
29
|
|
|
26
30
|
class IOHandler(metaclass=IOHandlerSingleton):
|
|
27
|
-
"""
|
|
28
|
-
Handle input and output paths.
|
|
29
|
-
"""
|
|
31
|
+
"""Handle input and output paths."""
|
|
30
32
|
|
|
31
33
|
def __init__(self):
|
|
32
|
-
"""
|
|
33
|
-
Initialize IOHandler.
|
|
34
|
-
|
|
35
|
-
"""
|
|
34
|
+
"""Initialize IOHandler."""
|
|
36
35
|
self._logger = logging.getLogger(__name__)
|
|
37
36
|
self._logger.debug("Init IOHandler")
|
|
38
37
|
|
|
@@ -64,9 +63,9 @@ class IOHandler(metaclass=IOHandlerSingleton):
|
|
|
64
63
|
self.data_path = data_path
|
|
65
64
|
self.model_path = model_path
|
|
66
65
|
|
|
67
|
-
def get_output_directory(self, label=None, sub_dir=None
|
|
66
|
+
def get_output_directory(self, label=None, sub_dir=None):
|
|
68
67
|
"""
|
|
69
|
-
Return path to output directory
|
|
68
|
+
Return path to output directory.
|
|
70
69
|
|
|
71
70
|
Parameters
|
|
72
71
|
----------
|
|
@@ -74,12 +73,6 @@ class IOHandler(metaclass=IOHandlerSingleton):
|
|
|
74
73
|
Instance label.
|
|
75
74
|
sub_dir: str
|
|
76
75
|
Name of the subdirectory (ray-tracing, model etc)
|
|
77
|
-
dir_type: str
|
|
78
|
-
The type of directory (e.g., 'simtools', 'test', 'simtools-result').
|
|
79
|
-
If 'simtools-result' is used, the output directory will be returned
|
|
80
|
-
without appending a subdirectory string when using the
|
|
81
|
-
use_plain_output_path option. For the cause of not using use_plain_output_path,
|
|
82
|
-
output paths appended by 'simtools-output'.
|
|
83
76
|
|
|
84
77
|
Returns
|
|
85
78
|
-------
|
|
@@ -92,37 +85,27 @@ class IOHandler(metaclass=IOHandlerSingleton):
|
|
|
92
85
|
TypeError
|
|
93
86
|
raised for errors while creating directory name
|
|
94
87
|
"""
|
|
95
|
-
|
|
96
|
-
if self.use_plain_output_path:
|
|
97
|
-
path =
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
try:
|
|
103
|
-
output_directory_prefix = Path(self.output_path).joinpath(
|
|
104
|
-
re.sub(r"\-result$", "", dir_type) + "-output"
|
|
105
|
-
)
|
|
106
|
-
except TypeError:
|
|
107
|
-
self._logger.error(f"Error creating output directory name from {dir_type}")
|
|
108
|
-
raise
|
|
88
|
+
path = Path(self.output_path)
|
|
89
|
+
if not self.use_plain_output_path:
|
|
90
|
+
path = (
|
|
91
|
+
path
|
|
92
|
+
if str(self.output_path).endswith("-output")
|
|
93
|
+
else path.joinpath("simtools-output")
|
|
94
|
+
)
|
|
109
95
|
label_dir = label if label is not None else "d-" + str(datetime.date.today())
|
|
110
|
-
path =
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
path = path.joinpath(sub_dir)
|
|
114
|
-
elif dir_type != "simtools-result":
|
|
115
|
-
path = path.joinpath(sub_dir)
|
|
96
|
+
path = (
|
|
97
|
+
path.joinpath(label_dir) if sub_dir is None else path.joinpath(label_dir, sub_dir)
|
|
98
|
+
)
|
|
116
99
|
|
|
117
100
|
try:
|
|
118
101
|
path.mkdir(parents=True, exist_ok=True)
|
|
119
102
|
except FileNotFoundError:
|
|
120
|
-
self._logger.error(f"Error creating directory {
|
|
103
|
+
self._logger.error(f"Error creating directory {path!s}")
|
|
121
104
|
raise
|
|
122
105
|
|
|
123
106
|
return path.absolute()
|
|
124
107
|
|
|
125
|
-
def get_output_file(self, file_name, label=None, sub_dir=None
|
|
108
|
+
def get_output_file(self, file_name, label=None, sub_dir=None):
|
|
126
109
|
"""
|
|
127
110
|
Get path of an output file.
|
|
128
111
|
|
|
@@ -134,25 +117,18 @@ class IOHandler(metaclass=IOHandlerSingleton):
|
|
|
134
117
|
Instance label.
|
|
135
118
|
sub_dir: str
|
|
136
119
|
Name of the subdirectory (ray-tracing, model etc)
|
|
137
|
-
dir_type: str
|
|
138
|
-
Directory type (e.g., 'simtools', 'test', 'simtools-result')
|
|
139
|
-
If 'simtools-result' is used, the output directory will be returned
|
|
140
|
-
without appending a subdirectory string when using the
|
|
141
|
-
use_plain_output_path option.
|
|
142
120
|
|
|
143
121
|
Returns
|
|
144
122
|
-------
|
|
145
123
|
Path
|
|
146
124
|
"""
|
|
147
125
|
return (
|
|
148
|
-
self.get_output_directory(label=label, sub_dir=sub_dir
|
|
149
|
-
.joinpath(file_name)
|
|
150
|
-
.absolute()
|
|
126
|
+
self.get_output_directory(label=label, sub_dir=sub_dir).joinpath(file_name).absolute()
|
|
151
127
|
)
|
|
152
128
|
|
|
153
129
|
def get_input_data_file(self, parent_dir=None, file_name=None, test=False):
|
|
154
130
|
"""
|
|
155
|
-
Get path of a data file, using data_path
|
|
131
|
+
Get path of a data file, using data_path.
|
|
156
132
|
|
|
157
133
|
Parameters
|
|
158
134
|
----------
|
|
@@ -169,15 +145,14 @@ class IOHandler(metaclass=IOHandlerSingleton):
|
|
|
169
145
|
|
|
170
146
|
Raises
|
|
171
147
|
------
|
|
172
|
-
|
|
148
|
+
IncompleteIOHandlerInitError
|
|
173
149
|
if data_path is not set
|
|
174
150
|
|
|
175
151
|
"""
|
|
176
|
-
|
|
177
152
|
if test:
|
|
178
153
|
file_prefix = Path("tests/resources/")
|
|
179
154
|
elif self.data_path is not None:
|
|
180
155
|
file_prefix = Path(self.data_path).joinpath(parent_dir)
|
|
181
156
|
else:
|
|
182
|
-
raise
|
|
157
|
+
raise IncompleteIOHandlerInitError
|
|
183
158
|
return file_prefix.joinpath(file_name).absolute()
|
|
@@ -1,78 +1,90 @@
|
|
|
1
|
+
"""Interface to workload managers like gridengine or HTCondor."""
|
|
2
|
+
|
|
1
3
|
import logging
|
|
2
4
|
import os
|
|
3
|
-
from copy import copy
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
|
|
6
7
|
import simtools.utils.general as gen
|
|
7
8
|
|
|
8
|
-
__all__ = ["
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
class MissingWorkloadManager(Exception):
|
|
12
|
-
"""Exception for missing work load manager."""
|
|
9
|
+
__all__ = ["JobExecutionError", "JobManager"]
|
|
13
10
|
|
|
14
11
|
|
|
15
12
|
class JobExecutionError(Exception):
|
|
16
|
-
"""
|
|
13
|
+
"""Job execution error."""
|
|
17
14
|
|
|
18
15
|
|
|
19
16
|
class JobManager:
|
|
20
17
|
"""
|
|
21
|
-
|
|
18
|
+
Interface to workload managers like gridengine or HTCondor.
|
|
19
|
+
|
|
20
|
+
Expects that jobs are described by shell scripts.
|
|
22
21
|
|
|
23
22
|
Parameters
|
|
24
23
|
----------
|
|
25
|
-
|
|
26
|
-
Job submission
|
|
27
|
-
test: bool
|
|
24
|
+
submit_engine : str
|
|
25
|
+
Job submission system. Default is local.
|
|
26
|
+
test : bool
|
|
28
27
|
Testing mode without sub submission.
|
|
29
|
-
|
|
30
|
-
Raises
|
|
31
|
-
------
|
|
32
|
-
MissingWorkloadManager
|
|
33
|
-
if requested workflow manager not found.
|
|
34
28
|
"""
|
|
35
29
|
|
|
36
|
-
|
|
37
|
-
"""
|
|
38
|
-
|
|
39
|
-
"""
|
|
30
|
+
engines = {
|
|
31
|
+
"gridengine": "qsub",
|
|
32
|
+
"htcondor": "condor_submit",
|
|
33
|
+
"local": "",
|
|
34
|
+
"test_wms": "test_wms", # used for testing only
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
def __init__(self, submit_engine=None, submit_options=None, test=False):
|
|
38
|
+
"""Initialize JobManager."""
|
|
40
39
|
self._logger = logging.getLogger(__name__)
|
|
41
|
-
self.
|
|
40
|
+
self.submit_engine = submit_engine
|
|
41
|
+
self.submit_options = submit_options
|
|
42
42
|
self.test = test
|
|
43
43
|
self.run_script = None
|
|
44
44
|
self.run_out_file = None
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
self.check_submission_system()
|
|
47
|
+
|
|
48
|
+
@property
|
|
49
|
+
def submit_engine(self):
|
|
50
|
+
"""Get the submit command."""
|
|
51
|
+
return self._submit_engine
|
|
51
52
|
|
|
52
|
-
|
|
53
|
+
@submit_engine.setter
|
|
54
|
+
def submit_engine(self, value):
|
|
53
55
|
"""
|
|
54
|
-
|
|
56
|
+
Set the submit command.
|
|
57
|
+
|
|
58
|
+
Parameters
|
|
59
|
+
----------
|
|
60
|
+
value : str
|
|
61
|
+
Name of submit engine.
|
|
55
62
|
|
|
56
63
|
Raises
|
|
57
64
|
------
|
|
58
|
-
|
|
59
|
-
if
|
|
65
|
+
ValueError
|
|
66
|
+
if invalid submit engine.
|
|
60
67
|
"""
|
|
68
|
+
if value is None:
|
|
69
|
+
value = "local"
|
|
70
|
+
if value not in self.engines:
|
|
71
|
+
raise ValueError(f"Invalid submit command: {value}")
|
|
72
|
+
self._submit_engine = value
|
|
61
73
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if self.submit_command.find("local") >= 0:
|
|
74
|
+
def check_submission_system(self):
|
|
75
|
+
"""
|
|
76
|
+
Check that the requested workload manager exist on the system.
|
|
77
|
+
|
|
78
|
+
Raises
|
|
79
|
+
------
|
|
80
|
+
MissingWorkloadManagerError
|
|
81
|
+
if workflow manager is not found.
|
|
82
|
+
"""
|
|
83
|
+
if self.submit_engine is None or self.submit_engine == "local":
|
|
73
84
|
return
|
|
74
85
|
|
|
75
|
-
|
|
86
|
+
if gen.program_is_executable(self.engines[self.submit_engine]):
|
|
87
|
+
return
|
|
76
88
|
|
|
77
89
|
def submit(self, run_script=None, run_out_file=None, log_file=None):
|
|
78
90
|
"""
|
|
@@ -97,17 +109,16 @@ class JobManager:
|
|
|
97
109
|
self._logger.info(f"Job error stream {self.run_out_file + '.err'}")
|
|
98
110
|
self._logger.info(f"Job log stream {self.run_out_file + '.job'}")
|
|
99
111
|
|
|
100
|
-
if self.
|
|
112
|
+
if self.submit_engine == "gridengine":
|
|
101
113
|
self._submit_gridengine()
|
|
102
|
-
elif self.
|
|
114
|
+
elif self.submit_engine == "htcondor":
|
|
103
115
|
self._submit_htcondor()
|
|
104
|
-
elif self.
|
|
116
|
+
elif self.submit_engine == "local":
|
|
105
117
|
self._submit_local(log_file)
|
|
106
118
|
|
|
107
119
|
def _submit_local(self, log_file):
|
|
108
120
|
"""
|
|
109
|
-
Run a job script on the command line
|
|
110
|
-
(no submission to a workload manager)
|
|
121
|
+
Run a job script on the command line (no submission to a workload manager).
|
|
111
122
|
|
|
112
123
|
Parameters
|
|
113
124
|
----------
|
|
@@ -115,7 +126,6 @@ class JobManager:
|
|
|
115
126
|
The log file of the actual simulator (CORSIKA or sim_telarray).
|
|
116
127
|
Provided in order to print the log excerpt in case of run time error.
|
|
117
128
|
"""
|
|
118
|
-
|
|
119
129
|
self._logger.info("Running script locally")
|
|
120
130
|
|
|
121
131
|
shell_command = f"{self.run_script} > {self.run_out_file}.out 2> {self.run_out_file}.err"
|
|
@@ -133,45 +143,48 @@ class JobManager:
|
|
|
133
143
|
self._logger.info("Testing (local)")
|
|
134
144
|
|
|
135
145
|
def _submit_htcondor(self):
|
|
136
|
-
"""
|
|
137
|
-
Submit a job described by a shell script to HTcondor
|
|
138
|
-
|
|
139
|
-
"""
|
|
140
|
-
|
|
146
|
+
"""Submit a job described by a shell script to HTcondor."""
|
|
141
147
|
_condor_file = self.run_script + ".condor"
|
|
142
|
-
self._logger.info(f"Submitting script to HTCondor ({_condor_file})")
|
|
143
148
|
try:
|
|
144
149
|
with open(_condor_file, "w", encoding="utf-8") as file:
|
|
145
150
|
file.write(f"Executable = {self.run_script}\n")
|
|
146
151
|
file.write(f"Output = {self.run_out_file + '.out'}\n")
|
|
147
152
|
file.write(f"Error = {self.run_out_file + '.err'}\n")
|
|
148
153
|
file.write(f"Log = {self.run_out_file + '.job'}\n")
|
|
154
|
+
if self.submit_options:
|
|
155
|
+
submit_option_list = self.submit_options.split(",")
|
|
156
|
+
for option in submit_option_list:
|
|
157
|
+
file.write(option.lstrip() + "\n")
|
|
149
158
|
file.write("queue 1\n")
|
|
150
|
-
except FileNotFoundError:
|
|
159
|
+
except FileNotFoundError as exc:
|
|
151
160
|
self._logger.error(f"Failed creating condor submission file {_condor_file}")
|
|
161
|
+
raise JobExecutionError from exc
|
|
152
162
|
|
|
153
|
-
|
|
154
|
-
if not self.test:
|
|
155
|
-
os.system(shell_command)
|
|
156
|
-
else:
|
|
157
|
-
self._logger.info("Testing (HTcondor)")
|
|
163
|
+
self._execute(self.submit_engine, self.engines[self.submit_engine] + " " + _condor_file)
|
|
158
164
|
|
|
159
165
|
def _submit_gridengine(self):
|
|
160
|
-
"""
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
"""
|
|
164
|
-
|
|
165
|
-
this_sub_cmd = copy(self.submit_command)
|
|
166
|
+
"""Submit a job described by a shell script to gridengine."""
|
|
167
|
+
this_sub_cmd = self.engines[self.submit_engine]
|
|
166
168
|
this_sub_cmd = this_sub_cmd + " -o " + self.run_out_file + ".out"
|
|
167
169
|
this_sub_cmd = this_sub_cmd + " -e " + self.run_out_file + ".err"
|
|
168
170
|
|
|
169
|
-
self.
|
|
171
|
+
self._execute(self.submit_engine, this_sub_cmd + " " + self.run_script)
|
|
170
172
|
|
|
171
|
-
|
|
173
|
+
def _execute(self, engine, shell_command):
|
|
174
|
+
"""
|
|
175
|
+
Execute a shell command using a specific engine.
|
|
176
|
+
|
|
177
|
+
Parameters
|
|
178
|
+
----------
|
|
179
|
+
engine : str
|
|
180
|
+
Engine to use.
|
|
181
|
+
shell_command : str
|
|
182
|
+
Shell command to execute.
|
|
183
|
+
"""
|
|
184
|
+
self._logger.info(f"Submitting script to {engine}")
|
|
172
185
|
self._logger.debug(shell_command)
|
|
173
186
|
if not self.test:
|
|
174
187
|
os.system(shell_command)
|
|
175
188
|
else:
|
|
176
|
-
self._logger.info("Testing (
|
|
189
|
+
self._logger.info(f"Testing ({engine})")
|
|
177
190
|
self._logger.info(shell_command)
|