Source code for pyspedas.projects.themis.spacecraft.particles.esa

from pyspedas.projects.themis.load import load
import pyspedas
from pyspedas.projects.themis.state_tools.autoload_support import autoload_support
from pyspedas.projects.themis.state_tools.spinmodel.eclipse_spinmodel_corrections_vector import eclipse_spinmodel_corrections_vector
from pyspedas.projects.themis.state_tools.spinmodel.eclipse_spinmodel_corrections_tensor import eclipse_spinmodel_corrections_tensor
from pyspedas.projects.themis.state_tools.spinmodel.spinmodel import get_spinmodel
from pyspedas import wildcard_expand, time_string
import logging

[docs] def esa(trange=['2007-03-23', '2007-03-24'], probe='c', level='l2', suffix='', get_support_data=False, varformat=None, varnames=[], downloadonly=False, notplot=False, no_update=False, time_clip=False, apply_eclipse_corrections=False): """ This function loads Electrostatic Analyzer (ESA) data Parameters ---------- trange : list of str time range of interest [starttime, endtime] with the format 'YYYY-MM-DD','YYYY-MM-DD'] or to specify more or less than a day ['YYYY-MM-DD/hh:mm:ss','YYYY-MM-DD/hh:mm:ss'] Default: ['2007-03-23', '2007-03-24'] probe: str or list of str Spacecraft probe letter(s) ('a', 'b', 'c', 'd' and/or 'e') Default: 'c' level: str Data level; Valid options: 'l1', 'l2' Default: 'l2' suffix: str The tplot variable names will be given this suffix. Default: no suffix get_support_data: bool Data with an attribute "VAR_TYPE" with a value of "support_data" will be loaded into tplot. Default: False; only loads data with a "VAR_TYPE" attribute of "data" varformat: str The file variable formats to load into tplot. Wildcard character "*" is accepted. Default: None; all variables are loaded varnames: list of str List of variable names to load Default: Empty list, so all data variables are loaded downloadonly: bool Set this flag to download the CDF files, but not load them into tplot variables Default: False notplot: bool Return the data in hash tables instead of creating tplot variables Default: False no_update: bool If set, only load data from your local cache Default: False time_clip: bool Time clip the variables to exactly the range specified in the trange keyword Default: False apply_eclipse_corrections: bool If True, apply eclipse spin model corrections to L2 output variables as appropriate. Returns ------- List of str List of tplot variables created Empty list if no data Example ------- >>> import pyspedas >>> from pyspedas import tplot >>> esa_vars = pyspedas.projects.themis.esa(probe='d', trange=['2013-11-5', '2013-11-6']) >>> tplot(['thd_peif_density', 'thd_peif_vthermal']) """ loaded_vars = load(instrument='esa', trange=trange, level=level, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, probe=probe, time_clip=time_clip, no_update=no_update) if not isinstance(level, list): level = [level] if not isinstance(probe, list): probe = [probe] for lvl in level: for p in probe: if not downloadonly and lvl=='l2' and apply_eclipse_corrections: autoload_support(probe=p, trange=trange, spinmodel=True) sm_spinfit=get_spinmodel(probe=p,correction_level=2,quiet=True) start_times, end_times, flags, flag_strings = sm_spinfit.eclipse_correction_status() n = len(start_times) if n > 0: logging.info(f"Eclipse correction status for probe {probe}:") for i in range(n): logging.info(f"Eclipse {i+1} of {n}: start: {time_string(start_times[i])} end: {time_string(end_times[i])} status: {flag_strings[i]}") probe_vars = wildcard_expand(loaded_vars,'th'+p+'_*') for v in probe_vars: if ('mag' in v) or ('_en_' in v) or ('symm_ang' in v): # Field aligned quantities, spectra, and scalars don't get transformed logging.info(f"Skipping eclipse corrections for {v}") elif ("mftens" in v) or ("ptens" in v): logging.info(f"Applying particle tensor eclipse corrections to {v}") eclipse_spinmodel_corrections_tensor(v, p, spin_based=True) elif ("velocity" in v) or ("eflux" in v) or ("flux" in v) or ("symm" in v): logging.info(f"Applying particle vector eclipse corrections to {v}") eclipse_spinmodel_corrections_vector(v, p, spin_based=True) else: logging.info(f"Skipping eclipse corrections for {v}") return loaded_vars