Source code for pyart.bridge.wradlib_bridge

"""
Py-ART methods linking to wradlib functions, http://wradlib.org/

"""

try:
    import wradlib

    _WRADLIB_AVAILABLE = True
except ImportError:
    _WRADLIB_AVAILABLE = False
import numpy as np

from ..config import get_field_name, get_metadata
from ..exceptions import MissingOptionalDependency


[docs]def texture_of_complex_phase(radar, phidp_field=None, phidp_texture_field=None): """ Calculate the texture of the differential phase field. Calculate the texture of the real part of the complex differential phase field Parameters ---------- radar : Radar Radar object from which to . phidp_field : str, optional Name of field in radar which contains the differential phase shift. None will use the default field name in the Py-ART configuration file. phidp_texture_field : str, optional Name to use for the differential phase texture field metadata. None will use the default field name in the Py-ART configuration file. Returns ------- texture_field : dict Field dictionary containing the texture of the real part of the complex differential phase. References ---------- Gourley, J. J., P. Tabary, and J. Parent du Chatelet, A fuzzy logic algorithm for the separation of precipitating from nonprecipitating echoes using polarimetric radar observations, Journal of Atmospheric and Oceanic Technology 24 (8), 1439-1451 """ # check that wradlib is available if not _WRADLIB_AVAILABLE: raise MissingOptionalDependency( "wradlib is required to use texture_of_complex_phase but is " + "not installed" ) # parse field names if phidp_field is None: phidp_field = get_field_name("differential_phase") if phidp_texture_field is None: phidp_texture_field = get_field_name("differential_phase") # Grab the phase data phidp = radar.fields[phidp_field]["data"] # convert to complex number complex_phase = np.exp(1j * (phidp * np.pi / 180.0)) # calculate texture using wradlib w_texture_complex = wradlib.dp.texture((np.real(complex_phase) + 1.0) * 180) texture_field = get_metadata(phidp_texture_field) texture_field["data"] = w_texture_complex texture_field["standard_name"] = "texture_of_differential_phase_hv" texture_field["long_name"] = "Texture of differential phase" return texture_field