wradlib.classify.classify_echo_fuzzy

wradlib.classify.classify_echo_fuzzy#

wradlib.classify.classify_echo_fuzzy(dat, *, weights=None, trpz=None)[source]#
wradlib.classify.classify_echo_fuzzy(obj: Dataset, dat, **kwargs)

Fuzzy echo classification and clutter identification based on polarimetric moments.

The implementation is based on [Vulpiani et al., 2012]. At the moment, it only distinguishes between meteorological and non-meteorological echos.

Changed in version 1.4.0: The implementation was extended using depolarization ratio (dr) and clutter phase alignment (cpa).

Changed in version 2.0.0: Returns probability of meteorological echos instead of clutter mask

For Clutter Phase Alignment (CPA) see [Hubbert et al., 2009a] and [Hubbert et al., 2009b]

For each decision variable and radar bin, the algorithm uses trapezoidal functions in order to define the membership to the non-meteorological echo class. Based on pre-defined weights, a linear combination of the different degrees of membership is computed. The echo is assumed to be non-meteorological in case the linear combination exceeds a threshold.

At the moment, the following decision variables are considered:

  • Texture of differential reflectivity (zdr) (mandatory)

  • Texture of correlation coefficient (rho) (mandatory)

  • Texture of differential propagation phase (phidp) (mandatory)

  • Doppler velocity (dop) (mandatory)

  • Static clutter map (map) (mandatory)

  • Correlation coefficient (rho2) (additional)

  • Depolarization Ratio (dr), computed from correlation coefficient & differential reflectivity (additional)

  • clutter phase alignment (cpa) (additional)

Parameters:
  • dat (dict) – dictionary of arrays. Contains the data of the decision variables. The shapes of the arrays should be (…, number of beams, number of gates) and the shapes need to be identical or be broadcastable.

  • weights (dict) – dictionary of floats. Defines the weights of the decision variables. Default is: zdr: 0.4, rho: 0.4, phi: 0.1, dop: 0.1, map: 0.5, rho2: 0.4, dr: 0.4, cpa: 0.4.

  • trpz (dict) – dictionary of lists of floats. Contains the arguments of the trapezoidal membership functions for each decision variable. Default is: zdr: [0.7, 1.0, 9999, 9999], rho: [0.1, 0.15, 9999, 9999], phi: [15, 20, 10000, 10000], dop: [-0.2, -0.1, 0.1, 0.2], map: [1, 1, 9999, 9999], rho2: [-9999, -9999, 0.95, 0.98], dr: [-20, -12, 9999, 9999], cpa: [0.6, 0.9, 9999, 9999].

Returns:

  • prob (numpy.ndarray) – Array indicates probability of meteorological echos based on the fuzzy classification.

  • mask (numpy.ndarray) – Boolean array indicating where all the polarimetric moments had missing values which could be used as an additional information criterion.

Note

The boolean clutter mask (versions prior 2.0) can be calculated with the following code: np.where(prob < thresh, True, False).