1 of 18

prop.kc2g.com

Development of an Open-Source IRI-based Nowcasting Tool for Ionospheric Electron Density and HF Propagation

Andrew Rodland

Amateur Callsign KC2G

July 21, 2022

44th COSPAR Scientific Assembly

16-24 July 2022, Athens, Greece

C4.1

2 of 18

Intro

  • prop.kc2g.com is a website for radio amateurs (hams) to check current HF propagation conditions
  • I’m a radio amateur and a professional software developer
    • Forays into space weather science and statistics are purely a hobby thing
  • This started as me adopting an abandoned project
    • “Giroviz” / “giroapp” by Matthew Smith AF7TI
    • I enjoyed that it had much more readable graphics than other MUF maps I could find online
    • I started making small improvements to it
    • And fell quickly down a rabbit hole.
  • I had no idea what IRI even was when I began

3 of 18

The main product of the website: a global map of current MUF(3000km)

4 of 18

Approach

Ionosonde Data: Uses data from GIRO and NOAA NCEI ionosonde networks, as near-realtime as possible

Effective SSN: Discover a value of Rz12 that provides the best agreement between IRI and the past 24 hours of observations

IRI: Run IRI-2016 with the eSSN as a high-resolution baseline

Temporal Prediction: Use a Gaussian Process model to extrapolate observed-minus-IRI for each station to a common point in time

Spatial Assimilation: Use another GP model to interpolate those deltas all around the world, and add them to the IRI base

5 of 18

Goals

Combine the better features of observation and model in a plausible way:

  • Predicted values near (in time and space) to observations should be near the observed values
  • Predicted values far from observations should be consistent with observed values and known phenomena
    • No featureless voids in the middle of the ocean
    • No sudden discontinuities
    • Minimize impact of one bad measurement
  • Advance the open-source state of the art
    • Get in the same ballpark as non-open tools, but not compete directly

6 of 18

Data Sources

GIRO (Lowell Global Ionospheric Radio Observatory) and NOAA NCEI (US National Centers for Environmental Information).

GIRO data is pulled from DIDBase as TSV every 15 minutes (by special permission, they don’t like scrapers). NOAA data is pushed to my site as SAO4 via FTP as soon as it’s processed.

Approx. 70% overlap between networks: anything that is available through both I get from NOAA, but fallback to GIRO if NOAA feed goes down.

7 of 18

Effective Sunspot Number

A live version of IG index. Uses an algorithm similar to Northwest Research Associates’ “SSNe”, but with some improvements:

  • Careful windowing and smoothing reduces diurnal oscillation
  • Measurement weighting made continuous in terms of hour angle instead of piecewise
  • Runs full IRI through a blackbox optimizer and optimizes a weighted sum of ΔfoF2, ΔMUF, ΔhmF2
    • IG and NWRA SSNe minimize error for the URSI foF2 formula only

8 of 18

30-day smoothed eSSN showing the rise of SC25

1 week of 24h eSSN

9 of 18

Temporal Prediction

  • Initialize IRI with latest eSSN
  • Take log(observed) - log(IRI) for each observed fof2, MUF, hmf2
  • Log space makes the variance in all three metrics similar, and makes it impossible for a negative value to come out of the model
  • Each point gets a stdev derived from the ionosonde confidence score if available
  • Feed into a 1D Gaussian Process model
  • Model doesn’t have to be great because it only predicts deltas — IRI does most of the work
  • Less about forecasting and more about denoising, weighting, and “aligning” observations to a common point in time, so it’s valuable even for nowcasts

10 of 18

Spatial Interpolation

  • Fetch the time-predicted data for all stations for one point in time
  • Filter out any of very low quality
  • This time the GP model used is 3D
    • Lat/lon is converted to XYZ and metric is Euclidean distance
  • The GP-interpolated log(observed)-log(IRI) is gridded at 1°x1° and combined with IRI values to produce the final map
  • foF2 and hmF2 are done directly
  • For MUF, interpolation is done on M = MUF/foF2 and the interpolated M is multiplied by interpolated foF2

11 of 18

A representative output of the spatial model: smoothed Δfof2 for one point in time

12 of 18

Why GPs?

  • GP for the temporal step can have a periodic covariance kernel
    • Behavior from 24h ago can help predict the dynamics right now
  • GP inputs are distributions, not points
    • Observations with low confidence scores can be represented as wider distributions, and contribute less to the output
  • GP outputs are distributions
    • The temporal prediction output is fed into the spatial assimilation
    • Instruments with less confidence (fewer measurements, older measurements, bad confidence scores) have less influence on the map
  • Kernels can be learned from data using maximum-likelihood

13 of 18

Output Quality

  • I’ve only recently started to study this scientifically
  • Most tuning pre-2022 was done “by eyeball”
  • But it seems reasonably good

RMSE foF2

Within 10%

RMSE MUF

Within 10%

RMSE hmF2

Within 10%

IRI

1.029

52.3%

3.530

47.9%

30.89

70.7%

KC2G

0.767

75.3%

2.646

72.7%

25.67

83.6%

8,745 observations, March - June 2022

IRI is IRI2016 with ig_rz.dat from CHAIN at time of prediction

KC2G is my model with one random station excluded from the input;

the prediction is compared against a measurement from the held-out station

14 of 18

Output Quality

  • I’ve only recently started to study this scientifically
  • Most tuning pre-2022 was done “by eyeball”
  • But it seems reasonably good

foF2

MUF

hmF2

RMSE

Median

Within 10%

RMSE

Median

Within 10%

RMSE

Median

Within 10%

IRI

1.029

0.617

52.3%

3.530

2.060

47.9%

30.89

18.07

70.7%

KC2G

0.767

0.310

75.3%

2.646

1.037

72.7%

25.67

12.08

83.6%

8,745 observations, March - June 2022

IRI is IRI2016 with ig_rz.dat from CHAIN at time of prediction

KC2G is my model with one random station excluded from the input;

the prediction is compared against a measurement from the held-out station

15 of 18

Forecasting

  • Forecasting considered to be impossible past a horizon of 4 hours
  • 10 - 20 % reduction in median error over IRI still possible out to 24 hours
  • Probably represents the value of real-world data in nudging IRI towards a better medium-term average, rather than real “forecasting”.
  • Still studying this one

Median absolute error as fraction of IRI @0h – 24h forecast

Purple: with holdout as in previous slide (N=910, June 2022)

Green: with anchor station included in model input (N=727, May 2022)

16 of 18

Future Directions

  • Model improvements: now that I have a way of measuring output quality I can test algorithm changes in a systematic way
  • Short term forecasting: if I can provide better-than-VOACAP figures for the next 24 hours then contesters will be interested
  • Point-to-Point: Combine my data with an algorithm like P.533 to produce area maps (one location → whole world) and point-to-point timelines (reliability, best frequency, etc.)
    • There are sites that do this already, but they’re purely climate, nothing real-time

17 of 18

Open Source

My code: https://github.com/arodland/prop/

My data: https://prop.kc2g.com/api/ (open but please ask before any extensive use, for the health of my server)

Precursor: https://github.com/af7ti/giroapp https://github.com/af7ti/giroviz

Many thanks: Python, Perl, NumPy, SciPy, pandas, matplotlib, cartopy, george, Flask, IRI-2016, IGRF-13, WMM2020, the space-physics packages iri2016, igrf, and wmm2020, Mojolicious, Minion, PostgreSQL, and many more.

18 of 18

Thanks!

andrew@cleverdomain.org

kc2g@cleverdomain.org

Questions and contributions are very much appreciated!