prop/priv/algo/band_weights.json
Graham McIntire daafa5a02a
perf(algo): unify recalibration into single Python pipeline with JSON output
Replace the two-script Python pipeline (analysis report + Elixir-source
emitter) with a single `scripts/recalibrate.py` that fits per-band
weights from PSKR spot density (VHF/UHF) and contacts↔HRRR correlations
(microwave), writing `priv/algo/band_weights.json` as a machine-readable
artifact. A new Elixir BandWeights module loads this JSON once via
`:persistent_term` cache; BandConfig.weights/1 consults it before falling
back to in-source overrides or global defaults. The script never touches
Elixir source — recalibration is now `python3 scripts/recalibrate.py`
followed by an app restart.
2026-05-25 14:45:55 -05:00

241 lines
5.2 KiB
JSON

{
"generated_at": "2026-05-25T19:44:49+00:00",
"generated_by": "scripts/recalibrate.py",
"schema_version": 1,
"global_weights": {
"humidity": 0.1262,
"time_of_day": 0.038,
"td_depression": 0.101,
"refractivity": 0.0986,
"sky": 0.0841,
"season": 0.1134,
"wind": 0.0841,
"rain": 0.1431,
"pwat": 0.1147,
"pressure": 0.0967
},
"data_sources": {
"pskr": {
"bands": [
50,
144,
432,
1296,
2304,
10000
],
"total_samples": 411619
},
"contacts": {
"bands": [
222,
432,
902,
1296,
2304,
3400,
5760,
10000,
24000,
47000,
75000,
122000
],
"total_samples": 81571
}
},
"band_overrides": {
"50": {
"weights": {
"humidity": 0.1252,
"time_of_day": 0.0273,
"td_depression": 0.1511,
"refractivity": 0.0764,
"sky": 0.1006,
"season": 0.2171,
"wind": 0.1006,
"rain": 0.0171,
"pwat": 0.1197,
"pressure": 0.0649
},
"n_samples": 396474,
"source": "pskr"
},
"144": {
"weights": {
"humidity": 0.1865,
"time_of_day": 0.0197,
"td_depression": 0.1492,
"refractivity": 0.1106,
"sky": 0.0621,
"season": 0.1173,
"wind": 0.0621,
"rain": 0.0106,
"pwat": 0.1695,
"pressure": 0.1125
},
"n_samples": 13710,
"source": "pskr"
},
"222": {
"weights": {
"humidity": 0.2002,
"time_of_day": 0.0271,
"td_depression": 0.1804,
"refractivity": 0.101,
"sky": 0.0751,
"season": 0.1316,
"wind": 0.0751,
"rain": 0.0128,
"pwat": 0.1535,
"pressure": 0.0432
},
"n_samples": 7518,
"source": "contacts"
},
"432": {
"weights": {
"humidity": 0.153,
"time_of_day": 0.0256,
"td_depression": 0.17,
"refractivity": 0.1659,
"sky": 0.0708,
"season": 0.1145,
"wind": 0.0708,
"rain": 0.012,
"pwat": 0.1376,
"pressure": 0.0799
},
"n_samples": 1013,
"source": "pskr"
},
"902": {
"weights": {
"humidity": 0.2204,
"time_of_day": 0.0299,
"td_depression": 0.1764,
"refractivity": 0.0967,
"sky": 0.0734,
"season": 0.1089,
"wind": 0.0734,
"rain": 0.0125,
"pwat": 0.1273,
"pressure": 0.081
},
"n_samples": 1754,
"source": "contacts"
},
"1296": {
"weights": {
"humidity": 0.2259,
"time_of_day": 0.034,
"td_depression": 0.1528,
"refractivity": 0.1429,
"sky": 0.0753,
"season": 0.1015,
"wind": 0.0753,
"rain": 0.0128,
"pwat": 0.1327,
"pressure": 0.0468
},
"n_samples": 2951,
"source": "contacts"
},
"2304": {
"weights": {
"humidity": 0.1886,
"time_of_day": 0.0284,
"td_depression": 0.1503,
"refractivity": 0.1474,
"sky": 0.0629,
"season": 0.0848,
"wind": 0.0629,
"rain": 0.0338,
"pwat": 0.1714,
"pressure": 0.0695
},
"n_samples": 719,
"source": "contacts"
},
"3400": {
"weights": {
"humidity": 0.2001,
"time_of_day": 0.0301,
"td_depression": 0.1601,
"refractivity": 0.1102,
"sky": 0.0667,
"season": 0.0899,
"wind": 0.0667,
"rain": 0.0507,
"pwat": 0.1818,
"pressure": 0.0437
},
"n_samples": 335,
"source": "contacts"
},
"5760": {
"weights": {
"humidity": 0.1753,
"time_of_day": 0.0299,
"td_depression": 0.1589,
"refractivity": 0.0491,
"sky": 0.0661,
"season": 0.0892,
"wind": 0.0661,
"rain": 0.0796,
"pwat": 0.1708,
"pressure": 0.1151
},
"n_samples": 321,
"source": "contacts"
},
"10000": {
"weights": {
"humidity": 0.1262,
"time_of_day": 0.038,
"td_depression": 0.101,
"refractivity": 0.0986,
"sky": 0.0841,
"season": 0.1134,
"wind": 0.0841,
"rain": 0.1431,
"pwat": 0.1147,
"pressure": 0.0967
},
"n_samples": 54161,
"source": "contacts"
},
"24000": {
"weights": {
"humidity": 0.1483,
"time_of_day": 0.0402,
"td_depression": 0.1187,
"refractivity": 0.0517,
"sky": 0.0494,
"season": 0.0733,
"wind": 0.0494,
"rain": 0.2224,
"pwat": 0.1348,
"pressure": 0.112
},
"n_samples": 3808,
"source": "contacts"
},
"47000": {
"weights": {
"humidity": 0.1403,
"time_of_day": 0.0528,
"td_depression": 0.1123,
"refractivity": 0.0517,
"sky": 0.0468,
"season": 0.0757,
"wind": 0.0468,
"rain": 0.2387,
"pwat": 0.1275,
"pressure": 0.1075
},
"n_samples": 759,
"source": "contacts"
}
}
}