Skip to main content

DOI

UNRAVEL

UNfold RAdar VELocity (UNRAVEL) is an open-source modular Doppler velocity dealiasing algorithm for weather radars. Designed for flexibility, UNRAVEL does not require external reference velocity data, making it highly adaptable across various contexts.

Features

  • Modular Design: Consists of eleven core modules and two dealiasing strategies for iterative processing.
  • Adaptive Dealiasing: Starts with strict continuity tests in azimuth and range, then progressively relaxes parameters to include more reference points.
  • 3D Continuity Checks: Modules for multi-dimensional dealiasing enhance accuracy.
  • Expandable Framework: Allows for additional strategies to optimize results further.

Installation

UNRAVEL requires Python 3.9 or newer and is available on PyPI:

pip install unravel

pip pulls in the dependencies automatically: numba, numpy, xarray, dask, pyodim (>= 0.7) and arm_pyart.

Usage

There is one entry point per radar data model. Both dealias a full volume and take a strategy ("default" or "long_range", for long-range scans with few gates per beam) and an alpha threshold (0.6 by default; lower is stricter).

With Py-ART, which returns the dealiased field as an array:

import pyart
import unravel

radar = pyart.io.read("radar_volume.nc")
velocity = unravel.unravel_3D_pyart(radar, velname="VEL", dbzname="DBZ")
radar.add_field_like("VEL", "dealiased_velocity", velocity)

With pyodim, for ODIM H5 files, which returns one xarray dataset per sweep:

import unravel

sweeps = unravel.unravel_3D_pyodim(
    "radar_volume.pvol.h5",
    vel_name="VRADH",
    output_vel_name="unraveled_velocity",
    strategy="long_range",
)

unravel_3D_pyodim also accepts a list of pre-loaded pyodim datasets in place of a file path, so corrections such as dual-PRF unfolding can be applied first. The datasets passed in are left untouched; the dealiased sweeps come back as a new list.

Before spawning workers (dask, multiprocessing), call unravel.warmup() once in the main process. It triggers numba's JIT compilation so that workers inherit the compiled code (fork) or reuse its on-disk cache (spawn), instead of each paying the compilation cost:

unravel.warmup()

To drive the modules yourself rather than running a whole strategy, use the Dealias class on a single sweep:

from unravel import Dealias

dealias = Dealias(r, azimuth, elevation, velocity, nyquist_velocity, alpha=0.6)
dealias.initialize()
dealias.correct_range()
dealias.correct_clock()
dealiased_velocity, flag = dealias.dealias_vel, dealias.flag

flag marks each gate: -3 no data, 0 unprocessed, 1 processed and unchanged, 2 dealiased.

References

If you use UNRAVEL in your research, please cite the following paper:

Louf, V., Protat, A., Jackson, R. C., Collis, S. M., & Helmus, J. (2020). UNRAVEL: A Robust Modular Velocity Dealiasing Technique For Doppler Radar. Journal of Atmospheric and Oceanic Technology, 37(5), 741–758. 10.1175/JTECH-D-19-0020.1

@article {Louf2020,
      author = "Valentin Louf and Alain Protat and Robert C. Jackson and Scott M. Collis and Jonathan Helmus",
      title = "UNRAVEL: A Robust Modular Velocity Dealiasing Technique for Doppler Radar",
      journal = "Journal of Atmospheric and Oceanic Technology",
      year = "2020",
      publisher = "American Meteorological Society",
      volume = "37",
      number = "5",
      doi = "10.1175/JTECH-D-19-0020.1",
      pages= "741 - 758",
      url = "https://journals.ametsoc.org/view/journals/atot/37/5/jtech-d-19-0020.1.xml"
}

Star History

Star History Chart

Release files for unravel 1.6.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for unravel 1.6.0
File Size Uploaded
unravel-1.6.0.tar.gz 37.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for unravel 1.6.0
File Interpreter ABI Platform
unravel-1.6.0-py3-none-any.whl Python 3 none any Details

Total release size: 73.5 kB

Release files / unravel-1.6.0.tar.gz

Download URL unravel-1.6.0.tar.gz
Size 37.8 kB
Tags Source
SHA-256 checksum
How to use checksums
cdd58348bd6cc0ed386d11764afd496698d5187769c0534e665423b3154d8056
BLAKE2b-256 checksum
How to use checksums
e4af02c9e913b3c0352ab7abb9a48a760913e1b6ae30aed71c3717107af104a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / unravel-1.6.0-py3-none-any.whl

Download URL unravel-1.6.0-py3-none-any.whl
Size 35.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
94d83d6641db4121a73ef275369c784f75aeaa92631949772e45ce5b481a2797
BLAKE2b-256 checksum
How to use checksums
8e059bb13f04bef9d5a955881555d7dcc9b2f5e42c8189341ad7dcb6b54abdf0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

1.6.0 This release

2 release files

1.5.0

2 release files

1.4.1

2 release files

1.4.0

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page