Note
Go to the end to download the full example code.
Exporting data as fits#
This example shows how to submit a data export request using the ‘fits’ protocol and how to download the requested files.
Note that the ‘as-is’ protocol should be used instead of ‘fits’, if record keywords in the FITS headers are not needed, as it greatly reduces the server load.
import os
from pathlib import Path
import drms
First we will create a drms.Client
, using the JSOC baseurl.
client = drms.Client()
# This example requires a registered export email address. You can register
# JSOC exports at: http://jsoc.stanford.edu/ajax/register_email.html
# You must supply your own email.
email = os.environ["JSOC_EMAIL"]
# Use 'as-is' instead of 'fits', if record keywords are not needed in the
# FITS header. This greatly reduces the server load!
export_protocol = "fits"
# Create download directory if it does not exist yet.
out_dir = Path("downloads")
if not out_dir.exists():
Path(out_dir).mkdir(parents=True)
Construct the DRMS query string: “Series[harpnum][timespan]{data segments}”
qstr = "hmi.sharp_720s[12519][2024.12.30_22:24:00_TAI/1d@8h]{continuum, magnetogram, field}"
print(f"Data export query:\n {qstr}\n")
# Submit export request using the 'fits' protocol
print("Submitting export request...")
result = client.export(qstr, method="url", protocol=export_protocol, email=email)
# Print request URL.
print(f"\nRequest URL: {result.request_url}")
print(f"{int(len(result.urls))} file(s) available for download.\n")
# Download selected files.
result.download(out_dir)
print("Download finished.")
print(f'\nDownload directory:\n "{out_dir.absolute()}"\n')
Traceback (most recent call last):
File "/home/docs/checkouts/readthedocs.org/user_builds/drms/checkouts/stable/examples/export_fits.py", line 49, in <module>
print(f"\nRequest URL: {result.request_url}")
^^^^^^^^^^^^^^^^^^
File "/home/docs/checkouts/readthedocs.org/user_builds/drms/envs/stable/lib/python3.11/site-packages/drms/client.py", line 314, in request_url
data_dir = self.dir
^^^^^^^^
File "/home/docs/checkouts/readthedocs.org/user_builds/drms/envs/stable/lib/python3.11/site-packages/drms/client.py", line 265, in dir
self._raise_on_error()
File "/home/docs/checkouts/readthedocs.org/user_builds/drms/envs/stable/lib/python3.11/site-packages/drms/client.py", line 171, in _raise_on_error
raise DrmsExportError(msg)
drms.exceptions.DrmsExportError: User jsoc@sunpy.org has 1 pending export requests (JSOC_20250524_002068); please wait until at least one request has completed before submitting a new one. [status=7]
Total running time of the script: (0 minutes 1.987 seconds)