prop/test/fixtures/swpc/xrays_sample.json
Graham McIntire 923c8a468d
SpaceWeather: SWPC JSON ingestion (Kp, F10.7, GOES X-ray)
Adds the second ionospheric data source layer. Polls NOAA SWPC's free
public JSON services every 5 minutes for three products:

* Planetary K-index (1-min cadence) → geomagnetic_observations
* 10.7 cm solar flux (hourly) → solar_flux_observations
* GOES X-ray flux (1-min, 0.1-0.8nm long-wave band only) →
  solar_xray_observations

All three products feed HF / Es scoring inputs that the propagation
engine will start using in a follow-up commit:

* Kp drives HF absorption and Es damping (memory notes Kp is inversely
  correlated with tropo/Es stability).
* F10.7 is the SSN proxy for ITU-R P.533 HF MUF prediction.
* GOES X-ray long-wave flux is the short-wave fade (SWF) / D-layer
  absorption proxy — a C-class flare starts attenuating HF within
  seconds of the X-ray peak.

New context `Microwaveprop.SpaceWeather` exposes `upsert_*/1` and
`latest_*/0` per product; `SpaceWeatherFetchWorker` pulls all three
independently so one endpoint's outage doesn't block the others.
Fixtures captured from live SWPC endpoints on 2026-04-15 for the
parser tests.

Not yet wired into scoring — that's a separate commit.
2026-04-15 14:55:24 -05:00

110 lines
3.1 KiB
JSON

[
{
"time_tag": "2026-04-14T19:49:00Z",
"satellite": 18,
"flux": 8.99991015046453e-09,
"observed_flux": 5.089760790610853e-08,
"electron_correction": 4.189769953200084e-08,
"electron_contaminaton": true,
"energy": "0.05-0.4nm"
},
{
"time_tag": "2026-04-14T19:49:00Z",
"satellite": 18,
"flux": 3.523403790950397e-07,
"observed_flux": 3.811346402926574e-07,
"electron_correction": 2.8794250539476707e-08,
"electron_contaminaton": false,
"energy": "0.1-0.8nm"
},
{
"time_tag": "2026-04-14T19:50:00Z",
"satellite": 18,
"flux": 8.762290448771637e-09,
"observed_flux": 5.0545377661137536e-08,
"electron_correction": 4.178308898872274e-08,
"electron_contaminaton": true,
"energy": "0.05-0.4nm"
},
{
"time_tag": "2026-04-14T19:50:00Z",
"satellite": 18,
"flux": 3.47408843026642e-07,
"observed_flux": 3.757511706226069e-07,
"electron_correction": 2.8342315161467013e-08,
"electron_contaminaton": false,
"energy": "0.1-0.8nm"
},
{
"time_tag": "2026-04-14T19:51:00Z",
"satellite": 18,
"flux": 1.0952255102836261e-08,
"observed_flux": 5.269238911864704e-08,
"electron_correction": 4.174013312763236e-08,
"electron_contaminaton": true,
"energy": "0.05-0.4nm"
},
{
"time_tag": "2026-04-14T19:51:00Z",
"satellite": 18,
"flux": 3.443850573603413e-07,
"observed_flux": 3.7320211276892223e-07,
"electron_correction": 2.8817035868655694e-08,
"electron_contaminaton": false,
"energy": "0.1-0.8nm"
},
{
"time_tag": "2026-04-14T19:52:00Z",
"satellite": 18,
"flux": 1.1434187818792907e-08,
"observed_flux": 5.2151044371839816e-08,
"electron_correction": 4.071685566486849e-08,
"electron_contaminaton": true,
"energy": "0.05-0.4nm"
},
{
"time_tag": "2026-04-14T19:52:00Z",
"satellite": 18,
"flux": 3.4263317161276063e-07,
"observed_flux": 3.709357656589418e-07,
"electron_correction": 2.8302592269824345e-08,
"electron_contaminaton": false,
"energy": "0.1-0.8nm"
},
{
"time_tag": "2026-04-14T19:53:00Z",
"satellite": 18,
"flux": 1.2688251338488499e-08,
"observed_flux": 5.3903328023352515e-08,
"electron_correction": 4.1215077573042436e-08,
"electron_contaminaton": true,
"energy": "0.05-0.4nm"
},
{
"time_tag": "2026-04-14T19:53:00Z",
"satellite": 18,
"flux": 3.4440770946275734e-07,
"observed_flux": 3.729552133791003e-07,
"electron_correction": 2.854748792913142e-08,
"electron_contaminaton": false,
"energy": "0.1-0.8nm"
},
{
"time_tag": "2026-04-14T19:54:00Z",
"satellite": 18,
"flux": 1.4324521124819967e-08,
"observed_flux": 5.4740130650543506e-08,
"electron_correction": 4.041560686118828e-08,
"electron_contaminaton": true,
"energy": "0.05-0.4nm"
},
{
"time_tag": "2026-04-14T19:54:00Z",
"satellite": 18,
"flux": 3.448363941060961e-07,
"observed_flux": 3.734814697509137e-07,
"electron_correction": 2.8645072092103874e-08,
"electron_contaminaton": false,
"energy": "0.1-0.8nm"
}
]