LSST Applications g00d0e8bbd7+edbf708997,g199a45376c+5137f08352,g1fd858c14a+48cd4dd530,g228ff663f5+2051e4e242,g262e1987ae+9c6f24d2e3,g29ae962dfc+03663621e0,g2cef7863aa+73c82f25e4,g35bb328faa+edbf708997,g3fd5ace14f+8c4d25a1ce,g47891489e3+27ba970c8a,g53246c7159+edbf708997,g5b326b94bb+db962c32ee,g64539dfbff+d237af7fd9,g67b6fd64d1+27ba970c8a,g74acd417e5+8234f56c0c,g786e29fd12+af89c03590,g87389fa792+a4172ec7da,g88cb488625+6878ed1c5e,g89139ef638+27ba970c8a,g8d7436a09f+f76ea57dde,g8ea07a8fe4+79658f16ab,g90f42f885a+6577634e1f,g97be763408+494f77a6c4,g98df359435+1750ea0126,g9b50b81019+d8f85438e7,ga2180abaac+edbf708997,ga9e74d7ce9+128cc68277,gad4c79568f+321c5e11c3,gbf99507273+edbf708997,gc2a301910b+d237af7fd9,gca7fc764a6+27ba970c8a,gcedae5159b+afaec0eb3d,gd7ef33dd92+27ba970c8a,gdab6d2f7ff+8234f56c0c,gdbb4c4dda9+d237af7fd9,ge410e46f29+27ba970c8a,ge41e95a9f2+d237af7fd9,geaed405ab2+062dfc8cdc,w.2025.45
LSST Data Management Base Package
Loading...
Searching...
No Matches
lsst.scarlet.lite.models.free_form.FreeFormComponent Class Reference
Inheritance diagram for lsst.scarlet.lite.models.free_form.FreeFormComponent:
lsst.scarlet.lite.component.Component

Public Member Functions

 __init__ (self, tuple bands, np.ndarray|Parameter model, Box model_bbox, float|None bg_thresh=None, np.ndarray|None bg_rms=None, float floor=1e-20, list[tuple[int, int]]|None peaks=None, float min_area=0)
 
np.ndarray model (self)
 
Image get_model (self)
 
tuple shape (self)
 
np.ndarray grad_model (self, np.ndarray input_grad, np.ndarray model)
 
np.ndarray prox_model (self, np.ndarray model)
 
bool resize (self, Box model_box)
 
 update (self, int it, np.ndarray grad_log_likelihood)
 
None parameterize (self, Callable parameterization)
 
 __str__ (self)
 
 __repr__ (self)
 
Box bbox (self)
 
tuple bands (self)
 
ScarletComponentBaseData to_data (self)
 

Public Attributes

 bg_rms = bg_rms
 
 bg_thresh = bg_thresh
 
 floor = floor
 
 peaks = peaks
 
 min_area = min_area
 
 model
 

Protected Attributes

 _model = parameter(model)
 
tuple _bands = bands
 
Box _bbox = bbox
 

Detailed Description

Implements a component with no spectral or monotonicty constraints

This is a FreeFormComponent that is not factorized into a
spectrum and morphology with no monotonicity constraint.

Definition at line 143 of file free_form.py.

Constructor & Destructor Documentation

◆ __init__()

lsst.scarlet.lite.models.free_form.FreeFormComponent.__init__ ( self,
tuple bands,
np.ndarray | Parameter model,
Box model_bbox,
float | None bg_thresh = None,
np.ndarray | None bg_rms = None,
float floor = 1e-20,
list[tuple[int, int]] | None peaks = None,
float min_area = 0 )

Definition at line 150 of file free_form.py.

160 ):
161 super().__init__(bands=bands, bbox=model_bbox)
162 self._model = parameter(model)
163 self.bg_rms = bg_rms
164 self.bg_thresh = bg_thresh
165 self.floor = floor
166 self.peaks = peaks
167 self.min_area = min_area
168

Member Function Documentation

◆ __repr__()

lsst.scarlet.lite.models.free_form.FreeFormComponent.__repr__ ( self)

Definition at line 239 of file free_form.py.

239 def __repr__(self):
240 return self.__str__()

◆ __str__()

lsst.scarlet.lite.models.free_form.FreeFormComponent.__str__ ( self)

Definition at line 235 of file free_form.py.

235 def __str__(self):
236 result = f"FreeFormComponent<bands={self.bands}, shape={self.shape}>"
237 return result
238

◆ bands()

tuple lsst.scarlet.lite.component.Component.bands ( self)
inherited
The bands in the component model

Definition at line 71 of file component.py.

71 def bands(self) -> tuple:
72 """The bands in the component model"""
73 return self._bands
74

◆ bbox()

Box lsst.scarlet.lite.component.Component.bbox ( self)
inherited
The bounding box that contains the component in the full image

Definition at line 66 of file component.py.

66 def bbox(self) -> Box:
67 """The bounding box that contains the component in the full image"""
68 return self._bbox
69

◆ get_model()

Image lsst.scarlet.lite.models.free_form.FreeFormComponent.get_model ( self)
Generate a model for the component

This must be implemented in inherited classes.

Returns
-------
model: Image
    The image of the component model.

Reimplemented from lsst.scarlet.lite.component.Component.

Definition at line 173 of file free_form.py.

173 def get_model(self) -> Image:
174 return Image(self.model, bands=self.bands, yx0=cast(tuple[int, int], self.bbox.origin))
175

◆ grad_model()

np.ndarray lsst.scarlet.lite.models.free_form.FreeFormComponent.grad_model ( self,
np.ndarray input_grad,
np.ndarray model )

Definition at line 180 of file free_form.py.

180 def grad_model(self, input_grad: np.ndarray, model: np.ndarray) -> np.ndarray:
181 return input_grad
182

◆ model()

np.ndarray lsst.scarlet.lite.models.free_form.FreeFormComponent.model ( self)

Definition at line 170 of file free_form.py.

170 def model(self) -> np.ndarray:
171 return self._model.x
172

◆ parameterize()

None lsst.scarlet.lite.models.free_form.FreeFormComponent.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.

Reimplemented from lsst.scarlet.lite.component.Component.

Definition at line 219 of file free_form.py.

219 def parameterize(self, parameterization: Callable) -> None:
220 """Convert the component parameter arrays into Parameter instances
221
222 Parameters
223 ----------
224 parameterization: Callable
225 A function to use to convert parameters of a given type into
226 a `Parameter` in place. It should take a single argument that
227 is the `Component` or `Source` that is to be parameterized.
228 """
229 # Update the spectrum and morph in place
230 parameterization(self)
231 # update the parameters
232 self._model.grad = self.grad_model
233 self._model.prox = self.prox_model
234

◆ prox_model()

np.ndarray lsst.scarlet.lite.models.free_form.FreeFormComponent.prox_model ( self,
np.ndarray model )

Definition at line 183 of file free_form.py.

183 def prox_model(self, model: np.ndarray) -> np.ndarray:
184 if self.bg_thresh is not None and isinstance(self.bg_rms, np.ndarray):
185 bg_thresh = self.bg_rms * self.bg_thresh
186 # Enforce background thresholding
187 model[model < bg_thresh[:, None, None]] = 0
188 else:
189 # enforce positivity
190 model[model < 0] = 0
191
192 if self.peaks is not None:
193 # Remove pixels not connected to one of the peaks
194 model2d = np.sum(model, axis=0)
195 footprint = get_connected_multipeak(model2d, self.peaks, 0)
196 model = model * footprint[None, :, :]
197
198 if self.min_area > 0:
199 # Remove regions with fewer than min_area connected pixels
200 model2d = np.sum(model, axis=0)
201 footprints = get_footprints(model2d, 4.0, self.min_area, 0, 0, False)
202 bbox = self.bbox.copy()
203 bbox.origin = (0, 0)
204 footprint_image = footprints_to_image(footprints, bbox)
205 model = model * (footprint_image > 0).data[None, :, :]
206
207 if np.all(model == 0):
208 # If the model is all zeros, set a single pixel to the floor
209 model[0, 0] = self.floor
210
211 return model
212
MatrixB get_connected_multipeak(py::EigenDRef< const M > image, const std::vector< std::vector< int > > &centers, const double thresh=0)
Proximal operator to trim pixels not connected to one of the source centers.
std::vector< Footprint > get_footprints(py::EigenDRef< const M > image, const double min_separation, const int min_area, const double peak_thresh, const double footprint_thresh, const bool find_peaks=true, const int y0=0, const int x0=0)
Get all footprints in an image.

◆ resize()

bool lsst.scarlet.lite.models.free_form.FreeFormComponent.resize ( self,
Box model_box )
Test whether or not the component needs to be resized

This should be overriden in inherited classes and return `True`
if the component needs to be resized.

Reimplemented from lsst.scarlet.lite.component.Component.

Definition at line 213 of file free_form.py.

213 def resize(self, model_box: Box) -> bool:
214 return False
215

◆ shape()

tuple lsst.scarlet.lite.models.free_form.FreeFormComponent.shape ( self)

Definition at line 177 of file free_form.py.

177 def shape(self) -> tuple:
178 return self.model.shape
179

◆ to_data()

ScarletComponentBaseData lsst.scarlet.lite.component.Component.to_data ( self)
inherited
Convert the component to persistable ScarletComponentBaseData

Returns
-------
component_data: ScarletComponentBaseData
    The data object containing the component information

Reimplemented in lsst.scarlet.lite.component.FactorizedComponent, lsst.scarlet.lite.io.cube_component.ComponentCube, and lsst.scarlet.lite.models.parametric.ParametricComponent.

Definition at line 120 of file component.py.

120 def to_data(self) -> ScarletComponentBaseData:
121 """Convert the component to persistable ScarletComponentBaseData
122
123 Returns
124 -------
125 component_data: ScarletComponentBaseData
126 The data object containing the component information
127 """
128
129

◆ update()

lsst.scarlet.lite.models.free_form.FreeFormComponent.update ( self,
int it,
np.ndarray input_grad )
Update the component parameters from an input gradient

Parameters
----------
it:
    The current iteration of the optimizer.
input_grad:
    Gradient of the likelihood wrt the component model

Reimplemented from lsst.scarlet.lite.component.Component.

Definition at line 216 of file free_form.py.

216 def update(self, it: int, grad_log_likelihood: np.ndarray):
217 self._model.update(it, grad_log_likelihood)
218

Member Data Documentation

◆ _bands

tuple lsst.scarlet.lite.component.Component._bands = bands
protectedinherited

Definition at line 62 of file component.py.

◆ _bbox

Box lsst.scarlet.lite.component.Component._bbox = bbox
protectedinherited

Definition at line 63 of file component.py.

◆ _model

lsst.scarlet.lite.models.free_form.FreeFormComponent._model = parameter(model)
protected

Definition at line 162 of file free_form.py.

◆ bg_rms

lsst.scarlet.lite.models.free_form.FreeFormComponent.bg_rms = bg_rms

Definition at line 163 of file free_form.py.

◆ bg_thresh

lsst.scarlet.lite.models.free_form.FreeFormComponent.bg_thresh = bg_thresh

Definition at line 164 of file free_form.py.

◆ floor

lsst.scarlet.lite.models.free_form.FreeFormComponent.floor = floor

Definition at line 165 of file free_form.py.

◆ min_area

lsst.scarlet.lite.models.free_form.FreeFormComponent.min_area = min_area

Definition at line 167 of file free_form.py.

◆ model

lsst.scarlet.lite.models.free_form.FreeFormComponent.model

Definition at line 174 of file free_form.py.

◆ peaks

lsst.scarlet.lite.models.free_form.FreeFormComponent.peaks = peaks

Definition at line 166 of file free_form.py.


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