LSST Applications 29.1.0,g0fba68d861+6b120c4394,g123d84c11c+8c5ae1fdc5,g1ec0fe41b4+191117f6ec,g1fd858c14a+c8450ae71a,g3533f9d6cb+a04f9ee0ab,g35bb328faa+8c5ae1fdc5,g3f0dcc2b1b+7df08700bd,g4178042926+b4254969db,g44ba364a48+04455b336b,g53246c7159+8c5ae1fdc5,g60b5630c4e+a04f9ee0ab,g663da51e9b+b05e6e1875,g67b6fd64d1+250bf6acd3,g78460c75b0+7e33a9eb6d,g786e29fd12+668abc6043,g8352419a5c+8c5ae1fdc5,g87e3079a85+d3fa38de54,g8852436030+cd899e2626,g89139ef638+250bf6acd3,g93a033419f+31ead11197,g989de1cb63+250bf6acd3,g9f33ca652e+f6053ecf14,ga1e959baac+5fbc491aed,ga2f891cd6c+a04f9ee0ab,gabe3b4be73+8856018cbb,gabf8522325+1f7e6d67b9,gac2eed3f23+250bf6acd3,gb1101e3267+0c331e9486,gb89ab40317+250bf6acd3,gcf25f946ba+cd899e2626,gd107969129+8964d67276,gd6cbbdb0b4+6bbecc8878,gde0f65d7ad+d65f9e019a,ge278dab8ac+eb3bbeb12f,ge410e46f29+250bf6acd3,gf5e32f922b+8c5ae1fdc5,gff02db199a+747430a128,gffe7e49bb4+a04f9ee0ab
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)
 

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 66 of file component.py.

66 def bands(self) -> tuple:
67 """The bands in the component model"""
68 return self._bands
69

◆ bbox()

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

Definition at line 61 of file component.py.

61 def bbox(self) -> Box:
62 """The bounding box that contains the component in the full image"""
63 return self._bbox
64

◆ 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

◆ 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 57 of file component.py.

◆ _bbox

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

Definition at line 58 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: