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 Member Functions | List of all members
lsst.scarlet.lite.models.fit_psf.FittedPsfBlend Class Reference
Inheritance diagram for lsst.scarlet.lite.models.fit_psf.FittedPsfBlend:
lsst.scarlet.lite.blend.Blend

Public Member Functions

tuple[int, float] fit (self, int max_iter, float e_rel=1e-4, int min_iter=1, int resize=10)
 

Public Attributes

 bbox
 
 observation
 
 it
 

Protected Member Functions

Image _grad_log_likelihood (self)
 

Detailed Description

A blend that attempts to fit the PSF along with the source models.

Definition at line 148 of file fit_psf.py.

Member Function Documentation

◆ _grad_log_likelihood()

Image lsst.scarlet.lite.models.fit_psf.FittedPsfBlend._grad_log_likelihood ( self)
protected
Gradient of the likelihood wrt the unconvolved model

Reimplemented from lsst.scarlet.lite.blend.Blend.

Definition at line 151 of file fit_psf.py.

151 def _grad_log_likelihood(self) -> Image:
152 """Gradient of the likelihood wrt the unconvolved model"""
153 model = self.get_model(convolve=True)
154 # Update the loss
155 self.loss.append(self.observation.log_likelihood(model))
156 # Calculate the gradient wrt the model d(logL)/d(model)
157 result = self.observation.weights * (model - self.observation.images)
158 return result
159

◆ fit()

tuple[int, float] lsst.scarlet.lite.models.fit_psf.FittedPsfBlend.fit ( self,
int max_iter,
float e_rel = 1e-4,
int min_iter = 1,
int resize = 10 )
Fit all of the parameters

Parameters
----------
max_iter: int
    The maximum number of iterations
e_rel: float
    The relative error to use for determining convergence.
min_iter: int
    The minimum number of iterations.
resize: int
    Number of iterations before attempting to resize the
    resizable components. If `resize` is `None` then
    no resizing is ever attempted.

Reimplemented from lsst.scarlet.lite.blend.Blend.

Definition at line 160 of file fit_psf.py.

166 ) -> tuple[int, float]:
167 """Fit all of the parameters
168
169 Parameters
170 ----------
171 max_iter: int
172 The maximum number of iterations
173 e_rel: float
174 The relative error to use for determining convergence.
175 min_iter: int
176 The minimum number of iterations.
177 resize: int
178 Number of iterations before attempting to resize the
179 resizable components. If `resize` is `None` then
180 no resizing is ever attempted.
181 """
182 it = self.it
183 while it < max_iter:
184 # Calculate the gradient wrt the on-convolved model
185 grad_log_likelihood = self._grad_log_likelihood()
186 _grad_log_likelihood = self.observation.convolve(grad_log_likelihood, grad=True)
187 # Check if resizing needs to be performed in this iteration
188 if resize is not None and self.it > 0 and self.it % resize == 0:
189 do_resize = True
190 else:
191 do_resize = False
192 # Update each component given the current gradient
193 for component in self.components:
194 overlap = component.bbox & self.bbox
195 component.update(it, _grad_log_likelihood[overlap].data)
196 # Check to see if any components need to be resized
197 if do_resize:
198 component.resize(self.bbox)
199
200 # Update the PSF
201 cast(FittedPsfObservation, self.observation).update(
202 it, grad_log_likelihood.data, self.get_model()
203 )
204 # Stopping criteria
205 it += 1
206 if it > min_iter and np.abs(self.loss[-1] - self.loss[-2]) < e_rel * np.abs(self.loss[-1]):
207 break
208 self.it = it
209 return it, self.loss[-1]

Member Data Documentation

◆ bbox

lsst.scarlet.lite.models.fit_psf.FittedPsfBlend.bbox

Definition at line 198 of file fit_psf.py.

◆ it

lsst.scarlet.lite.models.fit_psf.FittedPsfBlend.it

Definition at line 208 of file fit_psf.py.

◆ observation

lsst.scarlet.lite.models.fit_psf.FittedPsfBlend.observation

Definition at line 201 of file fit_psf.py.


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