Source code for ecmwf_models.era5.img

# -*- coding: utf-8 -*-
"""
This module contains ERA5/ERA5-Land specific child classes of the netcdf
and grib base classes, that are used for reading all ecmwf products.
"""

from typing import Optional, Collection
from typing_extensions import Literal
from pygeogrids.grids import CellGrid

from ecmwf_models.utils import assert_product
from ecmwf_models.interface import ERANcImg, ERANcDs, ERAGrbImg, ERAGrbDs


[docs]class ERA5NcImg(ERANcImg): def __init__( self, filename: str, parameter: Collection[str] = None, product: Literal['era5', 'era5-land'] = 'era5', subgrid: Optional[CellGrid] = None, mask_seapoints: Optional[bool] = False, array_1D: Optional[bool] = False, ): """ Reader for a single ERA5 netcdf image file. Parameters ---------- filename: str Path to the image file to read. parameter: list[str] or str, optional (default: None) Name of parameters to read from the image file. None means all parameter product: str, optional (default: 'era5') What era5 product, either era5 or era5-land. subgrid: pygeogrids.CellGrid, optional (default: None) Read only data for points of this grid and not global values. mask_seapoints : bool, optional (default: False) Read the land-sea mask to mask points over water and set them to nan. This option needs the 'lsm' parameter to be in the file! array_1D: bool, optional (default: False) Read data as list, instead of 2D array, used for reshuffling. """ super(ERA5NcImg, self).__init__( filename=filename, product=assert_product(product.lower()), parameter=parameter, subgrid=subgrid, mask_seapoints=mask_seapoints, array_1D=array_1D, )
[docs]class ERA5NcDs(ERANcDs): """ Reader for a stack of ERA5 netcdf image files. Parameters ---------- root_path: str Path to the image files to read. parameter: list[str] or str, optional (default: None) Name of parameters to read from the image file. None means all parameter product: str, optional (default: 'era5') What era5 product, either `era5` or `era5-land`. h_steps : list, optional (default: (0,6,12,18)) List of full hours to read images for. subgrid: pygeogrids.CellGrid, optional (default: None) Read only data for points of this grid and not global values. mask_seapoints : bool, optional (default: False) Read the land-sea mask to mask points over water and set them to nan. This option needs the 'lsm' parameter to be in the file! array_1D: bool, optional (default: False) Read data as list, instead of 2D array, used for reshuffling. """ def __init__( self, root_path: str, parameter: Collection[str] = None, product: str = 'era5', h_steps: Collection[int] = (0, 6, 12, 18), subgrid: Optional[CellGrid] = None, mask_seapoints: Optional[bool] = False, array_1D: Optional[bool] = False, ): super(ERA5NcDs, self).__init__( root_path=root_path, product=assert_product(product.lower()), parameter=parameter, subgrid=subgrid, h_steps=h_steps, array_1D=array_1D, mask_seapoints=mask_seapoints, )
[docs]class ERA5GrbImg(ERAGrbImg): def __init__( self, filename: str, parameter: Collection[str] = None, subgrid: Optional[CellGrid] = None, mask_seapoints: Optional[bool] = False, array_1D=False, ): """ Reader for a single ERA5 grib image file. Parameters ---------- filename: str Path to the image file to read. parameter: list[str] or str, optional (default: None) Name of parameters to read from the image file. None means all parameter subgrid: pygeogrids.CellGrid, optional (default: None) Read only data for points of this grid and not global values. mask_seapoints : bool, optional (default: False) Read the land-sea mask to mask points over water and set them to nan. This option needs the 'lsm' parameter to be in the file! array_1D: bool, optional (default: False) Read data as list, instead of 2D array, used for reshuffling. """ super(ERA5GrbImg, self).__init__( filename=filename, product="era5", parameter=parameter, subgrid=subgrid, mask_seapoints=mask_seapoints, array_1D=array_1D, )
[docs]class ERA5GrbDs(ERAGrbDs): def __init__( self, root_path: str, parameter: Collection[str] = None, h_steps: Collection[int] = (0, 6, 12, 18), product: str = "era5", subgrid: Optional[CellGrid] = None, mask_seapoints: Optional[bool] = False, array_1D: Optional[bool] = False, ): """ Reader for a stack of ERA5 grib image file. Parameters ---------- root_path: str Path to the image files to read. parameter: list[str] or str, optional (default: None) Name of parameters to read from the image file. None means all parameter h_steps : list, optional (default: [0,6,12,18]) List of full hours to read images for. product: str, optional (default: 'era5') What era5 product, either `era5` or `era5-land`. subgrid: pygeogrids.CellGrid, optional (default: None) Read only data for points of this grid and not global values. mask_seapoints : bool, optional (default: False) Read the land-sea mask to mask points over water and set them to nan. This option needs the 'lsm' parameter to be in the file! array_1D: bool, optional (default: False) Read data as list, instead of 2D array, used for reshuffling. """ super(ERA5GrbDs, self).__init__( root_path=root_path, product=assert_product(product.lower()), parameter=parameter, subgrid=subgrid, h_steps=h_steps, mask_seapoints=mask_seapoints, array_1D=array_1D, )