A docker version of PyIRI - A Python implementation of the International Reference Ionosphere (IRI) model that evaluates the electron density and associated ionospheric parameters on the entire given global grid and for the entire day simultaneously.
This is a Docker version of PyIRI developeed by Victoriya V. Forsythe https://github.com/victoriyaforsythe : PyIRI Main Repository
The PyIRI documentation can be found here: PyIRI Documentation
more info tba
Linnea Wolniewicz University of Hawaii at Manoa, USA
Simone Mestici Sapienza University of Rome
Hail S. Kelebek University of Oxford
Michael Vergalla Free Flight Research Lab, USA
Giacomo Acciarini European Space Agency & University of Surrey
Bala Poduval Space Science Institut, USA
Umaa Rebbapragada NASA Jet Propulsion Laboratory, California Institute of Technology, USA
Olga P Verkhoglyadova NASA Jet Propulsion Laboratory, California Institute of Technology, USA
Tom Berger University of Colorado at Boulder
Atilim Günes Baydin University of Oxford
Frank Soboczenski Department of Computer Science, University of York & SPHES, King's College London, UK
File Structure:
Dockerfile
(Dockerfile pulling PyIRI from its repository)pyiri_runner.py
(PyIRI Simple Runner Script with Plots that Save to a Designated Output Directory)pyiri_year_plot.py
(Generates plots with daily resolution similar to PyIRI_year_run.ipynb)pyiri_year_daily.py
(Generates plots similar to PyIRI_year_run.ipynb showing F10.7 input and NmF2 output)
docker run -it angrycoffeemonster/pyiridocker:101
git clone https://github.com/h21k/PyIRIDocker.git
cd PyIRIDocker
docker build -t pyiridocker .
# make the directory to store the ouput files outside the docker container:
#in MAC this will make a directory called pyiri_output in the root user directory that we pass below
mkdir ~/pyiri_output
docker run -it --rm pyiridocker python pyiri.py --help
# Basic single location (New York)
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 40.7128 --lon -74.0060
# With specific parameters
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 51.5074 --lon -0.1278 --parameters foF2 hmF2 NmF2
# With daily mode (includes electron density profiles)
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 35.6762 --lon 139.6503 --daily
# With electron density profiles visualization
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat -33.8688 --lon 151.2093 --daily --profiles
# Basic global map (10° resolution)
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --resolution 10
# High resolution global map (5°)
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --resolution 5 --parameters foF2 hmF2 NmF2
# Global map with vTEC calculation
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --daily --vtec --resolution 10
# Everything enabled for global map
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --daily --vtec --parameters foF2 hmF2 NmF2 \
--resolution 10 --year 2020 --month 4 --day 15 --hour 12 --f107 100
# Equator
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 0 --lon 0 --daily --profiles
# North Pole
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 90 --lon 0
# Auroral Zone
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 65 --lon -150 --daily --vtec
# Everything enabled for global map
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --daily --vtec --parameters foF2 hmF2 NmF2 \
--resolution 10 --year 2020 --month 4 --day 15 --hour 12 --f107 100
# Nighttime (00:00 UTC)
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 40 --lon -100 --hour 0
# Solar Minimum Conditions
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --f107 70 --resolution 10
# Solar Maximum Conditions
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --f107 200 --resolution 10
# Full analysis for a specific location
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --lat 52.5200 --lon 13.4050 \
--daily --profiles --vtec \
--parameters foF2 hmF2 NmF2 \
--year 2021 --month 6 --day 21 --hour 14 --f107 150
# Global ionospheric state during geomagnetic storm
docker run -it --rm -v ~/pyiri_output:/app/output pyiridocker \
python pyiri.py --global-map --daily --vtec \
--parameters foF2 hmF2 NmF2 \
--resolution 5 --f107 180 \
--year 2023 --month 3 --day 24 --hour 18
Parameter Options Location Parameters
--lat
: Latitude (-90 to 90)
--lon
: Longitude (-180 to 180)
--global-map
: Generate global map instead of single location
--resolution
: Grid resolution for global maps (degrees, default: 5.0)
Time Parameters
--year
: Year (default: 2020)
--month
: Month (1-12, default: 4)
--day
: Day (1-31, default: 15)
--hour
: Hour UTC (0-23, default: 12)
Solar Activity
--f107
: F10.7 solar flux index (default: 100)
Low activity: 70
Medium activity: 100-150
High activity: 200+
Output Parameters
--parameters
: Space-separated list of parameters to plot
foF2: F2 critical frequency
hmF2: F2 peak height
NmF2: F2 peak density
Use all for all parameters
Processing Modes
--daily
: Use daily parameters (enables electron density profiles)
--profiles
: Create electron density profile plots
--vtec
: Calculate and plot vertical Total Electron Content
Output
--output
: Output directory (default: /app/output)
Output Files The script generates PNG files with names following this pattern:
Single location: {parameter}{lat}N{lon}E_{timestamp}.png
Global maps: {parameter}Global{resolution}deg_{timestamp}.png
Time series: timeseries_{location}{timestamp}.png
Profiles: profiles{location}{timestamp}.png
vTEC: vTEC{location}_{timestamp}.png
Tips
Start with low resolution (10-15°) for global maps to test quickly
Use --daily
mode to enable electron density profiles and vTEC
The --profiles
flag requires --daily
to be set
Higher F10.7 values represent more active solar conditions
Processing time increases significantly with resolution and when using --daily
mode
We'd like to acknowledge Andrew Smith for his valuable insights, NASA's Goddard Space Flight Center, and NASA's Jet Propulsion Laboratory. This research product is the outcome of the Frontier Development Lab, Heliolab (FDL.ai) a partnership between NASA, Trillium technologies Inc (USA), Google Cloud, NVIDIA, and Pasteur Labs. Contract No. 80GSFC23CA040