Data Lab / WSPR tornado V4: mechanism test — WSPR × GOES-16 GLM lightning cross-correlation
Fig. 1: lag correlation pooled
Fig. 2: v3 vs v4 method comparison
Fig. 3: v4 flash aftermath curves
Fig. 4: v4 four scale lag matrix
Fig. 5: v4 mechanism constraint diagram
Fig. 6: v4 per event scale table
Fig. 7: v4 ruled out summary plot
Fig. 8: v4 three method overlay
WSPR tornado V4: mechanism test, decoupling from GLM cloud-to-ground lightning
Author: M. Isenbek, E. Isenbek, B. Isenbek (TerraPulse Climate Intelligence Platform)
Status: Complete (Stages 1–4, verdict frozen)
Created: 2026-04-20
GitHub Issue: #164 (paper #32)
Predecessors: paper #29 (wspr-tornado-season-conus-2026, V1), paper #30 (wspr-tornado-v2-historical, V2), paper #31 (wspr-tornado-v3-controls-fixed, V3)
Hypothesis
V3 established a reproducible WSPR 40 m pre-tornado SNR depression pooled over outbreak events, keyed to SPC tornado touchdown timestamps. V3 left the physical mechanism open. V4 asks a sharper, falsifiable question:
If the WSPR precursor is driven by thunderstorm electrification, either through D-layer absorption over the storm or through QRN (impulse-noise) elevating the receiver noise floor, then WSPR residuals should co-register spatially and temporally with cloud-to-ground (CG) lightning.
V4 uses GOES-16 GLM L2 LCFA (Geostationary Lightning Mapper, Lightning Cluster-Filter Algorithm) as the first independent lightning constraint on the V3 precursor.
Data
- WSPR: 298M spots (inherited from V3 workspace), WSPR-Net ingest, normalised to per-cell per-15-min dB residuals after removing the 30-day rolling median per link.
- GLM: 9,594,586 CG flashes pulled from
s3://noaa-goes16/GLM-L2-LCFA/for 72 h around each of 13 events (12 outbreaks + 1 clean control). - Events (12 outbreaks): Mayfield 2021-12-11, Midwest 2021-12-15, Great Plains 2022-04-12, Deep South 2023-03-24, Ark-La-Miss 2023-04-01, Palm Sunday 2023-04-05, Heartland 2023-05-11, Tennessee 2023-12-09, Oklahoma 2024-05-06, Nebraska 2024-04-26, Iowa 2024-05-21, Southeast 2024-12-28. Control:
control-mayfield-2021-12-11-a. - Joint grid: 1° × 15-min cells on a CONUS bbox (25–50°N, −125 to −65°W), producing 589k–956k per-event joint rows (9.95M total across the 13 events).
Methodology
- Stage 1 (GLM pull): per-event 72 h of GLM L2 LCFA extracted to parquet (13 files, one per event).
- Stage 2 (joint grid): bin GLM flashes and WSPR residuals to the same 1° × 15-min cells; compute per-cell log(1 + flash rate) and per-cell mean WSPR SNR residual by band.
- Stage 3 (cross-correlation): superposed-epoch around the first GLM-lightning 15-min cell for each storm cluster; compute pooled mean residual across lags ±360 min in 15-min steps; build null envelope by shuffling lightning-onset times within each event (500 draws).
- Stage 3b/3c (wider aggregations): repeat with 3×3 (≈300 km), 5×5 (≈500 km), and event-level (all in-bbox cells) lightning triggers.
- V3-method replication: re-run the V3 SPC-tornado-touchdown–triggered analysis on exactly the 12-event V4 subset, to separate "smaller-sample attrition" from "trigger-swap attrition".
- Classification rule: a scale × band cell is called
precedeswhenmin_value_db<−null_p95_max_absand the earliest lag exceeding null is negative; otherwiseNULL(except one exceedance discussed below).
All numerical claims in the paper trace to data/v4_verdict.json, data/v3_method_on_v4_events.json, data/lag_correlation_pooled.json, data/lag_correlation_wider.json, or data/joint_grid_summary.json.
Findings
V3 signal replicates on V4 subset (SPC trigger)
Re-running the V3 method on the 12-event V4 subset with SPC tornado touchdown timestamps: 40 m tornado reproduces the precursor at k_min = −270 min, min_value_db = −1.68 dB, null_p95_max_abs = 1.59 dB, earliest-lag-exceeds-null = −270 min, classification precedes. The other bands (80 m, 30 m, 20 m) were NULL on this subset, consistent with the known 40 m–specific effect in V3.
V4 GLM trigger decouples at every spatial scale
With the identical 12-event subset but the trigger swapped to GLM lightning onset, 40 m tornado is NULL at all four spatial aggregations:
| Scale | k_min (min) | min (dB) | null p95 | classification |
|---|---|---|---|---|
| cell (1°, ~100 km) | +45 | −0.32 | 0.41 | NULL |
| 3×3 (~300 km) | +300 | −0.11 | 0.52 | NULL |
| 5×5 (~500 km) | +105 | +0.03 | 0.57 | NULL |
| event-level | −360 | −0.11 | 0.98 | NULL |
Across 16 scale × band cells (4 scales × 4 bands), 15 are NULL; the only exceedance is event-level 20 m (k_min = −345 min, min = −1.37 dB, null p95 = 0.74 dB). We treat this as a 1-of-16 false positive expected at the 95% null threshold: its sign and lag are physics-inconsistent with the V3 40 m precursor, and no other 20 m scale, nor any other 40 m scale, shows co-registration.
Per-event joint-grid Pearson correlations between log-flash-rate and WSPR 40 m residual are small and negative across all 12 outbreaks (median r ≈ −0.024, range −0.047 to −0.005), with the control even smaller (r = −0.002); no effect size worth discussing.
Discussion
Two popular mechanistic hypotheses are disfavored by V4:
- QRN-at-receiver-sites (DISFAVORED): if nearby CG flashes were elevating the receiver noise floor at tornado onset, we would expect anti-correlation at or just after lightning peak. No such signal exists at the cell or 3×3 scale.
- Cell-local D-layer absorption (DISFAVORED): a storm-top-driven ionospheric modification would co-register with lightning at 1°, 300 km, or 500 km. V4 tests all three and finds NULL.
Three hypotheses survive:
- Pre-electrification convective physics: overshooting tops, gravity-wave launch, or early (non-CG) electrification before the first GLM-visible flash; invisible to GLM (which only sees optical CG flashes) but visible to WSPR.
- Synoptic / regional ionospheric disturbance: a >1000 km footprint that does not spatially co-register with any single-event GLM footprint.
- Non-convective coincidence: a synoptic confound that produces both WSPR-visible ionospheric effects and tornadic convection.
V4 does not resolve the mechanism, but it narrows the search. The headline verdict is DECOUPLED.
Limitations: (a) GLM observes only optical CG flashes; in-cloud electrification is invisible. (b) 12 outbreak events is a small sample. (c) 15-min temporal resolution may miss fast dynamics. (d) We classify at the 95% null threshold; the 1-of-16 event-level 20 m exceedance is within the expected false-positive rate and should not be interpreted as a real detection without independent replication.
References
- Paper #29 (
wspr-tornado-season-conus-2026): WSPR tornado-season forecast V1. - Paper #30 (
wspr-tornado-v2-historical): V2 historical outbreak replication. - Paper #31 (
wspr-tornado-v3-controls-fixed): V3 dose-separation controls, SPC-keyed precursor. - Paper #25 (
wspr-aircraft-detection): WSPR superposed-epoch methodology. - GOES-16 GLM L2 Algorithm Theoretical Basis Document (NOAA NESDIS).
s3://noaa-goes16/GLM-L2-LCFA/public S3 bucket.- Parent issue: #156 (V4 mechanism program). Paper issue: #164.
Author: TerraPulse Lab
Published: 2026-04-20 · Updated: 2026-04-20
Data files: _issue_comment_stage3b.md, _issue_comment_stage3c.md, events_v4.parquet, flash_aftermath.json, flash_aftermath.log, glm_flashes_ark-la-miss-2023-04-01.parquet, glm_flashes_control-mayfield-2021-12-11-a.parquet, glm_flashes_deep-south-2023-03-24.parquet, glm_flashes_great-plains-2022-04-12.parquet, glm_flashes_heartland-2023-05-11.parquet, glm_flashes_iowa-2024-05-21.parquet, glm_flashes_mayfield-2021-12-11.parquet, glm_flashes_midwest-2021-12-15.parquet, glm_flashes_nebraska-2024-04-26.parquet, glm_flashes_oklahoma-2024-05-06.parquet, glm_flashes_palm-sunday-2023-04-05.parquet, glm_flashes_southeast-2024-12-28.parquet, glm_flashes_tennessee-2023-12-09.parquet, glm_probe_example.json, glm_pull.log, glm_pull_summary.json, joint_grid.log, joint_grid_ark-la-miss-2023-04-01.parquet, joint_grid_control-mayfield-2021-12-11-a.parquet, joint_grid_deep-south-2023-03-24.parquet, joint_grid_great-plains-2022-04-12.parquet, joint_grid_heartland-2023-05-11.parquet, joint_grid_iowa-2024-05-21.parquet, joint_grid_mayfield-2021-12-11.parquet, joint_grid_midwest-2021-12-15.parquet, joint_grid_nebraska-2024-04-26.parquet, joint_grid_oklahoma-2024-05-06.parquet, joint_grid_palm-sunday-2023-04-05.parquet, joint_grid_southeast-2024-12-28.parquet, joint_grid_summary.json, joint_grid_tennessee-2023-12-09.parquet, lag_correlation.log, lag_correlation_ark-la-miss-2023-04-01.json, lag_correlation_control-mayfield-2021-12-11-a.json, lag_correlation_deep-south-2023-03-24.json, lag_correlation_great-plains-2022-04-12.json, lag_correlation_heartland-2023-05-11.json, lag_correlation_iowa-2024-05-21.json, lag_correlation_mayfield-2021-12-11.json, lag_correlation_midwest-2021-12-15.json, lag_correlation_nebraska-2024-04-26.json, lag_correlation_oklahoma-2024-05-06.json, lag_correlation_palm-sunday-2023-04-05.json, lag_correlation_pooled.json, lag_correlation_sensitivity.json, lag_correlation_southeast-2024-12-28.json, lag_correlation_tennessee-2023-12-09.json, lag_correlation_wider.json, lag_correlation_wider.log, sanity_report.json, v3_method_on_v4_events.json, v4_verdict.json
Scripts: 01_feasibility_probe.py, 02_pull_glm_flashes.py, 03_build_events_v4.py, 04_sanity_checks.py, 05_build_joint_grid.py, 06_lag_correlation.py, 07_plot_lag.py, 08_wider_aggregation.py, 09_v3_method_on_v4.py, 10_plot_v3_vs_v4_comparison.py, 11_stage4_verdict_viz.py, 12_flash_aftermath.py, debug_mayfield_distribution.py, debug_peak_sample.py, extract.py, inspect_pooled.py, summarize_per_event.py