Source code for categorize.disdrometer

"""Disdrometer module, containing the :class:`Disdrometer` class."""

from os import PathLike

import numpy.typing as npt

from cloudnetpy.datasource import DataSource
from cloudnetpy.exceptions import DisdrometerDataError
from cloudnetpy.utils import interpolate_1d


[docs] class Disdrometer(DataSource): """Disdrometer class, child of :class:`DataSource`. Args: full_path: Cloudnet Level 1b disdrometer file. """ def __init__(self, full_path: str | PathLike) -> None: super().__init__(full_path) self._init_rainfall_rate() def interpolate_to_grid(self, time_grid: npt.NDArray) -> None: for key, array in self.data.items(): method = "nearest" if key == "synop_WaWa" else "linear" self.data[key].data = interpolate_1d( self.time, array.data, time_grid, max_time=1, method=method ) def _init_rainfall_rate(self) -> None: keys = ("rainfall_rate", "n_particles", "synop_WaWa") for key in keys: if key not in self.dataset.variables: if key == "synop_WaWa": continue msg = f"variable {key} is missing" raise DisdrometerDataError(msg) self.append_data(self.dataset.variables[key][:], key)