satpy.readers.pmw_channels_definitions module

Passive Microwave instrument and channel specific features.

class satpy.readers.pmw_channels_definitions.FrequencyBandBaseArithmetics[source]

Bases: object

Mixin class with basic frequency comparison operations.

classmethod convert(frq)[source]

Convert frq to this type if possible.

class satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBand(central: float, side: float, bandwidth: float, unit: str = 'GHz')[source]

Bases: FrequencyBandBaseArithmetics, FrequencyDoubleSideBandBase

The frequency double side band class.

The elements of the double-side-band type frequency band are the central frquency, the relative side band frequency (relative to the center - left and right) and their bandwidths, and optionally a unit (defaults to GHz). No clever unit conversion is done here, it’s just used for checking that two ranges are comparable.

Frequency Double Side Band is supposed to describe the special type of bands commonly used in humidty sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is advantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency.

Create new instance of FrequencyDoubleSideBandBase(central, side, bandwidth, unit)

static _check_band_contains_other(band, other_band)[source]

Check that a band contains another band.

A band is here defined as a tuple of a central frequency and a bandwidth.

distance(value)[source]

Get the distance to the double side band.

Determining the distance in frequency space between two double side bands can be quite ambiguous, as such bands are in effect a set of 2 narrow bands, one on each side of the absorption line. To keep it as simple as possible we have until further decided to set the distance between such two bands to infitiy if neither of them are contained in the other.

If the frequency entered is a single value and this frequency falls inside one of the side bands, the distance will be the minimum of the distances to the two outermost sides of the double side band. However, is such a single frequency value falls outside one of the two side bands, the distance will be set to infitiy.

If the frequency entered is a tuple the distance will either be 0 (if one is containde in the other) or infinity.

class satpy.readers.pmw_channels_definitions.FrequencyDoubleSideBandBase(central: float, side: float, bandwidth: float, unit: str = 'GHz')[source]

Bases: NamedTuple

Base class for a frequency double side band.

Frequency Double Side Band is supposed to describe the special type of bands commonly used in humidty sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is advantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency.

This is needed because of this bug: https://bugs.python.org/issue41629

Create new instance of FrequencyDoubleSideBandBase(central, side, bandwidth, unit)

_asdict()

Return a new dict which maps field names to their values.

_field_defaults = {'unit': 'GHz'}
_fields = ('central', 'side', 'bandwidth', 'unit')
classmethod _make(iterable)

Make a new FrequencyDoubleSideBandBase object from a sequence or iterable

_replace(**kwds)

Return a new FrequencyDoubleSideBandBase object replacing specified fields with new values

bandwidth: float

Alias for field number 2

central: float

Alias for field number 0

side: float

Alias for field number 1

unit: str

Alias for field number 3

class satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBand(central: float, side: float, sideside: float, bandwidth: float, unit: str = 'GHz')[source]

Bases: FrequencyBandBaseArithmetics, FrequencyQuadrupleSideBandBase

The frequency quadruple side band class.

The elements of the quadruple-side-band type frequency band are the central frquency, the relative (main) side band frequency (relative to the center - left and right), the sub-side band frequency (relative to the offset side-band(s)) and their bandwidths. Optionally a unit (defaults to GHz) may be specified. No clever unit conversion is done here, it’s just used for checking that two ranges are comparable.

Frequency Quadruple Side Band is supposed to describe the special type of bands commonly used in temperature sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is advantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency. But to avoid (CO2) absorption lines symmetrically positioned on each side of the main absorption band it is common to split the side bands in two ‘side-side’ bands.

Create new instance of FrequencyQuadrupleSideBandBase(central, side, sideside, bandwidth, unit)

distance(value)[source]

Get the distance to the quadruple side band.

Determining the distance in frequency space between two quadruple side bands can be quite ambiguous, as such bands are in effect a set of 4 narrow bands, two on each side of the main absorption band, and on each side, one on each side of the secondary absorption lines. To keep it as simple as possible we have until further decided to define the distance between such two bands to infinity if they are determined to be equal.

If the frequency entered is a single value, the distance will be the minimum of the distances to the two outermost sides of the quadruple side band.

If the frequency entered is a tuple or list and the two quadruple frequency bands are contained in each other (equal) the distance will always be zero.

class satpy.readers.pmw_channels_definitions.FrequencyQuadrupleSideBandBase(central: float, side: float, sideside: float, bandwidth: float, unit: str = 'GHz')[source]

Bases: NamedTuple

Base class for a frequency quadruple side band.

Frequency Quadruple Side Band is supposed to describe the special type of bands commonly used in temperature sounding from Passive Microwave Sensors. When the absorption band being observed is symmetrical it is advantageous (giving better NeDT) to sense in a band both right and left of the central absorption frequency. But to avoid (CO2) absorption lines symmetrically positioned on each side of the main absorption band it is common to split the side bands in two ‘side-side’ bands.

This is needed because of this bug: https://bugs.python.org/issue41629

Create new instance of FrequencyQuadrupleSideBandBase(central, side, sideside, bandwidth, unit)

_asdict()

Return a new dict which maps field names to their values.

_field_defaults = {'unit': 'GHz'}
_fields = ('central', 'side', 'sideside', 'bandwidth', 'unit')
classmethod _make(iterable)

Make a new FrequencyQuadrupleSideBandBase object from a sequence or iterable

_replace(**kwds)

Return a new FrequencyQuadrupleSideBandBase object replacing specified fields with new values

bandwidth: float

Alias for field number 3

central: float

Alias for field number 0

side: float

Alias for field number 1

sideside: float

Alias for field number 2

unit: str

Alias for field number 4

class satpy.readers.pmw_channels_definitions.FrequencyRange(central: float, bandwidth: float, unit: str = 'GHz')[source]

Bases: FrequencyBandBaseArithmetics, FrequencyRangeBase

The Frequency range class.

The elements of the range are central and bandwidth values, and optionally a unit (defaults to GHz). No clever unit conversion is done here, it’s just used for checking that two ranges are comparable.

This type is used for passive microwave sensors.

Create new instance of FrequencyRangeBase(central, bandwidth, unit)

distance(value)[source]

Get the distance from value.

class satpy.readers.pmw_channels_definitions.FrequencyRangeBase(central: float, bandwidth: float, unit: str = 'GHz')[source]

Bases: NamedTuple

Base class for frequency ranges.

This is needed because of this bug: https://bugs.python.org/issue41629

Create new instance of FrequencyRangeBase(central, bandwidth, unit)

_asdict()

Return a new dict which maps field names to their values.

_field_defaults = {'unit': 'GHz'}
_fields = ('central', 'bandwidth', 'unit')
classmethod _make(iterable)

Make a new FrequencyRangeBase object from a sequence or iterable

_replace(**kwds)

Return a new FrequencyRangeBase object replacing specified fields with new values

bandwidth: float

Alias for field number 1

central: float

Alias for field number 0

unit: str

Alias for field number 2

satpy.readers.pmw_channels_definitions._is_inside_interval(value, central, width)[source]