JPSS_ATMS#

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

JPSS ATMS (Advanced Technology Microwave Sounder) Level 1 BUFR brightness-temperature observations served from NOAA Open Data on AWS.

Each BUFR file contains a single scan line with 96 cross-track field-of-view (FOV) positions and 22 microwave channels. The returned DataFrame has one row per FOV per channel, following the same convention as UFSObsSat.

ATMS has 22 channels spanning 23.8–183.31 GHz. The channel_index column (1–22) identifies each channel:

ATMS Channel Specification#

Channel

Frequency (GHz)

Primary Sensitivity

1

23.8

Window / water-vapour (surface)

2

31.4

Window (surface emissivity, cloud liquid water)

3

50.3

Oxygen (lower troposphere temperature)

4

51.76

Oxygen (lower troposphere temperature)

5

52.8

Oxygen (troposphere temperature)

6

53.596

Oxygen (troposphere temperature)

7

54.40

Oxygen (mid-troposphere temperature)

8

54.94

Oxygen (mid-troposphere temperature)

9

55.50

Oxygen (upper troposphere temperature)

10

57.29 (fO1)

Oxygen (tropopause temperature)

11

57.29 (fO2)

Oxygen (lower stratosphere temperature)

12

57.29 (fO3)

Oxygen (stratosphere temperature)

13

57.29 (fO4)

Oxygen (stratosphere temperature)

14

57.29 (fO5)

Oxygen (upper stratosphere temperature)

15

57.29 (fO6)

Oxygen (upper stratosphere temperature)

16

88.20

Window (precipitation, sea ice)

17

165.5

Window (precipitation, ice cloud)

18

183.31 (fH1)

Water-vapour (upper troposphere humidity)

19

183.31 (fH2)

Water-vapour (mid-troposphere humidity)

20

183.31 (fH3)

Water-vapour (mid-troposphere humidity)

21

183.31 (fH4)

Water-vapour (lower troposphere humidity)

22

183.31 (fH5)

Water-vapour (lower troposphere humidity)

Channels 10–15 share the 57.29 GHz oxygen-absorption line but use different passband offsets (fO1–fO6), giving each a distinct altitude weighting function. Channels 18–22 similarly share 183.31 GHz with different offsets (fH1–fH5) for water-vapour profiling at different altitudes.

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 default None, which queries all valid satellites.

  • 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 BUFR 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

Warning

This is a remote data source and can potentially download a large amount of data to your local machine for large requests.

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

Fetch ATMS 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. ["atms"]).

  • 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

classmethod available(time)[source]#

Check whether data is available for a given time.

Parameters:

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

Return type:

bool