Source code for astrophot.models.group_psf_model
from .group_model_object import GroupModel
from ..image import PSFImage
from ..errors import InvalidTarget
from ..param import forward
__all__ = ["PSFGroupModel"]
[docs]
class PSFGroupModel(GroupModel):
"""
A group of PSF models. Behaves similarly to a `GroupModel`, but specifically designed for PSF models.
"""
_model_type = "psf"
usable = True
normalize_psf = True
_options = ("normalize_psf",)
@property
def target(self):
try:
return self._target
except AttributeError:
return None
@target.setter
def target(self, target):
if not (target is None or isinstance(target, PSFImage)):
raise InvalidTarget("GroupModel target must be a PSFImage instance.")
try:
del self._target # Remove old target if it exists
except AttributeError:
pass
self._target = target
[docs]
@forward
def sample(self, *args, **kwargs):
"""Sample the PSF group model on the target image."""
image = self.target.model_image(self.window)
for model in self.models:
model_image = model()
self._ensure_vmap_compatible(image, model_image)
image += model_image
if self.normalize_psf:
image.normalize()
return image