LSST Applications 27.0.0,g0265f82a02+469cd937ee,g02d81e74bb+21ad69e7e1,g1470d8bcf6+cbe83ee85a,g2079a07aa2+e67c6346a6,g212a7c68fe+04a9158687,g2305ad1205+94392ce272,g295015adf3+81dd352a9d,g2bbee38e9b+469cd937ee,g337abbeb29+469cd937ee,g3939d97d7f+72a9f7b576,g487adcacf7+71499e7cba,g50ff169b8f+5929b3527e,g52b1c1532d+a6fc98d2e7,g591dd9f2cf+df404f777f,g5a732f18d5+be83d3ecdb,g64a986408d+21ad69e7e1,g858d7b2824+21ad69e7e1,g8a8a8dda67+a6fc98d2e7,g99cad8db69+f62e5b0af5,g9ddcbc5298+d4bad12328,ga1e77700b3+9c366c4306,ga8c6da7877+71e4819109,gb0e22166c9+25ba2f69a1,gb6a65358fc+469cd937ee,gbb8dafda3b+69d3c0e320,gc07e1c2157+a98bf949bb,gc120e1dc64+615ec43309,gc28159a63d+469cd937ee,gcf0d15dbbd+72a9f7b576,gdaeeff99f8+a38ce5ea23,ge6526c86ff+3a7c1ac5f1,ge79ae78c31+469cd937ee,gee10cc3b42+a6fc98d2e7,gf1cff7945b+21ad69e7e1,gfbcc870c63+9a11dc8c8f
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: