Designing and implementing radar algorithms in Python

- Indicates paper has been withdrawn from meeting
- Indicates an Award Winner
Monday, 5 January 2015: 4:45 PM
129B (Phoenix Convention Center - West and North Buildings)
Jonathan Helmus, ANL, Argonne, IL; and K. North, S. E. Giangrande, and S. Collis

The Atmospheric Radiation Measurement (ARM) Climate Research Facility operates a number of cloud and precipitation radars at fixed sites in the Southern Great Plains, the North Slopes of Alaska and the Azores in addition to shorter term deployments of ARM mobile facilities across the globe. In order to make the data from these instruments accessible to a wider audience of scientists, the raw radar data needs to be converted into a more conventional format. In addition, the radar moments must be processed to correct a number of common issues. Finally, atmospheric and weather parameters must be retrieved from these moments to provide useful data to end users.

To accomplish these tasks, we have created the Python ARM Radar Toolkit, Py-ART, an open source Python module for working with weather radar data. Last year we reported on the software engineering practices used in this community-focused project as well as the data model which allows Py-ART to uniformly address radar data stored in a number of file formats.

With this framework in place, recent development in Py-ART has focused on designing and implementing a number of algorithms to correct issues in the data collected by the ARM radars, and to perform retrievals to extract atmospheric parameters from the measurements made by the radar. The information these retrievals provide on cloud and precipitation processes can be used to improve weather and climate models.

In this talk, we will discuss a number of these algorithms including: a novel algorithm for unfolding Doppler velocities using multi-dimensional phase unwrapping, the implementation of established algorithms for the classification of radar echoes, as well as recent improvements to existing linear programming-based differential phase processing routines. In addition to discussing the science and mathematics behind these algorithms, we will also give an overview of the development processes used to implement these procedures. This will include a discussion on tools for prototyping in Python, and common refactoring techniques to improve code structure. Also included will be a short how-to on profiling and optimizing Python code for speed, and examples of how these new algorithms were integrated into the larger Py-ART package.