Xradar includes all the tools to get your weather radar into the xarray data model.
Project description
xradar
Xradar includes all the tools to get your weather radar into the xarray data model.
- Free software: MIT license
- Documentation: https://docs.openradarscience.org/projects/xradar
How to cite Xradar
This project provides a Zenodo badge with a DOI for easy citation — click the badge above to get the official citation and permanent archive.
GitHub also offers a “Cite this repository” button near the top right of this page, where you can quickly copy the citation in various formats like APA and BibTeX.
In the rendered documentation, you will find the full citation below.
[!TIP] Cite Xradar as:
{{ apa_citation }}
About
At a developer meeting held in the course of the ERAD2022 conference in Locarno, Switzerland, future plans and cross-package collaboration of the openradarscience community were intensively discussed.
The consensus was that a close collaboration that benefits the entire community can only be maximized through joint projects. So the idea of a common software project whose only task is to read and write radar data was born. The data import should include as many available data formats as possible, but the data export should be limited to the recognized standards, such as ODIM_H5 and CfRadial.
As memory representation an xarray based data model was chosen, which is internally adapted to the forthcoming standard CfRadial2.1/FM301. FM301 is enforced by the Joint Expert Team on Operational Weather Radar (JET-OWR). Information on FM301 is available at WMO as WMO CF Extensions.
Any software package that uses xarray in any way will then be able to directly use the described data model and thus quickly and easily import and export radar data. Another advantage is the easy connection to already existing open source radar processing software.
Status
Xradar is considered stable for the implemented readers and writers which have been ported from wradlib. It will remain in beta status until the standard is finalized and the API as well as data model will move into stable/production status.
[!IMPORTANT] Currently only polar (radial) and not cartesian or any other gridded radar data can be imported!
Features
Import/Export Capabilities
- CfRadial1 and CfRadial2
- ODIM_H5 format
Import-Only Capabilities
- DataMet
- Furuno
- Gamic
- HPL
- Iris
- MRR
- NexradLevel2
- Rainbow
- UF
Data Transformation and Alignment
- Georeferencing (AEQD projection)
- Angle Reindexing
- Format Transformation support to CfRadial1 and CfRadial2
[!NOTE] All formats load into CfRadial2, so converting to CfRadial1 is seamless.
Contributors
Thanks to our many contributors!
History
0.11.1 (2026-02-03)
- MNT: Pre-commit update + lint ({pull}
325) by @kmuehlbauer - FIX: Use
dtypewith fallback in odim export ({pull}324) by @katelbach - FIX: Prevent azimuth-folding for RHI for gamic reader ({pull}
326) by @kmuehlbauer
0.11.0 (2026-01-12)
- ENH: get radar coordinates with given reference system ({issue}
243) ({pull}300) by @egouden - ENH: Disable fill value in rainbow reader ({issue}
103) ({pull}290) by @egouden - ADD: read nyquist_velocity in ODIM and GAMIC HDF5 files ({pull}
291) by @katelbach - MNT: update and harden CI, add zizmor to precommit, add dependabot ({pull}
294) by @kmuehlbauer - FIX: Return float32 for float types (keep other dtypes) and remove erroneous "units" from time attrs for hpl reader. ({issue}
296) ({pull}297) by @kmuehlbauer - MNT: Fix Windows errors in file handling ({pull}
295) by @egouden - MNT: do not overwrite Dataset for Dataset.update ({pull}
302) by @kmuehlbauer - FIX: Properly handle zero and NaN values during IRIS/Sigmet KDP decode. ({pull}
301) by @billvieux - FIX: NEXRAD Level2 backend compatibility with older files and VCP-0 ({issue}
311, {pull}312) by @aladinor - FIX: Add explicit
compat="no_conflicts",toxr.merge()in_get_subgroupto silence xarray FutureWarning ({issue}313, {pull}314) by @aladinor. - MNT: create individual notebook tests with pytest_generate_tests and use tmp_path-fixture ({pull}
316) by @kmuehlbauer - FIX: Ensure backend closers are available ({pull}
318) by @kmuehlbauer - MNT: Enhance contributing experience ({pull}
315) by @egouden - ENH: Add
combine_sweepsfunction to stack sweeps into a single radar volume with optional time and angle filtering ({pull}307) by @egouden - FIX: Use time-dimension to stack/unstack CfRadial1 data for variable number of gates, properly handle duplicates ({issue}
317), ({pull}320) by @kmuehlbauer
0.10.0 (2025-07-11)
- FIX: Use fixture for making temp file to avoid permission issue on Windows
- ENH: Supporting for streaming NEXRAD Level 2 data via file-like objects and byte streams. ({issue}
265) ({pull}280) by @aladinor - ADD: function to select dataset variables in sweep ({issue}
104) ({pull}254) by @egouden - ADD: function to get dataset variables in sweep
- ADD: function to get metadata variables in sweep
- FIX: typo in accessors module: Dataarray -> Dataset
- FIX: Update missing deps for virtualenv environments via "requirements_dev.txt". ({issue}
253) ({pull}274) by @Steve-Roderick. - FIX: Prevent literal timedelta decoding for new xarray versions, fix tests, update pinnings ({pull}
278) by @kmuehlbauer. - MNT: Package and Documentation cleanup ({issue}
273), {pull}284) by @kmuehlbauer. - ADD: Support Universal Format (UF) ({issue}
275) ({pull}276) by @kmuehlbauer. - ADD: NDPointIndex Notebook example ({pull}
276) by @kmuehlbauer.
0.9.0 (2025-02-07)
- ENH: Adding test to
open_datatreefunction for all backends. Adding "scan_name" to nexradlevel2 datatree attributes ({pull}238) by @aladinor - FIX: Improving performance of
open_nexradlevel2_datatreefunction and adding tests forsweepparameter. ({issue}239) ({pull}240) by @aladinor - FIX: Keeping attributes at each variable when using
open_nexradlevel2_datatree. ({issue}241) ({pull}242) by @aladinor - FIX: Correctly read transition rays in RHI scans ({issue}
247) ({pull}250) by @rcjackson - FIX: Correctly open NEXRAD files when split cut mode is enable ({issue}
245) ({pull}246) by @aladinor - ADD: Example Notebook for assigning geocoords. ({issue}
243) and ({pull}251) by @syedhamidali - FIX: DataTree reader now works with sweeps containing different variables ({pull}
252) by @egouden. - FIX: Correct retrieval of intermediate records in nexrad level2 reader ({issue}
259) ({pull}261) by @kmuehlbauer. - FIX: Test for magic number BZhX1AY&SY (where X is any number between 0..9) when retrieving BZ2 record indices in nexrad level2 reader ({issue}
264) ({pull}266) by @kmuehlbauer. - ENH: Add message type 1 decoding to nexrad level 2 reader ({issue}
256) ({pull}267) by @kmuehlbauer. - ENH: Introduce file locks for nexrad level2 and iris backend ({issue}
207) ({pull}268) by @kmuehlbauer.
0.8.0 (2024-11-04)
This is the first version which uses datatree directly from xarray. Thus, xarray is pinned to version >= 2024.10.0.
- FIX: Convert volumes to_cfradial1 containing sweeps with different range and azimuth shapes, raise for different range bin sizes ({issue}
233) by @syedhamidali, ({pull}234) by @kmuehlbauer. - FIX: Correctly handle 8bit/16bit, big-endian/little-endian in nexrad reader (PHI and ZDR) ({issue}
230) by @syedhamidali, ({pull}231) by @kmuehlbauer. - ENH: Refactoring all xradar backends to use
from_dictdatatree constructor. Test for_get_required_root,_get_subgroup, and_get_radar_calibrationwere also added ({pull}221) by @aladinor - ENH: Added pytests to the missing functions in the
test_xradarandtest_irisin order to increase codecov in ({pull}228) by @syedhamidali. - ENH: Updated Readme ({pull}
226) by @syedhamidali. - ADD: Added new module
transformfor transforming CF1 data to CF2 and vice versa ({pull}224) by @syedhamidali. - Use DataTree from xarray and add xarray nightly run ({pull}
213, {pull}214, {pull}215, {pull}218) by @kmuehlbauer. - ADD: Added new accessor
map_over_sweepsfor volume operations on DataTrees and a matching decorator ({pull}203) by @syedhamidali.
0.7.0 (2024-10-26)
This is the last version which uses datatree from xarray-contrib/datatree. Thus, xarray is pinned to version 2024.9.0.
- ADD: Added
apply_to_sweepsfunction for applying custom operations to all sweeps in aDataTreeradar volume Implemented by @syedhamidali, ({pull}202). - ADD: Metek Micro Rain Radar 2 reader by @rcjackson, ({pull}
200) by @rcjackson.
0.6.5 (2024-09-20)
- FIX: Azimuth dimension now labelled correctly for Halo Photonics data ({pull}
206) by @rcjackson. - FIX: do not apply scale/offset in datamet reader, leave it to xarray instead ({pull}
209) by @kmuehlbauer.
0.6.4 (2024-08-30)
- FIX: Notebooks are now conforming to ruff's style checks by @rcjackson, ({pull}
199) by @rcjackson. - FIX: use dict.get() to retrieve attribute key and return "None" if not available, ({pull}
200) by @kmuehlbauer
0.6.3 (2024-08-13)
- FIX: use rstart in meter for ODIM_H5/V2_4 ({issue}
196) by @kmuehlbauer, ({pull}197) by @kmuehlbauer.
0.6.2 (2024-08-12)
- FIX: Passing 'engine' kwarg in "open_cfradial1_datatree" method to enable fsspec.open when using url ({issue}
194) by @aladinor, ({pull}195) by @aladinor
0.6.1 (2024-08-07)
- MNT: minimize CI ({pull}
192) by @kmuehlbauer. - FIX: properly read CfRadial1 n_points files ({issue}
188) by @aladinor, ({pull}190) by @kmuehlbauer.
0.6.0 (2024-08-05)
- ADD: DataMet reader ({pull}
175) by @wolfidan. - FIX: Nexrad level2 time offset of 1 day, skip reading missing elevations, introduce new radial_status of 5
({issue}
180) by @ghiggi, ({pull}180) by @kmuehlbauer. - ADD: Reader for Halo Photonics Doppler lidar data by @rcjackson
0.5.1 (2024-07-05)
- ADD: Add Alfonso to citation doc ({pull}
169) by @mgrover1. - ENH: Adding global variables and attributes to iris datatree ({pull}
166) by @aladinor. - FIX: Set fillvalue before applying scale/offset when exporting to odim ({issue}
122) by @pavlikp, ({pull}173) by @kmuehlbauer. - FIX: Fix use of ruff, CI and numpy2 ({pull}
177) by @mgrover1 and @kmuehlbauer.
0.5.0 (2024-03-28)
- MNT: Update GitHub actions, address DeprecationWarnings ({pull}
153) by @kmuehlbauer. - MNT: restructure odim.py/gamic.py, add test_odim.py/test_gamic.py ({pull}
154) by @kmuehlbauer. - MNT: use CODECOV token ({pull}
155) by @kmuehlbauer. - MNT: fix path for notebook coverage ({pull}
157) by @kmuehlbauer. - ADD: NEXRAD Level2 structured reader ({pull}
158) by @kmuehlbauer and @mgrover1. - FIX: Add the proper elevation angle to fixed angle ({pull}
162) by @mgrover1. - ENH: Add a utility for finding sweep number keys ({pull}
167) by @mgrover1.
0.4.3 (2024-02-24)
- MNT: address black style changes, update pre-commit-config.yaml ({pull}
152) by @kmuehlbauer. - FIX: use len(unique) to estimate unique entry for odim range ({pull}
151) by @martinpaule.
0.4.2 (2023-11-02)
- FIX: Fix handling of sweep_mode attributes ({pull}
143) by @mgrover1 - FIX: explicitely check for "False" in get_crs() {pull}
142) by @kmuehlbauer.
0.4.1 (2023-10-26)
- FIX: Add history to cfradial1 output, and fix minor error in CfRadial1_Export.ipynb notebook({pull}
132) by @syedhamidali - FIX: fix readthedocs build for python 3.12 ({pull}
140) by @kmuehlbauer. - FIX: align coordinates in backends, pin python >3.9,<=3.12 in environment.yml ({pull}
139) by @kmuehlbauer - FIX: prevent integer overflow when calculating azimuth in FURUNO scn files ({issue}
137) by @giacant , ({pull}138) by @kmuehlbauer
0.4.0 (2023-09-27)
- ENH: Add cfradial1 exporter ({issue}
124) by @syedhamidali, ({pull}126) by @syedhamidali - FIX: use datastore._group instead of variable["sweep_number"] ({issue}
121) by @aladinor , ({pull}123) by @kmuehlbauer - MIN: use "crs_wkt" instead of deprecated "spatial_ref" when adding CRS ({pull}
127) by @kmuehlbauer - FIX: always read nodata and undetect attributes from ODIM file ({pull}
125) by @egouden - MIN: use
cmweathercolormaps in xradar ({pull}128) by @kmuehlbauer.
0.3.0 (2023-07-11)
- ENH: Add new examples using radar data on AWS s3 bucket ({pull}
102) by @aladinor - FIX: Correct DB_DBTE8/DB_DBZE8 and DB_DBTE16/DB_DBZE16 decoding for iris-backend ({pull}
110) by @kmuehlbauer - FIX: Cast boolean string to int in rainbow dictionary ({pull}
113) by @egouden - MNT: switch to mamba-org/setup-micromamba, split CI tests ({issue}
115), ({pull}116) by @kmuehlbauer - FIX: time interpolation ({pull}
117) by @kmuehlbauer - FIX: robust
angle_resretrieval inextract_angle_parameters({issue}112), ({pull}118) by @kmuehlbauer - FIX: robust radar identifier in
to_odim()({pull}120) by @kmuehlbauer
0.2.0 (2023-03-24)
- ENH: switch to add optional how attributes in ODIM format writer ({pull}
97) by @egouden - FIX: add keyword argument for mandatory source attribute in ODIM format writer ({pull}
96) by @egouden - FIX: check for dim0 if not given, only swap_dims if needed ({issue}
92), ({pull}94) by @kmuehlbauer - FIX+ENH: need array copy before overwriting and make compression available in to_odim ({pull}
95) by @kmuehlbauer
0.1.0 (2023-02-23)
- Add an example on reading multiple sweeps into a single object ({pull}
69) by @mgrover1 - ENH: add spatial_ref with pyproj when georeferencing, add/adapt methods/tests ({issue}
38), ({pull}87) by @kmuehlbauer - Docs/docstring updates, PULL_REQUEST_TEMPLATE.md ({pull}
89) by @kmuehlbauer - Finalize release 0.1.0, add testpypi upload on push to main ({pull}
91) by @kmuehlbauer
0.0.13 (2023-02-09)
- FIX: only skip setting cf-attributes if both gain and offset are unused ({pull}
85) by @kmuehlbauer
0.0.12 (2023-02-09)
- ENH: add IRIS
DB_VELCdecoding and tests ({issue}78), ({pull}83) by @kmuehlbauer - FIX: furuno backend inconsistencies ({issue}
77), ({pull}82) by @kmuehlbauer - FIX: ODIM_H5 backend inconsistencies ({issue}
80), ({pull}81) by @kmuehlbauer
0.0.11 (2023-02-06)
- fix
_Undetect/_FillValuein odim writer ({pull}71) by @kmuehlbauer - port more backend tests from wradlib ({pull}
73) by @kmuehlbauer
0.0.10 (2023-02-01)
- add WRN110 scn format to Furuno reader ({pull}
65) by @kmuehlbauer - Adapt to new build process, pyproject.toml only, use
rufffor linting ({pull}67) by @kmuehlbauer
0.0.9 (2022-12-11)
- add ODIM_H5 exporter ({pull}
39) by @kmuehlbauer - fetch radar data from open-radar-data ({pull}
44) by @kmuehlbauer - align readers with CfRadial2, add CfRadial2 exporter ({pull}
45), ({pull}49), ({pull}53), ({pull}56), ({pull}57) and ({pull}58) by @kmuehlbauer - add georeference accessor, update examples ({pull}
60), ({pull}61) by @mgrover1 - refactored and partly reimplemented angle reindexing ({issue}
55), ({pull}62) by @kmuehlbauer
0.0.8 (2022-09-28)
- add GAMIC HDF5 importer ({pull}
29) by @kmuehlbauer - add Furuno SCN/SCNX importer ({pull}
30) by @kmuehlbauer - add Rainbow5 importer ({pull}
32) by @kmuehlbauer - add Iris/Sigmet importer ({pull}
33) by @kmuehlbauer - add georeferencing (AEQD) ({pull}
28) by @mgrover1
0.0.7 (2022-09-21)
- Add zenodo badges to README.md ({pull}
22) by @mgrover1 - Fix version on RTD ({pull}
23) by @kmuehlbauer - Add minimal documentation for Datamodel ({pull}
24) by @kmuehlbauer
0.0.6 (2022-09-19)
- Improve installation and contribution guide, update README.md with more badges, add version and date of release to docs, update install process ({pull}
19) by @kmuehlbauer - Add minimal documentation for CfRadial1 and ODIM_H5 importers ({pull}
20) by @kmuehlbauer - Add accessors.py submodule, add accessors showcase ({pull}
21) by @kmuehlbauer
0.0.5 (2022-09-14)
- Data Model, CfRadial1 Backend ({pull}
13) by @kmuehlbauer - ODIM_H5 Backend ({pull}
14) by @kmuehlbauer
0.0.4 (2022-09-01)
Setting up CI workflow and build, @mgrover1 and @kmuehlbauer
0.0.1 (2022-09-01)
- First release on PyPI.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xradar-0.11.1.tar.gz.
File metadata
- Download URL: xradar-0.11.1.tar.gz
- Upload date:
- Size: 218.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
788e850305ca3fedd8e2fa566bdd220f122d3baea157a2d6a7f033153af451f7
|
|
| MD5 |
5e08b8a7cf7afd620948da401b9750ac
|
|
| BLAKE2b-256 |
f6151653fb04ac5794893f6bc2057cdd0c37cedfca43dc46853fbe04dfd563d2
|
File details
Details for the file xradar-0.11.1-py3-none-any.whl.
File metadata
- Download URL: xradar-0.11.1-py3-none-any.whl
- Upload date:
- Size: 145.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
904b4cdefec9863bd2d93ac59dd6802719a07d1fe918df7751627291f2f0b345
|
|
| MD5 |
529908ff0494ecd86571713de0662b91
|
|
| BLAKE2b-256 |
fbd7ec83c6fb0062b6f730369a67845d7d6e864261b31717af660186dee75d25
|