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.
- {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/METADATA +2 -2
- {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/RECORD +94 -85
- {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/entry_points.txt +2 -1
- simtools/_version.py +2 -2
- simtools/applications/calculate_trigger_rate.py +15 -38
- simtools/applications/convert_all_model_parameters_from_simtel.py +9 -28
- simtools/applications/convert_geo_coordinates_of_array_elements.py +47 -45
- simtools/applications/convert_model_parameter_from_simtel.py +2 -2
- simtools/applications/db_add_file_to_db.py +1 -2
- simtools/applications/db_add_simulation_model_from_repository_to_db.py +110 -0
- simtools/applications/db_add_value_from_json_to_db.py +1 -2
- simtools/applications/db_development_tools/write_array_elements_positions_to_repository.py +6 -6
- simtools/applications/db_get_file_from_db.py +11 -12
- simtools/applications/db_get_parameter_from_db.py +44 -32
- simtools/applications/derive_photon_electron_spectrum.py +99 -0
- simtools/applications/generate_array_config.py +17 -17
- simtools/applications/generate_regular_arrays.py +15 -15
- simtools/applications/generate_simtel_array_histograms.py +11 -48
- simtools/applications/production_generate_simulation_config.py +25 -7
- simtools/applications/production_scale_events.py +2 -2
- simtools/applications/simulate_prod.py +1 -1
- simtools/applications/simulate_prod_htcondor_generator.py +26 -26
- simtools/applications/submit_data_from_external.py +12 -4
- simtools/applications/submit_model_parameter_from_external.py +8 -6
- simtools/applications/validate_camera_efficiency.py +2 -2
- simtools/applications/validate_file_using_schema.py +23 -19
- simtools/camera/single_photon_electron_spectrum.py +168 -0
- simtools/configuration/commandline_parser.py +8 -1
- simtools/constants.py +10 -3
- simtools/corsika/corsika_config.py +8 -7
- simtools/corsika/corsika_histograms.py +1 -1
- simtools/data_model/data_reader.py +0 -3
- simtools/data_model/metadata_collector.py +3 -4
- simtools/data_model/metadata_model.py +8 -124
- simtools/data_model/model_data_writer.py +17 -63
- simtools/data_model/schema.py +213 -0
- simtools/data_model/validate_data.py +9 -44
- simtools/db/db_handler.py +323 -495
- simtools/db/db_model_upload.py +139 -0
- simtools/io_operations/hdf5_handler.py +54 -24
- simtools/layout/array_layout.py +33 -28
- simtools/model/array_model.py +13 -7
- simtools/model/model_parameter.py +22 -54
- simtools/model/site_model.py +2 -2
- simtools/production_configuration/calculate_statistical_errors_grid_point.py +119 -144
- simtools/production_configuration/event_scaler.py +7 -17
- simtools/production_configuration/generate_simulation_config.py +5 -32
- simtools/production_configuration/interpolation_handler.py +8 -11
- simtools/runners/corsika_simtel_runner.py +3 -1
- simtools/schemas/input/MST_mirror_2f_measurements.schema.yml +39 -0
- simtools/schemas/input/single_pe_spectrum.schema.yml +38 -0
- simtools/schemas/integration_tests_config.metaschema.yml +10 -0
- simtools/schemas/model_parameter.metaschema.yml +7 -2
- simtools/schemas/model_parameter_and_data_schema.metaschema.yml +2 -0
- simtools/schemas/model_parameters/array_element_position_utm.schema.yml +1 -1
- simtools/schemas/model_parameters/array_window.schema.yml +37 -0
- simtools/schemas/model_parameters/asum_clipping.schema.yml +0 -4
- simtools/schemas/model_parameters/channels_per_chip.schema.yml +1 -1
- simtools/schemas/model_parameters/corsika_iact_io_buffer.schema.yml +2 -2
- simtools/schemas/model_parameters/dsum_clipping.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_ignore_below.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_offset.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_pedsub.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_pre_clipping.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_prescale.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_presum_max.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_presum_shift.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_shaping.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_shaping_renormalize.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_threshold.schema.yml +0 -2
- simtools/schemas/model_parameters/dsum_zero_clip.schema.yml +0 -2
- simtools/schemas/model_parameters/fadc_compensate_pedestal.schema.yml +1 -1
- simtools/schemas/model_parameters/fadc_lg_compensate_pedestal.schema.yml +1 -1
- simtools/schemas/model_parameters/fadc_noise.schema.yml +3 -3
- simtools/schemas/model_parameters/fake_mirror_list.schema.yml +33 -0
- simtools/schemas/model_parameters/laser_photons.schema.yml +2 -2
- simtools/schemas/model_parameters/secondary_mirror_degraded_reflection.schema.yml +1 -1
- simtools/schemas/production_configuration_metrics.schema.yml +68 -0
- simtools/schemas/production_tables.schema.yml +41 -0
- simtools/simtel/simtel_config_writer.py +5 -6
- simtools/simtel/simtel_io_histogram.py +32 -67
- simtools/simtel/simtel_io_histograms.py +15 -30
- simtools/simtel/simulator_array.py +2 -1
- simtools/simtel/simulator_camera_efficiency.py +5 -0
- simtools/simtel/simulator_light_emission.py +3 -1
- simtools/simtel/simulator_ray_tracing.py +2 -1
- simtools/testing/helpers.py +6 -13
- simtools/testing/validate_output.py +131 -47
- simtools/utils/general.py +102 -12
- simtools/utils/names.py +24 -20
- simtools/applications/db_add_model_parameters_from_repository_to_db.py +0 -176
- simtools/db/db_array_elements.py +0 -130
- {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/LICENSE +0 -0
- {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/WHEEL +0 -0
- {gammasimtools-0.9.0.dist-info → gammasimtools-0.10.0.dist-info}/top_level.txt +0 -0
- /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.
|
|
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=
|
|
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
|
-
|
|
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
|
-
|
|
192
|
-
self.data_dict["value"],
|
|
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
|
|
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
|
-
|
|
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
|
"""
|