scarlet.detect

class scarlet.detect.QuadTreeRegion(bbox, capacity=5, sub_regions=None, boxes=None, depth=0, detect=None)[source]

Bases: object

An implementation of a QuadTree that inserts boxes as opposed to points

Methods

add(other_box)

Add a box to the region.

add_footprints(footprints)

Add bounding boxes for a list of scarlet footprints.

query(other_box)

Return all of the boxes that overlap with a given box

split()

Sub-divide this region into 4 sub-regions.

add(other_box)[source]

Add a box to the region.

Parameters
other_box: `scarlet.bbox.Box`

The box to add to the region.

add_footprints(footprints)[source]

Add bounding boxes for a list of scarlet footprints.

Parameters
footprints: `list` of `scarlet.detect_pybind11.Footprint`

A list of footprints detected by scarlet.

query(other_box)[source]

Return all of the boxes that overlap with a given box

Parameters
other_box: `scarlet.bbox.Box`

The box to use for the search. All boxes in this region or one of its sub-regions that overlap with other_box will be returned.

Returns
result: set of scarlet.bbox.BoundingBox

The set of all boxes that overlap with other_box. We use a set instead of a list because some boxes may be in multiple sub-regions and we only want to have one copy of each.

split()[source]

Sub-divide this region into 4 sub-regions.

class scarlet.detect.SingleScaleStructure(scale, footprint)[source]

Bases: object

A structure at a single scale with quadtrees to lookup child boxes at different scales.

Using the terminology from Starck et al. 2011 we refere to a connected set of pixels with a common set of peaks at a single scale as a structure.

Attributes
scale: `int`

The wavelet scale of this structure.

footprint: `scarlet.detect_pybind11.Footprint`

The footprint of this structure at its given scale.

bbox: `scarlet.bbox.Box`

The bounding box of this region.

peaks: `dict`: {`int`, `list` of `scarlet.detect_pybind11.Peak`}

The dictionary with each wavelet scale as a key with lists of `Peak`s as values.

Methods

add_footprint(scale, footprint)

Add a footprint to the strcuture

add_scale_tree(scale, tree)

Add all of the footprints from a region at a different scale that overlap with this structure.

add_footprint(scale, footprint)[source]

Add a footprint to the strcuture

Parameters
scale: `int`

The scale of the footprint that is added.

`footprint`: `scarlet.detect_pybind11.Footprint`

The footprint to be added to the structure.

add_scale_tree(scale, tree)[source]

Add all of the footprints from a region at a different scale that overlap with this structure.

Parameters
scale: `int`

The scale of the tree that is added.

tree: `QuadTreeRegion`

The quad tree that is added at scale scale.

property all_peaks

All of the peaks contained in this Structure

Returns
all_peaks: set

The set of all peaks in the structure, including those at different scales.

scarlet.detect.bounds_to_bbox(bounds)[source]

Convert the bounds of a Footprint into a Box

Parameters
bounds: `tuple` of `(bottom, top, left, right)`

The bounds of the Footprint

scarlet.detect.box_intersect(box1, box2)[source]

Check if two boxes overlap

Parameters
box1, box2: `scarlet.bbox.Box`

The boxes to check for overlap

Returns
overlap: bool

True when the two boxes overlap

scarlet.detect.draw_box(box, ax, color)[source]

Draw a box on an axis

Parameters
box: `scarlet.bbox.Box`

The box to draw

ax: `matplotlib.Axis`

The axis on which to draw the box

color: `str`

The name of the color to use for the box

scarlet.detect.draw_footprint_box(footprint, ax)[source]

Draw a scarlet Footprint in a plot

Parameters
footprint: `scarlet.detect_pybind11.Footprint`

The footprint to draw

ax: `matplotlib.Axis`

The axis on which to draw the box

scarlet.detect.draw_region(region, ax)[source]

Draw a QuadTreeRegion in a plot

Parameters
region: `QuadTreeRegion`

The region to draw

ax: `matplotlib.Axis`

The axis on which to draw the box

scarlet.detect.footprint_intersect(footprint1, box1, footprint2, box2)[source]

Check if two footprints overlap

Parameters
box1, box2: `scarlet.bbox.Box`

The boxes of the footprints to check for overlap.

footprint1, footprint2: `scarlet.detect_pybind11.Footprint`

The boolean mask for the two footprints.

Returns
overlap: bool

True when the two footprints overlap.

scarlet.detect.get_blend_structures(detect)[source]

Generate a set of structures for the 3rd wavelet scale

This is a convenience function to generate a hierarchy connecting all of the footprints at lower scales to the higher scale structures that overlap with them.

scarlet.detect.get_detect_wavelets(images, variance, scales=3)[source]

Get an array of wavelet coefficents to use for detection

Parameters images: array-like

The array of images with shape (bands, Ny, Nx) for which to calculate wavelet coefficients.

variance: array-like

An array of variances with the same shape as images.

scales: int

The maximum number of wavelet scales to use. Note that the result will have scales+1 total arrays, where the last set of coefficients is the image of all flux with frequency greater than the last wavelet scale.

scarlet.detect.get_wavelets(images, variance, scales=3)[source]

Calculate wavelet coefficents given a set of images and their variances

Parameters
images: array-like

The array of images with shape (bands, Ny, Nx) for which to calculate wavelet coefficients.

variance: array-like

An array of variances with the same shape as images.

scales: `int`

The maximum number of wavelet scales to use. Note that the result will have scales+1 total arrays, where the last set of coefficients is the image of all flux with frequency greater than the last wavelet scale.

Returns
coeffs: numpy.ndarray

The array of coefficents with shape (scales+1, bands, Ny, Nx).