data.JPSS_CRIS¶
Global
Import path: earth2studio.data.JPSS_CRIS
Documentation¶
JPSS CrIS (Cross-track Infrared Sounder) Full Spectral Resolution (FSR) Level 1 brightness temperature observations served from NOAA Open Data on AWS.
Raw spectral radiance from the HDF5 SDR files is converted to Planck brightness temperature (K) at each channel center wavenumber. Reproducing a coefficient-based downstream product exactly also requires that product's release-pinned Planck constants.
By default, Hamming apodization is applied to the unapodized (sinc ILS)
radiance before the Planck inversion. This follows the NOAA three-point
radiance-space Hamming definition. The 2 guard channels at each end of each
band (4 per band, 12 total) are trimmed during apodization. With no
sensor_indices projection, this yields 2211 science channels; setting
apodize=False instead retains all 2223 unapodized channels, including
12 guard channels with sensor_index=0.
Each HDF5 granule contains a small number of scan lines, each with 30 Fields of Regard (FOR) and 9 Fields of View (FOV) per FOR (3x3 detector array). In FSR mode the instrument produces 2223 spectral channels:
- LWIR (9.14--15.38 ยตm, 650--1095 cm^-1): 717 channels at 0.625 cm^-1
- MWIR (5.71--8.26 ยตm, 1210--1750 cm^-1): 869 channels at 0.625 cm^-1
- SWIR (3.92--4.64 ยตm, 2155--2550 cm^-1): 637 channels at 0.625 cm^-1
With sensor_indices=None and apodize=True (default), guard channels
are trimmed and the output has 2211 channels with contiguous
sensor_index 1--2211.
scan_line, field_of_regard, and field_of_view preserve the
one-based source-array position of each footprint. scan_line is local
to its source granule. scan_angle is the nominal CrIS look angle derived
from FOR/FOV geometry, while satellite_za preserves the independently
measured SatelliteZenithAngle from the GEO product.
With sensor_indices=None and apodize=False, the returned
DataFrame has one row per FOV per channel including guard
channels. The sensor_index column uses the GSI sensor_chan numbering
convention:
- LWIR channels 0--1 (0-based) โ sensor_chan 0 (guard; not in GSI)
- LWIR channels 2--714 (0-based) โ sensor_chan 1--713
- LWIR channels 715--716 (0-based) โ sensor_chan 0 (guard; not in GSI)
- MWIR channels 717--718 (0-based) โ sensor_chan 0 (guard; not in GSI)
- MWIR channels 719--1583 (0-based) โ sensor_chan 714--1578
- MWIR channels 1584--1585 (0-based) โ sensor_chan 0 (guard; not in GSI)
- SWIR channels 1586--1587 (0-based) โ sensor_chan 0 (guard; not in GSI)
- SWIR channels 1588--2220 (0-based) โ sensor_chan 1579--2211
- SWIR channels 2221--2222 (0-based) โ sensor_chan 0 (guard; not in GSI)
Data is stored as paired HDF5 files on S3:
- SDR (
SCRIF_*.h5): spectral radiance arrays - GEO (
GCRSO_*.h5): geolocation (lat, lon, angles, time)
Parameters:
-
satellites(list[str] | None, default:None) โSatellite short-names to query. Valid values are
"n20"(NOAA-20),"n21"(NOAA-21), and"npp"(Suomi NPP). By defaultNone, which queries all valid satellites. -
subsample(int, default:1) โTemporal sub-sampling factor applied at the granule level. Each CrIS granule covers roughly 32 seconds of observations; setting
subsample=Nselects every N-th granule from the time-ordered list, reducing data volume by approximately that factor. By default 1 (no sub-sampling). -
apodize(bool, default:True) โApply Hamming apodization to the unapodized SDR radiance before converting to brightness temperature. When
True(default), the 3-tap Hamming kernel[0.23, 0.54, 0.23]is convolved per-band in radiance space and the 2 guard channels at each end of each band are trimmed, yielding the 2211-channel Hamming- apodized science grid before anysensor_indicesprojection. Set toFalseto retain the unapodized source grid; with no projection this contains all 2223 channels, including 12 guards withsensor_index=0.Note
NOAA's CrIS SDR ATBD defines Hamming apodization on the Nyquist grid as this exact three-point radiance-space operator. Exact brightness-temperature reproduction additionally requires the same Planck constants as the comparison product.
-
time_tolerance(TimeTolerance, default:timedelta64(10, 'm')) โTime tolerance window for filtering observations. Accepts a single value (symmetric +/- window) or a tuple (lower, upper) for asymmetric windows, by default, np.timedelta64(10, 'm').
-
cache(bool, default:True) โCache downloaded HDF5 files locally, by default True
-
verbose(bool, default:True) โShow download progress bars, by default True
-
async_timeout(int, default:600) โTotal timeout in seconds for the async fetch, by default 600
-
max_workers(int, default:24) โMaximum number of concurrent S3 fetch tasks, by default 24
-
retries(int, default:3) โPer-file retry count on transient I/O failures, by default 3
-
sensor_indices(list[int] | ndarray | None, default:None) โScience-channel
sensor_indexvalues to return (1--2211). Values are normalized to source order and must be unique. Projection occurs after full-band Hamming apodization (when enabled), but before Planck inversion and long-format expansion. By default None, all channels are returned; forapodize=Falsethis includes the 12 guard channels whosesensor_indexis 0.
Warning
This is a remote data source and can potentially download a large amount of data to your local machine for large requests. Each CrIS granule pair (SDR + GEO) is approximately 16 MB.
Note
Additional information on the data repository:
__call__ ¶
__call__(
time: datetime | list[datetime] | TimeArray,
variable: str | list[str] | VariableArray,
fields: str | list[str] | Schema | None = None,
) -> DataFrame
Fetch CrIS FSR brightness temperature observations.
Parameters:
-
time(datetime | list[datetime] | TimeArray) โTimestamps to return data for (UTC).
-
variable(str | list[str] | VariableArray) โVariable names to return (e.g.
["crisfsr"]). -
fields(str | list[str] | Schema | None, default:None) โSubset of schema fields to include, by default None (all).
Returns:
-
DataFrameโLong-format DataFrame with one row per FOV per channel.
fetch
async
¶
fetch(
time: datetime | list[datetime] | TimeArray,
variable: str | list[str] | VariableArray,
fields: str | list[str] | Schema | None = None,
) -> DataFrame
Async implementation of the data fetch.
Parameters:
-
time(datetime | list[datetime] | TimeArray) โTimestamps to return data for (UTC).
-
variable(str | list[str] | VariableArray) โVariable names to return.
-
fields(str | list[str] | Schema | None, default:None) โSubset of schema fields to include, by default None.
Returns:
-
DataFrameโLong-format DataFrame.
available
classmethod
¶
available(time: datetime | datetime64) -> bool
Check whether data is available for a given time.
Parameters:
-
time(datetime | datetime64) โDate-time to check.
Returns:
-
boolโ