Metadata written to sim_telarray output#
simtools writes metadata including run information, software version, and model parameters into the sim_telarray output file. The metadata is written as a set of key-value pairs and consists of a general set of values plus one set per array element.
To read the metadata from a sim_telarray output file, do e.g.,
import pprint
import simtools.simtel.simtel_io_metadata as simtel_io_metadata
data = simtel_io_metadata.read_sim_telarray_metadata(
"tests/resources/generated/proton_run000001_za20deg_azm180deg_North_alpha_6.0.2_test.simtel.zst"
)
pprint.pprint(data)
Metadata is validated against the registry metaschema sim_telarray_meta_parameter.metaschema.yml plus the model-parameter schemas. The registry is used to validate the emitted metadata and to provide a registry of the metadata keys, their expected scope and value shape.
The complete schema can be exported from the simtools package with
simtools-export-sim-telarray-metadata-schema \
--output_file sim_telarray_metadata_schema.json
To add a new metadata value, update the matching model-parameter schema if it is model-derived, or add the new generated key to the sim_telarray metadata registry, then run the metadata tests to verify that the value is written and read correctly.
Software provenance#
Simulation output contains a compact software summary rather than the complete Python environment.
The generated global metadata includes the simtools, CORSIKA, sim_telarray, hessio, stdtools, and
Python versions; the simtools Git revision; relevant CORSIKA build variants; and
simtools_dependency_manifest_sha256.
The manifest digest identifies the complete canonical record stored in the container at
/opt/simtools/provenance/dependency-manifest.json. Use it to match an output file to the OCI
image and its release metadata. The full manifest is not embedded in every event file.