JPSS_CRIS#
- class earth2studio.data.JPSS_CRIS(
- satellites=None,
- subsample=1,
- apodize=True,
- time_tolerance=numpy.timedelta64(10, 'm'),
- cache=True,
- verbose=True,
- async_timeout=600,
- max_workers=24,
- retries=3,
- sensor_indices=None,
- Global
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_indicesprojection, this yields 2211 science channels; settingapodize=Falseinstead retains all 2223 unapodized channels, including 12 guard channels withsensor_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=Noneandapodize=True(default), guard channels are trimmed and the output has 2211 channels with contiguoussensor_index1–2211.scan_line,field_of_regard, andfield_of_viewpreserve the one-based source-array position of each footprint.scan_lineis local to its source granule.scan_angleis the nominal CrIS look angle derived from FOR/FOV geometry, whilesatellite_zapreserves the independently measuredSatelliteZenithAnglefrom the GEO product.With
sensor_indices=Noneandapodize=False, the returnedDataFramehas one row per FOV per channel including guard channels. Thesensor_indexcolumn uses the GSIsensor_channumbering 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 arraysGEO (
GCRSO_*.h5): geolocation (lat, lon, angles, time)
- Parameters:
satellites (list[str] | None, optional) – 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, optional) – 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, optional) –
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, optional) – 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, optional) – Cache downloaded HDF5 files locally, by default True
verbose (bool, optional) – Show download progress bars, by default True
async_timeout (int, optional) – Total timeout in seconds for the async fetch, by default 600
max_workers (int, optional) – Maximum number of concurrent S3 fetch tasks, by default 24
retries (int, optional) – Per-file retry count on transient I/O failures, by default 3
sensor_indices (list[int] | np.ndarray | None, optional) – 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__(time, variable, fields=None)[source]#
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] | pa.Schema | None, optional) – Subset of schema fields to include, by default None (all).
- Returns:
Long-format DataFrame with one row per FOV per channel.
- Return type:
pd.DataFrame
- async fetch(time, variable, fields=None)[source]#
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] | pa.Schema | None, optional) – Subset of schema fields to include, by default None.
- Returns:
Long-format DataFrame.
- Return type:
pd.DataFrame