Commit 45de9a4f authored by Qusai Al Shidi's avatar Qusai Al Shidi 💬
Browse files

Changed name of spdf.py to web.py

Removed DOCUMENTATION link because it is not quite ready.
Readability changes.
parent 4c4abad6
...@@ -30,5 +30,3 @@ import swmfpy ...@@ -30,5 +30,3 @@ import swmfpy
help(swmfpy) # To see list of functions help(swmfpy) # To see list of functions
help(swmfpy.io.read_gm_log) # To see the function documentation help(swmfpy.io.read_gm_log) # To see the function documentation
``` ```
An auto-generated markdown document can be found [here](DOCUMENTATION.markdown).
...@@ -10,4 +10,4 @@ __email__ = "qusai@umich.edu" ...@@ -10,4 +10,4 @@ __email__ = "qusai@umich.edu"
from . import paramin from . import paramin
from . import io from . import io
from . import spdf from . import web
"""Tools to work with NASA SPDF. """Tools to retrieve and send data on the web.
swmfpy.spdf SWMF Web Tools (swmfpy.web)
=========== ===========
Here are a collection of tools to get data from Here are a collection of tools to work with data on the internet. Thus,
NASA Goddard's Space Physics Data Facility website. this module mostly requires an internet connection.
""" """
__author__ = 'Qusai Al Shidi' __author__ = 'Qusai Al Shidi'
__email__ = 'qusai@umich.edu' __email__ = 'qusai@umich.edu'
...@@ -34,11 +34,12 @@ def get_omni_data(time_from, time_to, **kwargs): ...@@ -34,11 +34,12 @@ def get_omni_data(time_from, time_to, **kwargs):
Examples: Examples:
```python ```python
import datetime import datetime
import swmfpy.spdf import swmfpy.web
from = datetime.datetime(year=2000, month=1, day=1) storm_start = datetime.datetime(year=2000, month=1, day=1)
to = datetime.datetime(year=2000, month=2, day=15) storm_end = datetime.datetime(year=2000, month=2, day=15)
data = swmfpy.spdf.get_omni_data(from, to) data = swmfpy.web.get_omni_data(time_from=storm_start,
time_to=storm_end)
``` ```
""" """
# Author: Qusai Al Shidi # Author: Qusai Al Shidi
...@@ -77,7 +78,16 @@ def get_omni_data(time_from, time_to, **kwargs): ...@@ -77,7 +78,16 @@ def get_omni_data(time_from, time_to, **kwargs):
'Z(s/c), GSE, Re', 'Z(s/c), GSE, Re',
'BSN location, Xgse, Re', 'BSN location, Xgse, Re',
'BSN location, Ygse, Re', 'BSN location, Ygse, Re',
'BSN location, Zgse, Re') 'BSN location, Zgse, Re',
'AE-index, nT',
'AL-index, nT',
'AU-index, nT',
'SYM/D index, nT',
'SYM/H index, nT',
'ASY/D index, nT',
'ASY/H index, nT',
'PC(N) index',
'Magnetosonic mach number')
# Set the url # Set the url
omni_url = 'https://spdf.gsfc.nasa.gov/pub/data/omni/' omni_url = 'https://spdf.gsfc.nasa.gov/pub/data/omni/'
...@@ -85,30 +95,31 @@ def get_omni_data(time_from, time_to, **kwargs): ...@@ -85,30 +95,31 @@ def get_omni_data(time_from, time_to, **kwargs):
omni_url += 'high_res_omni/monthly_1min/' omni_url += 'high_res_omni/monthly_1min/'
# Initialize return dict # Initialize return dict
omni_data = {} return_data = {}
omni_data['Time [UT]'] = [] return_data['Time [UT]'] = []
for name in col_names: for name in col_names:
omni_data[name] = [] return_data[name] = []
# Iterate monthly to save RAM
for date in rrule.rrule(rrule.MONTHLY, dtstart=time_from, until=time_to): for date in rrule.rrule(rrule.MONTHLY, dtstart=time_from, until=time_to):
suffix = 'omni_min' suffix = 'omni_min'
suffix += str(date.year) + str(date.month).zfill(2) suffix += str(date.year) + str(date.month).zfill(2)
suffix += '.asc' suffix += '.asc'
data = list(urllib.request.urlopen(omni_url+suffix)) omni_data = list(urllib.request.urlopen(omni_url+suffix))
# Parse omni data # Parse omni data
for line in data: for line in omni_data:
cols = line.decode('ascii').split() cols = line.decode('ascii').split()
# Time uses day of year which must be parsed # Time uses day of year which must be parsed
time = dt.datetime.strptime(cols[0] + ' ' + # year time = dt.datetime.strptime(cols[0] + ' ' # year
cols[1] + ' ' + # day of year + cols[1] + ' ' # day of year
cols[2] + ' ' + # hour + cols[2] + ' ' # hour
cols[3], # minute + cols[3], # minute
'%Y %j %H %M') '%Y %j %H %M')
if time >= time_from and time <= time_to: if time >= time_from and time <= time_to:
omni_data['Time [UT]'].append(time) return_data['Time [UT]'].append(time)
# Assign the data from after the time columns (0:3) # Assign the data from after the time columns (0:3)
for num, value in enumerate(cols[4:len(col_names)+4]): for num, value in enumerate(cols[4:len(col_names)+4]):
omni_data[col_names[num]].append(float(value)) return_data[col_names[num]].append(float(value))
return omni_data # dictionary with omni values where index is the row return return_data # dictionary with omni values where index is the row
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment