KTLX rainfall and KDP case · Single-case demonstration

Early Detection of Heavy Convective Rainfall from a KTLX KDP Column: 29 April 2021 Case Demonstration

What was processed

Ten KTLX Level-II volumes spanning 01:33:08–02:27:56 UTC on 29 April 2021 were processed for specific differential phase (KDP), reconstructed into storm-following vertical cross sections, and paired with MRMS surface rainfall at a fixed point near Norman, Oklahoma. This page reports what came out; the figures and the tables carry the detail.

Under the strict quality-control mask, the first KDP column reaching 1 ° km−1 within 5 km of the tracked core occurs at 01:50:19 UTC. MRMS rainfall at the fixed point begins at 02:02 UTC, and the peak 15-minute accumulation ends at 02:14 UTC. The three volumes before 01:50 extend radar coverage back to 01:33:08 — 28.9 minutes before rainfall onset — and contain no gate meeting the strict column threshold. Under the permissive mask, which admits lower ρHV gates, elevated KDP appears earlier.

11.7 min01:50:19 strict column → 02:02 rainfall onset
23.7 min01:50:19 → 02:14 end of peak 15-minute accumulation
13.92 mmpeak 15-minute accumulation, ending 02:14 UTC

The case

Convection moved across the Norman, Oklahoma area late on 28 April into early 29 April 2021, producing a flood report at 20:05 CST (02:05 UTC). The event was warned operationally: NWS Norman issued Flash Flood Warning event 10 at 01:53 UTC for McClain and northwestern Cleveland Counties, valid to 05:00 UTC, naming Norman, Moore, Newcastle, Goldsby, and southern Oklahoma City. The archived product records it as radar-indicated and states that flash flooding was ongoing or expected shortly, with another 1–2 inches possible. The analysis window here, 01:48–02:28 UTC, came from an automated screening pass and was accepted after manual review of corrected radar quick looks.

Grid of low-level KTLX reflectivity panels, one per volume from 01:33 to 02:28 UTC, each overlaid with the objective storm-target centroid candidate. Reflectivity cores above 45 dBZ move across the domain and approach the radar through the sequence.
Figure 1. Low-level KTLX reflectivity, one panel per radar volume across 01:33–02:28 UTC, with the tracked convective core marked in each. Cores above 45 dBZ are present throughout the window. Two things to note while reading the rest of the report. First, the tracked core passes unusually close to the radar: range falls from 43.64 km to 6.39 km and then increases again to 14.18 km, so the elevations sampled above the core change substantially between panels. Second, these are the objective centroid candidates that were reviewed before the vertical sections were built (method in Storm tracking) — the seven from 01:50 onward were reviewed and accepted; the three earliest are a backward extension.
Composite. Top left: MRMS 30-minute rainfall accumulation map with the KTLX radar location, the fixed verification target, and the tracked storm path. Top right: storm-relative time-height sections of KDP, unfiltered diagnostic beside strict-QC, each with a 40 dBZ reflectivity contour; the strict column appears at 01:50 UTC. Bottom left: time series of strict KDP column-top height and 40 dBZ echo-top height. Bottom right: MRMS rain rate and rolling accumulation at the fixed target, annotated with first strict-column detection, rainfall onset, and peak accumulation timing.
Figure 2. Composite of the case. Top left: MRMS 30-minute accumulation with KTLX, the fixed verification point, and the tracked storm path. Top right: storm-relative time-height KDP, unfiltered diagnostic beside strict-QC, both with 40 dBZ reflectivity contours; under the strict mask the column first reaches 1 ° km−1 at 01:50 UTC. Bottom left: strict KDP column top and 40 dBZ echo top through the sequence — both descend after 01:55 and rise again by 02:28. Bottom right: MRMS rain rate and rolling accumulation at the fixed point, marked with first strict-column detection, rainfall onset, and peak timing.

Sequence of events

Order of events on 29 April 2021. The warning time comes from the archived NWS product; everything else is computed in this analysis.
Time UTCEventSource
01:33:08First antecedent radar volumeKTLX Level II
01:50:19First strict-QC KDP column ≥ 1 ° km−1This analysis
01:53NWS Norman Flash Flood Warning issued (radar-indicated)NWS archive
02:02MRMS rainfall onset at fixed targetMRMS
02:06Instantaneous target rain rate reaches 150 mm h−1MRMS
02:14Peak 15-minute accumulation ends (13.92 mm)MRMS
02:28Peak 30-minute accumulation ends (15.20 mm)MRMS

Rainfall totals at the fixed target

These are MRMS radar-derived totals at a single fixed pixel plus a 5-by-5-pixel neighbourhood. No return-period statistics were computed and no gauge comparison was made, so the totals stand on their own without a rarity or verification claim attached.

Evolution of the column

Vertical structure was reconstructed as KTLX pseudo-RHIs — vertical cross sections assembled from PPI volume scans, not true operational RHI scans. The panels below are radar-centered: zero range is KTLX and the dashed line marks the moving tracked core. This view keeps the changing range and azimuth visible: over the sequence the tracked core moves from 43.64 km to 6.39 km and back to 14.18 km, so the set of elevations sampled above it changes from volume to volume.

Grid of radar-centered KTLX pseudo-RHI panels for ten volume times. Each row aligns reflectivity, rhoHV, unfiltered diagnostic KDP, and strict-QC KDP against range from KTLX, with a dashed line marking the moving tracked storm core.
Figure 3. Multi-time radar-centered KTLX pseudo-RHIs across the ten-volume sequence. Each row aligns reflectivity, ρHV, unfiltered diagnostic KDP, and strict-QC KDP. Zero range is KTLX; the dashed line marks the tracked core as it moves from 43.64 km to 6.39 km and back to 14.18 km. Heights are kilometres MSL. White regions in the strict panel are missing or QC-excluded gates, not zero KDP; the unfiltered panel shows what sits behind those gaps.
Animated storm-centered KTLX pseudo-RHI sequence over ten volumes from 01:33 to 02:28 UTC. Four aligned panels show reflectivity, rhoHV, unfiltered diagnostic Maesaka KDP, and strict-QC Maesaka KDP, with a dashed vertical line at the tracked core and black 40 dBZ contours on both KDP panels.
Figure 4. Storm-centered KTLX pseudo-RHI evolution, 01:33–02:28 UTC (10 frames, 900 ms each). Here zero is the tracked core rather than the radar, so structure can be compared frame to frame. The four aligned panels are reflectivity, ρHV, unfiltered diagnostic Maesaka KDP, and strict-QC Maesaka KDP; black 40 dBZ contours overlay both KDP panels and the dashed vertical line marks the core. Axes and colour limits are fixed between frames. White strict-panel regions are missing or QC-excluded gates, not zero KDP. The static storm-centered panels are in Figure 6, for print or for readers who prefer no motion.

Column metrics

Metrics are computed within 5 km horizontally of the tracked core and below 12 km MSL. A missing threshold-top value means no valid selected gate met that threshold; it does not mean a zero-kilometre column.

Strict-QC KDP column evolution. The decrease after 01:55 UTC and the later rebound are nonmonotonic.
Time UTC Strict KDP p95 (° km−1) KDP ≥ 1 top KDP ≥ 2 top 40 dBZ top
01:330.68nonenone9.58 km
01:380.73nonenone9.58 km
01:440.67nonenone10.45 km
01:501.196.54 km6.54 km9.36 km
01:552.206.06 km6.00 km7.10 km
02:024.583.59 km3.10 km4.93 km
02:082.942.71 km2.05 km3.59 km
02:144.563.18 km2.84 km3.01 km
02:215.152.70 km2.70 km4.31 km
02:283.315.32 km5.32 km7.02 km

Method

Radar KTLX Level II→ Dynamic dual-pol sweep selection→ Gate QC and system phase→ Maesaka KDP, native coordinates
Track reflectivity core→ Nearest-ray pseudo-RHI by elevation→ KDP column metrics
Rainfall MRMS rain rate and QPE→ Rainfall timing and accumulation
Compare Lead-time comparison

Data

Radar is KTLX S-band WSR-88D Level II from the public unidata-nexrad-level2 S3 bucket. The full inventory covers 40 volumes from 00:00–04:00 UTC; the demonstration sequence uses the 10 volumes from 01:33:08–02:27:56 UTC. Native fields used are reflectivity, differential reflectivity, differential phase, and cross-correlation ratio. KDP is calculated from native KTLX differential phase; MRMS is never used as a KDP source.

Rainfall context comes from MRMS PrecipRate, RadarOnly_QPE_01H, and RadarQualityIndex (public noaa-mrms-pds bucket) at 2-minute resolution, over 34.8–35.6 °N and 98.0–96.8 °W, with a fixed verification point at 35.22 °N, 97.44 °W. Missing intervals are not filled with zero. Rain rate is integrated by the trapezoidal rule only when both segment endpoints are finite and the gap is no longer than 5 minutes. The accumulation map is masked where temporal coverage falls below 90 %.

Dynamic sweep selection

KTLX changed scan strategy within the window, with 16–23 sweeps per volume, so sweep indices are never copied between volumes. For each volume, every sweep is inspected for coverage of the four required fields; repeated elevations are grouped when fixed angles differ by no more than 0.1°; groups missing required dual-polarization fields are excluded; and within each repeated-elevation group the sweep maximizing the minimum valid fraction among required fields is selected.

KDP retrieval and gate quality control

Specific differential phase is one half of the range derivative of differential phase, KDP = ½ dΦDP/dr, reported in ° km−1. It responds to liquid-water content and drop-size distribution while being less affected by attenuation and calibration than reflectivity.

Retrieval uses Py-ART 2.3.0 pyart.retrieve.kdp_maesaka in native polar coordinates, one selected sweep at a time, with Clpf=1.0, first_guess=0.01, and finite_order="low". System phase is estimated independently for each sweep with det_sys_phase_gf using the permissive gate filter and first_gate=30. Returned KDP is explicitly remasked after retrieval, because passing a Py-ART GateFilter does not guarantee the returned Maesaka array retains every QC exclusion. Missing and excluded gates stay masked; they are never converted to zero KDP.

Gate quality control. Strict KDP carries the primary interpretation; permissive KDP is sensitivity context only.
MaskReflectivityρHVFiniteness
Strict (primary)≥ 20 dBZ≥ 0.95Z, ρHV, ΦDP all finite
Permissive (sensitivity)≥ 20 dBZ≥ 0.90Z, ρHV, ΦDP all finite
Bit-packed QC flag values.
ValueMeaning
1no data or nonfinite required input
2reflectivity below 20 dBZ
4ρHV below 0.90
8ρHV below 0.95
16possible mixed-phase or hail gate: reflectivity passes but ρHV is below 0.95

ρHV describes the correlation between horizontally and vertically polarized returns. Values near one generally indicate a more uniform scatterer population. Lower values can occur with hail, melting or mixed-phase particles, biological targets, low signal-to-noise ratio, sidelobes, or nonuniform beam filling. It is a quality indicator, not a unique hail detector.

Storm tracking

The tracked object is a range-area-weighted reflectivity centroid computed on the lowest selected dual-polarization sweep: gates at or above 45 dBZ within 20 km of the previous target, each weighted by radar range multiplied by (reflectivity − 45 dBZ + 1) to reduce polar sampling-area bias.

The seven targets from 01:50–02:28 UTC were reviewed against reflectivity overlays and accepted. The 01:33, 01:38, and 01:44 UTC targets are an objective backward extension anchored to the accepted 01:50 target, with backward steps of 6.47–6.92 km, well within the 20 km search radius. The ten locations are therefore not all independently manually reviewed, and the three antecedent extensions should be read as such.

The reviewed candidates are shown in Figure 1.

Pseudo-RHI construction

For each volume the azimuth from KTLX to the tracked centroid is computed; at every dynamically selected elevation the nearest PPI ray to that azimuth is selected; the section is rejected if any nearest-ray offset exceeds 1°; and the section is built with pyart.util.cross_section_ppi, preserving native fields and masks in a CF/Radial NetCDF output. The largest observed nearest-ray offset is 0.484°.

The storm-centered horizontal coordinate is xstorm = √(xradar² + yradar²) − Rtarget, so zero marks the tracked core. Height is geometric gate height plus radar altitude, shown in kilometres MSL. Sections span ±20 km around the target and up to 12 km MSL.

Sensitivity

Alternative retrieval algorithms

The 02:02 UTC lowest selected sweep (0.483°) was processed with the same strict mask using Maesaka, Vulpiani, and Schneebeli retrievals. All three use S-band settings; Vulpiani and Schneebeli additionally use Py-ART's ρHV-aware phase prefilter. Only gates valid in each method and in Maesaka are compared.

Method comparison against Maesaka at 02:02 UTC. The Schneebeli implementation is stochastic and was rerun with NumPy seed 0.
MethodCorrelationMedian |diff| (° km−1)Notes
Vulpiani0.6190.072 Retains the enhancement but smoother and larger (p95 0.772 vs Maesaka 0.424); permits negative KDP.
Schneebeli (default)0.0240.211 756 nonfinite unmasked gates and extreme outliers; not suitable here without tuning.

Maesaka is the retrieval used everywhere else in this report; the other two were run only on this one sweep for comparison. The optional LP/Sobel phase product was also attempted and hit infeasible solver behaviour, so it produced no usable field here.

Side-by-side comparison of Maesaka, Vulpiani, and Schneebeli KDP retrievals on the 02:02 UTC lowest selected sweep, using the same strict quality-control mask.
Figure 5. KDP retrieval-method comparison on the 02:02 UTC lowest selected sweep (0.483°), same strict QC mask throughout.

Strict, permissive, and unfiltered fields

Three KDP fields are carried through the processing. All use the same Maesaka settings and differ only in which gates are admitted.

Only the strict field is used for column metrics, lead times, and any rainfall statement in this report.
FieldGates admittedRole
Strict Z ≥ 20 dBZ, ρHV ≥ 0.95, all inputs finite Every quoted number
Permissive Z ≥ 20 dBZ, ρHV ≥ 0.90, all inputs finite Sensitivity only
Unfiltered diagnostic No Z or ρHV threshold; missing or nonfinite native ΦDP still excluded Display only

The permissive mask admits gates the strict mask rejects, and under it elevated KDP appears earlier in the sequence. Those extra gates have lower ρHV, which occurs with mixed-phase or melting particles, hail, low signal-to-noise, sidelobes, or nonuniform beam filling.

The unfiltered diagnostic field drops the thresholds entirely, so the blank areas of the strict field fill in. What appears there can include mixed-phase and hail returns, low-SNR gates, and unstable phase-gradient artefacts, so it is not rainfall-quality KDP and contributes to no column metric, lead time, or rainfall interpretation. It is shown beside the strict field so the extent and cause of the strict-field gaps are visible.

Where strict-mask KDP is NaN, the gate was missing or excluded by QC. A blank region can also mean nothing was sampled there: the top elevation in these volumes is 19.51°, so over a core at 6.4 km range no beam reaches above roughly 2.5 km MSL, whatever the masking.

Reproducibility

Environment

Python 3.12.14 · Py-ART 2.3.0 · NumPy 2.5.3 · SciPy 1.18.1 · xarray 2026.7.0 · netCDF4 1.7.4 · pandas 3.0.6 · matplotlib 3.11.2 · PyGRIB 2.1.8 · pyproj 3.8.0. Full specification in code/environment.yml; thresholds and paths in code/config/config.yaml.

Key source files

Machine-readable evidence

These accompany the full analysis bundle and are not redistributed with this page:

Execution notes

Radar-volume processing runs through Slurm on swat or swat_plus, never on the login node. The completed workflow passed all 39 lightweight tests, all expected products reported ready, and the GIF was verified to contain 10 nonblank, varying frames. Slurm recipes are in code/sbatch/.

Supplementary figures

Grid of storm-centered KTLX pseudo-RHI panels for ten volume times. Each row aligns reflectivity, rhoHV, unfiltered diagnostic KDP, and strict-QC KDP, with height in kilometres MSL against storm-relative horizontal distance.
Figure 6. Multi-time storm-centered KTLX pseudo-RHIs, the static counterpart to the animation in Figure 4. Each time row aligns reflectivity, ρHV, unfiltered diagnostic KDP, and strict-QC KDP. Zero horizontal distance is the tracked storm core, so structure can be compared directly from panel to panel; the radar-centered version is Figure 3. Heights are kilometres MSL. White regions in the KDP panels are missing or QC-excluded gates, not zero KDP.
Single-volume KDP diagnostic panels for the 02:02 UTC volume, showing reflectivity, differential phase, processed phase, and strict and permissive Maesaka KDP fields.
Figure 7. One-volume KDP diagnostic for 02:02 UTC, the gate volume processed before any batch retrieval.
MRMS precipitation quick-look map over the case analysis domain.
Figure 8. MRMS precipitation quick look over the analysis domain, 34.8–35.6 °N, 98.0–96.8 °W.

Forty low-level KTLX reflectivity quick looks spanning 00:04–03:55 UTC are in figures/radar_quicklooks/; they were used for manual screening and storm-target refinement.