SpectralRegion

class specutils.SpectralRegion(*args)[source]

Bases: object

A SpectralRegion is a container class for regions (intervals) along a spectral coordinate.

This class can either represent a single contiguous region or a set of regions related to each other in some way (For example, a pair of continuum windows around a line or a doublet of lines).

Parameters:
*argsvariable

Either a single parameter or two parameters can be given:

  • 1 argument regioniter: An iterable of length-2 Quantity objects (or a single n x 2 Quantity object), where the length-2 dimension is lower, upper.

  • lower, upper: Each should be an Quantity object.

Notes

The subregions will be ordered based on the lower bound of each subregion.

Attributes Summary

bounds

Compute the lower and upper extent of the SpectralRegion.

lower

The most minimum value of the sub-regions.

subregions

An iterable over (lower, upper) tuples that are each of the sub-regions.

upper

The most maximum value of the sub-regions.

Methods Summary

from_center([center, width])

SpectralRegion class method that enables the definition of a SpectralRegion from the center and width rather than lower and upper bounds.

from_line_list(table[, width])

Generate a SpectralRegion instance from the QTable object returned from find_lines_derivative or find_lines_threshold.

invert(lower_bound, upper_bound)

Invert this spectral region.

invert_from_spectrum(spectrum)

Invert a SpectralRegion based on the extent of the input spectrum.

Attributes Documentation

bounds

Compute the lower and upper extent of the SpectralRegion.

lower

The most minimum value of the sub-regions.

The sub-regions are ordered based on the lower bound, so the lower bound for this instance is the lower bound of the first sub-region.

subregions

An iterable over (lower, upper) tuples that are each of the sub-regions.

upper

The most maximum value of the sub-regions.

The sub-regions are ordered based on the lower bound, but the upper bound might not be the upper bound of the last sub-region so we have to look for it.

Methods Documentation

classmethod from_center(center=None, width=None)[source]

SpectralRegion class method that enables the definition of a SpectralRegion from the center and width rather than lower and upper bounds.

Parameters:
centerScalar Quantity with pixel or any valid spectral_axis unit

The center of the spectral region.

widthScalar Quantity with pixel or any valid spectral_axis unit

The full width of the spectral region (upper bound - lower bound).

classmethod from_line_list(table, width=1)[source]

Generate a SpectralRegion instance from the QTable object returned from find_lines_derivative or find_lines_threshold.

Parameters:
tableQTable

List of found lines.

widthfloat

The width of the spectral line region. If not unit information is provided, it’s assumed to be the same units as used in the line list table.

Returns:
SpectralRegion

The spectral region based on the line list.

invert(lower_bound, upper_bound)[source]

Invert this spectral region. That is, given a set of sub-regions this object defines, create a new SpectralRegion such that the sub-regions are defined in the new one as regions not in this SpectralRegion.

Parameters:
lower_boundQuantity

The lower bound of the region. Can be scalar with pixel or any valid spectral_axis unit

upper_boundQuantity

The upper bound of the region. Can be scalar with pixel or any valid spectral_axis unit

Returns:
spectral_regionSpectralRegion

Spectral region of the non-selected regions

Notes

This is applicable if, for example, a SpectralRegion has sub-regions defined for peaks in a spectrum and then one wants to create a SpectralRegion defined as all the non-peaks, then one could use this function.

As an example, assume this SpectralRegion is defined as sr = SpectralRegion([(0.45*u.um, 0.6*u.um), (0.8*u.um, 0.9*u.um)]). If we call sr_invert = sr.invert(0.3*u.um, 1.0*u.um) then sr_invert will be SpectralRegion([(0.3*u.um, 0.45*u.um), (0.6*u.um, 0.8*u.um), (0.9*u.um, 1*u.um)])

invert_from_spectrum(spectrum)[source]

Invert a SpectralRegion based on the extent of the input spectrum.

See notes in SpectralRegion.invert() method.