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 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: