LSST Applications g0603fd7c41+022847dfd1,g0aad566f14+f45185db35,g180d380827+40e913b07a,g2079a07aa2+86d27d4dc4,g2305ad1205+696e5f3872,g2bbee38e9b+047b288a59,g337abbeb29+047b288a59,g33d1c0ed96+047b288a59,g3a166c0a6a+047b288a59,g3d1719c13e+f45185db35,g3de15ee5c7+5201731f0d,g487adcacf7+19f9b77d7d,g50ff169b8f+96c6868917,g52b1c1532d+585e252eca,g591dd9f2cf+248b16177b,g63cd9335cc+585e252eca,g858d7b2824+f45185db35,g88963caddf+0cb8e002cc,g991b906543+f45185db35,g99cad8db69+1747e75aa3,g9b9dfce982+78139cbddb,g9ddcbc5298+9a081db1e4,ga1e77700b3+a912195c07,gae0086650b+585e252eca,gb0e22166c9+60f28cb32d,gb3a676b8dc+b4feba26a1,gb4b16eec92+f82f04eb54,gba4ed39666+c2a2e4ac27,gbb8dafda3b+215b19b0ab,gc120e1dc64+b0284b5341,gc28159a63d+047b288a59,gc3e9b769f7+dcad4ace9a,gcf0d15dbbd+78139cbddb,gdaeeff99f8+f9a426f77a,ge79ae78c31+047b288a59,w.2024.19
LSST Data Management Base Package
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | List of all members
lsst.scarlet.lite.io.ScarletBlendData Class Reference

Public Member Functions

dict as_dict (self)
 
ScarletBlendData from_dict (cls, dict data, DTypeLike dtype=np.float32)
 
Blend minimal_data_to_blend (self, np.ndarray model_psf, DTypeLike dtype)
 
Blend to_blend (self, Observation observation)
 

Static Public Member Functions

ScarletBlendData from_blend (Blend blend, tuple[int, int] psf_center)
 

Public Attributes

 origin
 
 shape
 
 psf_center
 
 bands
 

Static Public Attributes

tuple origin [int, int]
 
tuple shape [int, int]
 
dict sources [int, ScarletSourceData]
 
tuple psf_center [float, float]
 
np psf .ndarray
 
tuple bands [str]
 

Detailed Description

Data for an entire blend.

Attributes
----------
origin:
    The lower bound of the blend's bounding box.
shape:
    The shape of the blend's bounding box.
sources:
    Data for the sources contained in the blend,
    indexed by the source id.
psf_center:
    The location used for the center of the PSF for
    the blend.
psf:
    The PSF of the observation.
bands : `list` of `str`
    The names of the bands.
    The order of the bands must be the same as the order of
    the multiband model arrays, and SEDs.

Definition at line 228 of file io.py.

Member Function Documentation

◆ as_dict()

dict lsst.scarlet.lite.io.ScarletBlendData.as_dict ( self)
Return the object encoded into a dict for JSON serialization

Returns
-------
result:
    The object encoded as a JSON compatible dict

Definition at line 258 of file io.py.

258 def as_dict(self) -> dict:
259 """Return the object encoded into a dict for JSON serialization
260
261 Returns
262 -------
263 result:
264 The object encoded as a JSON compatible dict
265 """
266 result = {
267 "origin": self.origin,
268 "shape": self.shape,
269 "psf_center": self.psf_center,
270 "psf_shape": self.psf.shape,
271 "psf": tuple(self.psf.flatten().astype(float)),
272 "sources": {bid: source.as_dict() for bid, source in self.sources.items()},
273 "bands": self.bands,
274 }
275 return result
276
std::vector< SchemaItem< Flag > > * items

◆ from_blend()

ScarletBlendData lsst.scarlet.lite.io.ScarletBlendData.from_blend ( Blend blend,
tuple[int, int] psf_center )
static
Convert a scarlet lite blend into a persistable data object

Parameters
----------
blend:
    The blend that is being persisted.
psf_center:
    The center of the PSF.

Returns
-------
blend_data:
    The data model for a single blend.

Definition at line 392 of file io.py.

392 def from_blend(blend: Blend, psf_center: tuple[int, int]) -> ScarletBlendData:
393 """Convert a scarlet lite blend into a persistable data object
394
395 Parameters
396 ----------
397 blend:
398 The blend that is being persisted.
399 psf_center:
400 The center of the PSF.
401
402 Returns
403 -------
404 blend_data:
405 The data model for a single blend.
406 """
407 sources = {}
408 for source in blend.sources:
409 components = []
410 factorized = []
411 for component in source.components:
412 if type(component) is FactorizedComponent:
413 factorized_data = ScarletFactorizedComponentData(
414 origin=component.bbox.origin, # type: ignore
415 peak=component.peak, # type: ignore
416 spectrum=component.spectrum,
417 morph=component.morph,
418 )
419 factorized.append(factorized_data)
420 else:
421 component_data = ScarletComponentData(
422 origin=component.bbox.origin, # type: ignore
423 peak=component.peak, # type: ignore
424 model=component.get_model().data,
425 )
426 components.append(component_data)
427 source_data = ScarletSourceData(
428 components=components,
429 factorized_components=factorized,
430 peak_id=source.peak_id, # type: ignore
431 )
432 sources[source.record_id] = source_data # type: ignore
433
434 blend_data = ScarletBlendData(
435 origin=blend.bbox.origin, # type: ignore
436 shape=blend.bbox.shape, # type: ignore
437 sources=sources,
438 psf_center=psf_center,
439 psf=blend.observation.psfs,
440 bands=blend.observation.bands, # type: ignore
441 )
442
443 return blend_data
444
445

◆ from_dict()

ScarletBlendData lsst.scarlet.lite.io.ScarletBlendData.from_dict ( cls,
dict data,
DTypeLike dtype = np.float32 )
Reconstruct `ScarletBlendData` from JSON compatible
dict.

Parameters
----------
data:
    Dictionary representation of the object
dtype:
    Datatype of the resulting model.

Returns
-------
result:
    The reconstructed object

Definition at line 278 of file io.py.

278 def from_dict(cls, data: dict, dtype: DTypeLike = np.float32) -> ScarletBlendData:
279 """Reconstruct `ScarletBlendData` from JSON compatible
280 dict.
281
282 Parameters
283 ----------
284 data:
285 Dictionary representation of the object
286 dtype:
287 Datatype of the resulting model.
288
289 Returns
290 -------
291 result:
292 The reconstructed object
293 """
294 psf_shape = data["psf_shape"]
295 return cls(
296 origin=tuple(data["origin"]), # type: ignore
297 shape=tuple(data["shape"]), # type: ignore
298 psf_center=tuple(data["psf_center"]), # type: ignore
299 psf=np.array(data["psf"]).reshape(psf_shape).astype(dtype),
300 sources={
301 int(bid): ScarletSourceData.from_dict(source, dtype=dtype)
302 for bid, source in data["sources"].items()
303 },
304 bands=tuple(data["bands"]), # type: ignore
305 )
306

◆ minimal_data_to_blend()

Blend lsst.scarlet.lite.io.ScarletBlendData.minimal_data_to_blend ( self,
np.ndarray model_psf,
DTypeLike dtype )
Convert the storage data model into a scarlet lite blend

Parameters
----------
model_psf:
    PSF in model space (usually a nyquist sampled circular Gaussian).
dtype:
    The data type of the model that is generated.

Returns
-------
blend:
    A scarlet blend model extracted from persisted data.

Definition at line 307 of file io.py.

307 def minimal_data_to_blend(self, model_psf: np.ndarray, dtype: DTypeLike) -> Blend:
308 """Convert the storage data model into a scarlet lite blend
309
310 Parameters
311 ----------
312 model_psf:
313 PSF in model space (usually a nyquist sampled circular Gaussian).
314 dtype:
315 The data type of the model that is generated.
316
317 Returns
318 -------
319 blend:
320 A scarlet blend model extracted from persisted data.
321 """
322 model_box = Box(self.shape, origin=(0, 0))
323 observation = Observation.empty(
324 bands=self.bands,
325 psfs=self.psf,
326 model_psf=model_psf,
327 bbox=model_box,
328 dtype=dtype,
329 )
330 return self.to_blend(observation)
331

◆ to_blend()

Blend lsst.scarlet.lite.io.ScarletBlendData.to_blend ( self,
Observation observation )
Convert the storage data model into a scarlet lite blend

Parameters
----------
observation:
    The observation that contains the blend.
    If `observation` is ``None`` then an `Observation` containing
    no image data is initialized.

Returns
-------
blend:
    A scarlet blend model extracted from persisted data.

Definition at line 332 of file io.py.

332 def to_blend(self, observation: Observation) -> Blend:
333 """Convert the storage data model into a scarlet lite blend
334
335 Parameters
336 ----------
337 observation:
338 The observation that contains the blend.
339 If `observation` is ``None`` then an `Observation` containing
340 no image data is initialized.
341
342 Returns
343 -------
344 blend:
345 A scarlet blend model extracted from persisted data.
346 """
347 sources = []
348 for source_id, source_data in self.sources.items():
349 components: list[Component] = []
350 for component_data in source_data.components:
351 bbox = Box(component_data.shape, origin=component_data.origin)
352 model = component_data.model
353 if component_data.peak is None:
354 peak = None
355 else:
356 peak = (int(np.round(component_data.peak[0])), int(np.round(component_data.peak[0])))
357 component = ComponentCube(
358 bands=observation.bands,
359 bbox=bbox,
360 model=Image(model, yx0=bbox.origin, bands=observation.bands), # type: ignore
361 peak=peak,
362 )
363 components.append(component)
364 for factorized_data in source_data.factorized_components:
365 bbox = Box(factorized_data.shape, origin=factorized_data.origin)
366 # Add dummy values for properties only needed for
367 # model fitting.
368 spectrum = FixedParameter(factorized_data.spectrum)
369 morph = FixedParameter(factorized_data.morph)
370 # Note: since we aren't fitting a model, we don't need to
371 # set the RMS of the background.
372 # We set it to NaN just to be safe.
373 factorized = FactorizedComponent(
374 bands=observation.bands,
375 spectrum=spectrum,
376 morph=morph,
377 peak=tuple(int(np.round(p)) for p in factorized_data.peak), # type: ignore
378 bbox=bbox,
379 bg_rms=np.full((len(observation.bands),), np.nan),
380 )
381 components.append(factorized)
382
383 source = Source(components=components)
384 # Store identifiers for the source
385 source.record_id = source_id # type: ignore
386 source.peak_id = source_data.peak_id # type: ignore
387 sources.append(source)
388
389 return Blend(sources=sources, observation=observation)
390

Member Data Documentation

◆ bands [1/2]

tuple lsst.scarlet.lite.io.ScarletBlendData.bands [str]
static

Definition at line 256 of file io.py.

◆ bands [2/2]

lsst.scarlet.lite.io.ScarletBlendData.bands

Definition at line 273 of file io.py.

◆ origin [1/2]

tuple lsst.scarlet.lite.io.ScarletBlendData.origin [int, int]
static

Definition at line 251 of file io.py.

◆ origin [2/2]

lsst.scarlet.lite.io.ScarletBlendData.origin

Definition at line 267 of file io.py.

◆ psf

np lsst.scarlet.lite.io.ScarletBlendData.psf .ndarray
static

Definition at line 255 of file io.py.

◆ psf_center [1/2]

tuple lsst.scarlet.lite.io.ScarletBlendData.psf_center [float, float]
static

Definition at line 254 of file io.py.

◆ psf_center [2/2]

lsst.scarlet.lite.io.ScarletBlendData.psf_center

Definition at line 269 of file io.py.

◆ shape [1/2]

tuple lsst.scarlet.lite.io.ScarletBlendData.shape [int, int]
static

Definition at line 252 of file io.py.

◆ shape [2/2]

lsst.scarlet.lite.io.ScarletBlendData.shape

Definition at line 268 of file io.py.

◆ sources

dict lsst.scarlet.lite.io.ScarletBlendData.sources [int, ScarletSourceData]
static

Definition at line 253 of file io.py.


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