Note
Click here to download the full example code
HMI data¶
How to search for HMI data.
This example shows how to search for, download, and load HMI data, using the
sunpy.net.Fido
interface. HMI data is available via. the Joint Stanford
Operations Center (JSOC).
The polar filled radial magnetic field synoptic maps are obtained using the ‘hmi.synoptic_mr_polfil_720s’ series keyword. Note that they are large (1440 x 720), so you will probably want to downsample them to a smaller resolution to use them to calculate PFSS solutions.
For more information on the maps, see the synoptic maps page on the JSOC site.
First import the required modules
from sunpy.net import Fido, attrs as a
import sunpy.map
import pfsspy.utils
Set up the search.
Note that for SunPy versions earlier than 2.0, a time attribute is needed to do the search, even if (in this case) it isn’t used, as the synoptic maps are labelled by Carrington rotation number instead of time
time = a.Time('2010/01/01', '2010/01/01')
series = a.jsoc.Series('hmi.synoptic_mr_polfil_720s')
Do the search. This will return all the maps in the ‘hmi_mrsynop_small_720s series.’
result = Fido.search(time, series)
print(result)
Out:
Results from 1 Provider:
142 Results from the JSOCClient:
T_REC TELESCOP INSTRUME WAVELNTH CAR_ROT
--------------- -------- --------- -------- -------
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2097
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2098
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2099
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2100
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2101
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2102
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2103
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2104
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2105
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2106
... ... ... ... ...
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2228
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2229
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2230
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2231
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2232
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2233
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2234
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2235
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2236
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2237
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2238
Length = 142 rows
If we just want to download a specific map, we can specify a Carrington rotation number. In addition, downloading files from JSOC requires a notification email. If you use this code, please replace this email address with your own one, registered here: http://jsoc.stanford.edu/ajax/register_email.html
crot = a.jsoc.PrimeKey('CAR_ROT', 2210)
result = Fido.search(time, series, crot, a.jsoc.Notify("jsoc@cadair.com"))
print(result)
Out:
Results from 1 Provider:
1 Results from the JSOCClient:
T_REC TELESCOP INSTRUME WAVELNTH CAR_ROT
--------------- -------- --------- -------- -------
Invalid KeyLink SDO/HMI HMI_SIDE1 6173.0 2210
Download the files. This downloads files to the default sunpy download directory.
files = Fido.fetch(result)
print(files)
Out:
Export request pending. [id=JSOC_20210120_1142_X_IN, status=2]
Waiting for 0 seconds...
1 URLs found for download. Full request totalling 4MB
Files Downloaded: 0%| | 0/1 [00:00<?, ?file/s]
Files Downloaded: 100%|##########| 1/1 [00:00<00:00, 7.17file/s]
Files Downloaded: 100%|##########| 1/1 [00:00<00:00, 7.14file/s]
['/home/docs/sunpy/data/hmi.synoptic_mr_polfil_720s.CAR_ROT.Mr_polfil.fits']
Read in a file. This will read in the first file downloaded to a sunpy Map object. Note that HMI maps have several bits of metadata that do not comply to the FITS standard, so we need to fix them first.
hmi_map = sunpy.map.Map(files[0])
pfsspy.utils.fix_hmi_meta(hmi_map)
hmi_map.peek()
Out:
/home/docs/checkouts/readthedocs.org/user_builds/pfsspy/envs/0.6.5/lib/python3.7/site-packages/astropy/wcs/wcs.py:484: FITSFixedWarning: CRDER1 = 'nan '
a floating-point value was expected.
colsel=colsel, hdulist=fobj)
/home/docs/checkouts/readthedocs.org/user_builds/pfsspy/envs/0.6.5/lib/python3.7/site-packages/astropy/wcs/wcs.py:484: FITSFixedWarning: CRDER2 = 'nan '
a floating-point value was expected.
colsel=colsel, hdulist=fobj)
/home/docs/checkouts/readthedocs.org/user_builds/pfsspy/envs/0.6.5/lib/python3.7/site-packages/astropy/wcs/wcs.py:709: FITSFixedWarning: 'unitfix' made the change 'Changed units:
'degree' -> 'deg'.
FITSFixedWarning)
Total running time of the script: ( 0 minutes 12.419 seconds)