prop.kc2g.com provides near-realtime maps and data about ionospheric conditions, for the use of amateur radio operators.

The near-real-time ionospheric data that powers the site is collected by ionosondes (ionospheric radars) around the world, and compiled by the Lowell Global Ionospheric Radio Observatory (GIRO). GIRO provides me access to their data to produce these maps, for which we are very grateful.

The ionospheric phyiscal model for the "IRI" plots is the International Reference Ionosphere 2016, produced by a joint task group of the Committee on Space Research (COSPAR) and International Union of Radio Science (URSI).

The GIRO data fetcher and contour mapper were originally written by Matthew Smith AF7TI and hosted at af7ti.com. Later they were removed from that site, and the code was placed on GitHub. In January of 2019, Andrew KC2G forked the code on GitHub, started making some improvements to the interpolation algorithm, and put the results up on this site.

The code is a bunch of python, making use of NumPy, SciPy, Pandas, Cartopy, and a bunch of other stuff.

A new map is generated every 15 minutes (at 10, 25, 40, and 55 minutes past the hour), from data which is usually between 5 and 20 minutes old. Therefore, on average, you're looking at the state of the ionosphere about half an hour ago.

The MUF map shows the Maximum Usable Frequency using colors and contour lines. For example, if a given area on the map is greenish and lies between the contours labeled "15" and "17", then the MUF is around 16MHz in that location. The readings from each individual station are shown as colored dots with numbers inside them, so you can see where the information is coming from. If a dot is faded out, then that station currently has a low "confidence score".

MUF is the highest frequency that is expected to bounce off of the ionosphere on a path 3000km long. So the MUF along a path between two points shows the possibility of long-hop DX between those points on a given band. If the MUF is 12MHz, then 30 meters and longer will work, but 20 meters and shorter won't. For long multi-hop paths, the worst MUF anywhere on the path is what matters. For single-hop paths shorter than 3000km, the usable frequency will be less than the MUF, because higher-angle signals "punch through" the ionosphere more easily. As you get closer to vertical, the usable frequency drops to the Critical Frequency (foF2).

The foF2 page shows a map similar to the MUF map, except that it displays the Critical Frequency (foF2). This one is simpler: it's the highest frequency that you can use for NVIS (skywave communication "in your own backyard"). When foF2 gets up to 7MHz and above then 40 meters "goes short" and can be used for local contacts; if it goes down below 3MHz then 80 meters "goes long" and local stations disappear but far-away ones can still be reachable.

Finally, both maps show which parts of the Earth are in daylight, and which are in the night. Pay special attention to the line dividing day and night (the terminator, or as hams call it, the "greyline"). Unique propagation opportunities are often available when one station, or both, are sitting nearly under this line.

More information about ionospheric propagation can be found in most decent books about amateur radio.

Despite the best efforts of the researchers, there are only so many ionosondes in the world making measurements. Most of these are clustered in
a few areas of the world, with large areas that are far from any ionosonde. Because of this, the map you see is an interpolation. That is, my
code does its best to look at the MUF (or FoF2) at these scattered points on the globe and figure out what it *probably* is in every other
location. I do my best to tweak the algorithm to make it well-behaved, but coming up with an algorithm that can extrapolate from few data points,
without getting unreasonable values every now and then, is a difficult problem. While the guessing process is pretty good in areas that are closer
to the measurement stations, the uncertainty is much higher in areas that are far away from any measurements. Only the numbers inside colored dots
scattered around the map represent actual measured data.

Sometimes the stations themselves provide data that is inaccurate, or disagree with each other. It's not really practical to guess who is right and who is wrong, so the map will show some funny results in an effort to agree with all of the measurements.

Sometimes a station will go off-line and stop providing data, and sometimes a station that was off-line will re-appear. The addition or subtraction of a single data point can cause the model to make some surprising changes in its global picture. This is because it's working with not that many data points to begin with.

- First, the IRI model is run given the current date and time and long-term solar forecast. This is a "climate" model, producing a map of average conditions for a given season, time-of-day, and position in the solar cycle.
- Next, the IRI model is fitted to the ionosonde data using a single scaling parameter and confidence-weighted least-squares regression. This accounts for any difference between the actual solar flux and the predicted trend (an increase or decrease in solar flux causes MUF and FoF2 values to go up or down pretty much linearly).
- The logs of the ratios between the scaled IRI model and the measured data are fitted using Gaussian Process regression in 3D space. This makes a multiplier that varies smoothly over the globe to bring the IRI-predicted values closer to the ionosonde-measured values.
- The IRI model and the GP model are combined and sampled at a grid of points on the sphere (every degree of latitude and longitude) and used to make a contour plot. Add in some colors and a map of the world's land-masses and oceans, and it's complete.

- First, the data (MUF(D) or FoF2) is transformed by taking its logarithm, this transformation is reversed at the end, after all the interpolation is done ("operating in log space").
- Next, a third-order spherical harmonic model is
fitted to the data using confidence-weighted least-squares regression. All of the terms except for the 0th-order
one are multiplied by a factor
*s*< 1._{sph} - The error residual between the spherical-harmonic model and the measured data is fitted using Gaussian process
regression, as with the IRI model. The values are multiplied by a factor
*s*< 1._{rbf} - The spherical-harmonic model and the GP model are combined, sampled, and contour-plotted.

The spherical-harmonic fit produces smooth results that capture the general difference between day-side and night-side, north and south, and equator vs. poles. However,
it's unable to capture fine detail, and sometimes produces predictions that are well outside the range of any of the input data. The RBF fit is better at producing
small features to go through the individual data points, and is much less likely to produce out-of-range values, but has much less idea of global uniformity or
plausibility. Combining the two gives a decent result, and the scaling factors *s _{sph}* and

Please send feedback to kc2g@cleverdomain.org.