Source code for pyrfu.mms.feeps_spin_avg

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Built-in imports
import warnings

# 3rd party imports
import numpy as np
import xarray as xr

__author__ = "Louis Richard"
__email__ = "louisr@irfu.se"
__copyright__ = "Copyright 2020-2023"
__license__ = "MIT"
__version__ = "2.4.2"
__status__ = "Prototype"


[docs]def feeps_spin_avg(flux_omni, spin_sectors): r"""spin-average the omni-directional FEEPS energy spectra Parameters ---------- flux_omni : xarray.DataArray Omni-direction flux. spin_sectors : xarray.DataArray Time series of the spin sectors. Returns ------- spin_avg_flux : xarray.DataArray Spin averaged omni-directional flux. """ spin_starts = np.where(spin_sectors[:-1] >= spin_sectors[1:])[0] + 1 energies = flux_omni.energy.data data = flux_omni.data spin_avg = np.zeros([len(spin_starts), len(energies)]) c_start = spin_starts[0] for i, spin_start in enumerate(spin_starts[1:-1]): with warnings.catch_warnings(): warnings.simplefilter("ignore", category=RuntimeWarning) spin_avg[i, :] = np.nanmean( data[c_start : spin_start + 1, :], axis=0, ) c_start = spin_start + 1 spin_avg_flux = xr.DataArray( spin_avg, coords=[flux_omni.time.data[spin_starts], energies], dims=["time", "energy"], ) return spin_avg_flux