Source code for pyrfu.mms.feeps_sector_spec
#!/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 feeps_sector_spec(inp_alle):
r"""Creates sector-spectrograms with FEEPS data (particle data organized
by time and sector number)
Parameters
----------
inp_alle : xarray.Dataset
Dataset of energy spectrum of all eyes.
Returns
-------
out : xarray.Dataset
Sector-spectrograms with FEEPS data for all eyes.
"""
sensors_eyes_top = list(filter(lambda x: x[:3] in "top", inp_alle))
sensors_eyes_bot = list(filter(lambda x: x[:3] in "bot", inp_alle))
sensors_eyes = [*sensors_eyes_top, *sensors_eyes_bot]
sector_time = inp_alle["spinsectnum"].time.data
sector_data = inp_alle["spinsectnum"].data
out_dict = {k: inp_alle[k] for k in inp_alle if k not in sensors_eyes}
for sensors_eye in sensors_eyes:
sensor_data = inp_alle[sensors_eye].data
spin_starts = np.where(sector_data[:-1] > sector_data[1:])[0] + 1
sector_spec = np.zeros((len(spin_starts), 64))
c_start = spin_starts[0]
for i, spin in enumerate(spin_starts):
# find the sectors for this spin
spin_sect = sector_data[c_start:spin]
sector_spec[i, spin_sect] = np.nanmean(
sensor_data[c_start:spin, :],
axis=1,
)
c_start = spin
out_dict[sensors_eye] = xr.DataArray(
sector_spec,
coords=[sector_time[spin_starts], np.arange(64)],
dims=["time", "sectornum"],
)
out = xr.Dataset(out_dict)
return out