Source code for liger_iris_pipeline.datamodels.referencefile

import warnings

from stdatamodels.validate import ValidationWarning
from stdatamodels.dynamicdq import dynamic_mask

from .model_base import LigerIRISDataModel
from .dqflags import pixel


__all__ = ['ReferenceFileModel']


[docs] class ReferenceFileModel(LigerIRISDataModel): """ A base data model for Liger and IRIS calibration reference data. """ schema_url = "https://oirlab.github.io/schemas/ReferenceFileModel.schema" _ref_type = None # def __init__(self, init=None, **kwargs): # super().__init__(init=init, **kwargs) # self._no_asdf_extension = True
[docs] def on_init(self, *args, **kwargs): super().on_init(*args, **kwargs) self.meta.ref_type = self._ref_type
[docs] def print_err(self, message): if self._strict_validation: raise ValueError(message) else: warnings.warn(message, ValidationWarning)
@staticmethod def _generate_filename( instrument : str, detector : str, ref_type : str, date_time : str, version : str | None = None, suffix : str | None = None ): # TODO: Automate versioning if version is None: version = '0.0.1' if instrument.lower() == 'iris': instrument = 'IRIS' elif instrument.lower() == 'liger': instrument = 'Liger' else: raise ValueError(f"Unknown instrument {instrument}") if suffix is None: suffix = '' else: suffix = '_' + suffix return f"{instrument}_{detector.upper()}_{ref_type.upper()}_{date_time}_{version}{suffix}.fits"
[docs] def generate_filename(self, suffix : str | None = None): return self._generate_filename( instrument=self.meta.instrument.name, detector=self.meta.instrument.detector, ref_type=self._ref_type, date_time=self.meta.exposure.datetime_start, version=self.meta.ref_version, suffix=suffix )