pyart.retrieve.kdp_maesaka(radar, gatefilter=None, method='cg', backscatter=None, Clpf=1.0, length_scale=None, first_guess=0.01, finite_order='low', fill_value=None, proc=1, psidp_field=None, kdp_field=None, phidp_field=None, debug=False, verbose=False, **kwargs)[source]#

Compute the specific differential phase (KDP) from corrected (e.g., unfolded) total differential phase data based on the variational method outlined in Maesaka et al. (2012). This method assumes a monotonically increasing propagation differential phase (PHIDP) with increasing range from the radar, and therefore is limited to rainfall below the melting layer and/or warm clouds at weather radar frequencies (e.g., S-, C-, and X-band). This method currently only supports radar data with constant range resolution.

Following the notation of Maesaka et al. (2012), the primary control variable k is proportional to KDP,

k**2 = 2 * KDP * dr

which, because of the square, assumes that KDP always takes a positive value.

  • radar (Radar) – Radar containing differential phase field.

  • gatefilter (GateFilter) – A GateFilter indicating radar gates that should be excluded when analysing differential phase measurements.

  • method (str, optional) – Type of scipy.optimize method to use when minimizing the cost functional. The default method uses a nonlinear conjugate gradient algorithm. In Maesaka et al. (2012) they use the Broyden-Fletcher- Goldfarb-Shanno (BFGS) algorithm, however for large functional size (e.g., 100K+ variables) this algorithm is considerably slower than a conjugate gradient algorithm.

  • backscatter (optional) – Define the backscatter differential phase. If None, the backscatter differential phase is set to zero for all range gates. Note that backscatter differential phase can be parameterized using attentuation corrected differential reflectivity.

  • Clpf (float, optional) – The low-pass filter (radial smoothness) constraint weight as in equation (15) of Maesaka et al. (2012).

  • length_scale (float, optional) – Length scale in meters used to bring the dimension and magnitude of the low-pass filter cost functional in line with the observation cost functional. If None, the length scale is set to the range resolution.

  • first_guess (float, optional) – First guess for control variable k. Since k is proportional to the square root of KDP, the first guess should be close to zero to signify a KDP field close to 0 deg/km everywhere. However, the first guess should not be exactly zero in order to avoid convergence criteria after the first iteration. In fact it is recommended to use a value closer to one than zero.

  • finite_order (‘low’ or ‘high’, optional) – The finite difference accuracy to use when computing derivatives.

  • maxiter (int, optional) – Maximum number of iterations to perform during cost functional minimization. The maximum number of iterations are only performed if convergence criteria are not met. For variational schemes such as this one, it is generally not recommended to try and achieve convergence criteria since the values of the cost functional and/or its gradient norm are somewhat arbitrary.

  • fill_value (float, optional) – Value indicating missing or bad data in differential phase field.

  • proc (int, optional) – The number of parallel threads (CPUs) to use. Currently no multiprocessing capability exists.

  • psidp_field (str, optional) – Total differential phase field. If None, the default field name must be specified in the Py-ART configuration file.

  • kdp_field (str, optional) – Specific differential phase field. If None, the default field name must be specified in the Py-ART configuration file.

  • phidp_field (str, optional) – Propagation differential phase field. If None, the default field name must be specified in the Py-ART configuration file.

  • debug (bool, optional) – True to print debugging information, False to suppress.

  • verbose (bool, optional) – True to print relevant information, False to suppress.


  • kdp_dict (dict) – Retrieved specific differential phase data and metadata.

  • phidpf_dict, phidpr_dict (dict) – Retrieved forward and reverse direction propagation differential phase data and metadata.


Maesaka, T., Iwanami, K. and Maki, M., 2012: “Non-negative KDP Estimation by Monotone Increasing PHIDP Assumption below Melting Layer”. The Seventh European Conference on Radar in Meteorology and Hydrology.