ADD: NEXRAD Level 3 (NIDS) radial-product reader#392
Open
mgrover1 wants to merge 2 commits into
Open
Conversation
Adds engine='nexradlevel3' and open_nexradlevel3_datatree for NEXRAD Level 3 radial products (packets 16/AF1F/28) with values decoded to physical units, range-folded bins exposed as a separate mask, and SRMV/ACCUM/HCLASS added to the canonical moment names.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #392 +/- ##
==========================================
+ Coverage 94.20% 94.63% +0.43%
==========================================
Files 29 30 +1
Lines 6417 6934 +517
==========================================
+ Hits 6045 6562 +517
Misses 372 372
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
21 new synthetic tests covering malformed-file warnings/errors, the packet-16 ragged fallback, XDR parameters/multi-component/unknown-code paths, symbology offset override, surface-product geometry, RF mask variable, flag attrs, CF valid_min/max, reindex and drop_variables; drop two unused helpers. nexrad_level3.py: 100% line coverage from synthetic tests alone.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds an xarray backend (
engine="nexradlevel3") andopen_nexradlevel3_datatreefor NEXRAD Level 3 (NIDS) radial products. Level 3 is available on AWS in real time and archived back to ~2020 (s3://unidata-nexrad-level3), so this opens a large, previously unreadable dataset to the xradar stack.Coverage
27 message codes across the three radial packet formats:
Deferred products (VIL/EET special encodings, TDWR, legacy hybrid variants) raise a clear
NotImplementedErrornaming the product; follow-up tracking issue to come. A multi-tilt volume of the same product (e.g. N0B-N3B) assembles into a DataTree ordered by fixed angle, following the IMD multi-file precedent.Deliberate divergences from Py-ART
Each verified against the ICD (2620001) and real data:
floor(1000*cos(elevation)), so ranges drift up to ~580 m by the last binflags[0]applied to all levels<moment>_range_foldedmaskraw < 1/raw < 2masks — on a real DPR file this marks ~92% of bins (genuine zero rain rate) as missingmodel.pygains SRMV/ACCUM/HCLASS (and RATE) in the canonical moment names; the twotest_io.pyexpectation updates reflect real moments in existing sample files that the canonical set previously missed.Verification
Performance (M-series laptop, warm, mean of 20)
Known limitation
Level 3 carries no per-ray times, so every ray holds the volume scan start time: multi-tilt volumes export to CfRadial2 but not CfRadial1 (documented in the docstring).