MetOpMHS#

class earth2studio.data.MetOpMHS(
satellite=None,
time_tolerance=numpy.timedelta64(1, 'h'),
cache=True,
verbose=True,
async_timeout=600,
)[source]#
Global

EUMETSAT MetOp MHS Level 1B brightness temperature observations.

Microwave Humidity Sounder (MHS) is a 5-channel cross-track scanning microwave radiometer aboard the MetOp series of polar-orbiting satellites. It measures calibrated scene radiances at frequencies from 89 GHz to 190.3 GHz, providing humidity profiles from the surface to the upper troposphere.

MHS is the successor to AMSU-B and operates on MetOp-A (decommissioned 2021), MetOp-B, and MetOp-C. It will be replaced by the Microwave Sounder (MWS) on the MetOp Second Generation (MetOp-SG) satellites.

The returned DataFrame has one row per FOV per channel, following the same convention as UFSObsSat. The channel_index column (1–5) identifies each channel.

This data source downloads Level 1B products from the EUMETSAT Data Store and parses the EPS native binary format to extract brightness temperatures, geolocation, and viewing geometry for each field of view (FOV).

Each scan line contains 90 FOVs with ~16 km spatial resolution at nadir. A typical orbit pass contains ~2300 scan lines.

Parameters:
  • satellite (str, optional) – Satellite platform filter for product search. One of “metop-a”, “metop-b”, “metop-c”, or None (all available). By default None.

  • 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(1, ‘h’)

  • cache (bool, optional) – Cache data source on local memory, by default True

  • verbose (bool, optional) – Print download progress and info, by default True

  • async_timeout (int, optional) – Time in seconds after which download will be cancelled if not finished, by default 600

Warning

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

Note

Requires EUMETSAT Data Store credentials. Set the following environment variables:

  • EUMETSAT_CONSUMER_KEY: Your EUMETSAT API consumer key

  • EUMETSAT_CONSUMER_SECRET: Your EUMETSAT API consumer secret

Register at https://eoportal.eumetsat.int/ to obtain credentials.

Note

Binary format constants (MDR offsets, record size) are from the EUMETSAT MHS Product Format Specification (TEN/97-229, version 10) and verified against the MetopDatasets.jl CSV format descriptions.

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

Function to get MHS brightness temperature observations.

Parameters:
  • time (datetime | list[datetime] | TimeArray) – Timestamps to return data for (UTC).

  • variable (str | list[str] | VariableArray) – Variables to return. Must be in MetOpMHSLexicon (e.g. ["mhs"]).

  • fields (str | list[str] | pa.Schema | None, optional) – Fields to include in output, by default None (all fields).

Returns:

MHS observation data in long format with one row per FOV per channel.

Return type:

pd.DataFrame

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

Async function to get MHS data.

Parameters:
  • time (datetime | list[datetime] | TimeArray) – Timestamps to return data for (UTC).

  • variable (str | list[str] | VariableArray) – Variables to return. Must be in MetOpMHSLexicon (e.g. ["mhs"]).

  • fields (str | list[str] | pa.Schema | None, optional) – Fields to include in output, by default None (all fields).

Returns:

MHS observation data in long format with one row per FOV per channel.

Return type:

pd.DataFrame