Python tool for downloading, converting and reading OMNI solar wind data.

pip install pyomnidata==1.0.1



Python tool for downloading, converting and reading OMNI solar wind data.

If you make use of the OMNI data please acknowledge and cite as specified here:


Simply install using pip3:

pip3 install pyomnidata --user

Alternatively install from this repository:

git clone
cd pyomnidata

#EITHER build a wheel and install with pip (better)
python3 bdist_wheel
pip3 install dist/pyomnidata-1.0.0-py3-none-any.whl --user

#OR directly using setup py (should work, not tested though)
python3 install --user

For this to work properly - you will need to set up the $OMNIDATA_PATH environment variable to point to a folder where you want to store the data. Do this by adding something along the lines of the following to the bottom of your ~/.bashrc file:

export OMNIDATA_PATH=/path/to/omni/data


Downloading Data

Download OMNI data like this:

import pyomnidata

#download all available data

Download F10.7 index (solar flux at 10.7 cm):


where EndDate is the last date which you want to request solar flux data for. This should be set to something at least a few days prior to the current date, if you request a date which currently has no available data then the download will fail.

Read Data

Get the OMNI parameters like so:

####OMNI parameters####
#Year can either be a single year:
Year = 2001
#or it can be a range:
Year = [2001,2004]

#5 minute resolution data
data = pyomnidata.GetOMNI(Year,Res=5)

#1 minute data
data = pyomnidata.GetOMNI(Year,Res=1)

####solar flux###
#all of the data
data = pyomnidata.GetSolarFlux()

#a single date
data = pyomnidata.GetSolarFlux(Date=20050101)

#a range of dates
data = pyomnidata.GetSolarFlux(Date=[20020101,20020103])

The returned data object is a numpy.recarray object which contains all of the OMNI data requested. To see what fields are stored use print(data.dtype.names). The units are as presented here:

Plot Data

Use the PlotOMNI function, e.g.:

import matplotlib.pyplot as plt

#create a figure

#plot some stuff in one panel
ax0 = pyomnidata.PlotOMNI(['SymH','SymD'],[20010101,20010120],fig=plt,maps=[2,1,0,0])

#and a second panel
ax1 = pyomnidata.PlotOMNI(['FlowSpeed'],[20010101,20010120],fig=plt,maps=[2,1,1,0])

#fit things a bit nicer

Which should produce something like the following: