- 1Space Research Laboratory, Department of Physics and Astronomy, University of Turku, Turku, Finland
- 2Department of Physics, University of Helsinki, Helsinki, Finland
Solar Energetic Particles (SEPs) are charged particles accelerated within the solar atmosphere or the interplanetary space by explosive phenomena such as solar flares or Coronal Mass Ejections (CMEs). Once injected into the interplanetary space, they can propagate towards Earth, causing space weather related phenomena. For their analysis, interplanetary in situ measurements of charged particles are key. The recently expanded spacecraft fleet in the heliosphere not only provides much-needed additional vantage points, but also increases the variety of missions and instruments for which data loading and processing tools are needed. This manuscript introduces a series of Python functions that will enable the scientific community to download, load, and visualize charged particle measurements of the current space missions that are especially relevant to particle research as time series or dynamic spectra. In addition, further analytical functionality is provided that allows the determination of SEP onset times as well as their inferred injection times. The full workflow, which is intended to be run within Jupyter Notebooks and can also be approachable for Python laymen, will be presented with scientific examples. All functions are written in Python, with the source code publicly available at GitHub under a permissive license. Where appropriate, available Python libraries are used, and their application is described.
1 Introduction
Solar Energetic Particle (SEP) events, as observed at a spacecraft, are determined by a combination of physical processes such as their acceleration mechanism, the particle injection into the interplanetary magnetic field, and their transport through this medium (see, e.g., Desai and Giacalone, 2016; Reames, 2021, and reference therein for a review). All of these processes can vary, and they are not yet fully understood. Using only measurements of a single spacecraft, it can be very difficult to disentangle these processes, making multi-spacecraft observations indispensable. A careful and comprehensive analysis is therefore needed. It should focus not only on the energetic particle observations but also on in situ measurements of the magnetic field and solar wind plasma, as well as on remote-sensing observations of the solar counterpart of the event, such as a solar flare or a Coronal Mass Ejection (CME), both being sites of potential particle acceleration.
A powerful method to study SEP events is to use multi-spacecraft observations of the same event that are situated at various locations with respect to the source region. This can allow, for example, to disentangle source properties from transport effects. The tools presented in this manuscript, which enable such multi-spacecraft analyses, have been developed within the Solar energetic particle analysis platform for the inner heliosphere (SERPENTINE), funded by the European Union’s Horizon 2020 framework programme (see, Gieseler et al., 2022a for an introduction). They focus mainly on the study of an SEP event, which requires a careful characterization of its various features. These include the shape of the energetic particle time profiles at various energies and for different particle species, the maximum observed energies, as well as peak intensities, differences in directional measurements that allow determining anisotropies, and the onset time of the event. The latter is defined by the first arriving particles at the spacecraft, and it is one of the most important parameters for linking the energetic particle measurements with remote-sensing observations of the solar phenomena associated to the SEP event. As the kinetic energy, and hence the speed, of the detected particles is usually known, one can infer their injection time at the Sun when assuming a certain path length they had to travel to reach the spacecraft. This allows then the comparison with the times of various solar phenomena to figure out their importance for the SEP event. Considering that higher-energy particles travel faster than lower-energy ones, the onset of an SEP event often shows a velocity dispersion, i.e., higher-energy particles arriving earlier than those with lower energies. An analysis of this velocity dispersion, together with the assumption that all particles were injected at the same time and travelled the same path length, allows inferring not only a common injection time but also the path length itself.
The tools presented here constitute a comprehensive toolkit that enables the user to perform the aforementioned energetic particle characterization using multiple spacecraft, such as Solar Orbiter (Müller et al., 2020), Parker Solar Probe (Fox et al., 2016), Solar Terrestrial Relations Observatory (STEREO, Kaiser, 2005; Kaiser et al., 2008), SOlar and Heliospheric Observatory (SOHO, Domingo et al., 1995), and Wind (Harten and Clark, 1995). The basis of the toolkit lies in the functionality that allows the user to automatically download data files from online repositories and to load them into powerful Pandas DataFrame objects (McKinney, 2010) in Python. All the data loaders (cf. Section 2.1) are made available through a Python package that can be installed with a single command. In addition, a Jupyter Notebook provides visualization examples and additional functionality to explore the content of the loaded data files, for example various energy ranges, particle species and further metadata. The rest of the tools presented in this paper use the data loaders in the background and provide more advanced analysis methods, such as the onset determination tool (Section 2.2) or the visual time shift analysis tool (Section 2.4). Finally, we also provide a tool that allows a first comparison of another phenomenon of solar activity, namely radio bursts, with the energetic particle observations, the spectrogram tool (Section 2.3). It can be used to plot dynamic spectrograms of energetic particles as well as radio observations.
2 Methods
All the tools described in this paper are open-source Python software released under the BSD-3-Clause license. In general, they are all provided as self-explanatory Jupyter Notebooks (Kluyver et al., 2016; see jupyter.org for more details) that give detailed instructions and examples (see Figures 1, 5 for examples). Based on these Notebooks, the user should be able to modify the code according to their needs. The actual software code of the tools is delivered as a Python package called SEPpy (Gieseler et al., 2022c). It is listed on PyPI so that it can be installed using the widely-used pip command. By delivering the package in this manner, all other required packages are automatically installed. In the Notebooks itself, all necessary functions are imported from this package. Thus, the user only needs to modify some parameters to their needs, such as selecting the date or instrument of interest. Depending on this selection, all required data files are dynamically loaded from online sources or local files using the data loaders presented in Section 2.1. The Jupyter Notebooks are distributed through the GitHub repository serpentine-h2020/serpentine (Gieseler et al., 2022b), which is archived at Zenodo (European Organization For Nuclear Research and OpenAIRE, 2013). The repository contains detailed installation instructions, and the tools will be continuously updated through it.
FIGURE 1. Example workflow within the Data loaders Notebook showing how to load and visualize STEREO/HET observations.
While running the tools as Jupyter Notebooks requires only a very basic level of Python knowledge, the user still needs to follow an installation procedure in order to use the tools. As an alternative, the SERPENTINE project provides a JupyterHub server that allows users to run the Notebooks described in this manuscript completely online, without any requirements except for a web browser and a GitHub account for authentication. More details about the JupyterHub server can be found on the SERPENTINE website and will be presented in an upcoming publication.
2.1 Data loaders
The Data loaders Notebook is a collection of functions that drastically simplifies obtaining (i.e., automatically downloading and loading into Python structures) energetic charged particle data sets of in situ measurements by the current heliospheric spacecraft fleet. This is especially valuable because the data products of the newest spacecraft like Solar Orbiter or Parker Solar Probe are only released in the binary Common Data Format (CDF) that requires advanced programming skills in order to read just the basic data structures.
Table 1 gives an overview of the currently supported instruments. For most of the missions, the data is downloaded as CDF data files from the Coordinated Data Analysis Web (CDAWeb) service provided by NASA’s Space Physics Data Facility at Goddard Space Flight Center. The data loading is in these cases utilized through version 4.0.5 (Mumford et al., 2022) of the sunpy open-source software package (The SunPy Community et al., 2020). Some data sets are directly obtained from the web servers of the responsible institutes, primarily due to not being available through CDAWeb. This applies to Wind/3DP data, STEREO/SEPT data, and electron measurements of SOHO/EPHIN. The latter two data sets are obtained as ASCII files, and not in the CDF format. In general, level 2 data products or higher are used. This is calibrated and validated data that is ready for scientific use (e.g., McComas et al., 2016; Rodríguez-Pacheco et al., 2020). However, in some cases, when for example only level 1 data is available, lower-level data products are chosen. All data files from the Energetic Particle Detector (EPD) instrument suite of Solar Orbiter are directly obtained as CDF files from ESA’s official Solar Orbiter Archive (SOAR), using its own Application Programming Interface (API). For this, the already established version 0.1.10 (Gieseler et al., 2022d) of the solo-epd-loader Python package is used, which in addition to level 2 data also supports the so-called low-latency (LL) data. This data product provides the latest observations, which are very useful in terms of quick-look purposes. However, because the data set is not yet verified it shall not be used for scientific publications.
For most data sets, the data files are loaded into Pandas DataFrames (McKinney, 2010) in Python using SunPy’s TimeSeries functionality. In some cases this is not possible, namely when the data is multidimensional, that is, if multiple dependencies are explicitly defined in the corresponding CDF file. This can for example be the case if a measurement is not only related to time, but also to energy and viewing direction, and depends on the way the CDF file has been structured by the instrument team. In these cases, manual loading functions adopted from the function cdf2df of version 0.15.4 of the discontinued Python package heliopy (Stansby et al., 2021) are used. These functions exploit the Python package cdflib (Stansby et al., 2022).
Figure 1 shows an example workflow within the Data loaders Notebook that illustrates how to load data from the STEREO mission. Next to a direct example, the Notebook also gives information on the other available options. In addition, the Notebook provides different examples on how to visualize the data with Python. For example, how to combine observations of multiple energy channels of different species (see Figure 2) or different instruments into a multi-panel plot (Figure 3), or how to add multiple viewing directions into a single plot (Figure 4). Versed Python users can then easily build their own analyses based on this. With these functions, they can skip the inconvenient start of setting up corresponding routines, and can directly start their scientific analysis. This Jupyter Notebook shows only a selection of data loading examples for some of the data loaders, and will be continuously expanded with further missions and instruments. The data loading functionality of this Notebook is employed also in the following Notebooks presented in Sections 2.2–2.4.
FIGURE 2. Example output of plotting Parker Solar Probe data in the SEP Data Loaders Notebook. Shown here are electron and proton measurements of the IS⊙IS/EPIHI instrument of Parker Solar Probe for the SEP event on 9 October 2021. Note that the electron measurements are count rates and not fluxes.
FIGURE 3. Example output of how to combine different instrument observations into a multi-panel plot in the SEP Data Loaders Notebook. Shown here are electron and ion measurements of the EPT and HET sensors of Solar Orbiter’s EPD instrument suite for the SEP event on 29 October 2021. Note that the increases in ion fluxes observed by EPT around 18:00 are due to contamination caused by electrons.
FIGURE 4. Example output of how to add multiple viewing directions into a single plot in the Data loaders Notebook. Shown here are the four viewing directions of the EPT sensor of Solar Orbiter’s EPD instrument suite.
Next to the loading of charged particle observations, in SEPpy partial support is given for magnetic field and radio measurements. For these, the download and loading of the data is done in the same way as described above. At the moment, the data obtained by the MAG instruments onboard STEREO and Solar Orbiter as well as radio observations by the STEREO/SWAVES instrument are included. The radio data is especially important for the dynamic spectrum tool described in Section 2.3.
2.2 SEP event onset determination
The onset time of an SEP event, that is, the initially measured intensity increase at a spacecraft, is a key information for the event analysis. For example, it is necessary for inferring the injection time and connecting remote-sensing observations to in situ measurements. Furthermore, by knowing the onset times of particles of varying energies, one can get a better estimation of the path that the particles travelled. As the particles travel at different speeds corresponding to their different kinetic energies, they are expected to show different onset times and profiles for different energy channels if one assumes that all particles were injected at the same time at the Sun. This effect is known as velocity dispersion, and it is the basis for a Velocity Dispersion Analysis (VDA, e.g., Lintunen and Vainio, 2004), in which one can derive the initial injection of the SEPs at the Sun. There are different methods to determine onset times, such as the widely used 3-sigma method, in which the event is defined by the time when a certain number of data points increase by three sigma above the predefined background, or by applying a fit to the rising phase of the event in order to extrapolate backwards (e.g., Dresing et al., 2012). The tool presented in this paper employs the Poisson-CUSUM method (Lucas, 1985; Huttunen-Heikinmaa et al., 2005) to find the onsets of an SEP event in different energy channels. Cumulative Sum (CUSUM) methods are a set of similar statistical methods that are employed in many industries as quality control schemes (Page, 1954). CUSUM methods accumulate the difference between consecutive entries of time series data. The first entry of the CUSUM function is usually set to zero. In traditional CUSUM methods, the quality of an industrial product is monitored as a function of time, and this quality may be some numerical value assigned to the product. CUSUM methods are designed to give an early warning in the case this numerical value rapidly deviates from a default range of values, and as such they are widely used in SEP onset determinations (e.g., Paassilta et al., 2018).
The traditional CUSUM method operates under the assumption that the variable under monitoring is a random variable that is normally distributed. Hence, mean and standard deviation of the distribution are the two critical parameters that dictate if and when CUSUM gives a warning of the process getting out of control. We consider the intensity time series measurements as analogous to the quality of an industrially manufactured product, and as such find the onset of an SEP event at the moment of time when intensity measurements start to noticeably deviate from the pre-event background intensity. In the classic approach of the CUSUM method, the monitored variable is assumed to follow a normal distribution. Because measurements of SEPs are expected to be Poisson-distributed, we use the modified Poisson-CUSUM method. To find the onset of an SEP event, it is important to first accurately define the pre-event background of the observations by its mean intensity μ and standard deviation σ. These parameters define the control parameter k that restricts the growth of the CUSUM function:
Where μd is an uncertainty limit for the background variations and n is a natural number that is usually set to n = 2. Finally, the dimensionless CUSUM function is calculated with normalized intensity measurements as follows:
Where I is the measured intensity, In is the normalized deviation from the mean intensity of the pre-event background, and C is the CUSUM function. One can see from the definition of C that it accumulates the difference of In and k as long as In stays larger than k. When the values of C exceed a defined hastiness threshold h, the method starts counting consecutive entries of C until a predefined value of consecutive C > h entries is reached. At that point, the method backtracks the same amount of data points, and marks the found data point as the onset of an event. The amount of consecutive C > h entries that the method counts is a freely changeable parameter called cusum_window. It is important to note that this parameter corresponds to the number of data points, and not to the time that has passed since C exceeded h. The default value of cusum_window = 30 is chosen so that it corresponds to 30 min of continuous threshold-exceeding intensity measurements for a typical 1-min time resolution. Following Huttunen-Heikinmaa et al. (2005), we define h such that it is by default set to h = 1, but if k is large, which in the context of Poisson-CUSUM means that k ≥ 1, then it is set to h = 2. Choosing h to be sufficiently small is imperative for identifying the onset of the event as early as possible.
The onset time determination tool is built in Python, and the user interface is implemented in a Jupyter Notebook for easy usage. After importing the necessary libraries, the user needs to choose the observing spacecraft, measuring sensor, viewing direction (if the instrument provides multiple ones), and the particle species from drop-down menus (shown in Figure 5). After that, a data path can be defined to which data files should be saved to or loaded from. By default, this is set to the directory where the notebook is located. Finally, the user needs to specify the start and end of the time range that should be loaded. With these defined parameters, an Event object is initialized that contains the corresponding data and provides different functions that can be applied to it. Creating the object also automatically downloads the necessary data using the data loader functions presented in Section 2.1 in case it is not found in the designated data directory.
FIGURE 5. The user interface of most Notebooks (here for the onset determination) consists of a simple drop-down menu accompanied by only a few lines of declaring variables. There are short instructions or a description between every cell that guide the user. This set of inputs yields an output shown in Figure 6.
Once the object is created, the onset analysis can be run by defining four different parameters: averaging, background_range, channels, and plot_range. averaging is a parameter that defines the time-averaging of the intensity data. It accepts a Pandas-compatible time string, e.g., “1min” or “30s” for 1-min or 30-s time resolution, respectively. It can also be set to None, in which case the intensity data is not time-averaged at all. It is noteworthy that data cannot be averaged to a finer resolution than its original measurement. background_range defines the time window that is considered to be the pre-event background, and plot_range defines the limits of the time-axis of the entire plot. The analysis can be run on a combination of multiple channels by giving the start and end indices of the channels as an input. This way, all channels in between are combined to a single energy channel, according to their respective energies and intensity measurements. It is of course also possible to run the onset analysis on only a single channel by just providing a single index as the input. The list of available energy channels for the chosen instrument can be obtained by running the function Event.print_energies(). The output information and figure that are produced with the input parameters defined in Figure 5 are displayed in Figure 6.
The CUSUM method is very effective in finding the time when the monitored variable suddenly changes drastically. While it still performs better than the 3-sigma method for gradual SEP rise phases, it can be challenging to find a correct onset time in such cases. Usually, a longer time averaging is recommendable then. Furthermore, a rational choice of the background interval is imperative for the method to work correctly, so the user needs to be careful in assessing whether to include transient structures that do not necessarily represent the actual background into background_range.
2.3 Dynamic spectrum
Whereas usual time series data is presented as a two-dimensional representation of intensity as a function of time in a single energy channel, a dynamic spectrum presents all the energy channels of an instrument in a single plot. This allows one to determine, e.g., confirmation of velocity dispersion in an event immediately with only visual inspection, something that would otherwise become apparent after finding the onset time in a number of energy channels.
The Dynamic Spectrum tool plots the dynamic spectrum of a single instrument for a given time range. The plot is initialized with a grid that has time bins on the x-axis and energy bins on the y-axis. The bins in the grid are then colored according to I ⋅ E2, where E is the mean energy of the corresponding channel and I is the observed intensity at that time and energy bin. Physically, I ⋅ E2 represents the energy flux per logarithmic energy band carried by the SEPs. The motivation behind plotting this quantity instead of simply I is that this way the particle spectrum is flattened. We apply this procedure to account for the drastically varying intensity levels present in one energy spectrum, which can easily lead to poor visibility of the lowest intensities (observed at the highest energies) in a dynamic spectrum.
To plot the dynamic spectrum of an instrument, the user only needs to initialize the Event object presented in Section 2.2. There are only two optional parameters that the user can change: averaging works exactly as it does in onset analysis notebook, with a Pandas-compatible time string, and cmap accepts the name of one of Matplotlib’s (Hunter, 2007) colormaps as a string. By default, averaging is set to None and cmap is set to “magma”.
FIGURE 6. Example output for the SEP onset analysis Notebook for the SEP event on 28 October 2021 as observed by Solar Orbiter/EPT, based on the inputs shown in Figure 5. The red shaded area defines the pre-event background period, and the red and blue vertical lines indicate the found onset time and the peak intensity time, respectively. The intensity time series has been averaged to 1-min resolution.
Furthermore, the user also has the option to accompany the dynamic spectrum with a radio spectrum, as is shown in Figure 7. The radio spectrum in its current version only supports the SWAVES instruments onboard STEREO-A and B. It is planned to add support for the Wind/WAVES instrument in a future version. The maximum intensity in each spectrum is set to 70% of the maximum intensity level of the time window specified. This is done to avoid saturation and to enhance weaker signals. The radio spectrum can be used to show the onset of radio bursts at low frequencies (
FIGURE 7. The output of the dynamic spectrum tool for the 28 October 2021 SEP event with radio plotting enabled. The upper panel shows the radio spectrum as observed by STEREO-A/SWAVES and the lower panel the dynamic electron spectrum of STEREO-A/SEPT.
2.4 Visual time shift analysis
Velocity Dispersion Analysis (VDA) is a method to estimate the path length travelled by SEPs and the time when these SEPs were injected into the interplanetary medium. Often a VDA is not possible, for example, when the onset times in different energy channels do not show significant differences or when the onset times cannot be identified with high accuracy. For such cases, an alternative can be to use the rising phase at a fraction of the peak intensity instead of the classic onset of the event (e.g., Zhao et al., 2019). VDA also does not take into account the pitch-angle scattering of particles in the interplanetary medium, which is why care has to be exercised in its application (Laitinen et al., 2015). To still infer an SEP injection time, an alternative method, the Time Shift Analysis (TSA, e.g. Vainio et al., 2013) can be used, which usually employs only a single energy channel. Therefore, the information on the path length cannot be inferred. In our tool, we combine features of both methods by applying a TSA to a number of energy channels together. The basic assumption behind this tool is that the particles propagated along a common path length. The interactive time shift analysis tool presented here shows the particle intensities of the different energy channels of the same instrument as time series in a single plot (see Figure 8 left). The tool then allows to interactively apply different path lengths to the data. For each path length the time profiles of all chosen energy channels are shifted backwards in time corresponding to the particle’s travel time along the chosen path length:
where t is the initial timestamp of an observation without a shift, L is the assumed path length (i.e., along the interplanetary magnetic field line), and v is the speed of the particles. By varying L, the time series data is shifted differently far backwards. The plot is updated automatically during runtime. Since different energy channels detect particles of different speeds, the plotted time series of different energy channels will be shifted at different rates. We note that all energy channels cover a finite energy range, so there will always be a range of speeds within the particle population in any given energy channel. Nonetheless, we take the geometric mean energy of a channel as an approximation to represent the kinetic energy of all particles in that energy range. The relativistic speed of a particle is then calculated according to:
where E is the mean energy of a channel, m the mass of a particle, and c is the speed of light. A reasonable path length, which explains the observed velocity dispersion, is found when the rise phases of all chosen energy channels collapse, i.e., when they have been shifted so that they align at the same time. This time corresponds to the inferred injection time. There is also the option to normalize all displayed energy channels to the maximum intensity in the considered time frame, which helps to align the rise phases in different energy channels. Figure 8 illustrates the usage of the tool by showing the unaltered intensity time series of multiple channels (left) next to normalized time series that have been time-shifted corresponding to a specific path length so that the onsets of the different channels align in a single onset (right).
FIGURE 8. Unaltered (left) and time-shifted (right) electron intensity time series of the 9 October 2021 SEP event observed by Solar Orbiter/EPT. The bottom left panels inside both plots show the heliocentric distance (R) of the spacecraft at the time of the event and the path length (L) that corresponds to the time-shift. The time-shifted plot on the right has been normalized to the maximum intensity of the event and time-shifted by eye so that the rising flanks of the different channels align, yielding a travelled path length of 1.35 AU. At the time of the event Solar Orbiter was located at a distance of 0.68 AU from the Sun, which corresponds to a path length of 0.73 AU, assuming a nominal Parker spiral with solar wind speed of 400 km/s.
3 Discussion
In this paper, we present the first tools for analyzing SEP events that are provided through the SERPENTINE project to the community. These Jupyter Notebooks are designed to alleviate the significant level of manual work that is an integral part of the study of any SEP event. They open up key pieces of energetic particle analysis for multi-spacecraft studies in an unprecedentedly easy way. The tools themselves require only a minimal amount of programming knowledge to utilize, while simultaneously giving the user access to powerful methods and visualization of data. There is, however, still room for some subjectivity in the interpretation of the results, e.g., for the onset and TSA tools. Also, the tools themselves require that the user is mindful of the methods and assumptions behind the curtain, in order to deliver scientifically valid analysis results. For example, it is still essential to read the corresponding data product descriptions and understand the specific caveats of every instrument before using the data. Figure 3 gives an example on the importance of understanding such instrument caveats. Thus, the tools are aimed at experts who are familiar with such kind of analyses.
The development of these tools is an ongoing endeavor, and the source code is open to everyone on GitHub. In the future, the user interface of the tools is planned to also support missions such as Wind and Parker Solar Probe, which so far are only partially supported. In addition, there are plans to include other data sets, such as X-ray and proton observations by GOES and radio data from other missions. Another goal is to provide access to higher level data products that are planned to be delivered by the SERPENTINE project, such as pitch-angle distributions or event catalogs. The existing tools will see further improvement, and new tools, such as VDA uncertainty estimation and SEP spectra analysis, are also under development. We encourage the scientific community to participate in the development by giving feedback about possible bugs and requested new functionalities via GitHub issues, but we are of course also open for direct communication via, e.g., email.
Data availability statement
The source code used in this study can be found online:
• SEPpy Python package code in GitHub repository SEPpy, archived at https://doi.org/10.5281/zenodo.7216077
• Solo-epd-loader Python package code in GitHub repository solo-epd-loader, archived at https://doi.org/10.5281/zenodo.7100451
• Python code and example Jupyter Notebooks in GitHub repository serpentine, archived at https://doi.org/10.5281/zenodo.7221070.
Author contributions
CP, JG, ND, EA, and RV discussed the tools. JG wrote the software for data loaders. CP, AY-L, EA, and JG wrote the software for onset determination. CP wrote the software for dynamic spectra and visual TSA. DM wrote the software for radio data. AY-L, DP, and SV tested the software and provided critical comments for the development. CP, JG, and ND prepared the first paper draft, and all authors were involved in the preparation of the final manuscript. All authors revised the manuscript before submission.
Funding
This study has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No. 101004159 (SERPENTINE). CP, JG, RV, DP, and EA acknowledge the support of Academy of Finland (FORESAIL, grants 312357, 336809, and 336807). ND acknowledges the support of Academy of Finland (SHOCKSEE, grant 346902). DM acknowledges support from the Academy of Finland (RadioCME, grant 333859). DP and EA acknowledge the ERC under the European Union’s Horizon 2020 research and innovation programme (Grant agreement No. 724391, SolMAG). EA acknowledges the support of the Academy of Finland (TRAMSEP, grant 322455).
Acknowledgments
The authors would like to thank everyone who helped to improve the tools described in this manuscript by providing feedback or contributing to the various open-source projects that it utilizes. The authors thank the two reviewers for their valuable feedback.
Conflict of interest
The authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.
Publisher’s note
All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.
References
The SunPy Community, Barnes, W. T., Bobra, M. G., Christe, S. D., Freij, N., Hayes, L. A., Ireland, J., et al. (2020). The SunPy project: Open source development and status of the version 1.0 core package. Astrophys. J. 890, 68. doi:10.3847/1538-4357/ab4f7a
Desai, M., and Giacalone, J. (2016). Large gradual solar energetic particle events. Living Rev. Sol. Phys. 13, 3. doi:10.1007/s41116-016-0002-5
Domingo, V., Fleck, B., and Poland, A. I. (1995). The SOHO mission: An overview. Sol. Phys. 162, 1–37. doi:10.1007/BF00733425
Dresing, N., Gómez-Herrero, R., Klassen, A., Heber, B., Kartavykh, Y., and Dröge, W. (2012). The large longitudinal spread of solar energetic particles during the 17 january 2010 solar event. Sol. Phys. 281, 281–300. doi:10.1007/s11207-012-0049-y
European Organization For Nuclear Research and OpenAIRE (2013). European organization for nuclear research and OpenAIRE. Geneva: CERN. doi:10.25495/7GXK-RD71
Fox, N. J., Velli, M. C., Bale, S. D., Decker, R., Driesman, A., Howard, R. A., et al. (2016). The solar Probe plus mission: Humanity’s first visit to our star. Space Sci. Rev. 204, 7–48. doi:10.1007/s11214-015-0211-6
Gieseler, J., Dresing, N., Palmroos, C., Freiherr von Forstner, J. L., Price, D. J., Vainio, R., et al. (2022a). Solar-MACH: An open-source tool to analyze solar magnetic connection configurations. Front. Astronomy Space Phys. (submitted).
Gieseler, J., Palmroos, C., Dresing, N., Morosan, D., Asvestari, E., Yli-Laurila, A., et al. (2022b). Solar EneRgetic ParticlE aNalysis plaTform for the INner hEliosphere. SERPENTINE. doi:10.5281/zenodo.7221070
Gieseler, J., Palmroos, C., Dresing, N., Morosan, D., Asvestari, E., Yli-Laurila, A., et al. (2022c). Solar energetic particle time series analysis with Python. serpentine-h2020/SEPpy: 0.1.3. doi:10.5281/zenodo.7216077
Gieseler, J., Palmroos, C., Dresing, N., Morosan, D., Asvestari, E., Yli-Laurila, A., et al. (2022d). Solar energetic particle time series analysis with Python. jgieseler/solo-epd-loader: 0.1.10. doi:10.5281/zenodo.7100451
Harten, R., and Clark, K. (1995). The design features of the GGS wind and polar spacecraft. Space Sci. Rev. 71, 23–40. doi:10.1007/BF00751324
Hunter, J. D. (2007). Matplotlib: A 2D graphics environment. Comput. Sci. Eng. 9, 90–95. doi:10.1109/MCSE.2007.55
Huttunen-Heikinmaa, K., Valtonen, E., and Laitinen, T. (2005). Proton and helium release times in SEP events observed with SOHO/ERNE. Astron. Astrophys. 442, 673–685. doi:10.1051/0004-6361:20042620
Kaiser, M. L., Kucera, T. A., Davila, J. M., Cyr, St.O. C., Guhathakurta, M., and Christian, E. (2008). The STEREO mission: An introduction. Space Sci. Rev. 136, 5–16. doi:10.1007/s11214-007-9277-0
Kaiser, M. L. (2005). The STEREO mission: An overview. Adv. Space Res. 36, 1483–1488. doi:10.1016/j.asr.2004.12.066
Kluyver, T., Ragan-Kelley, B., Pérez, F., Granger, B., Bussonnier, M., Frederic, J., et al. (2016). Jupyter notebooks—A publishing format for reproducible computational workflows. Position. Power Acad. Publ. Play. Agents Agendas 87. IOS Press. doi:10.3233/978-1-61499-649-1-87
Laitinen, T., Huttunen-Heikinmaa, K., Valtonen, E., and Dalla, S. (2015). Correcting for interplanetary scattering in velocity dispersion analysis of solar energetic particles. Astrophys. J. 806, 114. doi:10.1088/0004-637X/806/1/114
Lintunen, J., and Vainio, R. (2004). Solar energetic particle event onset as analyzed from simulated data. Astron. Astrophys. 420, 343–350. doi:10.1051/0004-6361:20034247
Lucas, J. M. (1985). Counted data CUSUM’s. Technometrics 27, 129–144. doi:10.1080/00401706.1985.10488030
McComas, D. J., Alexander, N., Angold, N., Bale, S., Beebe, C., Birdwell, B., et al. (2016). Integrated science investigation of the Sun (ISIS): Design of the energetic particle investigation. Space Sci. Rev. 204, 187–256. doi:10.1007/s11214-014-0059-1
McKinney, W. (2010). “Data structures for statistical computing in Python,” in Proceedings of the 9th Python in Science Conference, Austin, Texas, June 28-July 3, 2010. doi:10.25080/Majora-92bf1922-00a
Müller, D., Cyr, St.O. C., Zouganelis, I., Gilbert, H. R., Marsden, R., Nieves-Chinchilla, T., et al. (2020). The Solar Orbiter mission. Science overview. Astron. Astrophys. 642, A1. doi:10.1051/0004-6361/202038467
Mumford, S. J., Freij, N., Stansby, D., Christe, S., Ireland, J., Mayer, F., et al. (2022). SunPy. Zenodo. doi:10.5281/zenodo.7074315
Paassilta, M., Papaioannou, A., Dresing, N., Vainio, R., Valtonen, E., and Heber, B. (2018). Catalogue of > 55 MeV wide-longitude solar proton events observed by SOHO, ACE, and the STEREOs at ≈ 1 ${\approx}\, 1$ AU during 2009 – 2016. Sol. Phys. 293, 70. doi:10.1007/s11207-018-1284-7
Page, E. S. (1954). Continuous inspection schemes. Biometrika 41, 100–115. doi:10.1093/biomet/41.1-2.100
Reames, D. V. (2021). Solar energetic particles. Sol. Energetic Part. A Mod. Primer Underst. Sources, Accel. Propag. 978. doi:10.1007/978-3-030-66402-2
Rodríguez-Pacheco, J., Wimmer-Schweingruber, R. F., Mason, G. M., Ho, G. C., Sánchez-Prieto, S., Prieto, M., et al. (2020). The energetic particle detector. Energetic particle instrument suite for the solar orbiter mission. Astron. Astrophys. 642, A7. doi:10.1051/0004-6361/201935287
Stansby, D., Harter, B., Sdc, M., Kemenade, H., Burrell, A., Hirch, M., et al. (2022). MAVENSDC/cdflib. Zenodo. doi:10.5281/zenodo.7011489
Stansby, D., Rai, Y., Argall, M., Jeffrey, B., Haythornthwaite, R., Teunissen, J., et al. (2021). heliopython/heliopy: Heliopy 0.15.4. Zenodo. doi:10.5281/zenodo.5090511
Vainio, R., Valtonen, E., Heber, B., Malandraki, O. E., Papaioannou, A., Klein, K.-L., et al. (2013). The firstSEPServerevent catalogue ∼68-MeV solar proton events observed at 1 AU in 1996–2010. J. Space Weather Space Clim. 3, A12. doi:10.1051/swsc/2013030
Keywords: python, software package, solar energetic particle (SEP), coronal mass ejection (CME), spacecraft, heliosphere, data, onset time
Citation: Palmroos C, Gieseler J, Dresing N, Morosan DE, Asvestari E, Yli-Laurila A, Price DJ, Valkila S and Vainio R (2022) Solar energetic particle time series analysis with Python. Front. Astron. Space Sci. 9:1073578. doi: 10.3389/fspas.2022.1073578
Received: 18 October 2022; Accepted: 18 November 2022;
Published: 15 December 2022.
Edited by:
John Coxon, Northumbria University, United KingdomReviewed by:
Frederic Efffenberger, Ruhr University Bochum, GermanyIngmar Sandberg, Space Applications & Research Consultancy (SPARC), Greece
Copyright © 2022 Palmroos, Gieseler, Dresing, Morosan, Asvestari, Yli-Laurila, Price, Valkila and Vainio. This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.
*Correspondence: Christian Palmroos, christian.o.palmroos@utu.fi