gammasimtools 0.9.0__py3-none-any.whl → 0.10.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 (96) hide show
  1. {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/METADATA +2 -2
  2. {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/RECORD +94 -85
  3. {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/entry_points.txt +2 -1
  4. simtools/_version.py +2 -2
  5. simtools/applications/calculate_trigger_rate.py +15 -38
  6. simtools/applications/convert_all_model_parameters_from_simtel.py +9 -28
  7. simtools/applications/convert_geo_coordinates_of_array_elements.py +47 -45
  8. simtools/applications/convert_model_parameter_from_simtel.py +2 -2
  9. simtools/applications/db_add_file_to_db.py +1 -2
  10. simtools/applications/db_add_simulation_model_from_repository_to_db.py +110 -0
  11. simtools/applications/db_add_value_from_json_to_db.py +1 -2
  12. simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +6 -6
  13. simtools/applications/db_get_file_from_db.py +11 -12
  14. simtools/applications/db_get_parameter_from_db.py +44 -32
  15. simtools/applications/derive_photon_electron_spectrum.py +99 -0
  16. simtools/applications/generate_array_config.py +17 -17
  17. simtools/applications/generate_regular_arrays.py +15 -15
  18. simtools/applications/generate_simtel_array_histograms.py +11 -48
  19. simtools/applications/production_generate_simulation_config.py +25 -7
  20. simtools/applications/production_scale_events.py +2 -2
  21. simtools/applications/simulate_prod.py +1 -1
  22. simtools/applications/simulate_prod_htcondor_generator.py +26 -26
  23. simtools/applications/submit_data_from_external.py +12 -4
  24. simtools/applications/submit_model_parameter_from_external.py +8 -6
  25. simtools/applications/validate_camera_efficiency.py +2 -2
  26. simtools/applications/validate_file_using_schema.py +23 -19
  27. simtools/camera/single_photon_electron_spectrum.py +168 -0
  28. simtools/configuration/commandline_parser.py +8 -1
  29. simtools/constants.py +10 -3
  30. simtools/corsika/corsika_config.py +8 -7
  31. simtools/corsika/corsika_histograms.py +1 -1
  32. simtools/data_model/data_reader.py +0 -3
  33. simtools/data_model/metadata_collector.py +3 -4
  34. simtools/data_model/metadata_model.py +8 -124
  35. simtools/data_model/model_data_writer.py +17 -63
  36. simtools/data_model/schema.py +213 -0
  37. simtools/data_model/validate_data.py +9 -44
  38. simtools/db/db_handler.py +323 -495
  39. simtools/db/db_model_upload.py +139 -0
  40. simtools/io_operations/hdf5_handler.py +54 -24
  41. simtools/layout/array_layout.py +33 -28
  42. simtools/model/array_model.py +13 -7
  43. simtools/model/model_parameter.py +22 -54
  44. simtools/model/site_model.py +2 -2
  45. simtools/production_configuration/calculate_statistical_errors_grid_point.py +119 -144
  46. simtools/production_configuration/event_scaler.py +7 -17
  47. simtools/production_configuration/generate_simulation_config.py +5 -32
  48. simtools/production_configuration/interpolation_handler.py +8 -11
  49. simtools/runners/corsika_simtel_runner.py +3 -1
  50. simtools/schemas/input/MST_mirror_2f_measurements.schema.yml +39 -0
  51. simtools/schemas/input/single_pe_spectrum.schema.yml +38 -0
  52. simtools/schemas/integration_tests_config.metaschema.yml +10 -0
  53. simtools/schemas/model_parameter.metaschema.yml +7 -2
  54. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +2 -0
  55. simtools/schemas/model_parameters/array_element_position_utm.schema.yml +1 -1
  56. simtools/schemas/model_parameters/array_window.schema.yml +37 -0
  57. simtools/schemas/model_parameters/asum_clipping.schema.yml +0 -4
  58. simtools/schemas/model_parameters/channels_per_chip.schema.yml +1 -1
  59. simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +2 -2
  60. simtools/schemas/model_parameters/dsum_clipping.schema.yml +0 -2
  61. simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +0 -2
  62. simtools/schemas/model_parameters/dsum_offset.schema.yml +0 -2
  63. simtools/schemas/model_parameters/dsum_pedsub.schema.yml +0 -2
  64. simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +0 -2
  65. simtools/schemas/model_parameters/dsum_prescale.schema.yml +0 -2
  66. simtools/schemas/model_parameters/dsum_presum_max.schema.yml +0 -2
  67. simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +0 -2
  68. simtools/schemas/model_parameters/dsum_shaping.schema.yml +0 -2
  69. simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +0 -2
  70. simtools/schemas/model_parameters/dsum_threshold.schema.yml +0 -2
  71. simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +0 -2
  72. simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +1 -1
  73. simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +1 -1
  74. simtools/schemas/model_parameters/fadc_noise.schema.yml +3 -3
  75. simtools/schemas/model_parameters/fake_mirror_list.schema.yml +33 -0
  76. simtools/schemas/model_parameters/laser_photons.schema.yml +2 -2
  77. simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +1 -1
  78. simtools/schemas/production_configuration_metrics.schema.yml +68 -0
  79. simtools/schemas/production_tables.schema.yml +41 -0
  80. simtools/simtel/simtel_config_writer.py +5 -6
  81. simtools/simtel/simtel_io_histogram.py +32 -67
  82. simtools/simtel/simtel_io_histograms.py +15 -30
  83. simtools/simtel/simulator_array.py +2 -1
  84. simtools/simtel/simulator_camera_efficiency.py +5 -0
  85. simtools/simtel/simulator_light_emission.py +3 -1
  86. simtools/simtel/simulator_ray_tracing.py +2 -1
  87. simtools/testing/helpers.py +6 -13
  88. simtools/testing/validate_output.py +131 -47
  89. simtools/utils/general.py +102 -12
  90. simtools/utils/names.py +24 -20
  91. simtools/applications/db_add_model_parameters_from_repository_to_db.py +0 -176
  92. simtools/db/db_array_elements.py +0 -130
  93. {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/LICENSE +0 -0
  94. {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/WHEEL +0 -0
  95. {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/top_level.txt +0 -0
  96. /simtools/{camera_efficiency.py → camera/camera_efficiency.py} +0 -0
@@ -5,15 +5,13 @@ import os
5
5
  import re
6
6
  from pathlib import Path
7
7
 
8
- import jsonschema
9
8
  import numpy as np
10
9
  from astropy import units as u
11
10
  from astropy.table import Column, Table, unique
12
11
  from astropy.utils.diff import report_diff_values
13
12
 
14
13
  import simtools.utils.general as gen
15
- from simtools.constants import MODEL_PARAMETER_SCHEMA_PATH
16
- from simtools.data_model import format_checkers
14
+ from simtools.data_model import schema
17
15
  from simtools.utils import value_conversion
18
16
 
19
17
  __all__ = ["DataValidator"]
@@ -129,7 +127,7 @@ class DataValidator:
129
127
  Validated data dictionary
130
128
  """
131
129
  data_validator = DataValidator(
132
- schema_file=MODEL_PARAMETER_SCHEMA_PATH / "f{par_dict['parameter']}.schema.yml",
130
+ schema_file=schema.get_model_parameter_schema_file(f"{par_dict['parameter']}"),
133
131
  data_dict=par_dict,
134
132
  check_exact_data_type=False,
135
133
  )
@@ -158,9 +156,7 @@ class DataValidator:
158
156
  if is_model_parameter:
159
157
  self._prepare_model_parameter()
160
158
 
161
- if not (_name := self.data_dict.get("name") or self.data_dict.get("parameter")):
162
- raise KeyError("Data dict does not contain a 'name' or 'parameter' key.")
163
- self._data_description = self._read_validation_schema(self.schema_file_name, _name)
159
+ self._data_description = self._read_validation_schema(self.schema_file_name)
164
160
 
165
161
  value_as_list, unit_as_list = self._get_value_and_units_as_lists()
166
162
 
@@ -188,8 +184,9 @@ class DataValidator:
188
184
  Take into account different data types and allow to use json_schema for testing.
189
185
  """
190
186
  if self._get_data_description(index).get("type", None) == "dict":
191
- self._validate_data_dict_using_json_schema(
192
- self.data_dict["value"], self._get_data_description(index).get("json_schema")
187
+ schema.validate_dict_using_schema(
188
+ data=self.data_dict["value"],
189
+ json_schema=self._get_data_description(index).get("json_schema"),
193
190
  )
194
191
  else:
195
192
  self._check_data_type(np.array(value).dtype, index)
@@ -235,27 +232,6 @@ class DataValidator:
235
232
  except TypeError:
236
233
  return [None], target_unit
237
234
 
238
- def _validate_data_dict_using_json_schema(self, data, json_schema):
239
- """
240
- Validate a dictionary using a json schema.
241
-
242
- Parameters
243
- ----------
244
- data: dict
245
- Data dictionary
246
- json_schema: dict
247
- JSON schema
248
- """
249
- if json_schema is None:
250
- self._logger.debug("Skipping validation of dict type")
251
- return
252
- self._logger.debug("Validation of dict type using JSON schema")
253
- try:
254
- jsonschema.validate(data, json_schema, format_checker=format_checkers.format_checker)
255
- except jsonschema.exceptions.ValidationError as exc:
256
- self._logger.error(f"Validation error: {exc}")
257
- raise exc
258
-
259
235
  def _validate_data_table(self):
260
236
  """Validate tabulated data."""
261
237
  try:
@@ -692,7 +668,7 @@ class DataValidator:
692
668
 
693
669
  return False
694
670
 
695
- def _read_validation_schema(self, schema_file, parameter=None):
671
+ def _read_validation_schema(self, schema_file):
696
672
  """
697
673
  Read validation schema from file.
698
674
 
@@ -700,11 +676,6 @@ class DataValidator:
700
676
  ----------
701
677
  schema_file: Path
702
678
  Schema file describing input data.
703
- If this is a directory, a filename of
704
- '<par>.schema.yml' is assumed.
705
- parameter: str
706
- Parameter name of required schema
707
- (if None, return first schema in file)
708
679
 
709
680
  Returns
710
681
  -------
@@ -715,17 +686,11 @@ class DataValidator:
715
686
  ------
716
687
  KeyError
717
688
  if 'data' can not be read from dict in schema file
718
-
719
689
  """
720
690
  try:
721
- if Path(schema_file).is_dir():
722
- return gen.collect_data_from_file(
723
- file_name=Path(schema_file) / (parameter + ".schema.yml"),
724
- )["data"]
725
691
  return gen.collect_data_from_file(file_name=schema_file)["data"]
726
- except KeyError:
727
- self._logger.error(f"Error reading validation schema from {schema_file}")
728
- raise
692
+ except KeyError as exc:
693
+ raise KeyError(f"Error reading validation schema from {schema_file}") from exc
729
694
 
730
695
  def _get_data_description(self, column_name=None, status_test=False):
731
696
  """