import warnings
from .model_base import DataModel
from .validate import ValidationWarning
__all__ = ['ReferenceFileModel']
[docs]class ReferenceFileModel(DataModel):
"""
A data model for reference tables
Parameters
----------
init : any
Any of the initializers supported by `~jwst.datamodels.DataModel`.
"""
schema_url = "referencefile.schema.yaml"
def __init__(self, init=None, **kwargs):
super(ReferenceFileModel, self).__init__(init=init, **kwargs)
self._no_asdf_extension = True
self.meta.telescope = "JWST"
[docs] def validate(self):
"""
Convenience function to be run when files are created.
Checks that required reference file keywords are set.
"""
try:
assert self.meta.description is not None
assert (self.meta.telescope == 'JWST')
assert self.meta.reftype is not None
assert self.meta.author is not None
assert self.meta.pedigree is not None
assert self.meta.useafter is not None
assert self.meta.instrument.name is not None
except AssertionError as errmsg:
if self._strict_validation:
raise AssertionError(errmsg)
else:
warnings.warn(str(errmsg), ValidationWarning)
super(ReferenceFileModel, self).validate()
[docs]class ReferenceImageModel(ReferenceFileModel):
"""
A data model for 2D reference images
Parameters
----------
init : any
Any of the initializers supported by `~jwst.datamodels.DataModel`.
data : numpy array
The science data.
dq : numpy array
The data quality array.
err : numpy array
The error array.
"""
schema_url = "referenceimage.schema.yaml"
def __init__(self, init=None, data=None, dq=None, err=None, **kwargs):
super(ReferenceImageModel, self).__init__(init=init, **kwargs)
if data is not None:
self.data = data
if dq is not None:
self.dq = dq
if err is not None:
self.err = err
# Implicitly create arrays
self.dq = self.dq
self.err = self.err
[docs]class ReferenceCubeModel(ReferenceFileModel):
"""
A data model for 3D reference images
Parameters
----------
init : any
Any of the initializers supported by `~jwst.datamodels.DataModel`.
data : numpy array
The science data.
dq : numpy array
The data quality array.
err : numpy array
The error array.
"""
schema_url = "referencecube.schema.yaml"
def __init__(self, init=None, data=None, dq=None, err=None, **kwargs):
super(ReferenceCubeModel, self).__init__(init=init, **kwargs)
if data is not None:
self.data = data
if dq is not None:
self.dq = dq
if err is not None:
self.err = err
# Implicitly create arrays
self.dq = self.dq
self.err = self.err
[docs]class ReferenceQuadModel(ReferenceFileModel):
"""
A data model for 4D reference images
Parameters
----------
init : any
Any of the initializers supported by `~jwst.datamodels.DataModel`.
data : numpy array
The science data.
dq : numpy array
The data quality array.
err : numpy array
The error array.
"""
schema_url = "referencequad.schema.yaml"
def __init__(self, init=None, data=None, dq=None, err=None, **kwargs):
super(ReferenceQuadModel, self).__init__(init=init, **kwargs)
if data is not None:
self.data = data
if dq is not None:
self.dq = dq
if err is not None:
self.err = err
# Implicitly create arrays
self.dq = self.dq
self.err = self.err