NNJAObsSat#

class earth2studio.data.NNJAObsSat(
time_tolerance=numpy.timedelta64(10, 'm'),
satellites=None,
cache=True,
verbose=True,
async_timeout=600,
async_workers=8,
decode_workers=8,
retries=3,
)[source]#
Global

NNJA historical NCEP aggregate microwave satellite observations.

This source reads the NCEP satellite ATMS, MHS, AMSU-A, and AMSU-B BUFR products from the NNJA archive. It returns one long-format row per finite encoded channel value. sensor_index is the physical CHNM channel number, not a dense index into a selected channel list.

atms returns the encoded 22-channel TMBR scene brightness temperature. atms_antenna_temperature returns the corresponding encoded TMANT antenna temperature. No conversion is performed between those two ATMS products.

mhs (5 channels), amsua (15 channels), and amsub (5 channels) return their normal-feed TMBR values as encoded by NCEP. For these legacy products the mnemonic does not always mean the same physical antenna-correction state. GSI treats normal-feed TMBR as antenna temperature for AMSU-A, AMSU-B, and MHS, except for NOAA-15/16, which its reader treats as already converted upstream. NOAA satingest independently confirms that exception for AMSU-A. The platform identity is retained so a downstream transform can apply the appropriate convention explicitly.

scan_position preserves the encoded one-based FOV number. scan_angle is the signed nominal instrument look angle derived from that FOV; negative values are on the first half of the scan. The encoded satellite_za remains the unsigned Earth-view zenith magnitude.

Parameters:
  • 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’).

  • satellites (list[str] | None, optional) – Satellite platforms to include. None includes every platform in the requested aggregate files.

  • cache (bool, optional) – Cache downloaded files in the local filesystem cache, by default True.

  • verbose (bool, optional) – Show progress bars, by default True.

  • async_timeout (int, optional) – Total timeout in seconds for the async fetch, by default 600.

  • async_workers (int, optional) – Maximum number of concurrent async fetch tasks, by default 8.

  • decode_workers (int, optional) – Number of parallel processes for BUFR message decoding. Set to 1 to disable multiprocessing, by default 8.

  • retries (int, optional) – Number of retry attempts per failed fetch task with exponential backoff, by default 3.

Warning

Aggregate cycle files contain millions of footprints. Broad long-format requests can require substantial memory. A finite archived value is not a QC decision: historical files may retain passive or degraded channels even when the aggregate carries no usable quality flag. Training pipelines should apply an explicit platform/channel validity policy.

__call__(time, variable, fields=None)[source]#

Fetch observations for a set of timestamps.

Parameters:
  • time (datetime | list[datetime] | ndarray[datetime64])

  • variable (str | list[str] | ndarray[str])

  • fields (str | list[str] | Schema | None)

Return type:

DataFrame

async fetch(time, variable, fields=None)[source]#

Async function to get data.

Parameters:
  • time (datetime | list[datetime] | ndarray[datetime64])

  • variable (str | list[str] | ndarray[str])

  • fields (str | list[str] | Schema | None)

Return type:

DataFrame

classmethod available(time)[source]#

Check if given date time is available.

Parameters:

time (datetime | np.datetime64) – Date time to check

Returns:

If date time is available

Return type:

bool