Source code for coolest.template.classes.psf

__author__ = 'aymgal'

from coolest.template.classes.grid import PixelatedRegularGrid
from coolest.template.classes.base import APIBaseObject


__all__ = [
    'PSF',
    'PixelatedPSF',
    'GaussianPSF',
]

SUPPORTED_CHOICES = list(set(__all__) - {'PSF'})

#TODO: add support for a Moffat PSF


[docs] class PSF(APIBaseObject): """Defines the model of the Point Spread Function (PSF) of the instrument. Parameters ---------- psf_type : str Type of PSF model, as the names of the classes defined in this module. description : str, optional Any details regarding the way the PSF has been estimated, by default None **kwargs : dict, optional All the other attributes of the specific PSF model. """ def __init__(self, psf_type: str = None, description: str = None, **kwargs) -> None:
[docs] self.type = psf_type
[docs] self.description = description
for key, value in kwargs.items(): setattr(self, key, value) super().__init__()
[docs] class PixelatedPSF(PSF): """PSF modeled as a 2D image. Parameters ---------- pixels : PixelatedRegularGrid, optional Grid class that holds pixel values and the extent of the PSF kernel, by default None description : str, optional Any details regarding the way the PSF has been estimated, by default None """ def __init__(self, pixels: PixelatedRegularGrid = None, description: str = None) -> None: psf_type = self.__class__.__name__ if pixels is None: pixels = PixelatedRegularGrid() super().__init__(psf_type, description=description, pixels=pixels)
[docs] class GaussianPSF(PSF): """PSF modeled as a 2D image. Parameters ---------- fwhm : float, optional Full width at half maximum, in units of the Instrument pixel size, by default 0.0 description : str, optional Any details regarding the way the PSF has been estimated, by default None """ def __init__(self, fwhm: float = 0.0, description: str = None) -> None: psf_type = self.__class__.__name__ super().__init__(psf_type, description=description, fwhm=fwhm)