Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Specific Differential Phase (K_{DP}) retrieval methods comparison

KDP Comparison

Specific Differential Phase (KDPK_{DP}) retrieval methods comparison

Overview

Within this notebook, we will cover:

  1. How to access Colombian national weather radar network data from AWS

  2. How to read and create a multipanel plot

  3. How to retrieve and compare three different methods

Prerequisites

ConceptsImportanceNotes
Matplotlib BasicsRequiredBasic plotting
Introduction to CartopyHelpfulAdding projections to your plot
Py-ART BasicsRequiredIO/Visualization
Py-ART CorrectionsRequiredRadar Corrections
Py-ART Example-workflowsRequiredDual-polarization variables

Imports


## You are using the Python ARM Radar Toolkit (Py-ART), an open source
## library for working with weather radar data. Py-ART is partly supported
## by the U.S. Department of Energy Office of Science as part of
## the Atmospheric Radiation Measurement (ARM) User Facility.
##
## If you use this software to prepare a publication, please cite:
##
##     JJ Helmus and SM Collis, JORS 2016, doi: 10.5334/jors.119

/home/runner/micromamba/envs/radar-cookbook-dev/lib/python3.12/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm

How to access Colombian national weather radar network data from AWS

Let’s start first with Level 2 radar data, which is ground-based radar data collected by the Instituto de Hidrología, Meteorología y Estudios Ambientales (IDEAM).

Level 2 Data

Level 2 data includes all of the fields in a single file - for example, a file may include:

  • Reflectivity

  • Velocity

  • Differential reflectivity

Search for data during a Mesoscale Convective System - MCS event (August 9, 2022)

We will access data from the radaresideam bucket, with the data organized as:

s3://s3-radaresideam/l2_data/year/month/date/radar_name/{radar_name[:3].upper()}{year}{month}{date}{hour}{minute}{second}.RAW*

We can use fsspec, a tool to work with filesystems in Python, to search through the bucket to find our files!

We start first by setting up our AWS S3 filesystem

Now, we can list files from August 9, 2022, from Carimagua radar (CAR), around 1900 UTC.

['s3-radaresideam/l2_data/2022/08/09/Carimagua/CAR220809190003.RAWDSVV', 's3-radaresideam/l2_data/2022/08/09/Carimagua/CAR220809190315.RAWDSW0', 's3-radaresideam/l2_data/2022/08/09/Carimagua/CAR220809190401.RAWDSW3', 's3-radaresideam/l2_data/2022/08/09/Carimagua/CAR220809190505.RAWDSW8']

Read the data into Py-ART

When reading into Py-ART, we can use the pyart.io.read_sigmet or pyart.io.read module to read in our data.

List the available fields

['cross_correlation_ratio', 'differential_phase', 'differential_reflectivity', 'normalized_coherent_power', 'radar_echo_classification', 'reflectivity', 'specific_differential_phase', 'spectrum_width', 'total_power', 'velocity']

Plot dual-pol variables

Let’s plot the radar reflectivity (ZZ), differential reflectivity (ZDRZ_{DR}), specific differential phase (KDPK_{DP}), and cross correlation ratio (ρHV\rho_{HV}) using a four panel plot.

<Figure size 1200x1000 with 8 Axes>

We can notice from the previous figure that this is a intense precipitation event in Colombia with reflectivity values up to +55 dBZ, big raindrops (ZDRZ_{DR} +3 dB), heavy rainfall rates with KDPK_{DP} +10 dB/km, and multiples foldings in differential phase (PhiDPPhi_{DP}). We can notice negative values in the ZDRZ_{DR} panel (differential attenuation) in the north-east side of the radar location.

KDPK_{DP} retrieval methods

Although the radar data already contains the specific differential phase (KDPK_{DP}), we can use the following alternative methods for comparison:

  1. Variational method by Maesaka et al. (2012).

  2. Kalman filter method by Schneebeli and al. (2014)

  3. Vulpiani method by Vulpiani et al. (2012)

The Py-Art Python package includes all the methods mentioned above. We can access the retrieval methods using pyart.retrieve.kdp_maesaka, pyart.retrieve.kdp_schneebeli, and pyart.retrieve.kdp_vulpiani. The output from all retrieval methods is a tuple with two dictionaries that contain the retrieved KDPK_{DP} as well as the Differential phase (PhiDPPhi_{DP}).

CPU times: user 15 s, sys: 37 ms, total: 15 s
Wall time: 4.87 s
CPU times: user 156 ms, sys: 501 ms, total: 657 ms
Wall time: 3min 25s
CPU times: user 188 ms, sys: 510 ms, total: 697 ms
Wall time: 1.31 s

This is how a dictionary with the retrieve KDPK_{DP} looks like

{'units': 'degrees/km', 'standard_name': 'specific_differential_phase_hv', 'long_name': 'Specific differential phase (KDP)', 'coordinates': 'elevation azimuth range', 'data': masked_array( data=[[0.0, 0.0, 0.0, ..., --, --, --], [0.0, 0.0, 0.0, ..., --, --, --], [0.0, 0.0, 0.0, ..., --, --, --], ..., [0.0, 0.0, 0.0, ..., --, --, --], [0.0, 0.0, 0.0, ..., --, --, --], [0.0, 0.0, 0.0, ..., --, --, --]], mask=[[False, False, False, ..., True, True, True], [False, False, False, ..., True, True, True], [False, False, False, ..., True, True, True], ..., [False, False, False, ..., True, True, True], [False, False, False, ..., True, True, True], [False, False, False, ..., True, True, True]], fill_value=-9999.0)}

Add the new retrieved KDPK_{DP} values to the radar object

We can add new fields to our Py-Art radar object by using the pyart.core.Radar.add_field method as follows

List the new fields/variables

['cross_correlation_ratio', 'differential_phase', 'differential_reflectivity', 'kdp_maesaka', 'kdp_schneebeli', 'kdp_vulpiani', 'normalized_coherent_power', 'phidp_maesaka', 'phidp_schneebeli', 'phidp_vulpiani', 'radar_echo_classification', 'reflectivity', 'specific_differential_phase', 'spectrum_width', 'total_power', 'velocity']

Compare default and retrieved PhiDPPhi_{DP} and KDPK_{DP}

We can look at the difference between all the methods using a side-by-side comparison figure

<Figure size 1400x600 with 10 Axes>

In the top row, we can see the Specific Differential Phase (KDPK_{DP}), and in the bottom row, the Differential Phase (PhiDPPhi_{DP}). We can notice that the default KDPK_{DP} shows values +10 deg/km, which we think is too high. On the other hand, Maesake’s and Scneebeli’s methods’ output suggests that they are probably not performing well. However, the Vulpiani method performs better since we can observe more realistic values on KDPK_{DP} and PhiDPPhi_{DP}.

Warning

This notebook is intended to be demonstrative; therefore, we can not make any conclusions regarding the methods we tested.

Summary

Within this example, we walked through how to access Colombian radar data from IDEAM, plot a quick look of the data, and compare the the specific differential phase using the default and three different methods!

What’s Next?

We will showcase other data workflow examples, including field campaigns in other regions and data access methods from other data centers.

Resources and References

  • IDEAM radar data

  • Py-ART:

    • Helmus, J.J. & Collis, S.M., (2016). The Python ARM Radar Toolkit (Py-ART), a Library for Working with Weather Radar Data in the Python Programming Language. Journal of Open Research Software. 4(1), p.e25. DOI: Helmus & Collis (2016)

  • ACT:

    • Adam Theisen, Ken Kehoe, Zach Sherman, Bobby Jackson, Alyssa Sockol, Corey Godine, Max Grover, Jason Hemedinger, Jenni Kyrouac, Maxwell Levin, Michael Giansiracusa (2022). The Atmospheric Data Community Toolkit (ACT). Zenodo. DOI: Theisen et al. (2022)

  • 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.

  • Schneebeli, M., Grazioli, J., and Berne, A., 2014: Improved Estimation of the Specific Differential Phase SHIFT Using a Compilation of Kalman Filter Ensembles, IEEE T. Geosci. Remote Sens., 52, 5137-5149, https://doi:10.1109/TGRS.2013.2287017

  • Gianfranco Vulpiani, Mario Montopoli, Luca Delli Passeri, Antonio G. Gioia, Pietro Giordano, and Frank S. Marzano, 2012: On the Use of Dual-Polarized C-Band Radar for Operational Rainfall Retrieval in Mountainous Areas. J. Appl. Meteor. Climatol., 51, 405-425, doi: https://10.1175/JAMC-D-10-05024.1.

References
  1. Helmus, J. J., & Collis, S. M. (2016). The Python ARM Radar Toolkit (Py-ART), a Library for Working with Weather Radar Data in the Python Programming Language. Journal of Open Research Software, 4(1), 25. 10.5334/jors.119
  2. Theisen, A., Kehoe, K., Sherman, Z., Jackson, B., Sockol, A., Godine, C., Grover, M., Hemedinger, J., Kyrouac, J., Levin, M., & Giansiracusa, M. (2022). ARM-DOE/ACT: ACT Release v1.1.9. Zenodo. 10.5281/ZENODO.6712343