prop/test/microwaveprop/propagation
Graham McIntire 33f5d4edbe
feat(rainscatter): classify QSO propagation mechanism from common-volume radar
Adds a per-contact enrichment pipeline that determines whether a QSO was
most likely carried by rain scatter, tropospheric ducting, or ordinary
troposcatter — using IEM n0q composite reflectivity sampled inside the
lens-shaped intersection of 400 km-radius disks around each endpoint.

Pieces:
  * Microwaveprop.Propagation.CommonVolume — lens geometry (haversine,
    in-CV test, bbox, area).
  * contact_common_volume_radar table (1:1 per contact) storing
    aggregate dBZ stats inside the CV + radar_status column on contacts.
  * Microwaveprop.Workers.CommonVolumeRadarWorker — Oban :radar queue,
    fetches the n0q frame at QSO time, iterates pixels inside the CV
    bbox, aggregates rain/heavy/core-pixel counts, max/mean dBZ, and
    coverage percentage.
  * Microwaveprop.Propagation.RainScatterClassifier — rule-based mapper
    from (band, distance, radar stats, duct flags) to one of
    :likely_rainscatter | :rainscatter_possible | :tropo_duct |
    :troposcatter | :unknown.
  * ContactWeatherEnqueueWorker learns a :radar enrichment type and
    enqueues the CV worker on contact submission; pre-2014 contacts
    (outside IEM n0q coverage) are pinned to :unavailable.
  * `mix radar_backfill` bulk-enqueues historical contacts with
    --year / --limit / --dry-run.
  * Contact detail page renders a mechanism badge with supporting
    stats (common-volume area, max dBZ, heavy-rain pixel count,
    coverage %).
2026-04-17 15:57:59 -05:00
..
band_config_test.exs Rename 9cm band 3456 → 3400 2026-04-16 12:40:38 -05:00
common_volume_test.exs feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -05:00
duct_test.exs Phase 4: Ray-traced duct geometry 2026-04-10 08:31:16 -05:00
freshness_monitor_test.exs fix(propagation): dedup PropagationGridWorker enqueues 2026-04-16 14:58:55 -05:00
grid_test.exs Increase grid to 0.125 degrees with smooth canvas overlay 2026-03-31 08:52:07 -05:00
hf_muf_test.exs HfMuf physics: distance-adjusted MUF from GIRO MUFD(3000) 2026-04-15 14:59:39 -05:00
inversion_test.exs Phase 2 tasks 2.1-2.4: BL turbulence feature computations 2026-04-10 08:21:23 -05:00
model_test.exs Integrate ML model into grid worker, QSO search, and UI improvements 2026-04-01 10:14:22 -05:00
pipeline_status_test.exs Sync map progress chip to what's actually loadable 2026-04-15 09:05:03 -05:00
profiles_file_test.exs ProfilesFile.read/1: drop [:safe] flag, trust our own files 2026-04-15 17:04:34 -05:00
rain_scatter_classifier_test.exs feat(rainscatter): classify QSO propagation mechanism from common-volume radar 2026-04-17 15:57:59 -05:00
rain_scatter_test.exs test: cover propagation/rain_scatter 2026-04-16 14:09:44 -05:00
recalibrator_test.exs Phase 9.3, 9.4, and Phase 3 NEXRAD pipeline 2026-04-10 12:48:36 -05:00
region_test.exs Phase 7: Regionalized seasonal scoring 2026-04-10 08:39:01 -05:00
score_cache_test.exs Nudge HRRR scores with live ASOS obs between runs 2026-04-12 14:27:27 -05:00
scorer_test.exs Wire NEXRAD, native ducts, and commercial links into scoring 2026-04-13 12:08:15 -05:00
scores_file_test.exs Run PropagationGridWorker hourly, retain only the current chain's window 2026-04-14 15:26:58 -05:00
sporadic_e_test.exs Add 50/144/222 MHz bands, rename 440→432 2026-04-16 12:36:10 -05:00