Spitzer

Functions for working with Spitzer Space Telescope IRAC, MIPS, and IRS Peak-Up observations.

import kete
fovs = kete.spitzer.fetch_fovs(2010, band="IRAC1")

Spitzer Space Telescope functions.

Spitzer operated from August 2003 to January 2020. This module provides access to Spitzer IRAC, MIPS, and IRS Peak-Up Basic Calibrated Data (BCD) frames via the IRSA CAOM TAP service.

IRAC observed simultaneously at 3.6, 4.5, 5.8, and 8.0 um (channels 1-4) during the cryogenic phase; cryogen was exhausted in 2009, after which only channels 1 and 2 were available (the “warm mission”).

MIPS observed at 24, 70 and 160 um during the cryogenic phase (2003-2009).

IRS Peak-Up imaging observed at 13.3-18.7 um (Blue) and 18.5-26.0 um (Red) during the cryogenic phase (2003-2009).

Frame FOV metadata is queried from the IRSA caom.plane table (collection spitzer_sha) and cached locally as parquet files. Each FOV record includes the IRSA IBE artifact URI, so frames can be downloaded directly without additional network queries.

kete.spitzer.IRAC_BAND_WAVELENGTHS: list[float] = [3600.0, 4500.0, 5800.0, 8000.0]

Channel wavelengths in nm for IRAC channels 1-4 (3.6, 4.5, 5.8, 8.0 um). These are the wavelengths at which the zero-magnitude flux densities (Table 4.2) are defined. The nominal isophotal wavelengths from Table 4.3 depend on source spectrum and are slightly different (3544, 4487, 5710, 7841 nm). Source: IRAC Instrument Handbook v2.1, Tables 4.1 and 4.2.

kete.spitzer.IRAC_ZERO_MAGS: list[float] = [280.9, 179.7, 115.0, 64.9]

Vega-system zero-magnitude flux densities in Jy for IRAC channels 1-4. Values are evaluated at 3.6, 4.5, 5.8, and 8.0 um respectively. Magnitude is -2.5 * log10(flux_jy / zero_mag). Source: IRAC Instrument Handbook v2.1, Table 4.2.

kete.spitzer.IRS_PU_BAND_WAVELENGTHS: list[float] = [15800.0, 22300.0]

Effective wavelengths in nm for IRS Peak-Up Blue and Red. Source: IRS Instrument Handbook v5.0.

kete.spitzer.IRS_PU_ZERO_MAGS: list[float] = [15.6, 7.8]

Vega-system zero-magnitude flux densities in Jy for IRS Peak-Up Blue and Red. Derived from the Cohen (1999) Vega spectral model at the effective wavelengths.

kete.spitzer.MIPS_BAND_WAVELENGTHS: list[float] = [23680.0, 71420.0, 155900.0]

Effective wavelengths in nm for MIPS 24, 70, and 160 um bands. Source: MIPS Instrument Handbook (Rieke et al. 2004).

kete.spitzer.MIPS_ZERO_MAGS: list[float] = [7.17, 0.778, 0.159]

Vega-system zero-magnitude flux densities in Jy for MIPS 24, 70, and 160 um. Sources: Engelbracht et al. 2007 (24um), Gordon et al. 2007 (70um), Stansberry et al. 2007 (160um).

kete.spitzer.fetch_fovs(year, band=None)

Load all Spitzer IRAC and MIPS BCD FOVs for the specified mission year.

FOV metadata is queried from the IRSA caom.plane table (science observations only) and cached locally as a parquet file. The Spitzer spacecraft SPICE kernel must be loaded for the observer state to be computed.

Available bands:

  • 'IRAC1' (3.6 um), 'IRAC2' (4.5 um), 'IRAC3' (5.8 um), 'IRAC4' (8.0 um) – cryogenic 2003-2009, warm IRAC1/2 through 2020.

  • 'MIPS24' (24 um), 'MIPS70' (70 um), 'MIPS160' (160 um) – cryogenic phase only (2003-2009).

  • 'IRS Peak-Up Blue' (13.3-18.7 um), 'IRS Peak-Up Red' (18.5-26.0 um) – cryogenic phase only (2003-2009).

Parameters:
  • year (int) – Calendar year of observations, 2003 to 2020.

  • band (str | None) – If provided, only return FOVs for that band (e.g. 'IRAC1', 'MIPS24'). If None, all available bands are returned for the given year.

Returns:

FOVs sorted by observation time.

Return type:

list[SpitzerFrame]

kete.spitzer.fetch_frame(fov, as_fits=True, file_type='bcd')

Fetch a Spitzer FITS frame from the IRSA IBE archive.

The artifact URI stored on the FOV (populated by fetch_fovs()) is translated to an HTTPS download URL and the file is retrieved and cached locally. No additional network queries are made beyond the download itself.

To retrieve a product other than the primary BCD (e.g. uncertainty 'bunc'), the URI suffix _bcd.fits is substituted with _{file_type}.fits – the Spitzer naming convention guarantees all BCD-level products for the same frame share the same directory and base filename.

Parameters:
  • fov (SpitzerFrame) – A SpitzerFrame obtained from fetch_fovs().

  • as_fits (bool) – If True (default), return an Astropy FITS HDU. Otherwise return the path to the cached file.

  • file_type (str) – BCD product suffix to retrieve. Use 'bcd' for the flux-calibrated image or 'bunc' for the per-pixel uncertainty image.

Returns:

An astropy.io.fits.ImageHDU if as_fits=True, otherwise the local file path as a str.

Return type:

object

kete.spitzer.parse_poly(poly_hex)

Parse an EWKB (Extended Well-Known Binary) polygon from the CAOM poly column.

The IRSA CAOM tables return polygon footprints as hex-encoded EWKB with SRID 4326. Longitude is in the range [-180, 180] and is normalized to [0, 360] before constructing vectors.

The polygon has 5 vertices (4 corners plus a closing repeat of the first); only the first 4 are returned.

Parameters:

poly_hex (str) – Hex-encoded EWKB polygon string.

Returns:

Four corner vectors in ICRS (equatorial) coordinates.

Return type:

list[Vector]

kete.spitzer.resolve_artifact_url(uri, file_type='bcd')

Convert a CAOM artifact URI to an IRSA IBE download URL.

Parameters:
  • uri (str) – Artifact URI from the CAOM artifact table (CAOM HTTPS, ibe://data/, or plain https://).

  • file_type (str) – BCD product suffix. 'bcd' for the flux-calibrated image, 'bunc' for the per-pixel uncertainty image.

Returns:

Public HTTPS download URL.

Return type:

str