Source code for pyrfu.mms.eis_omni

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

# 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 eis_omni(eis_allt, method: str = "mean"): r"""Calculates the omni-directional flux for all 6 telescopes. Parameters ---------- eis_allt : xarray.Dataset Dataset of the fluxes of all 6 telescopes. Returns ------- flux_omni : xarray.DataArray Omni-directional flux for all 6 telescopes See Also -------- pyrfu.mms.get_eis_allt Examples -------- >>> from pyrfu import mms Define spacecraft index and time interval >>> tint = ["2017-07-23T16:10:00", "2017-07-23T18:10:00"] >>> ic = 2 Get EIS ExTOF all 6 telescopes fluxes >>> extof_allt = mms.get_eis_allt("flux_extof_proton_srvy_l2", tint, ic) Compute the omni-directional flux for all 6 telescopes >>> extof_omni = mms.eis_omni(extof_allt) """ assert method.lower() in ["mean", "sum"] scopes = list(filter(lambda x: x[0] == "t", eis_allt)) flux_omni = np.zeros_like(eis_allt[scopes[0]].data) for scope in scopes: flux_omni += eis_allt[scope].data.copy() # Why?? # try: # flux_omni += eis_allt[scope].data.copy() # except TypeError: # flux_omni = eis_allt[scope].data.copy() if method.lower() == "mean": flux_omni /= len(scopes) # Get dimensions, coordinates and attributes based on first telescope dims = eis_allt[scopes[0]].dims coords = [eis_allt[scopes[0]][k] for k in dims] attrs = eis_allt[scopes[0]].attrs flux_omni = xr.DataArray(flux_omni, coords=coords, dims=dims, attrs=attrs) return flux_omni