LSST Applications g0603fd7c41+501e3db9f9,g0aad566f14+23d8574c86,g0dd44d6229+a1a4c8b791,g2079a07aa2+86d27d4dc4,g2305ad1205+a62672bbc1,g2bbee38e9b+047b288a59,g337abbeb29+047b288a59,g33d1c0ed96+047b288a59,g3a166c0a6a+047b288a59,g3d1719c13e+23d8574c86,g487adcacf7+cb7fd919b2,g4be5004598+23d8574c86,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+4a9e435310,g63cd9335cc+585e252eca,g858d7b2824+23d8574c86,g88963caddf+0cb8e002cc,g99cad8db69+43388bcaec,g9ddcbc5298+9a081db1e4,ga1e77700b3+a912195c07,gae0086650b+585e252eca,gb0e22166c9+60f28cb32d,gb2522980b2+793639e996,gb3a676b8dc+b4feba26a1,gb4b16eec92+63f8520565,gba4ed39666+c2a2e4ac27,gbb8dafda3b+a5d255a82e,gc120e1dc64+d820f8acdb,gc28159a63d+047b288a59,gc3e9b769f7+f4f1cc6b50,gcf0d15dbbd+a1a4c8b791,gdaeeff99f8+f9a426f77a,gdb0af172c8+b6d5496702,ge79ae78c31+047b288a59,w.2024.19
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Protected Attributes | List of all members
lsst.scarlet.lite.models.fit_psf.FittedPsfObservation Class Reference
Inheritance diagram for lsst.scarlet.lite.models.fit_psf.FittedPsfObservation:
lsst.scarlet.lite.observation.Observation

Public Member Functions

 __init__ (self, np.ndarray|Image images, np.ndarray|Image variance, np.ndarray|Image weights, np.ndarray psfs, np.ndarray|None model_psf=None, np.ndarray|None noise_rms=None, Box|None bbox=None, tuple|None bands=None, int padding=3, str convolution_mode="fft")
 
np.ndarray grad_fit_kernel (self, np.ndarray input_grad, np.ndarray kernel, np.ndarray model_fft)
 
np.ndarray prox_kernel (self, np.ndarray kernel)
 
np.ndarray fitted_kernel (self)
 
 cached_kernel (self)
 
Image convolve (self, Image image, str|None mode=None, bool grad=False)
 
 update (self, int it, np.ndarray input_grad, Image model)
 
None parameterize (self, Callable parameterization)
 

Public Attributes

 axes
 
 fft_shape
 

Protected Attributes

 _fitted_kernel
 

Detailed Description

An observation that fits the PSF used to convolve the model.

Definition at line 36 of file fit_psf.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.__init__ ( self,
np.ndarray | Image images,
np.ndarray | Image variance,
np.ndarray | Image weights,
np.ndarray psfs,
np.ndarray | None model_psf = None,
np.ndarray | None noise_rms = None,
Box | None bbox = None,
tuple | None bands = None,
int padding = 3,
str convolution_mode = "fft" )
Initialize a `FitPsfObservation`

See `Observation` for a description of the parameters.

Reimplemented from lsst.scarlet.lite.observation.Observation.

Definition at line 39 of file fit_psf.py.

51 ):
52 """Initialize a `FitPsfObservation`
53
54 See `Observation` for a description of the parameters.
55 """
56 super().__init__(
57 images,
58 variance,
59 weights,
60 psfs,
61 model_psf,
62 noise_rms,
63 bbox,
64 bands,
65 padding,
66 convolution_mode,
67 )
68
69 self.axes = (-2, -1)
70
71 self.fft_shape = get_fft_shape(self.images.data[0], psfs[0], padding, self.axes)
72
73 # Make the DFT of the psf a fittable parameter
74 self._fitted_kernel = parameter(cast(Fourier, self.diff_kernel).fft(self.fft_shape, self.axes))
75

Member Function Documentation

◆ cached_kernel()

lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.cached_kernel ( self)

Definition at line 93 of file fit_psf.py.

93 def cached_kernel(self):
94 return self.fitted_kernel.real - self.fitted_kernel.imag * 1j
95

◆ convolve()

Image lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.convolve ( self,
Image image,
str | None mode = None,
bool grad = False )
Convolve the model into the observed seeing in each band.

Parameters
----------
image:
    The image to convolve
mode:
    The convolution mode to use.
    This should be "real" or "fft" or `None`,
    where `None` will use the default `convolution_mode`
    specified during init.
grad:
    Whether this is a backward gradient convolution
    (`grad==True`) or a pure convolution with the PSF.

Reimplemented from lsst.scarlet.lite.observation.Observation.

Definition at line 96 of file fit_psf.py.

96 def convolve(self, image: Image, mode: str | None = None, grad: bool = False) -> Image:
97 """Convolve the model into the observed seeing in each band.
98
99 Parameters
100 ----------
101 image:
102 The image to convolve
103 mode:
104 The convolution mode to use.
105 This should be "real" or "fft" or `None`,
106 where `None` will use the default `convolution_mode`
107 specified during init.
108 grad:
109 Whether this is a backward gradient convolution
110 (`grad==True`) or a pure convolution with the PSF.
111 """
112 if grad:
113 kernel = self.cached_kernel
114 else:
115 kernel = self.fitted_kernel
116
117 if mode != "fft" and mode is not None:
118 return super().convolve(image, mode, grad)
119
120 fft_image = Fourier(image.data)
121 fft = fft_image.fft(self.fft_shape, self.axes)
122
123 result = Fourier.from_fft(fft * kernel, self.fft_shape, image.shape, self.axes)
124 return Image(result.image, bands=image.bands, yx0=image.yx0)
125

◆ fitted_kernel()

np.ndarray lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.fitted_kernel ( self)

Definition at line 89 of file fit_psf.py.

89 def fitted_kernel(self) -> np.ndarray:
90 return self._fitted_kernel.x
91

◆ grad_fit_kernel()

np.ndarray lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.grad_fit_kernel ( self,
np.ndarray input_grad,
np.ndarray kernel,
np.ndarray model_fft )

Definition at line 76 of file fit_psf.py.

78 ) -> np.ndarray:
79 # Transform the upstream gradient into k-space
80 grad_fft = Fourier(input_grad)
81 _grad_fft = grad_fft.fft(self.fft_shape, self.axes)
82 return _grad_fft * model_fft
83

◆ parameterize()

None lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.parameterize ( self,
Callable parameterization )
Convert the component parameter arrays into Parameter instances

Parameters
----------
parameterization: Callable
    A function to use to convert parameters of a given type into
    a `Parameter` in place. It should take a single argument that
    is the `Component` or `Source` that is to be parameterized.

Definition at line 131 of file fit_psf.py.

131 def parameterize(self, parameterization: Callable) -> None:
132 """Convert the component parameter arrays into Parameter instances
133
134 Parameters
135 ----------
136 parameterization: Callable
137 A function to use to convert parameters of a given type into
138 a `Parameter` in place. It should take a single argument that
139 is the `Component` or `Source` that is to be parameterized.
140 """
141 # Update the spectrum and morph in place
142 parameterization(self)
143 # update the parameters
144 self._fitted_kernel.grad = self.grad_fit_kernel
145 self._fitted_kernel.prox = self.prox_kernel
146
147

◆ prox_kernel()

np.ndarray lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.prox_kernel ( self,
np.ndarray kernel )

Definition at line 84 of file fit_psf.py.

84 def prox_kernel(self, kernel: np.ndarray) -> np.ndarray:
85 # No prox for now
86 return kernel
87

◆ update()

lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.update ( self,
int it,
np.ndarray input_grad,
Image model )

Definition at line 126 of file fit_psf.py.

126 def update(self, it: int, input_grad: np.ndarray, model: Image):
127 _model = Fourier(model.data[:, ::-1, ::-1])
128 model_fft = _model.fft(self.fft_shape, self.axes)
129 self._fitted_kernel.update(it, input_grad, model_fft)
130

Member Data Documentation

◆ _fitted_kernel

lsst.scarlet.lite.models.fit_psf.FittedPsfObservation._fitted_kernel
protected

Definition at line 74 of file fit_psf.py.

◆ axes

lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.axes

Definition at line 69 of file fit_psf.py.

◆ fft_shape

lsst.scarlet.lite.models.fit_psf.FittedPsfObservation.fft_shape

Definition at line 71 of file fit_psf.py.


The documentation for this class was generated from the following file: