GRITI is an open-source, Python 3-based analysis tool for ionospheric activity. For several data sources it supports data download, loading, and analysis while for other data sources it only covers data loading and analysis. It is designed for flexibility and expandability in adding new data sources and analysis methods.
Everything in GRITI is launched from GRITI_main.py. The settings are from the beginning from the file to the line #!!!END OF SETTINGS!!!
. The settings are grouped under data sources or analysis methods, if the analysis method spans multiple data sources. Data sources are loaded on run based on the analysis methods chosen in GRITI_main.py's settings.
In GRITI_main_config.ini you must set paths and relevant login info (if you don't plan on using a data source that needs login info, then you don't need to fill that login info in).
- delta-vTEC (vertical total electron content) based on Madrigal's TEC dataset
- AMPERE-derived ionospheric model estimates
- Kp Index
- NASA OMNI Data
- Haystack ISR (incoherent scatter radar)
- Canadian magnetometer network
-
- Create a set of folders in your data directory like this and put the data in them: datafolder/Magnetometer//NRCan
- SuperMAG Indices/Individual Stations
-
- For indicies on the Indices page's "Download Indicies" tab you need to choose "Large Download Durations: (Full Year)" (set to the year you want), "Format: CSV", and check whatever you want included to be analysed. Create a set of folders in your data directory like this and put the CSV files in it: datafolder/SuperMAG/Indices
- LISN's TEC dataset supports LISN's modified post-processed RINEX format
- Pokerflat ISR (needs more methods for data processing to achieve higher output quality)
- Keograms [delta-vTEC, AMPERE-derived ionospheric model estimates, and Canadian magnetometer network]
- Radius-around-a-point averaging [delta-vTEC]
- Movies & snapshots of movies [delta-vTEC, AMPERE-derived ionospheric model estimates]
- RTI (range-time-intensity) [ISR]
- FFT, Lomb-Scargle, & CPSD (cross-power spectral density) [all]
- Walking FFT [delta-vTEC, AMPERE-derived ionospheric model estimates, NASA OMNI data]
- Sliding correlation, walking-sliding correlation
To get the code from this repository, clone it using Git or click the green Code button at the top and "Download ZIP". All of the functions need to be in the same directory as GRITI_main.py but the data sources folder and other output folders can be set elsewhere in GRITI_main_settings.ini.
GRITI has dependencies on the following Python 3 packages: NumPy, Matplotlib, Scipy, h5py, netCDF4, Numba, Cartopy, Joblib, aacgmv2, timezonefinder, pytz, pandas, and html2text.
Anaconda, a Python 3 distribution that includes many useful scientific packages, comes with many of those needed packages automatically. It doesn't come with:
- aacgmv2 install with pip using
pip install aacgmv2
. On Windows you'll likely need to install Visual Studio Build Tools to get it to install; errors will tell you what to get. - timezonefinder install with conda using
conda install -c conda-forge timezonefinder
. - html2text install with conda using
conda install -c conda-forge html2text
.
Note: On Windows, use Anaconda Prompt to input conda commands.
Anaconda comes with Spyder, a Python IDE, that is a very easy place to run GRITI from. Open GRITI_main.py in Spyder, set the relevant settings, and hit the green "Run File" arrow to use GRITI quickly.
GRITI has been tested with Python 3.10, so later versions should work and earlier Python 3 versions may work. Python 2 probably won't work.
GRITI has only been tested with Windows 10, and paths may not be properly be setup to work in all instances (among other things, I'm sure). Raise an issue on this repo to let me know if any issues arise from other OSes.
GRITI is still under some construction (like the Basemap to Cartopy conversion) and some functions may not work as-is. Raise an issue on this repo to let me know about it.
Find any issue? Raise that issue!
Follow this code of conduct and raise an issue or make a pull request with the new addition/fix. Make sure the new feature/fix is commented!
GRITI is simple as far as a software suite goes, and GRITI_main.py ideally should only have function calls. (I develop in GRITI_main.py before packaging as a function, so GRITI_main.py isn't only functions at the moment - but I wish it was!)
Dinsmore, R., Mathews, J.D., Urbina, J., 2021. General resource for ionospheric transient investigations (GRITI): An open-source code developed in support of the Dinsmore et al. (2021) results. MethodsX 8, 101456. https://doi.org/10.1016/j.mex.2021.101456
Dinsmore, R., Mathews, J.D., Coster, A., Robinson, R.M., Sarkhel, S., Erickson, P.J., Urbina, J., 2021. Multi-instrument observations of SCIPS: 1. ISR and GPS TEC results. Journal of Atmospheric and Solar-Terrestrial Physics 213, 105515. https://doi.org/10.1016/j.jastp.2020.105515
Bostan, S.M., Urbina, J.V., Mathews, J.D., Dinsmore, R.L., Robinson, R.M., 2023. Multi-instrument study of a spread-F event at Arecibo linked to solar wind variations. Journal of Atmospheric and Solar-Terrestrial Physics 249, 106099. https://doi.org/10.1016/j.jastp.2023.106099
GRITI was made by Ross Dinsmore, who was supported by the US National Science Foundation under Grant No. AGS-1241407 to The Pennsylvania State University for updates up to the "Multi-instrument observations of SCIPS: 1." paper.