This page was generated by
nbsphinx from
docs/examples/solo_epd.ipynb.
Interactive online version:
Solar Orbiter HET data
This notebook plots energetic particle fluxes measured by the Energetic Particle Detector (EPD) suite aboard Solar Orbiter — more precisely its High Energy Telescope (HET), which covers the high-energy end of the suite (electrons from ~0.3 MeV, protons from ~10 MeV, and heavy ions). Lower, suprathermal energies are covered by EPD’s other sensors (STEIN, SIS), not by HET itself.
The products are fetched from AMDA using their string identifiers ("amda/solo_het_omni_eflux", …). These IDs come straight from the AMDA inventory: they are the same products you would find by browsing spz.inventories.tree.amda with tab-completion or by searching on the AMDA website.
Only for Google Colab users:
[ ]:
%pip install --upgrade ipympl speasy
[ ]:
try:
from google.colab import output
output.enable_custom_widget_manager()
except:
print("Not running inside Google Collab")
For all users:
[ ]:
import speasy as spz
%matplotlib widget
# Use this instead if you are not using jupyterlab yet
#%matplotlib notebook
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
[3]:
start = "2020-11-28T00:00:00"
stop = "2020-12-05T00:00:00"
Solar Orbiter electron flux
amda/solo_het_omni_eflux is the HET omnidirectional electron flux (flux integrated over all viewing directions).
[7]:
solo_eflux:spz.SpeasyVariable = spz.get_data("amda/solo_het_omni_eflux", start, stop)
[8]:
print(np.unique(np.diff(solo_eflux.time), return_counts=True))
(array([1000000000, 1001000000], dtype='timedelta64[ns]'), array([603798, 1000]))
[9]:
eflux_df = solo_eflux.to_dataframe()
# resample to 1s
eflux_df = eflux_df.resample("1s").ffill()
eflux_df.rolling(600).mean().plot()
plt.yscale("log")
Solar Orbiter proton flux
amda/solo_het_omni_hhcflux is the HET omnidirectional proton (hydrogen) flux, given in 4 energy channels.
[14]:
solo_hflux:spz.SpeasyVariable = spz.get_data("amda/solo_het_omni_hhcflux", start, stop)
[ ]:
print(np.unique(np.diff(solo_hflux.time), return_counts=True))
[16]:
hflux_df = solo_hflux.to_dataframe()
# resample to 1s
hflux_df = hflux_df.resample("1s").ffill()
hflux_df.rolling(600).mean().plot()
plt.yscale("log")
Another view of the proton flux
amda/solo_het_omni_hflux is a closely related HET proton product; here we plot it directly as a spectrogram with SpeasyVariable.plot().
[17]:
plt.figure()
pas_omni:spz.SpeasyVariable = spz.get_data("amda/solo_het_omni_hflux", start, stop)
pas_omni.plot(cmap='rainbow', vmin=1e-3, vmax=1e2, edgecolors="face")
plt.tight_layout()