gammasimtools 0.19.0__py3-none-any.whl → 0.21.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 (59) hide show
  1. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/METADATA +1 -3
  2. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/RECORD +54 -51
  3. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/entry_points.txt +3 -3
  4. simtools/_version.py +2 -2
  5. simtools/applications/calculate_incident_angles.py +182 -0
  6. simtools/applications/db_add_simulation_model_from_repository_to_db.py +17 -14
  7. simtools/applications/db_add_value_from_json_to_db.py +6 -9
  8. simtools/applications/db_generate_compound_indexes.py +7 -3
  9. simtools/applications/db_get_file_from_db.py +11 -23
  10. simtools/applications/derive_psf_parameters.py +58 -39
  11. simtools/applications/derive_trigger_rates.py +91 -0
  12. simtools/applications/generate_corsika_histograms.py +7 -184
  13. simtools/applications/maintain_simulation_model_add_production.py +105 -0
  14. simtools/applications/plot_simtel_events.py +5 -189
  15. simtools/applications/print_version.py +8 -7
  16. simtools/applications/validate_file_using_schema.py +7 -4
  17. simtools/configuration/commandline_parser.py +17 -11
  18. simtools/corsika/corsika_histograms.py +81 -0
  19. simtools/data_model/validate_data.py +8 -3
  20. simtools/db/db_handler.py +122 -31
  21. simtools/db/db_model_upload.py +51 -30
  22. simtools/dependencies.py +10 -5
  23. simtools/layout/array_layout_utils.py +37 -5
  24. simtools/model/array_model.py +18 -1
  25. simtools/model/model_repository.py +118 -63
  26. simtools/model/site_model.py +25 -0
  27. simtools/production_configuration/derive_corsika_limits.py +9 -34
  28. simtools/ray_tracing/incident_angles.py +706 -0
  29. simtools/ray_tracing/psf_parameter_optimisation.py +999 -565
  30. simtools/schemas/model_parameter_and_data_schema.metaschema.yml +2 -2
  31. simtools/schemas/model_parameters/nsb_reference_spectrum.schema.yml +1 -1
  32. simtools/schemas/model_parameters/nsb_spectrum.schema.yml +22 -29
  33. simtools/schemas/model_parameters/stars.schema.yml +1 -1
  34. simtools/schemas/production_tables.schema.yml +5 -0
  35. simtools/simtel/simtel_config_writer.py +18 -20
  36. simtools/simtel/simtel_io_event_histograms.py +253 -516
  37. simtools/simtel/simtel_io_event_reader.py +51 -2
  38. simtools/simtel/simtel_io_event_writer.py +31 -11
  39. simtools/simtel/simtel_io_metadata.py +1 -1
  40. simtools/simtel/simtel_table_reader.py +3 -3
  41. simtools/simulator.py +1 -4
  42. simtools/telescope_trigger_rates.py +119 -0
  43. simtools/testing/log_inspector.py +13 -11
  44. simtools/utils/geometry.py +20 -0
  45. simtools/version.py +89 -0
  46. simtools/{corsika/corsika_histograms_visualize.py → visualization/plot_corsika_histograms.py} +109 -0
  47. simtools/visualization/plot_incident_angles.py +431 -0
  48. simtools/visualization/plot_psf.py +673 -0
  49. simtools/visualization/plot_simtel_event_histograms.py +376 -0
  50. simtools/visualization/{simtel_event_plots.py → plot_simtel_events.py} +284 -87
  51. simtools/visualization/visualize.py +1 -3
  52. simtools/applications/calculate_trigger_rate.py +0 -187
  53. simtools/applications/generate_sim_telarray_histograms.py +0 -196
  54. simtools/applications/maintain_simulation_model_add_production_table.py +0 -71
  55. simtools/simtel/simtel_io_histogram.py +0 -623
  56. simtools/simtel/simtel_io_histograms.py +0 -556
  57. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/WHEEL +0 -0
  58. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/licenses/LICENSE +0 -0
  59. {gammasimtools-0.19.0.dist-info → gammasimtools-0.21.0.dist-info}/top_level.txt +0 -0
@@ -3,8 +3,8 @@ $schema: http://json-schema.org/draft-06/schema#
3
3
  $ref: '#/definitions/SimtoolsDataAndModelParameters'
4
4
  title: SimPipe Data and Model Parameter Metaschema
5
5
  description: YAML representation of data and model parameter metaschema
6
- version: 0.1.0
7
- name: model_parameter_and_data_schema.metaschema
6
+ schema_version: 0.1.0
7
+ schema_name: model_parameter_and_data_schema.metaschema
8
8
  type: object
9
9
 
10
10
 
@@ -33,7 +33,7 @@ source:
33
33
  simulation_software:
34
34
  - name: simtools
35
35
  plot_configuration:
36
- - type: nsb_reference_spectrum
36
+ - type: nsb_spectrum
37
37
  title: 'NSB spectrum'
38
38
  xtitle: 'Wavelength [nm]'
39
39
  ytitle: 'Differential photon rate [10^9 / (nm s m^2 sr)]'
@@ -1,16 +1,18 @@
1
1
  %YAML 1.2
2
2
  ---
3
- title: Schema for night_sky_background_spectrum model parameter
3
+ title: Schema for nsb_spectrum model parameter
4
4
  schema_version: 0.1.0
5
5
  meta_schema: simpipe-schema
6
6
  meta_schema_url: https://raw.githubusercontent.com/gammasim/simtools/main/src/simtools/schemas/model_parameter_and_data_schema.metaschema.yml
7
7
  meta_schema_version: 0.1.0
8
- name: nsb_background_spectrum
9
- developer_note: |
10
- TODO - check that wavelength range is sufficient
11
- TODO - add possible zenith / azimuth dependence
12
- (see Granada talk by C. Righi)
13
- description: Intensity of night-sky background light as function of wavelength.
8
+ developer_note: To be replaced by a data table
9
+ name: nsb_spectrum
10
+ description: |-
11
+ Spectrum of night sky background (NSB) as a function of wavelength.
12
+ data:
13
+ - type: file
14
+ unit: dimensionless
15
+ default: null
14
16
  instrument:
15
17
  class: Site
16
18
  type:
@@ -18,27 +20,6 @@ instrument:
18
20
  site:
19
21
  - North
20
22
  - South
21
- data:
22
- - type: data_table
23
- table_columns:
24
- - name: wavelength
25
- description: Wavelength
26
- required: true
27
- unit: nm
28
- type: float64
29
- required_range:
30
- min: 300.0
31
- max: 700.0
32
- input_processing:
33
- - remove_duplicates
34
- - sort
35
- - name: intensity
36
- description: Intensity of the night-sky background
37
- required: true
38
- unit: photons / arcsec**2 m**2 s** micron
39
- type: float64
40
- required_range:
41
- min: 0.0
42
23
  activity:
43
24
  setting:
44
25
  - SetParameterFromExternal
@@ -47,4 +28,16 @@ activity:
47
28
  source:
48
29
  - Calibration
49
30
  simulation_software:
50
- - name: sim_telarray
31
+ - name: simtools
32
+ plot_configuration:
33
+ - type: nsb_spectrum
34
+ title: 'NSB spectrum'
35
+ xtitle: 'Wavelength [nm]'
36
+ ytitle: 'Differential photon rate [10^9 / (nm s m^2 sr)]'
37
+ xscale: 'linear'
38
+ yscale: 'log'
39
+ no_markers: true
40
+ tables:
41
+ - parameter: nsb_spectrum
42
+ column_x: 'wavelength'
43
+ column_y: 'differential photon rate'
@@ -12,7 +12,7 @@ description: |-
12
12
  altitude (both in degrees) and weighting factor for the number of photons. An
13
13
  optional fourth value is the distance of the light source (in kilometers) or 0
14
14
  (standing for infinity). In addition to ray-tracing evaluation, the stars also contribute
15
- to the nighsky background rate in the affected pixels.
15
+ to the night-sky background rate in the affected pixels.
16
16
  short_description: File with shining stars in Az/Alt.
17
17
  data:
18
18
  - type: file
@@ -12,7 +12,11 @@ additionalProperties: false
12
12
 
13
13
  definitions:
14
14
  ProductionModelTable:
15
+ additionalProperties: false
15
16
  properties:
17
+ production_table_name:
18
+ type: string
19
+ description: Name of the production table.
16
20
  model_version:
17
21
  type: string
18
22
  description: Model version.
@@ -37,5 +41,6 @@ definitions:
37
41
  type: string
38
42
  description: Design model of a telescope
39
43
  required:
44
+ - production_table_name
40
45
  - model_version
41
46
  - parameters
@@ -142,7 +142,7 @@ class SimtelConfigWriter:
142
142
  return value
143
143
 
144
144
  def _get_sim_telarray_metadata(
145
- self, config_type, model_parameters, telescope_model_name, sim_telarray_seeds=None
145
+ self, config_type, model_parameters, telescope_model_name, additional_metadata=None
146
146
  ):
147
147
  """
148
148
  Return sim_telarray metadata.
@@ -155,8 +155,8 @@ class SimtelConfigWriter:
155
155
  Model parameters dictionary.
156
156
  telescope_model_name: str
157
157
  Name of the telescope model
158
- sim_telarray_seeds: dict
159
- Dictionary with configuration for sim_telarray random instrument setup.
158
+ additional_metadata: dict
159
+ Dictionary with additional metadata to include using 'set'.
160
160
 
161
161
  Returns
162
162
  -------
@@ -197,12 +197,10 @@ class SimtelConfigWriter:
197
197
 
198
198
  self._add_model_parameters_to_metadata(model_parameters, meta_parameters, prefix)
199
199
 
200
- if sim_telarray_seeds and sim_telarray_seeds.get("random_instrument_instances"):
201
- meta_parameters.append(f"{prefix} set instrument_seed={sim_telarray_seeds['seed']}")
202
- meta_parameters.append(
203
- f"{prefix} set instrument_instances="
204
- f"{sim_telarray_seeds['random_instrument_instances']}"
205
- )
200
+ if additional_metadata:
201
+ for key, value in additional_metadata.items():
202
+ if value:
203
+ meta_parameters.append(f"{prefix} set {key}={value}")
206
204
 
207
205
  return meta_parameters
208
206
 
@@ -224,7 +222,7 @@ class SimtelConfigWriter:
224
222
  meta_parameters.append(f"{prefix} set {simtel_name}={value['value']}")
225
223
 
226
224
  def write_array_config_file(
227
- self, config_file_path, telescope_model, site_model, sim_telarray_seeds=None
225
+ self, config_file_path, telescope_model, site_model, additional_metadata=None
228
226
  ):
229
227
  """
230
228
  Write the sim_telarray config file for an array of telescopes.
@@ -237,8 +235,8 @@ class SimtelConfigWriter:
237
235
  Dictionary of TelescopeModel's instances as used by the ArrayModel instance.
238
236
  site_model: Site model
239
237
  Site model.
240
- sim_telarray_seeds: dict
241
- Dictionary with configuration for sim_telarray random instrument setup.
238
+ additional_metadata: dict
239
+ Dictionary with additional metadata to include.
242
240
  """
243
241
  config_file_directory = Path(config_file_path).parent
244
242
  with open(config_file_path, "w", encoding="utf-8") as file:
@@ -263,7 +261,7 @@ class SimtelConfigWriter:
263
261
  site_model.parameters,
264
262
  config_file_directory,
265
263
  telescope_model,
266
- sim_telarray_seeds,
264
+ additional_metadata,
267
265
  )
268
266
 
269
267
  file.write(self.TAB + f"maximum_telescopes = {len(telescope_model)}\n\n")
@@ -285,8 +283,8 @@ class SimtelConfigWriter:
285
283
  file.write(f"# include <{tel_config_file}>\n\n")
286
284
  file.write("#endif \n\n") # configuration files need to end with \n\n
287
285
 
288
- if sim_telarray_seeds and sim_telarray_seeds.get("random_instrument_instances"):
289
- self._write_random_seeds_file(sim_telarray_seeds, config_file_directory)
286
+ if additional_metadata and additional_metadata.get("random_instrument_instances"):
287
+ self._write_random_seeds_file(additional_metadata, config_file_directory)
290
288
 
291
289
  def _write_random_seeds_file(self, sim_telarray_seeds, config_file_directory):
292
290
  """
@@ -418,7 +416,7 @@ class SimtelConfigWriter:
418
416
  file.write(f"{self.TAB}metaparam global set {key} = {value}\n")
419
417
 
420
418
  def _write_site_parameters(
421
- self, file, site_parameters, model_path, telescope_model, sim_telarray_seeds=None
419
+ self, file, site_parameters, model_path, telescope_model, additional_metadata=None
422
420
  ):
423
421
  """
424
422
  Write site parameters.
@@ -433,8 +431,8 @@ class SimtelConfigWriter:
433
431
  Path to the model for writing of additional files.
434
432
  telescope_model: dict of TelescopeModel
435
433
  Telescope models.
436
- sim_telarray_seeds: dict
437
- Dictionary with configuration for sim_telarray random instrument setup.
434
+ additional_metadata: dict
435
+ Dictionary with additional metadata to include.
438
436
  """
439
437
  file.write(self.TAB + "% Site parameters\n")
440
438
  for par, value in site_parameters.items():
@@ -449,7 +447,7 @@ class SimtelConfigWriter:
449
447
  if simtel_name is not None:
450
448
  file.write(f"{self.TAB}{simtel_name} = {value}\n")
451
449
  for meta in self._get_sim_telarray_metadata(
452
- "site", site_parameters, self._telescope_model_name, sim_telarray_seeds
450
+ "site", site_parameters, self._telescope_model_name, additional_metadata
453
451
  ):
454
452
  file.write(f"{self.TAB}{meta}\n")
455
453
  file.write("\n")
@@ -517,7 +515,7 @@ class SimtelConfigWriter:
517
515
  width = trigger_dict["width"]["value"] * u.Unit(trigger_dict["width"]["unit"]).to("ns")
518
516
  trigger_lines[tel_type] += f" width {width}"
519
517
  if trigger_dict.get("hard_stereo"):
520
- trigger_lines[tel_type] += " hard_stereo"
518
+ trigger_lines[tel_type] += " hardstereo"
521
519
  if all(trigger_dict["min_separation"][key] is not None for key in ["value", "unit"]):
522
520
  min_sep = trigger_dict["min_separation"]["value"] * u.Unit(
523
521
  trigger_dict["min_separation"]["unit"]