gammasimtools 0.8.2__py3-none-any.whl → 0.9.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. {gammasimtools-0.8.2.dist-info → gammasimtools-0.9.0.dist-info}/METADATA +3 -3
  2. {gammasimtools-0.8.2.dist-info → gammasimtools-0.9.0.dist-info}/RECORD +64 -59
  3. {gammasimtools-0.8.2.dist-info → gammasimtools-0.9.0.dist-info}/WHEEL +1 -1
  4. {gammasimtools-0.8.2.dist-info → gammasimtools-0.9.0.dist-info}/entry_points.txt +2 -0
  5. simtools/_version.py +2 -2
  6. simtools/applications/convert_all_model_parameters_from_simtel.py +1 -1
  7. simtools/applications/convert_geo_coordinates_of_array_elements.py +8 -9
  8. simtools/applications/convert_model_parameter_from_simtel.py +1 -1
  9. simtools/applications/db_add_model_parameters_from_repository_to_db.py +2 -10
  10. simtools/applications/db_add_value_from_json_to_db.py +1 -9
  11. simtools/applications/db_get_array_layouts_from_db.py +3 -1
  12. simtools/applications/db_get_parameter_from_db.py +1 -1
  13. simtools/applications/derive_mirror_rnda.py +10 -1
  14. simtools/applications/derive_psf_parameters.py +1 -1
  15. simtools/applications/generate_array_config.py +1 -5
  16. simtools/applications/generate_regular_arrays.py +9 -6
  17. simtools/applications/plot_array_layout.py +3 -1
  18. simtools/applications/plot_tabular_data.py +84 -0
  19. simtools/applications/production_scale_events.py +1 -2
  20. simtools/applications/simulate_light_emission.py +2 -2
  21. simtools/applications/simulate_prod.py +24 -59
  22. simtools/applications/simulate_prod_htcondor_generator.py +95 -0
  23. simtools/applications/submit_data_from_external.py +1 -1
  24. simtools/applications/validate_camera_efficiency.py +1 -1
  25. simtools/applications/validate_camera_fov.py +3 -7
  26. simtools/applications/validate_cumulative_psf.py +3 -7
  27. simtools/applications/validate_file_using_schema.py +31 -21
  28. simtools/applications/validate_optics.py +3 -4
  29. simtools/camera_efficiency.py +1 -4
  30. simtools/configuration/commandline_parser.py +7 -13
  31. simtools/configuration/configurator.py +6 -19
  32. simtools/data_model/metadata_collector.py +18 -0
  33. simtools/data_model/metadata_model.py +18 -5
  34. simtools/data_model/model_data_writer.py +1 -1
  35. simtools/data_model/validate_data.py +67 -10
  36. simtools/db/db_handler.py +92 -315
  37. simtools/io_operations/legacy_data_handler.py +61 -0
  38. simtools/job_execution/htcondor_script_generator.py +133 -0
  39. simtools/job_execution/job_manager.py +77 -50
  40. simtools/model/camera.py +4 -2
  41. simtools/model/model_parameter.py +40 -10
  42. simtools/model/site_model.py +1 -1
  43. simtools/ray_tracing/mirror_panel_psf.py +47 -27
  44. simtools/runners/corsika_runner.py +14 -3
  45. simtools/runners/runner_services.py +3 -3
  46. simtools/runners/simtel_runner.py +27 -8
  47. simtools/schemas/integration_tests_config.metaschema.yml +15 -5
  48. simtools/schemas/model_parameter.metaschema.yml +90 -2
  49. simtools/schemas/model_parameters/effective_focal_length.schema.yml +31 -1
  50. simtools/simtel/simtel_table_reader.py +410 -0
  51. simtools/simtel/simulator_camera_efficiency.py +6 -4
  52. simtools/simtel/simulator_light_emission.py +2 -2
  53. simtools/simtel/simulator_ray_tracing.py +1 -2
  54. simtools/simulator.py +80 -33
  55. simtools/testing/configuration.py +12 -8
  56. simtools/testing/helpers.py +5 -5
  57. simtools/testing/validate_output.py +26 -26
  58. simtools/utils/general.py +50 -3
  59. simtools/utils/names.py +2 -2
  60. simtools/utils/value_conversion.py +9 -1
  61. simtools/visualization/plot_tables.py +106 -0
  62. simtools/visualization/visualize.py +43 -5
  63. simtools/db/db_from_repo_handler.py +0 -106
  64. {gammasimtools-0.8.2.dist-info → gammasimtools-0.9.0.dist-info}/LICENSE +0 -0
  65. {gammasimtools-0.8.2.dist-info → gammasimtools-0.9.0.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: gammasimtools
3
- Version: 0.8.2
3
+ Version: 0.9.0
4
4
  Summary: Tools for the Simulation System of the CTA Observatory
5
5
  Author-email: simtools developers <simtools-developer@desy.de>
6
6
  License: BSD 3-Clause License
@@ -58,7 +58,6 @@ Requires-Dist: numpy
58
58
  Requires-Dist: particle
59
59
  Requires-Dist: pymongo
60
60
  Requires-Dist: pyproj
61
- Requires-Dist: pytest
62
61
  Requires-Dist: python-dotenv
63
62
  Requires-Dist: pyyaml
64
63
  Requires-Dist: scipy
@@ -74,6 +73,7 @@ Requires-Dist: sphinx; extra == "doc"
74
73
  Requires-Dist: sphinx-book-theme; extra == "doc"
75
74
  Requires-Dist: towncrier; extra == "doc"
76
75
  Provides-Extra: tests
76
+ Requires-Dist: pytest; extra == "tests"
77
77
  Requires-Dist: pytest-cov; extra == "tests"
78
78
  Requires-Dist: pytest-mock; extra == "tests"
79
79
  Requires-Dist: pytest-profiling; extra == "tests"
@@ -1,45 +1,47 @@
1
1
  simtools/__init__.py,sha256=yvx0i5ygbllmMtF2Tzy7pohvhQNH_dBdj0Bt8bKFYpc,231
2
- simtools/_version.py,sha256=t6tJJG56wlBKsg_0M1Q4l1ir09jgXRw1tolMbDalW9g,411
3
- simtools/camera_efficiency.py,sha256=sT54bZhizF-cojudQgslqIK-CAtxa1XFnkqwJOiHqZc,19208
2
+ simtools/_version.py,sha256=dEuABWaRk7ju3R5JrWbpUVQ4xq7RBpvl2clGJceWAS4,411
3
+ simtools/camera_efficiency.py,sha256=xs2Rfjq1WlA0hNGQA_TKHfF8Mis1qoP2LScvZE_zFYk,19083
4
4
  simtools/constants.py,sha256=5B-6TZMJn_ou72KpzgNHwM5xFPm51uRAC6z47_jRSHw,294
5
- simtools/simulator.py,sha256=fjT86zvlGxBRNrRySirbPU9qiYYdDE1StOqA66j0rZU,18801
5
+ simtools/simulator.py,sha256=QKXrQMZDEJU9_JmwucQihtifZbz5GnIdirMRzXyXDsY,20998
6
6
  simtools/version.py,sha256=0Fuma5dyo8IqPS0JjDst9b7NTft7rR7kyCbL9xAIOtk,624
7
7
  simtools/_dev_version/__init__.py,sha256=VGpGiFCbItDqeNLGe7p5bucVFCxbdbcFkwCma7K6Pvw,379
8
8
  simtools/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  simtools/applications/calculate_trigger_rate.py,sha256=oKNOdMciotqQIL-0CC80m-5cjqjvYIDl2zgugraAXvs,6999
10
- simtools/applications/convert_all_model_parameters_from_simtel.py,sha256=MFkNjlKYYOaQ-xcXsQeGhbzkIYVCwMzzojHKWNzPwtM,12840
11
- simtools/applications/convert_geo_coordinates_of_array_elements.py,sha256=5rdwqxu8KvZ_Y5TH8GghOeknOwpgHiAoT6ctQUqCqsE,6094
12
- simtools/applications/convert_model_parameter_from_simtel.py,sha256=qX6Ko6NN3gQk9-ONKKb7MdiViR2Aj_2soVcsgmK4ovw,3826
10
+ simtools/applications/convert_all_model_parameters_from_simtel.py,sha256=Tn5ORb-OZsBBZRzCg3YQwgLPsN3mzZrXsU32riaAK4E,12859
11
+ simtools/applications/convert_geo_coordinates_of_array_elements.py,sha256=_zsuX2bmDGWyYWloXgEZRQ9aJhi73gjOps-YDtUr9D8,6045
12
+ simtools/applications/convert_model_parameter_from_simtel.py,sha256=HWMMR-dX1DgSYMyvm1xreJtgs5sERRDBoAPFMgG4YcQ,3845
13
13
  simtools/applications/db_add_file_to_db.py,sha256=shT8TSeOGlCTDQVAyf1Snc88YeMY3XBW4_Rae_YdDMI,5029
14
- simtools/applications/db_add_model_parameters_from_repository_to_db.py,sha256=zSAMosjihJ0ZJQjfUpBzRrQxLNzjyYFaZJ4Z7NnLEqU,5626
15
- simtools/applications/db_add_value_from_json_to_db.py,sha256=gsmFx08aYgjISINPtPnhM-fRS4s0hsyljXVuoCU6w-o,3436
16
- simtools/applications/db_get_array_layouts_from_db.py,sha256=VJ1Y8k_ikUwSrLjxJgCY3vjVzXl-oINvtLxvYYqezS8,5091
14
+ simtools/applications/db_add_model_parameters_from_repository_to_db.py,sha256=3OzZFR3XYPCC5svLWZEZSF3t8J4zYR1GN3EEST9i4MA,5315
15
+ simtools/applications/db_add_value_from_json_to_db.py,sha256=mJh02Slph8MMbJJZrZ4DfViR-v0slOWx_MWepF8HjYI,3060
16
+ simtools/applications/db_get_array_layouts_from_db.py,sha256=2St5ZfcohXSHnDYiP326D4fqlbfsgREsC4lGJ5cDUPg,5122
17
17
  simtools/applications/db_get_file_from_db.py,sha256=n_v7LlQE5Xed98EWahWv4DJjAttx0_ijeOnCkeX5gUU,2720
18
- simtools/applications/db_get_parameter_from_db.py,sha256=d4VWfHDZkOzNXFFHnbTC0Opn9GwrjWPG-mu0adRQIw8,4123
18
+ simtools/applications/db_get_parameter_from_db.py,sha256=xW8e6UjM-7tiusNtb3zkQSdTDvTjqvKyAC5UTnLul3w,4142
19
19
  simtools/applications/db_inspect_databases.py,sha256=fQZvbdgunGjS86i4NTAgPg9TjKTiPbsuR3al2DPzLMM,1410
20
- simtools/applications/derive_mirror_rnda.py,sha256=HdnNn0BOCN5saa9Y4FI6DZjzxNVZsPSdCQw7wsa8Gq4,8484
21
- simtools/applications/derive_psf_parameters.py,sha256=7a-1gul9lqFa53kn3ycaNZALayeC1jwYsE8ZiWAcmLU,14034
22
- simtools/applications/generate_array_config.py,sha256=G0yygXug7AvFl4yzoYyScQhX1fliuIx6OGg3AiDOG8Q,2481
20
+ simtools/applications/derive_mirror_rnda.py,sha256=ONfUwNMYN-L0l-bDkiGq0SPyFZKPTOHqQ-ozDMAdwTQ,8736
21
+ simtools/applications/derive_psf_parameters.py,sha256=jQnr1Gp6agHtCN9-dd0HfVFyUmAHhEJjns3iKDBpPo4,14053
22
+ simtools/applications/generate_array_config.py,sha256=2S9O8g53fmjG8lO2iZubYfibS-QyKYFtx6cboE1x1gU,2292
23
23
  simtools/applications/generate_corsika_histograms.py,sha256=a57719aEfQThxycvOPopRYphSjXyZzRwsr4oSLSa44g,18243
24
24
  simtools/applications/generate_default_metadata.py,sha256=CtUq6ldprp_3mbSB2TXBHeNznUH3qCMkI381GwslWPA,2878
25
- simtools/applications/generate_regular_arrays.py,sha256=gp-A_M66Na2MvEplRdKR3pAoom1XTSfEkWtvTlWcuBk,3815
25
+ simtools/applications/generate_regular_arrays.py,sha256=w3rbYLOaofkqR4JluWrNo0cOwsHFmHpdiaQnAphbG4A,3858
26
26
  simtools/applications/generate_simtel_array_histograms.py,sha256=l8mGQgIARzGtQkRdfMEsAm6DFf66LEyezvHk0FuFKsc,7943
27
- simtools/applications/plot_array_layout.py,sha256=D2Q2LRoy0BUUrkH192LsqkwY0mXFappj0cK0AJefOPM,12271
27
+ simtools/applications/plot_array_layout.py,sha256=k0eJVSCcNZDCzzD7L9aCCywxxfCyApjkqmqWbZxRA2k,12302
28
+ simtools/applications/plot_tabular_data.py,sha256=6WCY8Izbee3-rArOZ4CtDkaY0OiZm4_Xej1WxK_inSI,2193
28
29
  simtools/applications/production_generate_simulation_config.py,sha256=cHYzPwXnR7Z6uHKX0N9ToCVMxmBYZOYxA9__RwvXVJ4,5198
29
- simtools/applications/production_scale_events.py,sha256=6QEBgpu_T0J4-udMmX_OvGN9UH7j87LvWsbjya5FitM,5891
30
- simtools/applications/simulate_light_emission.py,sha256=pO68Z1aAlGhvuYwDipsAHQ9xlLRSbFXxcaV9z9INH8U,16445
31
- simtools/applications/simulate_prod.py,sha256=VSv46A0ce8R1Oeh6miaQ4r3G8fuYIZeSX1xqltPSTzg,7755
32
- simtools/applications/submit_data_from_external.py,sha256=I0TUoVQvSwtRM2hmru2KqkR8DQtjBs4XJOvsB2a9jtE,3011
30
+ simtools/applications/production_scale_events.py,sha256=qgc8B0AMIydfkhi0HmYyJNLl92odZM0tPCGV05SAz7c,5882
31
+ simtools/applications/simulate_light_emission.py,sha256=5S81u23l8prCJLiPRiTdW9wAfSAqzurMxDfctXE11ho,16465
32
+ simtools/applications/simulate_prod.py,sha256=BzKoEfMO_I3QBhkqEvcH7Y1GbHtapKazixCxDiof5YE,6463
33
+ simtools/applications/simulate_prod_htcondor_generator.py,sha256=lVRKuO1UE8dU7fuVzQNSP8kz2OmhR12CDrVTBJHSEts,3297
34
+ simtools/applications/submit_data_from_external.py,sha256=X7bENKg3GoRbGktRiDIGcaSWM-JZ5cPFf8DjAFmDEvY,3021
33
35
  simtools/applications/submit_model_parameter_from_external.py,sha256=4vX2Xbt75F3CI8aCWr8zKsgbGEg3V4ewBTjig3fNHGo,3564
34
- simtools/applications/validate_camera_efficiency.py,sha256=Uceq8biYWPNOCre6U1vAfkomTG4LeDUnBR2u78hRONw,3979
35
- simtools/applications/validate_camera_fov.py,sha256=pQBMyh50mpv1ixrWra3EwogzlGJGiZoSJC0u0aqZnGU,4701
36
- simtools/applications/validate_cumulative_psf.py,sha256=kTXfes8f1R_02wTnbpxURDNwh0fe6T9XyfokgvIvRxI,6490
37
- simtools/applications/validate_file_using_schema.py,sha256=pcivbbHtytxswK8gw27Yku41rx1TnodJfnWhcuNrdkg,6330
38
- simtools/applications/validate_optics.py,sha256=loDwJJQB9anKJ1wGOX2p_sqsAU9MzK0qf2XUEI740k0,6397
36
+ simtools/applications/validate_camera_efficiency.py,sha256=DlWFgKFz5C9cHYp7Cuv-T1QizpimeZ3LjWuu-XsuPCU,3998
37
+ simtools/applications/validate_camera_fov.py,sha256=BGDYKqeJOgWN2V1sNSZAMyhI4lfAOAiCXNodhGVqYLM,4584
38
+ simtools/applications/validate_cumulative_psf.py,sha256=rYJA6sEY0nrP0KwIF0ApSl5YRTualVdFKWVNNJXR-rs,6353
39
+ simtools/applications/validate_file_using_schema.py,sha256=yWwfLaUCcaiiaA59lIc4JmY1DSBvh8blYBspH3TeeIA,6623
40
+ simtools/applications/validate_optics.py,sha256=dR2Edn_6_p21J1pExIpOQx5EjD4IZ3hJ9LpBrAR3LpI,6327
39
41
  simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py,sha256=3nRrhHjPjzA0a25NptTAREuaDJtrNdBovehYigHkAOc,5491
40
42
  simtools/configuration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- simtools/configuration/commandline_parser.py,sha256=4iDQ5J49Am4tLNO_T_xJhTL106n-ifedHIuOgPxsiYg,24939
42
- simtools/configuration/configurator.py,sha256=N--gv2E1goEWflq5Vrea04TP1C9vi5YRkn0ZPSuyoxc,15048
43
+ simtools/configuration/commandline_parser.py,sha256=_jIKz0bvA9GrdSFoehht8UutzNmxKUD4ryFi1BXb_zk,24796
44
+ simtools/configuration/configurator.py,sha256=uoKQ8SYyuW51-3BlHqnM0_OklHLuBPEwYRSaZzlhVFI,14852
43
45
  simtools/corsika/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
46
  simtools/corsika/corsika_config.py,sha256=7LLYPdWYvIpY99nLpvAgrQ-aAgJYurfX8LZS18Giw94,24038
45
47
  simtools/corsika/corsika_histograms.py,sha256=YmHFUfvkwdmnV-NyEXijhExGz00x0e9tFJcjpY98sV0,67776
@@ -48,19 +50,20 @@ simtools/corsika/primary_particle.py,sha256=ERXhBd6aMPEG6H0XkNfKf5lK-Odqup3jsvRX
48
50
  simtools/data_model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
51
  simtools/data_model/data_reader.py,sha256=HQlULs_GJg5EeHvuKR3XHI9sW-AtqQ4DYbxXHur9Eko,4325
50
52
  simtools/data_model/format_checkers.py,sha256=t4ExjV-aaG7o4n4cGgL8MfE4i-_r2eQftLGRB7tP7KI,1589
51
- simtools/data_model/metadata_collector.py,sha256=dVQXVwmEcCFah0qtpWCOFZSprRMAOE-cHDluXzRkWcc,18782
52
- simtools/data_model/metadata_model.py,sha256=VFlpjKxSqoJxKx1oEVlyqoXSWuHR7bW3pBGjORHi-Ow,7161
53
- simtools/data_model/model_data_writer.py,sha256=GYegtyUfnBMYmA8Cq07-GJE9OnvQ75OjUl4mZfyxHA4,16285
54
- simtools/data_model/validate_data.py,sha256=xktPiSWto7d-YA2auH2RmxiUwwXEM_d2dMUl2tGwhMs,26624
53
+ simtools/data_model/metadata_collector.py,sha256=lz07Btmc9ZUPXNr2I6eheH-UONcG-6Ku1kRaLHTR9nk,19259
54
+ simtools/data_model/metadata_model.py,sha256=ve-IhaxqLmpZfE15u2jamc1B55tS0Kh93IPJ0yY0oQM,7869
55
+ simtools/data_model/model_data_writer.py,sha256=m5KxO6DBgiyjLq37dAFVtsYYab98UqJSDzQ5vKOju0Q,16295
56
+ simtools/data_model/validate_data.py,sha256=n0zDlcijwMHXFDdo_-7qweGM27F6jiABp2k-AW4u_II,28658
55
57
  simtools/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
58
  simtools/db/db_array_elements.py,sha256=bdw2rvPIaEwZyTJgqdFZQSc0V66Nkr1s0Vodiqkv16w,4074
57
- simtools/db/db_from_repo_handler.py,sha256=RKj8xIY6UTMw9z5jR6Wxgl3nZ7zpu4MwsUACrUUW8zk,3503
58
- simtools/db/db_handler.py,sha256=A7nNEytfXo6JhbJ6z6AEcqt0ZFFPL3sAzv-1SkM-fhg,42367
59
+ simtools/db/db_handler.py,sha256=BVfBrTn6NHyuOxDh5OFvTPS-ogy55LtyzzIX9B6LMNU,34350
59
60
  simtools/io_operations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
61
  simtools/io_operations/hdf5_handler.py,sha256=r_pBVr_2SejRQpFvxMZbLHLH70Brp69nU_s-8hhRBY4,3218
61
62
  simtools/io_operations/io_handler.py,sha256=DPj3YUjDNkmmM1EGzV-Ifp_SCW7kLlI6Vn2nzvusH4s,4428
63
+ simtools/io_operations/legacy_data_handler.py,sha256=gSz4FLoa1IpJl2DnP6NHpzSYVC4_rolX_SfbHt3u_zk,1341
62
64
  simtools/job_execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
- simtools/job_execution/job_manager.py,sha256=AssK1yK2rcxMuf9uv32cKlurWa93hBPTL7d3IBSxaJU,6522
65
+ simtools/job_execution/htcondor_script_generator.py,sha256=6EIqOE8o_G1Pq_8-OZ-qBcUq25hVL2x0TSThOswZPAs,3821
66
+ simtools/job_execution/job_manager.py,sha256=XqQBAzYL7SBxcl-Bp4O0Pw9jtMldEfNA_O_kRIQJNf8,7160
64
67
  simtools/layout/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
65
68
  simtools/layout/array_layout.py,sha256=XBuywGj7_qLk9iqF0dspgDbSU4Dky3QWZyLHBXTAN0E,24927
66
69
  simtools/layout/geo_coordinates.py,sha256=9kKnXFi9vrfYKG_9elzFuzzssGFEUzxMubaclITkW_g,5944
@@ -68,29 +71,29 @@ simtools/layout/telescope_position.py,sha256=m34taJ7LML_KBW75i3EGMK2vEHK9tqFltxa
68
71
  simtools/model/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
72
  simtools/model/array_model.py,sha256=jkLz0H92YaDyjrpTegc4vVhDgwAnuo_ZpLKA7RTQjXs,14359
70
73
  simtools/model/calibration_model.py,sha256=PqZnca86rNiKu3pExJc3fdiDwbHcB7Q9yl2pyA1orGU,1442
71
- simtools/model/camera.py,sha256=Ktd6DG_cYWobRwRoKN1c8sRNYYaCq5mqB3VnbMYNssw,21299
74
+ simtools/model/camera.py,sha256=Gj9yWfAfM4GrrX5q6ZGSQy80WsOUqZaTnP7DoCYfOJ0,21403
72
75
  simtools/model/mirrors.py,sha256=uGCAT68WpnESv9IAgg8Xae9Z2-XgxMBL_Phnv6Ro0XQ,9151
73
- simtools/model/model_parameter.py,sha256=E5viUIhuEQhUdTXz29tLdC7WARbrjWnIQMCXx2NKTdA,20634
76
+ simtools/model/model_parameter.py,sha256=rPH9d_Wq5g24z494ukjYf0LOX3fx7bTRvv8hcXJschc,21615
74
77
  simtools/model/model_utils.py,sha256=HcRj-wcTCBhXCmiYTEyqMIyLYGBT49q9Ey72wmuGkos,1384
75
- simtools/model/site_model.py,sha256=rqlHUwT0R5-c_RXKhCOch5C3sleDGVEbxIQeD_Qe3AU,5140
78
+ simtools/model/site_model.py,sha256=YyQ36vnSQtdSpTgb3aVA-8rmWqi78m9B7rVhmPS1-YY,5138
76
79
  simtools/model/telescope_model.py,sha256=vi2LFeGiiWALuuht1n_-9c90VtS8KbacWHjxli1jrOA,13459
77
80
  simtools/production_configuration/calculate_statistical_errors_grid_point.py,sha256=o1OCr5goJU8SyIK-9LIcyQF6bl3YG8CMMrDhWFJIAbM,17425
78
81
  simtools/production_configuration/event_scaler.py,sha256=Ehf6PWL28P48H0uNUCxvWef1B5EaMt7n1wOnDqbQxVY,5074
79
82
  simtools/production_configuration/generate_simulation_config.py,sha256=0gS3ZH4FdF26cTxvedENzJzdDnA6Cz0qeErVnxapcLs,6421
80
83
  simtools/production_configuration/interpolation_handler.py,sha256=ZI68oD1kki4ommBSn6DVIQ8JqcUihdN7y3iMwaewQBg,7366
81
84
  simtools/ray_tracing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
- simtools/ray_tracing/mirror_panel_psf.py,sha256=GFKy58wNtBLcfO2NcUSMxmcQn4teWDiL8F1W89w63SM,10805
85
+ simtools/ray_tracing/mirror_panel_psf.py,sha256=a9XYBEXI5zAlWBbYZPBr7kAq61isbPqqq-jAkD8UDkM,11147
83
86
  simtools/ray_tracing/psf_analysis.py,sha256=ktrlaZolY1tcgc2zQB6k5Elix3uNj80cszNZkDzG_ds,18152
84
87
  simtools/ray_tracing/ray_tracing.py,sha256=cYKEy-QEWOE-dc3Ph7esHsP0tpHlgoH604sxzksF2rI,21564
85
88
  simtools/runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
86
- simtools/runners/corsika_runner.py,sha256=kaZEe5uO1qD3yhlLkjGjeRg5f7aUtlfPAC58IJdPb8o,8219
89
+ simtools/runners/corsika_runner.py,sha256=8UuLwYhoplu0a9UTZKmP1UwNx1XETuqlW7HrHdQhUjo,8879
87
90
  simtools/runners/corsika_simtel_runner.py,sha256=DkK7Uh5mweoFJYfUoV2STEMlE-lC_kdf5iEP8EcyjG8,7836
88
- simtools/runners/runner_services.py,sha256=xwnKkUXKUHK5hhmcVVzkJCbBRLGyMBA2s9jFlu_uA-4,9674
89
- simtools/runners/simtel_runner.py,sha256=AMHDSpbZTZ_TIw4rIpWgge6r4n_Ys7TwHJrtEESIM0o,6964
91
+ simtools/runners/runner_services.py,sha256=-yT4UCpjx0MFSAf5k81ksAk0iLTn6ffK0_6tlR-SImI,9685
92
+ simtools/runners/simtel_runner.py,sha256=cs7QJKBy-sfbEtG81nibwZt4jHhg_-aAfLm-8DDKHw0,7732
90
93
  simtools/schemas/array_elements.yml,sha256=n-ivArub2lm7Ea0VAp1gloQOw2dlkq11T4LH-ZKFZZ0,3267
91
- simtools/schemas/integration_tests_config.metaschema.yml,sha256=P8aN3wW7ZJMvpaCwqjpA7V_97hKH_n6paYyD2cM5y6E,2872
94
+ simtools/schemas/integration_tests_config.metaschema.yml,sha256=SaXNi-GaTlvOhIYBaj8OhYIt0q_dM-a3n7xIza-qVFg,3150
92
95
  simtools/schemas/metadata.metaschema.yml,sha256=hPlKnC6xZYs0K-DH9rxllw6hgM1i_S-34-AB7T2Up34,16672
93
- simtools/schemas/model_parameter.metaschema.yml,sha256=rMXadozJqhX39-d512BnaUoHJvoAoSEDdQhe4SpteJs,1871
96
+ simtools/schemas/model_parameter.metaschema.yml,sha256=n7bj7tdR-3Oy5roIFCDw84E0a6RoGgkAz1tsxq_pBPI,3917
94
97
  simtools/schemas/model_parameter_and_data_schema.metaschema.yml,sha256=3UPczVdhX7tHcyw3XARDmkIWhFe28iSxjScf8h96KDw,9930
95
98
  simtools/schemas/model_parameters/adjust_gain.schema.yml,sha256=s2U81hjpCNh7wJfVh5POL7RX52MH6zGhKOIX2nH4PbA,865
96
99
  simtools/schemas/model_parameters/altitude.schema.yml,sha256=1WkJHX8nqzPmEmMIPiRfMSei0L3ewD2vJbijypuprR0,928
@@ -165,7 +168,7 @@ simtools/schemas/model_parameters/dsum_shaping.schema.yml,sha256=bYuxsZ6MqekjD80
165
168
  simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml,sha256=G80TgOz8nHZZwWiL7Qv8CdXD4RFB84CSq6-FE5kfZMU,841
166
169
  simtools/schemas/model_parameters/dsum_threshold.schema.yml,sha256=UvVosQqGUYkJO2nG_tDfJy5BwTd6ol7eTHz08rDJpuI,1301
167
170
  simtools/schemas/model_parameters/dsum_zero_clip.schema.yml,sha256=zgYfUkL0R7adyI99IdM7lVV4I2Gt2hO9uRz0tEvqlnc,1184
168
- simtools/schemas/model_parameters/effective_focal_length.schema.yml,sha256=Sg_sYTk_nryx7eqqe1wEIv_xifRZTr8uNWj9iQAO6fE,2352
171
+ simtools/schemas/model_parameters/effective_focal_length.schema.yml,sha256=UblASYeTkFW-X7hAtkq9yxudwArAHpgYek5-zjOqkHo,3159
169
172
  simtools/schemas/model_parameters/epsg_code.schema.yml,sha256=hzVdlt2o4Q5BLwrRqj19DWIwGf5WO81nTXXV7k1PCSg,910
170
173
  simtools/schemas/model_parameters/fadc_ac_coupled.schema.yml,sha256=QtX69VIRliWGmBEYc1QVTEYaWWczkg68jBKlsuFq09Y,885
171
174
  simtools/schemas/model_parameters/fadc_amplitude.schema.yml,sha256=lxANSDzU-Z-F2bV7gSErptQKb0sxs_3eo1LoAVJYmWA,1341
@@ -319,27 +322,29 @@ simtools/simtel/simtel_config_writer.py,sha256=DUBwB7jYpmRXfR5YA4dAFTv06dpZYg4oo
319
322
  simtools/simtel/simtel_io_events.py,sha256=9WX6tqj3hsgZ0yO_gMGvtKOu7IuF5wnKVDc28KaSteg,9035
320
323
  simtools/simtel/simtel_io_histogram.py,sha256=_YX6Nu3IzLKW06dLTkmQSXxStCuG4jSLUoAM4t5eEO0,25066
321
324
  simtools/simtel/simtel_io_histograms.py,sha256=iXlc42OwXbCFwQuN1khkaPU3tiZVhIiJfT31IaNsJqQ,21017
325
+ simtools/simtel/simtel_table_reader.py,sha256=vpALTwaJPH8kPvmKfnc8cVEyrWDGFDF_P3Kb1dDVkjo,12524
322
326
  simtools/simtel/simulator_array.py,sha256=4qFV4GYGOumeXcpm-_OKxv8lRFPIVrDKZyxeI8juIhw,4666
323
- simtools/simtel/simulator_camera_efficiency.py,sha256=fjdvS9ztb-g2VaP9twl-IddN7QbCu1GY_ck79vjCGQc,10852
324
- simtools/simtel/simulator_light_emission.py,sha256=_NuLrJUK1Sq1sNZ9Gh_stWx7U25BcZ1cO5BcaVpEdGY,17933
325
- simtools/simtel/simulator_ray_tracing.py,sha256=Bwre0GnMZa6n7aemJet2gPCvR4OmvngyNxkLObaXXB0,11140
327
+ simtools/simtel/simulator_camera_efficiency.py,sha256=qKHVvo8qMZBzF8wWLHZ924n1O6hj4Jl4N1U-dt-IeRg,10874
328
+ simtools/simtel/simulator_light_emission.py,sha256=e0j7suI-h1JgY0TE5OwxiWs8-obY8RaQLYsiCpE7xIM,17973
329
+ simtools/simtel/simulator_ray_tracing.py,sha256=pEC6U5RB1KWeFfvh0hrvS5ownkQN_FfrxfE4GMU9q8A,11120
326
330
  simtools/testing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
327
331
  simtools/testing/assertions.py,sha256=cJm6FtIJTFnTr7wqQ17yqCsrm7YVaxD3vfXoTc0GCm4,4765
328
- simtools/testing/configuration.py,sha256=UdKLrCfNf8D5AiQTfErQEwvZhU8xDp4-N_rO9tMxUIg,6943
329
- simtools/testing/helpers.py,sha256=f9SzGDUDoI0wRclN3iFOFVnjjyuAJ-09pi4WdYgkO9M,1607
330
- simtools/testing/validate_output.py,sha256=o2f0e5H_RB-rj0IpOtggGefTUtunQjSYb6HzKkGQI2Y,7744
332
+ simtools/testing/configuration.py,sha256=GFzFpUfJR9pY8G_8OavMzs1XSurkrM1G2QFU7JgWIyg,6966
333
+ simtools/testing/helpers.py,sha256=gaNbDkVFxC39IBH18TLwhzD44coojfonuVT2XVAiF4k,1618
334
+ simtools/testing/validate_output.py,sha256=MDfykEuF7KkllhRoxwM3H4jjypnftRYhN-8I5cG7jTw,7787
331
335
  simtools/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
- simtools/utils/general.py,sha256=sfN_Di7WV7STer6atjMJo8EagcR784BntS4rEQ5bBzY,21136
336
+ simtools/utils/general.py,sha256=ssDyvfCapyQVkusI88RP0C9CqfrFtGDcpwgPUAL1SiU,22410
333
337
  simtools/utils/geometry.py,sha256=Da-ahOl8JzFxDYPEbU1EgPI-RaLOz-3_aUGkboHo3R0,6278
334
- simtools/utils/names.py,sha256=KZUBuVpkDpAlmvUEYsC45ugrXS6qN2pOHELQSuQQrfg,14156
335
- simtools/utils/value_conversion.py,sha256=IAYVGf-KrifL0EVWZLtvHcEXm7Wq7Blj7SILzgykCog,5485
338
+ simtools/utils/names.py,sha256=N7LZ_YBwNw6T-3yepetBCtSI0w157951FwSPZiEd2eg,14169
339
+ simtools/utils/value_conversion.py,sha256=Fn9_ilcUB03BWXUei4nRetcznQ0j3pdltV9UmJEAcmc,5818
336
340
  simtools/visualization/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
337
341
  simtools/visualization/legend_handlers.py,sha256=SAxVslzeu69hW-lbCmIkWgbnWjB635zBauAqLUKkyj0,11988
338
342
  simtools/visualization/plot_camera.py,sha256=dLXKHYfY_elqaKhj91HlntASoVixTrpc_Kf0jPU8RmU,11167
339
- simtools/visualization/visualize.py,sha256=64TEWvimEc-SYDY22DCitNuENXe70oXQFRxazQYoKyA,27331
340
- gammasimtools-0.8.2.dist-info/LICENSE,sha256=idBrtxX6eQcUlG0YBTx-O2RNKNKg1Gidb8OQf9q0X7s,1543
341
- gammasimtools-0.8.2.dist-info/METADATA,sha256=s1wTnVWzqIrTQj0ad64fhX-DA7ZSLy4b7FEhnVlJlNg,8499
342
- gammasimtools-0.8.2.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
343
- gammasimtools-0.8.2.dist-info/entry_points.txt,sha256=Xuenl7cBopfDytHuiCJlJx9tRbf9-EEMHPBt6H0_5L4,2756
344
- gammasimtools-0.8.2.dist-info/top_level.txt,sha256=9Yi7Q7aQX6alvpP2YGQtIYo208wdGkXUApHboEdj-ys,9
345
- gammasimtools-0.8.2.dist-info/RECORD,,
343
+ simtools/visualization/plot_tables.py,sha256=Phr3AAcQNkx55TMB4gDMIjJZwOLhNyj46vXSzuf92_4,2996
344
+ simtools/visualization/visualize.py,sha256=_cNkWkHdnKOtyF3vHDhA-minF5UsiFzkzU1sU0ltCO8,28545
345
+ gammasimtools-0.9.0.dist-info/LICENSE,sha256=idBrtxX6eQcUlG0YBTx-O2RNKNKg1Gidb8OQf9q0X7s,1543
346
+ gammasimtools-0.9.0.dist-info/METADATA,sha256=FuMN3j0OFm3gs8Yly9xcSoWYYtz17902BHwbqJp3H48,8517
347
+ gammasimtools-0.9.0.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
348
+ gammasimtools-0.9.0.dist-info/entry_points.txt,sha256=UgjZbKcXlCu5l47n_o9UtMnQQ0BZ4J3B_EVgNJMc2X8,2934
349
+ gammasimtools-0.9.0.dist-info/top_level.txt,sha256=9Yi7Q7aQX6alvpP2YGQtIYo208wdGkXUApHboEdj-ys,9
350
+ gammasimtools-0.9.0.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -18,10 +18,12 @@ simtools-generate-default-metadata = simtools.applications.generate_default_meta
18
18
  simtools-generate-regular-arrays = simtools.applications.generate_regular_arrays:main
19
19
  simtools-generate-simtel-array-histograms = simtools.applications.generate_simtel_array_histograms:main
20
20
  simtools-plot-array-layout = simtools.applications.plot_array_layout:main
21
+ simtools-plot-tabular-data = simtools.applications.plot_tabular_data:main
21
22
  simtools-production-generate-simulation-config = simtools.applications.production_generate_simulation_config:main
22
23
  simtools-production-scale-events = simtools.applications.production_scale_events:main
23
24
  simtools-simulate-light-emission = simtools.applications.simulate_light_emission:main
24
25
  simtools-simulate-prod = simtools.applications.simulate_prod:main
26
+ simtools-simulate-prod-htcondor-generator = simtools.applications.simulate_prod_htcondor_generator:main
25
27
  simtools-submit-data-from-external = simtools.applications.submit_data_from_external:main
26
28
  simtools-submit-model-parameter-from-external = simtools.applications.submit_model_parameter_from_external:main
27
29
  simtools-validate-camera-efficiency = simtools.applications.validate_camera_efficiency:main
simtools/_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.8.2'
16
- __version_tuple__ = version_tuple = (0, 8, 2)
15
+ __version__ = version = '0.9.0'
16
+ __version_tuple__ = version_tuple = (0, 9, 0)
@@ -103,7 +103,7 @@ def _parse(label=None, description=None):
103
103
  type=str,
104
104
  required=True,
105
105
  )
106
- return config.initialize(simulation_model="telescope")
106
+ return config.initialize(simulation_model=["telescope", "model_version"])
107
107
 
108
108
 
109
109
  def get_list_of_parameters_and_schema_files(schema_directory):
@@ -130,7 +130,10 @@ def _parse(label=None, description=None):
130
130
  action="store_true",
131
131
  )
132
132
  return config.initialize(
133
- output=True, require_command_line=True, db_config=True, simulation_model=["version", "site"]
133
+ output=True,
134
+ require_command_line=True,
135
+ db_config=True,
136
+ simulation_model=["model_version", "site"],
134
137
  )
135
138
 
136
139
 
@@ -146,16 +149,12 @@ def main():
146
149
  logger = logging.getLogger()
147
150
  logger.setLevel(gen.get_log_level_from_user(args_dict["log_level"]))
148
151
 
149
- json_type = args_dict.get("input", "").endswith(".json")
150
- # simplified metadata treatment for model parameter json files
151
- if json_type:
152
+ if args_dict.get("input", "").endswith(".json"):
152
153
  site = args_dict.get("site", None)
153
- top_level_meta = None
154
- validate_schema_file = None
154
+ metadata, validate_schema_file = None, None
155
155
  else:
156
156
  metadata = MetadataCollector(args_dict=args_dict, data_model_name=data_model_name)
157
157
  site = metadata.get_site(from_input_meta=True)
158
- top_level_meta = metadata.top_level_meta
159
158
  validate_schema_file = metadata.get_data_model_schema_file_name()
160
159
 
161
160
  layout = array_layout.ArrayLayout(
@@ -172,12 +171,12 @@ def main():
172
171
  if args_dict["export"] is not None:
173
172
  product_data = (
174
173
  layout.export_one_telescope_as_json(crs_name=args_dict["export"])
175
- if json_type
174
+ if args_dict.get("input", "").endswith(".json")
176
175
  else layout.export_telescope_list_table(crs_name=args_dict["export"])
177
176
  )
178
177
  writer.ModelDataWriter.dump(
179
178
  args_dict=args_dict,
180
- metadata=top_level_meta,
179
+ metadata=metadata.get_top_level_metadata() if metadata else None,
181
180
  product_data=product_data,
182
181
  validate_schema_file=validate_schema_file,
183
182
  )
@@ -78,7 +78,7 @@ def _parse(label=None, description=None):
78
78
  type=str,
79
79
  required=True,
80
80
  )
81
- return config.initialize(simulation_model="telescope", output=True)
81
+ return config.initialize(simulation_model=["telescope", "model_version"], output=True)
82
82
 
83
83
 
84
84
  def main(): # noqa: D103
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/python3
2
- """
2
+ r"""
3
3
  Add parameters found in a model parameter repository to a new database.
4
4
 
5
5
  Generates a new database with all required collections.
@@ -109,16 +109,8 @@ def add_values_from_json_to_db(file, collection, db, db_name, file_prefix, logge
109
109
  )
110
110
  db.add_new_parameter(
111
111
  db_name=db_name,
112
- array_element_name=par_dict["instrument"],
113
- parameter=par_dict["parameter"],
114
- version=par_dict["version"],
115
- value=par_dict["value"],
116
- site=par_dict["site"],
117
- type=par_dict["type"],
112
+ par_dict=par_dict,
118
113
  collection_name=collection,
119
- applicable=par_dict["applicable"],
120
- file=par_dict["file"],
121
- unit=par_dict.get("unit", None),
122
114
  file_prefix=file_prefix,
123
115
  )
124
116
 
@@ -81,16 +81,8 @@ def main(): # noqa: D103
81
81
  logger.info(f"Adding the following parameter to the DB: {par_dict['parameter']}")
82
82
  db.add_new_parameter(
83
83
  db_name=db_config["db_simulation_model"],
84
- array_element_name=par_dict["instrument"],
85
- parameter=par_dict["parameter"],
86
- version=par_dict["version"],
87
- value=par_dict["value"],
88
- site=par_dict["site"],
89
- type=par_dict["type"],
84
+ par_dict=par_dict,
90
85
  collection_name=args_dict["db_collection"],
91
- applicable=par_dict["applicable"],
92
- file=par_dict["file"],
93
- unit=par_dict.get("unit", None),
94
86
  file_prefix="./",
95
87
  )
96
88
  logger.info(
@@ -94,7 +94,9 @@ def _parse(label, description):
94
94
  default="ground",
95
95
  choices=["ground", "utm"],
96
96
  )
97
- return config.initialize(db_config=True, simulation_model=["site", "layout"], output=True)
97
+ return config.initialize(
98
+ db_config=True, simulation_model=["site", "layout", "model_version"], output=True
99
+ )
98
100
 
99
101
 
100
102
  def _layout_from_db(args_dict, db_config):
@@ -83,7 +83,7 @@ def _parse():
83
83
  required=False,
84
84
  )
85
85
 
86
- return config.initialize(db_config=True, simulation_model="telescope")
86
+ return config.initialize(db_config=True, simulation_model=["telescope", "model_version"])
87
87
 
88
88
 
89
89
  def main(): # noqa: D103
@@ -178,6 +178,13 @@ def _parse(label):
178
178
  type=str,
179
179
  required=False,
180
180
  )
181
+ config.parser.add_argument(
182
+ "--rtol_psf_containment",
183
+ help="Relative tolerance for the containment diameter (default is 0.1).",
184
+ type=float,
185
+ required=False,
186
+ default=0.1,
187
+ )
181
188
  config.parser.add_argument(
182
189
  "--use_random_focal_length",
183
190
  help=("Use random focal lengths."),
@@ -200,7 +207,9 @@ def _parse(label):
200
207
  action="store_true",
201
208
  required=False,
202
209
  )
203
- return config.initialize(db_config=True, output=True, simulation_model="telescope")
210
+ return config.initialize(
211
+ db_config=True, output=True, simulation_model=["telescope", "model_version"]
212
+ )
204
213
 
205
214
 
206
215
  def main(): # noqa: D103
@@ -150,7 +150,7 @@ def _parse():
150
150
  help=("Keep the first entry of mirror_reflection_random_angle fixed."),
151
151
  action="store_true",
152
152
  )
153
- return config.initialize(db_config=True, simulation_model="telescope")
153
+ return config.initialize(db_config=True, simulation_model=["telescope", "model_version"])
154
154
 
155
155
 
156
156
  def add_parameters(
@@ -5,10 +5,6 @@
5
5
  The applications generates the sim_telarray configuration files for a given array, site,
6
6
  and model_version using the model parameters stored in the database.
7
7
 
8
- To change model parameters, clone the model parameters repository and apply the changes.
9
- Forward the path to the repository to the application using the ``--db_simulation_model_url``
10
- argument.
11
-
12
8
  Command line arguments
13
9
  ----------------------
14
10
  site : str
@@ -54,7 +50,7 @@ def _parse(label, description):
54
50
  Command line parser object.
55
51
  """
56
52
  config = configurator.Configurator(label=label, description=description)
57
- return config.initialize(db_config=True, simulation_model=["site", "layout"])
53
+ return config.initialize(db_config=True, simulation_model=["site", "layout", "model_version"])
58
54
 
59
55
 
60
56
  def main():
@@ -25,7 +25,6 @@
25
25
  """
26
26
 
27
27
  import logging
28
- import os
29
28
  from pathlib import Path
30
29
 
31
30
  import astropy.units as u
@@ -52,7 +51,9 @@ def _parse():
52
51
  f" SST: {telescope_distance['SST']}\n"
53
52
  ),
54
53
  )
55
- return config.initialize(db_config=False, simulation_model="site", output=True)
54
+ return config.initialize(
55
+ db_config=False, simulation_model=["site", "model_version"], output=True
56
+ )
56
57
 
57
58
 
58
59
  def main():
@@ -101,10 +102,12 @@ def main():
101
102
  table.sort("telescope_name")
102
103
  table.pprint()
103
104
 
104
- output_file = args_dict.get("output_file", None)
105
- if output_file is not None:
106
- base_name, file_extension = os.path.splitext(output_file)
107
- output_file = f"{base_name}-{args_dict['site']}-{array_name}{file_extension}"
105
+ output_file = args_dict.get("output_file")
106
+ if output_file:
107
+ output_path = Path(output_file)
108
+ output_file = output_path.with_name(
109
+ f"{output_path.stem}-{args_dict['site']}-{array_name}{output_path.suffix}"
110
+ )
108
111
  writer.ModelDataWriter.dump(
109
112
  args_dict=args_dict,
110
113
  output_file=output_file,
@@ -146,7 +146,9 @@ def _parse(label, description, usage):
146
146
  required=False,
147
147
  default=None,
148
148
  )
149
- return config.initialize(db_config=True, simulation_model=["site", "layout", "layout_file"])
149
+ return config.initialize(
150
+ db_config=True, simulation_model=["site", "model_version", "layout", "layout_file"]
151
+ )
150
152
 
151
153
 
152
154
  def _get_site_from_telescope_list_name(telescope_list_file):
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/python3
2
+ """
3
+ Plot tabular data read from file or from model parameter database.
4
+
5
+ Uses a configuration file to define the data to be plotted and all
6
+ plotting details.
7
+
8
+ Command line arguments
9
+ ----------------------
10
+ config_file (str, required)
11
+ Configuration file name for plotting.
12
+
13
+ """
14
+
15
+ import logging
16
+ from pathlib import Path
17
+
18
+ import simtools.utils.general as gen
19
+ from simtools.configuration import configurator
20
+ from simtools.io_operations import io_handler
21
+ from simtools.visualization import plot_tables
22
+
23
+
24
+ def _parse(label, description, usage):
25
+ """
26
+ Parse command line configuration.
27
+
28
+ Parameters
29
+ ----------
30
+ label : str
31
+ Label describing the application.
32
+ description : str
33
+ Description of the application.
34
+ usage : str
35
+ Example on how to use the application.
36
+
37
+ Returns
38
+ -------
39
+ CommandLineParser
40
+ Command line parser object.
41
+ """
42
+ config = configurator.Configurator(label=label, description=description, usage=usage)
43
+
44
+ config.parser.add_argument(
45
+ "--plot_config",
46
+ help="Plotting configuration file name.",
47
+ type=str,
48
+ required=True,
49
+ default=None,
50
+ )
51
+ config.parser.add_argument(
52
+ "--output_file",
53
+ help="Output file name (without suffix)",
54
+ type=str,
55
+ required=True,
56
+ )
57
+ return config.initialize(db_config=True)
58
+
59
+
60
+ def main():
61
+ """Plot tabular data."""
62
+ args_dict, db_config_ = _parse(
63
+ label=Path(__file__).stem,
64
+ description="Plots tabular data.",
65
+ usage="""simtools-plot-tabular-data --plot_config config_file_name "
66
+ --output_file output_file_name""",
67
+ )
68
+ logger = logging.getLogger()
69
+ logger.setLevel(gen.get_log_level_from_user(args_dict.get("log_level", "INFO")))
70
+ io_handler_instance = io_handler.IOHandler()
71
+
72
+ plot_config = gen.convert_keys_in_dict_to_lowercase(
73
+ gen.collect_data_from_file(args_dict["plot_config"])
74
+ )
75
+
76
+ plot_tables.plot(
77
+ config=plot_config["cta_simpipe"]["plot"],
78
+ output_file=io_handler_instance.get_output_file(args_dict["output_file"]),
79
+ db_config=db_config_,
80
+ )
81
+
82
+
83
+ if __name__ == "__main__":
84
+ main()
@@ -36,7 +36,6 @@ The output will display the scaled events for the specified grid point.
36
36
 
37
37
  import json
38
38
  import logging
39
- import os
40
39
  from pathlib import Path
41
40
 
42
41
  import astropy.units as u
@@ -129,7 +128,7 @@ def main():
129
128
  # Build file path based on base_path, zenith, and offset
130
129
  file_name = f"prod6_LaPalma-{int(zenith.value)}deg_"
131
130
  file_name += "gamma_cone.N.Am-4LSTs09MSTs_ID0_reduced.fits"
132
- file_path = os.path.join(args_dict["base_path"], file_name)
131
+ file_path = Path(args_dict["base_path"]).joinpath(file_name)
133
132
 
134
133
  evaluator = StatisticalErrorEvaluator(
135
134
  file_path,
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/python3
2
2
 
3
- """
3
+ r"""
4
4
  Simulate calibration devices using the light emission package.
5
5
 
6
6
  Run the application in the command line.
@@ -235,7 +235,7 @@ def _parse(label):
235
235
  )
236
236
  return config.initialize(
237
237
  db_config=True,
238
- simulation_model="telescope",
238
+ simulation_model=["telescope", "model_version"],
239
239
  require_command_line=True,
240
240
  )
241
241