gammasimtools 0.15.0__py3-none-any.whl → 0.17.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gammasimtools-0.15.0.dist-info → gammasimtools-0.17.0.dist-info}/METADATA +5 -33
- {gammasimtools-0.15.0.dist-info → gammasimtools-0.17.0.dist-info}/RECORD +243 -229
- {gammasimtools-0.15.0.dist-info → gammasimtools-0.17.0.dist-info}/WHEEL +1 -1
- {gammasimtools-0.15.0.dist-info → gammasimtools-0.17.0.dist-info}/entry_points.txt +8 -3
- simtools/_version.py +2 -2
- simtools/applications/calculate_trigger_rate.py +10 -10
- simtools/applications/convert_all_model_parameters_from_simtel.py +16 -16
- simtools/applications/convert_model_parameter_from_simtel.py +1 -1
- simtools/applications/derive_ctao_array_layouts.py +5 -5
- simtools/applications/derive_psf_parameters.py +12 -9
- simtools/applications/docs_produce_array_element_report.py +3 -3
- simtools/applications/docs_produce_calibration_reports.py +49 -0
- simtools/applications/docs_produce_simulation_configuration_report.py +50 -0
- simtools/applications/{generate_simtel_array_histograms.py → generate_sim_telarray_histograms.py} +2 -2
- simtools/applications/generate_simtel_event_data.py +36 -46
- simtools/applications/merge_tables.py +104 -0
- simtools/applications/plot_array_layout.py +145 -258
- simtools/applications/production_derive_corsika_limits.py +35 -167
- simtools/applications/production_derive_statistics.py +159 -0
- simtools/applications/production_generate_grid.py +197 -0
- simtools/applications/simulate_light_emission.py +6 -13
- simtools/applications/simulate_prod.py +45 -21
- simtools/applications/simulate_prod_htcondor_generator.py +0 -1
- simtools/applications/submit_array_layouts.py +93 -0
- simtools/applications/validate_cumulative_psf.py +6 -4
- simtools/applications/validate_file_using_schema.py +7 -3
- simtools/applications/validate_optics.py +5 -4
- simtools/applications/verify_simulation_model_production_tables.py +52 -0
- simtools/camera/camera_efficiency.py +17 -42
- simtools/configuration/commandline_parser.py +32 -37
- simtools/configuration/configurator.py +10 -4
- simtools/corsika/corsika_config.py +120 -17
- simtools/corsika/primary_particle.py +46 -13
- simtools/data_model/format_checkers.py +9 -0
- simtools/data_model/metadata_collector.py +7 -3
- simtools/data_model/model_data_writer.py +3 -0
- simtools/data_model/schema.py +27 -16
- simtools/data_model/validate_data.py +27 -7
- simtools/db/db_handler.py +21 -15
- simtools/db/db_model_upload.py +2 -2
- simtools/io_operations/io_handler.py +2 -2
- simtools/io_operations/io_table_handler.py +345 -0
- simtools/job_execution/htcondor_script_generator.py +2 -2
- simtools/job_execution/job_manager.py +7 -121
- simtools/layout/array_layout.py +1 -0
- simtools/layout/array_layout_utils.py +385 -0
- simtools/model/array_model.py +68 -29
- simtools/model/model_parameter.py +76 -51
- simtools/model/model_repository.py +134 -0
- simtools/model/model_utils.py +43 -1
- simtools/model/site_model.py +3 -2
- simtools/model/telescope_model.py +4 -4
- simtools/production_configuration/{calculate_statistical_errors_grid_point.py → calculate_statistical_uncertainties_grid_point.py} +101 -116
- simtools/production_configuration/derive_corsika_limits.py +239 -111
- simtools/production_configuration/derive_corsika_limits_grid.py +189 -0
- simtools/production_configuration/derive_production_statistics.py +155 -0
- simtools/production_configuration/derive_production_statistics_handler.py +152 -0
- simtools/production_configuration/generate_production_grid.py +364 -0
- simtools/production_configuration/interpolation_handler.py +303 -96
- simtools/ray_tracing/mirror_panel_psf.py +16 -20
- simtools/ray_tracing/psf_analysis.py +2 -2
- simtools/ray_tracing/ray_tracing.py +12 -7
- simtools/reporting/docs_read_parameters.py +426 -81
- simtools/runners/corsika_runner.py +11 -1
- simtools/runners/corsika_simtel_runner.py +84 -90
- simtools/runners/runner_services.py +22 -8
- simtools/runners/simtel_runner.py +27 -10
- simtools/schemas/model_parameter.metaschema.yml +4 -0
- simtools/schemas/model_parameter_and_data_schema.metaschema.yml +1 -0
- simtools/schemas/model_parameters/adjust_gain.schema.yml +2 -2
- simtools/schemas/model_parameters/array_element_position_ground.schema.yml +2 -2
- simtools/schemas/model_parameters/array_element_position_utm.schema.yml +2 -2
- simtools/schemas/model_parameters/array_window.schema.yml +2 -2
- simtools/schemas/model_parameters/asum_offset.schema.yml +2 -2
- simtools/schemas/model_parameters/asum_shaping.schema.yml +2 -2
- simtools/schemas/model_parameters/asum_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/axes_offsets.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_body_diameter.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_body_shape.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_config_file.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_config_rotate.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_degraded_efficiency.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_degraded_map.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_depth.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_filter.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_pixels.schema.yml +2 -2
- simtools/schemas/model_parameters/camera_transmission.schema.yml +2 -2
- simtools/schemas/model_parameters/channels_per_chip.schema.yml +2 -2
- simtools/schemas/model_parameters/correct_nsb_spectrum_to_telescope_altitude.schema.yml +2 -2
- simtools/schemas/model_parameters/corsika_starting_grammage.schema.yml +90 -1
- simtools/schemas/model_parameters/default_trigger.schema.yml +2 -2
- simtools/schemas/model_parameters/design_model.schema.yml +2 -2
- simtools/schemas/model_parameters/disc_ac_coupled.schema.yml +2 -2
- simtools/schemas/model_parameters/disc_bins.schema.yml +2 -2
- simtools/schemas/model_parameters/disc_start.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_amplitude.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_fall_time.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_gate_length.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_hysteresis.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_output_amplitude.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_output_var_percent.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_pulse_shape.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_rise_time.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_scale_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_sigsum_over_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_time_over_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_var_gate_length.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_var_sigsum_over_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_var_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/discriminator_var_time_over_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/dish_shape_length.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_clipping.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_offset.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_pedsub.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_prescale.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_presum_max.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_shaping.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_threshold.schema.yml +44 -3
- simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +2 -2
- simtools/schemas/model_parameters/effective_focal_length.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_amplitude.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_bins.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_err_compensate_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_err_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_amplitude.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_err_compensate_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_err_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_max_signal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_noise.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_sensitivity.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_sysvar_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_var_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_lg_var_sensitivity.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_max_signal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_mhz.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_noise.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_pulse_shape.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_sensitivity.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_sum_bins.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_sum_offset.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_sysvar_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_var_pedestal.schema.yml +2 -2
- simtools/schemas/model_parameters/fadc_var_sensitivity.schema.yml +2 -2
- simtools/schemas/model_parameters/fake_mirror_list.schema.yml +1 -1
- simtools/schemas/model_parameters/flatfielding.schema.yml +2 -2
- simtools/schemas/model_parameters/focal_length.schema.yml +2 -2
- simtools/schemas/model_parameters/focus_offset.schema.yml +2 -2
- simtools/schemas/model_parameters/gain_variation.schema.yml +2 -2
- simtools/schemas/model_parameters/hg_lg_variation.schema.yml +2 -2
- simtools/schemas/model_parameters/iobuf_maximum.schema.yml +2 -2
- simtools/schemas/model_parameters/iobuf_output_maximum.schema.yml +2 -2
- simtools/schemas/model_parameters/laser_events.schema.yml +1 -1
- simtools/schemas/model_parameters/lightguide_efficiency_vs_incidence_angle.schema.yml +2 -2
- simtools/schemas/model_parameters/lightguide_efficiency_vs_wavelength.schema.yml +2 -2
- simtools/schemas/model_parameters/min_photoelectrons.schema.yml +2 -2
- simtools/schemas/model_parameters/min_photons.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_align_random_distance.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_align_random_horizontal.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_align_random_vertical.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_class.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_degraded_reflection.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_focal_length.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_list.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_offset.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_reflection_random_angle.schema.yml +2 -2
- simtools/schemas/model_parameters/mirror_reflectivity.schema.yml +2 -2
- simtools/schemas/model_parameters/multiplicity_offset.schema.yml +2 -2
- simtools/schemas/model_parameters/muon_mono_threshold.schema.yml +2 -2
- simtools/schemas/model_parameters/nsb_autoscale_airmass.schema.yml +2 -2
- simtools/schemas/model_parameters/nsb_offaxis.schema.yml +2 -2
- simtools/schemas/model_parameters/nsb_pixel_rate.schema.yml +2 -2
- simtools/schemas/model_parameters/num_gains.schema.yml +2 -2
- simtools/schemas/model_parameters/only_triggered_telescopes.schema.yml +2 -2
- simtools/schemas/model_parameters/optics_properties.schema.yml +2 -2
- simtools/schemas/model_parameters/pedestal_events.schema.yml +7 -3
- simtools/schemas/model_parameters/photon_delay.schema.yml +2 -2
- simtools/schemas/model_parameters/pixeltrg_time_step.schema.yml +2 -2
- simtools/schemas/model_parameters/pm_average_gain.schema.yml +2 -2
- simtools/schemas/model_parameters/pm_collection_efficiency.schema.yml +2 -2
- simtools/schemas/model_parameters/pm_gain_index.schema.yml +2 -2
- simtools/schemas/model_parameters/pm_photoelectron_spectrum.schema.yml +2 -2
- simtools/schemas/model_parameters/pm_transit_time.schema.yml +2 -2
- simtools/schemas/model_parameters/pm_voltage_variation.schema.yml +2 -2
- simtools/schemas/model_parameters/primary_mirror_degraded_map.schema.yml +2 -2
- simtools/schemas/model_parameters/qe_variation.schema.yml +2 -2
- simtools/schemas/model_parameters/quantum_efficiency.schema.yml +2 -2
- simtools/schemas/model_parameters/random_focal_length.schema.yml +2 -2
- simtools/schemas/model_parameters/random_generator.schema.yml +2 -2
- simtools/schemas/model_parameters/random_mono_probability.schema.yml +2 -2
- simtools/schemas/model_parameters/sampled_output.schema.yml +2 -2
- simtools/schemas/model_parameters/save_pe_with_amplitude.schema.yml +2 -2
- simtools/schemas/model_parameters/store_photoelectrons.schema.yml +2 -2
- simtools/schemas/model_parameters/tailcut_scale.schema.yml +2 -2
- simtools/schemas/model_parameters/telescope_axis_height.schema.yml +2 -2
- simtools/schemas/model_parameters/telescope_random_angle.schema.yml +2 -2
- simtools/schemas/model_parameters/telescope_random_error.schema.yml +2 -2
- simtools/schemas/model_parameters/telescope_sphere_radius.schema.yml +2 -2
- simtools/schemas/model_parameters/telescope_transmission.schema.yml +2 -2
- simtools/schemas/model_parameters/teltrig_min_sigsum.schema.yml +2 -2
- simtools/schemas/model_parameters/teltrig_min_time.schema.yml +2 -2
- simtools/schemas/model_parameters/transit_time_calib_error.schema.yml +2 -2
- simtools/schemas/model_parameters/transit_time_compensate_error.schema.yml +2 -2
- simtools/schemas/model_parameters/transit_time_compensate_step.schema.yml +2 -2
- simtools/schemas/model_parameters/transit_time_error.schema.yml +2 -2
- simtools/schemas/model_parameters/transit_time_jitter.schema.yml +2 -2
- simtools/schemas/model_parameters/trigger_current_limit.schema.yml +2 -2
- simtools/schemas/model_parameters/trigger_delay_compensation.schema.yml +2 -2
- simtools/schemas/model_parameters/trigger_pixels.schema.yml +2 -2
- simtools/schemas/production_configuration_metrics.schema.yml +2 -2
- simtools/simtel/simtel_config_reader.py +21 -17
- simtools/simtel/simtel_config_writer.py +258 -66
- simtools/simtel/simtel_io_event_reader.py +301 -194
- simtools/simtel/simtel_io_event_writer.py +207 -227
- simtools/simtel/simtel_io_file_info.py +62 -0
- simtools/simtel/simtel_io_histogram.py +10 -14
- simtools/simtel/simtel_io_histograms.py +2 -2
- simtools/simtel/simtel_io_metadata.py +106 -0
- simtools/simtel/simulator_array.py +28 -14
- simtools/simtel/simulator_camera_efficiency.py +12 -6
- simtools/simtel/simulator_light_emission.py +85 -45
- simtools/simtel/simulator_ray_tracing.py +16 -6
- simtools/simulator.py +286 -89
- simtools/testing/configuration.py +5 -0
- simtools/testing/helpers.py +18 -0
- simtools/testing/sim_telarray_metadata.py +212 -0
- simtools/testing/validate_output.py +16 -6
- simtools/utils/general.py +18 -27
- simtools/utils/names.py +32 -10
- simtools/visualization/plot_array_layout.py +242 -0
- simtools/visualization/plot_pixels.py +681 -0
- simtools/visualization/visualize.py +5 -221
- simtools/applications/production_generate_simulation_config.py +0 -162
- simtools/applications/production_scale_events.py +0 -185
- simtools/layout/ctao_array_layouts.py +0 -172
- simtools/production_configuration/event_scaler.py +0 -120
- simtools/production_configuration/generate_simulation_config.py +0 -158
- {gammasimtools-0.15.0.dist-info → gammasimtools-0.17.0.dist-info}/licenses/LICENSE +0 -0
- {gammasimtools-0.15.0.dist-info → gammasimtools-0.17.0.dist-info}/top_level.txt +0 -0
|
@@ -15,23 +15,27 @@ simtools-derive-mirror-rnda = simtools.applications.derive_mirror_rnda:main
|
|
|
15
15
|
simtools-derive-photon-electron-spectrum = simtools.applications.derive_photon_electron_spectrum:main
|
|
16
16
|
simtools-derive-psf-parameters = simtools.applications.derive_psf_parameters:main
|
|
17
17
|
simtools-docs-produce-array-element-report = simtools.applications.docs_produce_array_element_report:main
|
|
18
|
+
simtools-docs-produce-calibration-reports = simtools.applications.docs_produce_calibration_reports:main
|
|
18
19
|
simtools-docs-produce-model-parameter-reports = simtools.applications.docs_produce_model_parameter_reports:main
|
|
20
|
+
simtools-docs-produce-simulation-configuration-report = simtools.applications.docs_produce_simulation_configuration_report:main
|
|
19
21
|
simtools-generate-array-config = simtools.applications.generate_array_config:main
|
|
20
22
|
simtools-generate-corsika-histograms = simtools.applications.generate_corsika_histograms:main
|
|
21
23
|
simtools-generate-default-metadata = simtools.applications.generate_default_metadata:main
|
|
22
24
|
simtools-generate-regular-arrays = simtools.applications.generate_regular_arrays:main
|
|
23
|
-
simtools-generate-
|
|
25
|
+
simtools-generate-sim-telarray-histograms = simtools.applications.generate_sim_telarray_histograms:main
|
|
24
26
|
simtools-generate-simtel-event-data = simtools.applications.generate_simtel_event_data:main
|
|
27
|
+
simtools-merge-tables = simtools.applications.merge_tables:main
|
|
25
28
|
simtools-plot-array-layout = simtools.applications.plot_array_layout:main
|
|
26
29
|
simtools-plot-tabular-data = simtools.applications.plot_tabular_data:main
|
|
27
30
|
simtools-print-version = simtools.applications.print_version:main
|
|
28
31
|
simtools-production-derive-corsika-limits = simtools.applications.production_derive_corsika_limits:main
|
|
29
|
-
simtools-production-
|
|
30
|
-
simtools-production-
|
|
32
|
+
simtools-production-derive-statistics = simtools.applications.production_derive_statistics:main
|
|
33
|
+
simtools-production-generate-grid = simtools.applications.production_generate_grid:main
|
|
31
34
|
simtools-run-application = simtools.applications.run_application:main
|
|
32
35
|
simtools-simulate-light-emission = simtools.applications.simulate_light_emission:main
|
|
33
36
|
simtools-simulate-prod = simtools.applications.simulate_prod:main
|
|
34
37
|
simtools-simulate-prod-htcondor-generator = simtools.applications.simulate_prod_htcondor_generator:main
|
|
38
|
+
simtools-submit-array-layouts = simtools.applications.submit_array_layouts:main
|
|
35
39
|
simtools-submit-data-from-external = simtools.applications.submit_data_from_external:main
|
|
36
40
|
simtools-submit-model-parameter-from-external = simtools.applications.submit_model_parameter_from_external:main
|
|
37
41
|
simtools-validate-camera-efficiency = simtools.applications.validate_camera_efficiency:main
|
|
@@ -39,3 +43,4 @@ simtools-validate-camera-fov = simtools.applications.validate_camera_fov:main
|
|
|
39
43
|
simtools-validate-cumulative-psf = simtools.applications.validate_cumulative_psf:main
|
|
40
44
|
simtools-validate-file-using-schema = simtools.applications.validate_file_using_schema:main
|
|
41
45
|
simtools-validate-optics = simtools.applications.validate_optics:main
|
|
46
|
+
simtools-verify-simulation-model-production-tables = simtools.applications.verify_simulation_model_production_tables:main
|
simtools/_version.py
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
r"""
|
|
4
4
|
Calculates array or single-telescope trigger rates.
|
|
5
5
|
|
|
6
|
-
The applications reads from a
|
|
7
|
-
|
|
6
|
+
The applications reads from a sim_telarray output file, a list of
|
|
7
|
+
sim_telarray output files ou from a file containing a list of sim_telarray files.
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
Command line arguments
|
|
11
11
|
----------------------
|
|
12
12
|
simtel_file_names (str or list):
|
|
13
|
-
Path to the
|
|
13
|
+
Path to the sim_telarray file or a list of sim_telarray output files.
|
|
14
14
|
Files can be generated in `simulate_prod` using the ``--save_file_lists`` option.
|
|
15
15
|
save_tables (bool):
|
|
16
16
|
If true, save the tables with the energy-dependent trigger rate to a ecsv file.
|
|
@@ -28,7 +28,7 @@ area_from_distribution (bool):
|
|
|
28
28
|
|
|
29
29
|
Example
|
|
30
30
|
-------
|
|
31
|
-
Calculate trigger rate from
|
|
31
|
+
Calculate trigger rate from sim_telarray file
|
|
32
32
|
|
|
33
33
|
.. code-block:: console
|
|
34
34
|
|
|
@@ -73,8 +73,8 @@ def _parse(label, description):
|
|
|
73
73
|
|
|
74
74
|
config.parser.add_argument(
|
|
75
75
|
"--simtel_file_names",
|
|
76
|
-
help="Name of the
|
|
77
|
-
"text file containing the list of
|
|
76
|
+
help="Name of the sim_telarray output files to be calculate the trigger rate from or the "
|
|
77
|
+
"text file containing the list of sim_telarray output files.",
|
|
78
78
|
nargs="+",
|
|
79
79
|
required=True,
|
|
80
80
|
type=str,
|
|
@@ -136,20 +136,20 @@ def _get_simulation_parameters(config_parser):
|
|
|
136
136
|
def main(): # noqa: D103
|
|
137
137
|
label = Path(__file__).stem
|
|
138
138
|
description = (
|
|
139
|
-
"Calculates the simulated and triggered event rate based on
|
|
139
|
+
"Calculates the simulated and triggered event rate based on sim_telarray output files."
|
|
140
140
|
)
|
|
141
141
|
config_parser = _parse(label, description)
|
|
142
142
|
|
|
143
143
|
logger = logging.getLogger()
|
|
144
144
|
logger.setLevel(gen.get_log_level_from_user(config_parser["log_level"]))
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
sim_telarray_files = gen.get_list_of_files_from_command_line(
|
|
147
147
|
config_parser["simtel_file_names"], [".zst", ".simtel", ".hdata"]
|
|
148
148
|
)
|
|
149
149
|
energy_range, view_cone = _get_simulation_parameters(config_parser)
|
|
150
150
|
|
|
151
151
|
histograms = SimtelIOHistograms(
|
|
152
|
-
|
|
152
|
+
sim_telarray_files,
|
|
153
153
|
area_from_distribution=config_parser["area_from_distribution"],
|
|
154
154
|
energy_range=energy_range,
|
|
155
155
|
view_cone=view_cone,
|
|
@@ -177,7 +177,7 @@ def main(): # noqa: D103
|
|
|
177
177
|
output_path = io_handler_instance.get_output_directory(label, sub_dir="application-plots")
|
|
178
178
|
for i_table, table in enumerate(trigger_rate_in_tables):
|
|
179
179
|
output_file = (
|
|
180
|
-
str(output_path.joinpath(Path(
|
|
180
|
+
str(output_path.joinpath(Path(sim_telarray_files[i_table]).stem)) + ".ecsv"
|
|
181
181
|
)
|
|
182
182
|
logger.info(f"Writing table {i_table + 1} to {output_file}")
|
|
183
183
|
table.write(output_file, overwrite=True)
|
|
@@ -4,7 +4,7 @@ r"""
|
|
|
4
4
|
|
|
5
5
|
Check value, type, and range, convert units using schema files. Write json files
|
|
6
6
|
ready to be submitted to the model database. Prints out parameters which are not found
|
|
7
|
-
in
|
|
7
|
+
in sim_telarray configuration file and parameters which are not found in simtools schema files.
|
|
8
8
|
|
|
9
9
|
Note that all parameters are assigned the same parameter version.
|
|
10
10
|
|
|
@@ -44,7 +44,7 @@ r"""
|
|
|
44
44
|
2>|/dev/null | grep '(@cfg)' | sed 's/^(@cfg) //' >| all_telescope_config_paranal.cfg
|
|
45
45
|
|
|
46
46
|
|
|
47
|
-
Extract then model parameters from the
|
|
47
|
+
Extract then model parameters from the sim_telarray configuration file for LSTN-01
|
|
48
48
|
(telescopes are named CT1, CT2, ..., in the sim_telarray configuration file and must be
|
|
49
49
|
provided in the "simtel_telescope_name" command line argument)
|
|
50
50
|
and write json files in the same format as the model parameter database:
|
|
@@ -94,7 +94,7 @@ def _parse(label=None, description=None):
|
|
|
94
94
|
|
|
95
95
|
config.parser.add_argument(
|
|
96
96
|
"--simtel_cfg_file",
|
|
97
|
-
help="File name for
|
|
97
|
+
help="File name for sim_telarray configuration",
|
|
98
98
|
type=str,
|
|
99
99
|
required=True,
|
|
100
100
|
)
|
|
@@ -116,7 +116,7 @@ def _parse(label=None, description=None):
|
|
|
116
116
|
|
|
117
117
|
def read_simtel_config_file(args_dict, schema_file, camera_pixels=None):
|
|
118
118
|
"""
|
|
119
|
-
Read the
|
|
119
|
+
Read the sim_telarray configuration file.
|
|
120
120
|
|
|
121
121
|
Parameters
|
|
122
122
|
----------
|
|
@@ -146,7 +146,7 @@ def read_simtel_config_file(args_dict, schema_file, camera_pixels=None):
|
|
|
146
146
|
|
|
147
147
|
def get_number_of_camera_pixel(args_dict, logger):
|
|
148
148
|
"""
|
|
149
|
-
Get the number of camera pixels from the
|
|
149
|
+
Get the number of camera pixels from the sim_telarray configuration file.
|
|
150
150
|
|
|
151
151
|
Required to set the dimension some of the parameter correctly, as simtel
|
|
152
152
|
in some cases does not provide the dimension ('all:' in the parameter files).
|
|
@@ -178,7 +178,7 @@ def get_number_of_camera_pixel(args_dict, logger):
|
|
|
178
178
|
|
|
179
179
|
def read_and_export_parameters(args_dict, logger):
|
|
180
180
|
"""
|
|
181
|
-
Read and export parameters from
|
|
181
|
+
Read and export parameters from sim_telarray configuration file to json files.
|
|
182
182
|
|
|
183
183
|
Provide extensive logging information on the parameters found in the simtel
|
|
184
184
|
configuration file.
|
|
@@ -193,16 +193,16 @@ def read_and_export_parameters(args_dict, logger):
|
|
|
193
193
|
Returns
|
|
194
194
|
-------
|
|
195
195
|
list
|
|
196
|
-
List of
|
|
196
|
+
List of sim_telarray parameters not found in schema files.
|
|
197
197
|
list
|
|
198
|
-
List of simtools parameter not found in
|
|
198
|
+
List of simtools parameter not found in sim_telarray configuration file.
|
|
199
199
|
|
|
200
200
|
"""
|
|
201
|
-
_parameters, _schema_files = schema.
|
|
201
|
+
_parameters, _schema_files = schema.get_model_parameter_schema_files()
|
|
202
202
|
_simtel_parameters = simtel_config_reader.get_list_of_simtel_parameters(
|
|
203
203
|
args_dict["simtel_cfg_file"]
|
|
204
204
|
)
|
|
205
|
-
logger.info(f"Found {len(_simtel_parameters)} parameters in
|
|
205
|
+
logger.info(f"Found {len(_simtel_parameters)} parameters in sim_telarray configuration file.")
|
|
206
206
|
|
|
207
207
|
io_handler = IOHandler()
|
|
208
208
|
io_handler.set_paths(output_path=args_dict["output_path"])
|
|
@@ -223,7 +223,7 @@ def read_and_export_parameters(args_dict, logger):
|
|
|
223
223
|
_parameters_not_in_simtel.append(_parameter)
|
|
224
224
|
continue
|
|
225
225
|
|
|
226
|
-
logger.info(f"
|
|
226
|
+
logger.info(f"sim_telarray parameter: {config_reader.parameter_dict}")
|
|
227
227
|
|
|
228
228
|
_json_dict = writer.ModelDataWriter.dump_model_parameter(
|
|
229
229
|
parameter_name=_parameter,
|
|
@@ -252,15 +252,15 @@ def print_parameters_not_found(_parameters_not_in_simtel, _simtel_parameters, ar
|
|
|
252
252
|
"""
|
|
253
253
|
Print simtel/simtools parameter not found in schema and configuration files.
|
|
254
254
|
|
|
255
|
-
For
|
|
255
|
+
For sim_telarray parameters not found, check if the setting for the chose
|
|
256
256
|
telescope is different from the default values.
|
|
257
257
|
|
|
258
258
|
Parameters
|
|
259
259
|
----------
|
|
260
260
|
_parameters_not_in_simtel: list
|
|
261
|
-
List of
|
|
261
|
+
List of sim_telarray parameters not found in schema files.
|
|
262
262
|
_simtel_parameters: list
|
|
263
|
-
List of
|
|
263
|
+
List of sim_telarray parameters not found in simtools schema files.
|
|
264
264
|
args_dict: dict
|
|
265
265
|
Dictionary with command line arguments.
|
|
266
266
|
logger: logging.Logger
|
|
@@ -273,9 +273,9 @@ def print_parameters_not_found(_parameters_not_in_simtel, _simtel_parameters, ar
|
|
|
273
273
|
for para in sorted(_parameters_not_in_simtel):
|
|
274
274
|
logger.info(f" {para}")
|
|
275
275
|
|
|
276
|
-
logger.info(f"
|
|
276
|
+
logger.info(f"sim_telarray parameters not found in schema files ({len(_simtel_parameters)}):")
|
|
277
277
|
for para in sorted(_simtel_parameters):
|
|
278
|
-
logger.info(f"
|
|
278
|
+
logger.info(f"sim_telarray parameter: {para}")
|
|
279
279
|
config_reader = simtel_config_reader.SimtelConfigReader(
|
|
280
280
|
schema_file=None,
|
|
281
281
|
simtel_config_file=args_dict["simtel_cfg_file"],
|
|
@@ -18,7 +18,7 @@ r"""
|
|
|
18
18
|
Model parameter version.
|
|
19
19
|
repository_url (str)
|
|
20
20
|
URL or path of the CTAO common identifiers repository.
|
|
21
|
-
repository_branch (str
|
|
21
|
+
repository_branch (str)
|
|
22
22
|
Repository branch to use for CTAO common identifiers.
|
|
23
23
|
updated_parameter_version (str)
|
|
24
24
|
Updated parameter version.
|
|
@@ -48,9 +48,9 @@ from pathlib import Path
|
|
|
48
48
|
import simtools.utils.general as gen
|
|
49
49
|
from simtools.configuration import configurator
|
|
50
50
|
from simtools.db import db_handler
|
|
51
|
-
from simtools.layout.
|
|
51
|
+
from simtools.layout.array_layout_utils import (
|
|
52
52
|
merge_array_layouts,
|
|
53
|
-
|
|
53
|
+
retrieve_ctao_array_layouts,
|
|
54
54
|
write_array_layouts,
|
|
55
55
|
)
|
|
56
56
|
|
|
@@ -91,7 +91,7 @@ def main(): # noqa: D103
|
|
|
91
91
|
logger = logging.getLogger()
|
|
92
92
|
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
93
93
|
|
|
94
|
-
ctao_array_layouts =
|
|
94
|
+
ctao_array_layouts = retrieve_ctao_array_layouts(
|
|
95
95
|
site=args_dict["site"],
|
|
96
96
|
repository_url=args_dict["repository_url"],
|
|
97
97
|
branch_name=args_dict["repository_branch"],
|
|
@@ -107,7 +107,7 @@ def main(): # noqa: D103
|
|
|
107
107
|
)
|
|
108
108
|
db_array_layouts["array_layouts"].pop("_id", None)
|
|
109
109
|
db_array_layouts["array_layouts"].pop("entry_date", None)
|
|
110
|
-
logger.info(f"Layouts from
|
|
110
|
+
logger.info(f"Layouts from model parameter database: {db_array_layouts}")
|
|
111
111
|
|
|
112
112
|
write_array_layouts(
|
|
113
113
|
array_layouts=merge_array_layouts(db_array_layouts["array_layouts"], ctao_array_layouts),
|
|
@@ -93,7 +93,7 @@ from matplotlib.backends.backend_pdf import PdfPages
|
|
|
93
93
|
import simtools.utils.general as gen
|
|
94
94
|
from simtools.configuration import configurator
|
|
95
95
|
from simtools.io_operations import io_handler
|
|
96
|
-
from simtools.model.
|
|
96
|
+
from simtools.model.model_utils import initialize_simulation_models
|
|
97
97
|
from simtools.ray_tracing.ray_tracing import RayTracing
|
|
98
98
|
from simtools.visualization import visualize
|
|
99
99
|
|
|
@@ -304,7 +304,7 @@ def calculate_rmsd(data, sim):
|
|
|
304
304
|
return np.sqrt(np.mean((data - sim) ** 2))
|
|
305
305
|
|
|
306
306
|
|
|
307
|
-
def run_pars(tel_model, args_dict, pars, data_to_plot, radius, pdf_pages):
|
|
307
|
+
def run_pars(tel_model, site_model, args_dict, pars, data_to_plot, radius, pdf_pages):
|
|
308
308
|
"""
|
|
309
309
|
Run the tuning for one set of parameters, add a plot to the pdfPages and return RMSD and D80.
|
|
310
310
|
|
|
@@ -319,6 +319,7 @@ def run_pars(tel_model, args_dict, pars, data_to_plot, radius, pdf_pages):
|
|
|
319
319
|
|
|
320
320
|
ray = RayTracing(
|
|
321
321
|
telescope_model=tel_model,
|
|
322
|
+
site_model=site_model,
|
|
322
323
|
simtel_path=args_dict["simtel_path"],
|
|
323
324
|
zenith_angle=args_dict["zenith"] * u.deg,
|
|
324
325
|
source_distance=args_dict["src_distance"] * u.km,
|
|
@@ -370,7 +371,9 @@ def run_pars(tel_model, args_dict, pars, data_to_plot, radius, pdf_pages):
|
|
|
370
371
|
return d80, rmsd
|
|
371
372
|
|
|
372
373
|
|
|
373
|
-
def find_best_parameters(
|
|
374
|
+
def find_best_parameters(
|
|
375
|
+
all_parameters, tel_model, site_model, args_dict, data_to_plot, radius, pdf_pages
|
|
376
|
+
):
|
|
374
377
|
"""
|
|
375
378
|
Find the best parameters from all parameter sets.
|
|
376
379
|
|
|
@@ -382,7 +385,7 @@ def find_best_parameters(all_parameters, tel_model, args_dict, data_to_plot, rad
|
|
|
382
385
|
best_pars = None
|
|
383
386
|
|
|
384
387
|
for pars in all_parameters:
|
|
385
|
-
_, rmsd = run_pars(tel_model, args_dict, pars, data_to_plot, radius, pdf_pages)
|
|
388
|
+
_, rmsd = run_pars(tel_model, site_model, args_dict, pars, data_to_plot, radius, pdf_pages)
|
|
386
389
|
if rmsd < min_rmsd:
|
|
387
390
|
min_rmsd = rmsd
|
|
388
391
|
best_pars = pars
|
|
@@ -400,12 +403,12 @@ def main(): # noqa: D103
|
|
|
400
403
|
# Output directory to save files related directly to this app
|
|
401
404
|
_io_handler = io_handler.IOHandler()
|
|
402
405
|
output_dir = _io_handler.get_output_directory(label, sub_dir="application-plots")
|
|
403
|
-
tel_model =
|
|
406
|
+
tel_model, site_model = initialize_simulation_models(
|
|
407
|
+
label=label,
|
|
408
|
+
db_config=db_config,
|
|
404
409
|
site=args_dict["site"],
|
|
405
410
|
telescope_name=args_dict["telescope"],
|
|
406
|
-
mongo_db_config=db_config,
|
|
407
411
|
model_version=args_dict["model_version"],
|
|
408
|
-
label=label,
|
|
409
412
|
)
|
|
410
413
|
|
|
411
414
|
all_parameters = []
|
|
@@ -424,11 +427,11 @@ def main(): # noqa: D103
|
|
|
424
427
|
pdf_pages = PdfPages(plot_file)
|
|
425
428
|
|
|
426
429
|
best_pars, _ = find_best_parameters(
|
|
427
|
-
all_parameters, tel_model, args_dict, data_to_plot, radius, pdf_pages
|
|
430
|
+
all_parameters, tel_model, site_model, args_dict, data_to_plot, radius, pdf_pages
|
|
428
431
|
)
|
|
429
432
|
|
|
430
433
|
# Rerunning and plotting the best pars
|
|
431
|
-
run_pars(tel_model, args_dict, best_pars, data_to_plot, radius, pdf_pages)
|
|
434
|
+
run_pars(tel_model, site_model, args_dict, best_pars, data_to_plot, radius, pdf_pages)
|
|
432
435
|
plt.close()
|
|
433
436
|
pdf_pages.close()
|
|
434
437
|
|
|
@@ -5,7 +5,6 @@ Produces a markdown file for a given array element, site, and model version.
|
|
|
5
5
|
|
|
6
6
|
The report includes detailed information on each parameter,
|
|
7
7
|
such as the parameter name, value, unit, description, and short description.
|
|
8
|
-
Currently only implemented for telescopes.
|
|
9
8
|
"""
|
|
10
9
|
|
|
11
10
|
import logging
|
|
@@ -70,15 +69,16 @@ def main(): # noqa: D103
|
|
|
70
69
|
).auto_generate_array_element_reports()
|
|
71
70
|
|
|
72
71
|
else:
|
|
72
|
+
model_version = args["model_version"]
|
|
73
73
|
ReadParameters(
|
|
74
74
|
db_config,
|
|
75
75
|
args,
|
|
76
|
-
Path(output_path / f"{
|
|
76
|
+
Path(output_path / f"{model_version}"),
|
|
77
77
|
).produce_array_element_report()
|
|
78
78
|
|
|
79
79
|
logger.info(
|
|
80
80
|
f"Markdown report generated for {args['site']}"
|
|
81
|
-
f" Telescope {args['telescope']} (v{
|
|
81
|
+
f" Telescope {args['telescope']} (v{model_version}):"
|
|
82
82
|
f" {output_path}"
|
|
83
83
|
)
|
|
84
84
|
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/python3
|
|
2
|
+
|
|
3
|
+
r"""Produces a markdown file for calibration reports."""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
|
|
7
|
+
from simtools.configuration import configurator
|
|
8
|
+
from simtools.io_operations import io_handler
|
|
9
|
+
from simtools.reporting.docs_read_parameters import ReadParameters
|
|
10
|
+
from simtools.utils import general as gen
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _parse(label):
|
|
14
|
+
"""Parse command line configuration."""
|
|
15
|
+
config = configurator.Configurator(
|
|
16
|
+
label=label,
|
|
17
|
+
description=("Produce a markdown report for calibration parameters."),
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
return config.initialize(
|
|
21
|
+
db_config=True,
|
|
22
|
+
simulation_model=["model_version"],
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
|
|
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
|
+
)
|
|
39
|
+
|
|
40
|
+
read_parameters.produce_calibration_reports()
|
|
41
|
+
|
|
42
|
+
logger.info(
|
|
43
|
+
f"Calibation reports for model version {args.get('model_version')} produced successfully."
|
|
44
|
+
)
|
|
45
|
+
logger.info(f"Output path: {output_path}/{args.get('model_version')}/")
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
if __name__ == "__main__":
|
|
49
|
+
main()
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
#!/usr/bin/python3
|
|
2
|
+
|
|
3
|
+
r"""Produces a markdown file for a given simulation configuration."""
|
|
4
|
+
|
|
5
|
+
import logging
|
|
6
|
+
|
|
7
|
+
from simtools.configuration import configurator
|
|
8
|
+
from simtools.io_operations import io_handler
|
|
9
|
+
from simtools.reporting.docs_read_parameters import ReadParameters
|
|
10
|
+
from simtools.utils import general as gen
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _parse(label):
|
|
14
|
+
"""Parse command line configuration."""
|
|
15
|
+
config = configurator.Configurator(
|
|
16
|
+
label=label,
|
|
17
|
+
description=("Produce a markdown report for model parameters."),
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
return config.initialize(
|
|
21
|
+
db_config=True,
|
|
22
|
+
simulation_model=["model_version"],
|
|
23
|
+
simulation_configuration=["software"],
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def main(): # noqa: D103
|
|
28
|
+
label_name = "reports"
|
|
29
|
+
args, db_config = _parse(label_name)
|
|
30
|
+
|
|
31
|
+
io_handler_instance = io_handler.IOHandler()
|
|
32
|
+
output_path = io_handler_instance.get_output_directory(label=label_name, sub_dir="productions")
|
|
33
|
+
|
|
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')}"
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
read_parameters.produce_simulation_configuration_report()
|
|
42
|
+
|
|
43
|
+
logger.info(
|
|
44
|
+
f"Configuration reports for {args.get('simulation_software')} produced successfully."
|
|
45
|
+
)
|
|
46
|
+
logger.info(f"Output path: {output_path}/{args.get('model_version')}/")
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
if __name__ == "__main__":
|
|
50
|
+
main()
|
simtools/applications/{generate_simtel_array_histograms.py → generate_sim_telarray_histograms.py}
RENAMED
|
@@ -39,7 +39,7 @@ r"""
|
|
|
39
39
|
-------
|
|
40
40
|
.. code-block:: console
|
|
41
41
|
|
|
42
|
-
simtools-generate-
|
|
42
|
+
simtools-generate-sim-telarray-histograms --hist_file_names tests/resources/ \\
|
|
43
43
|
run2_gamma_za20deg_azm0deg-North-Prod5_test-production-5.hdata.zst \\
|
|
44
44
|
--output_file_name test_hist_hdata --hdf5 --pdf
|
|
45
45
|
|
|
@@ -167,7 +167,7 @@ def create_pdf(simtel_histograms, output_file_name, config_parser, logger):
|
|
|
167
167
|
|
|
168
168
|
def main(): # noqa: D103
|
|
169
169
|
label = Path(__file__).stem
|
|
170
|
-
description = "Display
|
|
170
|
+
description = "Display sim_telarray histograms and/or write them into hdf5 format."
|
|
171
171
|
io_handler_instance = io_handler.IOHandler()
|
|
172
172
|
config_parser = _parse(label, description)
|
|
173
173
|
output_path = io_handler_instance.get_output_directory(label, sub_dir="application-plots")
|
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/python3
|
|
2
2
|
|
|
3
|
-
"""
|
|
4
|
-
|
|
3
|
+
r"""
|
|
4
|
+
Generate a reduced dataset of event data from simulated files.
|
|
5
|
+
|
|
6
|
+
Processes sim_telarray output files (typically of type '.simtel.zst') and creates a
|
|
7
|
+
reduced dataset containing shower information, array-level parameters, and data about
|
|
8
|
+
triggered telescopes.
|
|
5
9
|
|
|
6
10
|
Command line arguments
|
|
7
11
|
----------------------
|
|
8
12
|
prefix (str, required)
|
|
9
13
|
Path prefix for the input files.
|
|
10
14
|
output_file (str, required)
|
|
11
|
-
|
|
15
|
+
Output file path.
|
|
12
16
|
max_files (int, optional, default=100)
|
|
13
|
-
Maximum number of files to process.
|
|
14
|
-
print_dataset_information (
|
|
17
|
+
Maximum number of input files to process.
|
|
18
|
+
print_dataset_information (int, optional, default=0)
|
|
15
19
|
Print information about the datasets in the generated reduced event dataset.
|
|
16
20
|
|
|
17
21
|
Example
|
|
@@ -20,13 +24,12 @@ Generate a reduced dataset from input files and save the result.
|
|
|
20
24
|
|
|
21
25
|
.. code-block:: console
|
|
22
26
|
|
|
23
|
-
simtools-production-extract-mc-event-data
|
|
24
|
-
simtools-generate-simtel-event-data
|
|
25
|
-
--
|
|
26
|
-
--
|
|
27
|
-
--
|
|
28
|
-
--
|
|
29
|
-
--print_dataset_information
|
|
27
|
+
simtools-production-extract-mc-event-data \\
|
|
28
|
+
simtools-generate-simtel-event-data \\
|
|
29
|
+
--input 'path/to/input_files/gamma_*dark*.simtel.zst' \\
|
|
30
|
+
--output_file output_file.hdf5 \\
|
|
31
|
+
--max_files 50 \\
|
|
32
|
+
--print_dataset_information 10
|
|
30
33
|
"""
|
|
31
34
|
|
|
32
35
|
import logging
|
|
@@ -34,8 +37,8 @@ from pathlib import Path
|
|
|
34
37
|
|
|
35
38
|
import simtools.utils.general as gen
|
|
36
39
|
from simtools.configuration import configurator
|
|
37
|
-
from simtools.
|
|
38
|
-
from simtools.
|
|
40
|
+
from simtools.data_model.metadata_collector import MetadataCollector
|
|
41
|
+
from simtools.io_operations import io_handler, io_table_handler
|
|
39
42
|
from simtools.simtel.simtel_io_event_writer import SimtelIOEventDataWriter
|
|
40
43
|
|
|
41
44
|
|
|
@@ -51,35 +54,24 @@ def _parse(label, description):
|
|
|
51
54
|
config = configurator.Configurator(label=label, description=description)
|
|
52
55
|
|
|
53
56
|
config.parser.add_argument(
|
|
54
|
-
"--
|
|
55
|
-
)
|
|
56
|
-
config.parser.add_argument(
|
|
57
|
-
"--wildcard",
|
|
57
|
+
"--input",
|
|
58
58
|
type=str,
|
|
59
59
|
required=True,
|
|
60
|
-
help="
|
|
60
|
+
help="Input file path (wildcards allowed; e.g., '/data_path/gamma_*dark*.simtel.zst')",
|
|
61
61
|
)
|
|
62
|
-
config.parser.add_argument("--output_file", type=str, required=True, help="Output filename.")
|
|
63
62
|
config.parser.add_argument(
|
|
64
|
-
"--max_files", type=int, default=100, help="Maximum number of files to process."
|
|
63
|
+
"--max_files", type=int, default=100, help="Maximum number of input files to process."
|
|
65
64
|
)
|
|
66
|
-
|
|
67
65
|
config.parser.add_argument(
|
|
68
66
|
"--print_dataset_information",
|
|
69
67
|
type=int,
|
|
70
|
-
help="Print given number of
|
|
68
|
+
help="Print data set information for the given number of events.",
|
|
71
69
|
default=0,
|
|
72
70
|
)
|
|
71
|
+
return config.initialize(db_config=False, output=True)
|
|
73
72
|
|
|
74
|
-
return config.initialize(db_config=False)
|
|
75
73
|
|
|
76
|
-
|
|
77
|
-
def main():
|
|
78
|
-
"""
|
|
79
|
-
Process event data files and store data in reduced dataset.
|
|
80
|
-
|
|
81
|
-
The reduced dataset contains shower information, array information and triggered telescopes.
|
|
82
|
-
"""
|
|
74
|
+
def main(): # noqa: D103
|
|
83
75
|
label = Path(__file__).stem
|
|
84
76
|
|
|
85
77
|
args_dict, _ = _parse(
|
|
@@ -90,27 +82,25 @@ def main():
|
|
|
90
82
|
),
|
|
91
83
|
)
|
|
92
84
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
logger = logging.getLogger()
|
|
86
|
+
logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
|
|
87
|
+
logger.info(f"Loading input files from: {args_dict['input']}")
|
|
96
88
|
|
|
97
|
-
|
|
98
|
-
files = list(
|
|
89
|
+
input_pattern = Path(args_dict["input"])
|
|
90
|
+
files = list(input_pattern.parent.glob(input_pattern.name))
|
|
99
91
|
if not files:
|
|
100
|
-
|
|
92
|
+
logger.warning("No matching input files found.")
|
|
101
93
|
return
|
|
102
94
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
generator.process_files()
|
|
109
|
-
_logger.info(f"reduced dataset saved to: {output_filepath}")
|
|
95
|
+
output_filepath = io_handler.IOHandler().get_output_file(args_dict["output_file"])
|
|
96
|
+
generator = SimtelIOEventDataWriter(files, args_dict["max_files"])
|
|
97
|
+
tables = generator.process_files()
|
|
98
|
+
io_table_handler.write_tables(tables, output_filepath, overwrite_existing=True)
|
|
99
|
+
MetadataCollector.dump(args_dict=args_dict, output_file=output_filepath.with_suffix(".yml"))
|
|
110
100
|
|
|
111
101
|
if args_dict["print_dataset_information"] > 0:
|
|
112
|
-
|
|
113
|
-
|
|
102
|
+
for table in tables:
|
|
103
|
+
table.pprint(max_lines=args_dict["print_dataset_information"], max_width=-1)
|
|
114
104
|
|
|
115
105
|
|
|
116
106
|
if __name__ == "__main__":
|