180 lines
7.3 KiB
Markdown
180 lines
7.3 KiB
Markdown
# Recalibration Analysis Report — 2026-04-13
|
||
|
||
> Auto-generated by `scripts/recalibrate_algo.py`. This report is the
|
||
> input for `algo.md` updates — diff against the prior dated section to
|
||
> see what's actually moved.
|
||
|
||
Connection: `postgres://prop:***@10.0.15.24:5432/prop`
|
||
Statement timeout: 20min
|
||
|
||
|
||
## Row counts and date ranges
|
||
|
||
| tbl | n | lo | hi |
|
||
|:---------------------|---------:|:-----------|:-----------|
|
||
| contacts | 58560 | 1991-05-04 | 2026-03-07 |
|
||
| era5_profiles | 0 | | |
|
||
| hrrr_native_profiles | 11472 | 2019-03-09 | 2025-09-21 |
|
||
| hrrr_profiles | 76151193 | 2016-09-17 | 2026-04-13 |
|
||
| iemre_observations | 15745 | | |
|
||
| nexrad_observations | 7286 | 2019-08-17 | 2024-09-22 |
|
||
| propagation_scores | 10543632 | 2026-04-13 | 2026-04-13 |
|
||
| rtma_observations | 0 | | |
|
||
| soundings | 16864 | 1990-06-07 | 2026-03-07 |
|
||
| surface_observations | 392444 | 1991-05-03 | 2026-04-13 |
|
||
| terrain_profiles | 58554 | | |
|
||
|
||
|
||
## Data gaps (these should NOT be zero in a healthy prod)
|
||
|
||
- **era5_rows**: 0
|
||
- **hrrr_climatology_rows**: 0
|
||
- **rtma_rows**: 0
|
||
- **metar5_rows**: 0
|
||
- **hrrr_complete_contacts**: 44147
|
||
- **hrrr_pending_contacts**: 14413
|
||
|
||
|
||
## Contacts by band (≥902 MHz)
|
||
|
||
| band_mhz | contacts | avg_km | max_km |
|
||
|-----------:|-----------:|---------:|---------:|
|
||
| 902 | 36 | 172.000 | 915.000 |
|
||
| 1296 | 74 | 259.000 | 1497.000 |
|
||
| 2304 | 15 | 91.000 | 348.000 |
|
||
| 3456 | 5 | 79.000 | 157.000 |
|
||
| 5760 | 4 | 97.000 | 148.000 |
|
||
| 10000 | 53698 | 213.000 | 2393.000 |
|
||
| 24000 | 3786 | 96.000 | 710.000 |
|
||
| 47000 | 764 | 66.000 | 343.000 |
|
||
| 75000 | 108 | 62.000 | 289.000 |
|
||
| 122000 | 35 | 27.000 | 139.000 |
|
||
| 134000 | 5 | 65.000 | 157.000 |
|
||
| 142000 | 4 | 47.000 | 79.700 |
|
||
| 145000 | 2 | 40.000 | 79.600 |
|
||
| 241000 | 15 | 29.000 | 114.400 |
|
||
| 288000 | 1 | 1.000 | 1.246 |
|
||
| 322000 | 1 | 1.000 | 1.400 |
|
||
| 403000 | 1 | 1.000 | 1.400 |
|
||
| 411000 | 1 | 0.000 | 0.050 |
|
||
|
||
|
||
## Monthly sounding ducting
|
||
|
||
| month | soundings | ducting_pct | avg_min_grad | avg_pwat |
|
||
|--------:|------------:|--------------:|---------------:|-----------:|
|
||
| 1 | 95 | 28.400 | -171.400 | 10.900 |
|
||
| 2 | 131 | 29.000 | -163.100 | 7.900 |
|
||
| 3 | 81 | 17.300 | -148.100 | 9.400 |
|
||
| 4 | 107 | 38.300 | -190.100 | 15.700 |
|
||
| 5 | 311 | 51.800 | -286.400 | 25.600 |
|
||
| 6 | 380 | 69.500 | -355.900 | 32.000 |
|
||
| 7 | 292 | 67.800 | -296.000 | 29.300 |
|
||
| 8 | 2572 | 54.900 | -261.200 | 34.600 |
|
||
| 9 | 2335 | 56.200 | -279.800 | 27.200 |
|
||
| 10 | 155 | 57.400 | -307.100 | 19.300 |
|
||
| 11 | 158 | 50.000 | -256.700 | 12.000 |
|
||
| 12 | 140 | 25.700 | -185.200 | 10.800 |
|
||
|
||
|
||
## HRRR native-profile duct distribution (best supportable band)
|
||
|
||
| band_bin | profiles | avg_inv_top_m | avg_theta_e_jump | avg_richardson |
|
||
|:-----------|-----------:|----------------:|-------------------:|-----------------:|
|
||
| 15-30 GHz | 10 | 2091.000 | 5.900 | 8.690 |
|
||
| 30-75 GHz | 4 | 3860.000 | 5.000 | 12.120 |
|
||
| 5-15 GHz | 98 | 4408.000 | 25.700 | 12.550 |
|
||
| <5 GHz | 1432 | 2097.000 | 5.400 | 18.420 |
|
||
| none | 9928 | 11497.000 | 80.500 | 38.270 |
|
||
|
||
|
||
## Contact ↔ HRRR per-band Pearson correlations (matched n=1020)
|
||
|
||
| band_mhz | n | rho_pr | rho_dpc | rho_pwat | rho_sref | rho_grad | rho_tc | rho_hpbl |
|
||
|-----------:|--------:|---------:|----------:|-----------:|-----------:|-----------:|---------:|-----------:|
|
||
| 1296.000 | 63.000 | -0.446 | 0.150 | -0.004 | 0.321 | -0.308 | -0.313 | -0.383 |
|
||
| 10000.000 | 680.000 | -0.101 | 0.043 | 0.004 | 0.179 | -0.136 | -0.109 | -0.206 |
|
||
| 24000.000 | 147.000 | -0.291 | -0.180 | -0.221 | 0.094 | -0.032 | -0.299 | -0.218 |
|
||
| 47000.000 | 75.000 | -0.111 | 0.016 | 0.007 | 0.217 | -0.175 | 0.089 | -0.154 |
|
||
|
||
|
||
## 10 GHz: HPBL bin distance distribution
|
||
|
||
| bin | n | avg_km | p50_km |
|
||
|:----------|----:|---------:|---------:|
|
||
| <200 | 56 | 221.800 | 176.000 |
|
||
| 200-500 | 177 | 193.700 | 160.000 |
|
||
| 500-1000 | 178 | 153.200 | 126.000 |
|
||
| 1000-1500 | 100 | 158.400 | 132.500 |
|
||
| 1500-2000 | 95 | 142.900 | 134.000 |
|
||
| >=2000 | 74 | 100.300 | 90.000 |
|
||
|
||
|
||
## 10 GHz: pressure bin distance distribution
|
||
|
||
| bin | n | avg_km | p50_km |
|
||
|:----------|----:|---------:|---------:|
|
||
| <990 | 101 | 212.100 | 134.000 |
|
||
| 990-1000 | 538 | 155.400 | 128.000 |
|
||
| 1000-1010 | 28 | 164.600 | 115.000 |
|
||
| 1010-1020 | 2 | 23.000 | 23.000 |
|
||
| >=1020 | 11 | 103.100 | 23.000 |
|
||
|
||
|
||
## NEXRAD composite reflectivity vs distance (matched n=102)
|
||
|
||
Sanity check for the rain-attenuation direction: at rain-sensitive bands higher `max_dbz` should map to shorter contacts. At 10 GHz the effect should be barely detectable.
|
||
|
||
|
||
**10 GHz:**
|
||
|
||
| bin | n | avg_km | p50_km |
|
||
|:-----------------|----:|---------:|---------:|
|
||
| none (<5) | 59 | 155.700 | 143.000 |
|
||
| drizzle (5-20) | 7 | 56.400 | 49.000 |
|
||
| light (20-30) | 13 | 95.200 | 40.000 |
|
||
| moderate (30-45) | 4 | 97.200 | 92.000 |
|
||
| heavy (>=45) | 1 | 213.000 | 213.000 |
|
||
|
||
|
||
**24 GHz:**
|
||
|
||
| bin | n | avg_km | p50_km |
|
||
|:-----------------|----:|---------:|---------:|
|
||
| none (<5) | 5 | 29.800 | 23.000 |
|
||
| drizzle (5-20) | 1 | 49.000 | 49.000 |
|
||
| light (20-30) | 5 | 34.000 | 40.000 |
|
||
| moderate (30-45) | 1 | 60.000 | 60.000 |
|
||
|
||
|
||
## hrrr_native_profiles.best_duct_band_ghz vs distance (matched n=619)
|
||
|
||
Validates the 1.15× boost in `Scorer.score_refractivity/4`: contacts where the native duct supports the target band should run longer than those where it does not.
|
||
|
||
|
||
**10 GHz:**
|
||
|
||
| bin | n | avg_km | p50_km |
|
||
|:-------|--------:|---------:|---------:|
|
||
| none | 447.000 | 140.800 | 128.000 |
|
||
| <5 GHz | 38.000 | 150.000 | 114.500 |
|
||
|
||
|
||
**24 GHz:**
|
||
|
||
| bin | n | avg_km | p50_km |
|
||
|:-------|-------:|---------:|---------:|
|
||
| none | 97.000 | 47.600 | 32.000 |
|
||
| <5 GHz | 3.000 | 56.300 | 60.000 |
|
||
|
||
|
||
**47 GHz:**
|
||
|
||
| bin | n | avg_km | p50_km |
|
||
|:------|-------:|---------:|---------:|
|
||
| none | 16.000 | 54.700 | 42.000 |
|
||
|
||
|
||
## Commercial-link rx_power degradation vs contemporaneous DFW contacts (matched n=0)
|
||
|
||
_No DFW-zone contacts fall inside the commercial_samples date window yet. Expected to stay empty until the Aug/Sep contest season produces contacts that overlap with live SNMP polling._
|