Source code for pyspedas.projects.rbsp.rbspice_lib.rbsp_rbspice_omni

import logging
import numpy as np
from pyspedas.tplot_tools import get_data, store_data, options
from pyspedas.tplot_tools import tnames

# use nanmean from bottleneck if it's installed, otherwise use the numpy one
# bottleneck nanmean is ~2.5x faster
try:
    import bottleneck as bn
    nanmean = bn.nanmean
except ImportError:
    nanmean = np.nanmean


[docs] def rbsp_rbspice_omni(probe='a', datatype='TOFxEH', level='l3'): """ Calculates the omni-directional flux for all 6 telescopes Parameters ---------- probe : str or list of str, default='a' Spacecraft probe name: 'a' or 'b' datatype: str, default='TOFxEH' RBSPICE data type:: 'EBR', 'ESRHELT', 'ESRLEHT', 'IBR', 'ISBR', 'ISRHELT', 'TOFxEH', 'TOFxEIon', 'TOFxEnonH', 'TOFxPHHHELT', 'TOFxPHHLEHT' Values depends on different data levels. level : str, default='l3' data level: 'l1','l2','l3' Returns ------- out : list Tplot variables created Examples -------- This function is called within pyspedas.projects.rbsp.rbspice """ if probe is None: probe = 'a' if datatype is None: datatype = 'TOFxEH' if level is None: level = 'l3' if level != 'l1': units_label = '1/(cm^2-sr-s-keV)' else: units_label = 'counts/s' prefix = 'rbsp'+probe+'_rbspice_'+level+'_'+datatype+'_' # find the flux/cps data name(s) data_var = tnames(prefix + 'F*DU') if not data_var: logging.error('Error, problem finding the RBSPICE data to calculate omni-directional spectrograms') return logging.info('Calculating omni directional energy spectra; this might take a few minutes...') out = [] for i in range(len(data_var)): species_str = data_var[i][-4:-2] if species_str == 'FP': species='proton' if datatype != 'TOFxPHHHELT': zrange = [5., 1.e5] else: zrange = [2.e2, 1.e6] elif species_str == 'He': species = 'helium' zrange = [1., 5.e2] elif species_str == 'FO': species = 'oxygen' if datatype != 'TOFxPHHHELT': zrange = [1., 1.e2] else: zrange = [1e1, 1.e4] # load the flux/cps data d = get_data(prefix+species) d_for_en_table = get_data(prefix+species+'_T0') if d is not None: flux_omni = np.zeros((len(d.times),len(d.y[0, :, 0]))) for k in range(len(d.times)): for l in range(len(d.y[0, :, 0])): flux_omni[k, l] = nanmean(d.y[k, l, :]) newname = prefix+species+'_omni' store_data(newname, data={'x': d.times, 'y': flux_omni, 'v': d_for_en_table.v}) options(newname, 'ylog', True) options(newname, 'zlog', True) options(newname, 'spec', True) options(newname, 'zrange', zrange) options(newname, 'ytitle', 'rbsp-'+probe+'\nrbspice\n'+species+'\nomni') options(newname, 'ysubtitle', '[keV]') options(newname, 'ztitle', units_label) out.append(newname) return out