Source code for pyspedas.projects.erg.satellite.erg.orb.orb

import numpy as np
from pyspedas import tnames
from pyspedas import clip, get_data, options, ylim

from ..load import load
from .remove_duplicated_tframe import remove_duplicated_tframe
from ..get_gatt_ror import get_gatt_ror


from typing import List, Optional

[docs] def orb( trange: List[str] = ['2017-03-27', '2017-03-28'], datatype: str = 'def', level: str = 'l2', model: str = "op", suffix: str = '', get_support_data: bool = False, varformat: Optional[str] = None, varnames: List[str] = [], downloadonly: bool = False, notplot: bool = False, no_update: bool = False, uname: Optional[str] = None, passwd: Optional[str] = None, time_clip: bool = False, version: Optional[str] = None, ror: bool = True, force_download: bool = False, ) -> List[str]: """ This function loads orbit data from the Arase mission 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: ['2017-03-27', '2017-03-28'] datatype: str Data type; Valid 'l2' options: "pre", "spre", "mpre", "lpre", "def" Default: 'def' level: str Data level; Valid options: 'l2', 'l3' Default: 'l2' model: str Field model to use for 'l3' data. Valid options: 'op', 't89', 'ts04' Default: 'op' suffix: str The tplot variable names will be given this suffix. Default: None get_support_data: bool If True, data with an attribute "VAR_TYPE" with a value of "support_data" will be loaded into tplot. Default: False varformat: str The file variable formats to load into tplot. Wildcard character "*" is accepted. By default, all variables are loaded in. Default: None (all variables loaded) varnames: list of str List of variable names to load. If list is empty or not specified, all data variables are loaded. Default: [] (all variables 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 version: str Set this value to specify the version of cdf files (such as "v03") Default: False ror: bool If true, print PI info and rules of the road. Default: True uname: str User name. Default: None passed: str Password. Default: None force_download: bool Download file even if local version is more recent than server version Default: False Returns ------- List of tplot variables created. Examples -------- >>> import pyspedas >>> from pyspedas import tplot >>> orb_vars = pyspedas.projects.erg.orb(trange=['2017-03-27', '2017-03-28']) >>> tplot('erg_orb_l2_pos_gse') """ initial_notplot_flag = False if notplot: initial_notplot_flag = True file_res = 3600. * 24 prefix = 'erg_orb_'+level+'_' if (datatype in ["pre", "spre", "mpre", "lpre"]) and (level == 'l2'): prefix = 'erg_orb_'+datatype+'_' + level+'_' if level == 'l3': if model == 'op': pathformat = 'satellite/erg/orb/'+level + \ '/opq/%Y/%m/erg_orb_'+level+'_op_%Y%m%d_' else: pathformat = 'satellite/erg/orb/'+level+'/'+model + \ '/%Y/%m/erg_orb_'+level+'_'+model+'_%Y%m%d_' elif level == 'l2': if datatype == 'def': pathformat = 'satellite/erg/orb/' + datatype + '/%Y/erg_orb_'+level+'_%Y%m%d_' else: pathformat = 'satellite/erg/orb/' + datatype + \ '/%Y/erg_orb_' + datatype + '_'+level+'_%Y%m%d_' if version is None: pathformat += 'v??.cdf' else: pathformat += version + '.cdf' loaded_data = load(pathformat=pathformat, trange=trange, level=level, datatype=datatype, file_res=file_res, prefix=prefix, suffix=suffix, get_support_data=get_support_data, varformat=varformat, varnames=varnames, downloadonly=downloadonly, notplot=notplot, time_clip=time_clip, no_update=no_update, uname=uname, passwd=passwd, version=version, force_download=force_download) if (len(loaded_data) > 0) and ror: try: gatt = get_gatt_ror(downloadonly, loaded_data) # --- print PI info and rules of the road print(' ') print( '**************************************************************************') print(gatt["LOGICAL_SOURCE_DESCRIPTION"]) print('') if level == 'l3': print('Information about ERG L3 orbit') elif level == 'l2': print('Information about ERG orbit') print('') # print('PI: ', gatt['PI_NAME']) # not need? # print("Affiliation: "+gatt["PI_AFFILIATION"]) # not need? print('') print('RoR of ERG project common: https://ergsc.isee.nagoya-u.ac.jp/data_info/rules_of_the_road.shtml.en') print('') print('Contact: erg-sc-core at isee.nagoya-u.ac.jp') print( '**************************************************************************') except: print('printing PI info and rules of the road was failed') if initial_notplot_flag or downloadonly: return loaded_data remove_duplicated_tframe(tnames(prefix + '*pos*')) if (level == 'l2') and (datatype == 'def'): # remove -1.0e+30 if prefix + 'pos_Lm' + suffix in loaded_data: clip(prefix + 'pos_Lm' + suffix, -1e+6, 1e6) _, bdata = get_data(prefix + 'pos_Lm' + suffix) ylim(prefix + 'pos_Lm' + suffix, np.nanmin(bdata), np.nanmax(bdata)) # set labels options(prefix + 'pos_gse' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_gsm' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_sm' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_rmlatmlt' + suffix, 'legend_names', ['Re', 'MLAT', 'MLT']) options(prefix + 'pos_eq' + suffix, 'legend_names', ['Req', 'MLT']) options(prefix + 'pos_iono_north' + suffix, 'legend_names', ['GLAT', 'GLON']) options(prefix + 'pos_iono_south' + suffix, 'legend_names', ['GLAT', 'GLON']) options(prefix + 'pos_blocal' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_blocal_mag' + suffix, 'legend_names', ['B(model)_at_ERG']) # options(prefix + 'pos_blocal_mag' + suffix, 'legend_names', ['B(model)\n_at_ERG']) # Can't break? options(prefix + 'pos_beq' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_Lm' + suffix, 'legend_names', ['90deg', '60deg', '30deg']) options(prefix + 'vel_gse' + suffix, 'legend_names', ['X[km/s]', 'Y[km/s]', 'Z[km/s]']) options(prefix + 'vel_gsm' + suffix, 'legend_names', ['X[km/s]', 'Y[km/s]', 'Z[km/s]']) options(prefix + 'vel_sm' + suffix, 'legend_names', ['X[km/s]', 'Y[km/s]', 'Z[km/s]']) # set color options(prefix + 'pos_gse' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_gsm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_sm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_rmlatmlt' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_blocal' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_beq' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_Lm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'vel_gse' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'vel_gsm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'vel_sm' + suffix, 'Color', ['b', 'g', 'r']) # set y axis to logscale options(prefix + 'pos_blocal_mag' + suffix, 'ylog', 1) options(prefix + 'pos_beq' + suffix, 'ylog', 1) elif (datatype in ["pre", "spre", "mpre", "lpre"]) and (level == 'l2'): # set labels options(prefix + 'pos_gse' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_gsm' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_sm' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_rmlatmlt' + suffix, 'legend_names', ['Re', 'MLAT', 'MLT']) options(prefix + 'pos_eq' + suffix, 'legend_names', ['Req', 'MLT']) options(prefix + 'pos_iono_north' + suffix, 'legend_names', ['GLAT', 'GLON']) options(prefix + 'pos_iono_south' + suffix, 'legend_names', ['GLAT', 'GLON']) options(prefix + 'pos_blocal' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_blocal_mag' + suffix, 'legend_names', 'B(' + datatype + ')\n_at ERG') options(prefix + 'pos_beq' + suffix, 'legend_names', ['X', 'Y', 'Z']) options(prefix + 'pos_Lm' + suffix, 'legend_names', ['90deg', '60deg', '30deg']) options(prefix + 'vel_gse' + suffix, 'legend_names', ['X[km/s]', 'Y[km/s]', 'Z[km/s]']) options(prefix + 'vel_gsm' + suffix, 'legend_names', ['X[km/s]', 'Y[km/s]', 'Z[km/s]']) options(prefix + 'vel_sm' + suffix, 'legend_names', ['X[km/s]', 'Y[km/s]', 'Z[km/s]']) # set color options(prefix + 'pos_gse' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_gsm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_sm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_rmlatmlt' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_blocal' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_beq' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'pos_Lm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'vel_gse' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'vel_gsm' + suffix, 'Color', ['b', 'g', 'r']) options(prefix + 'vel_sm' + suffix, 'Color', ['b', 'g', 'r']) # set y axis to logscale options(prefix + 'pos_blocal_mag' + suffix, 'ylog', 1) options(prefix + 'pos_beq' + suffix, 'ylog', 1) elif level == 'l3': # remove -1.0e+30 for i in range(len(loaded_data)): get_data_vars = get_data(loaded_data[i]) if len(get_data_vars) < 3: if np.nanmin(get_data_vars[1]) < -1.0e+29: clip(loaded_data[i], -1e+6, 1e6) _, bdata = get_data(loaded_data[i]) ylim(loaded_data[i], np.nanmin(bdata), np.nanmax(bdata)) if model in ["op", "t89", "ts04"]: if model == "ts04": model = model.upper() # set ytitle options(prefix + 'pos_lmc_' + model + suffix, 'ytitle', f'Lmc ({model})') options(prefix + 'pos_lstar_' + model + suffix, 'ytitle', f'Lstar ({model})') options(prefix + 'pos_I_' + model + suffix, 'ytitle', f'I ({model})') options(prefix + 'pos_blocal_' + model + suffix, 'ytitle', f'Blocal ({model})') options(prefix + 'pos_beq_' + model + suffix, 'ytitle', f'Beq ({model})') options(prefix + 'pos_eq_' + model + suffix, 'ytitle', f'Eq_pos ({model})') options(prefix + 'pos_iono_north_' + model + suffix, 'ytitle', f'footprint_north ({model})') options(prefix + 'pos_iono_south_' + model + suffix, 'ytitle', f'footprint_south ({model})') # set ysubtitle options(prefix + 'pos_lmc_' + model + suffix, 'ysubtitle', '[dimensionless]') options(prefix + 'pos_lstar_' + model + suffix, 'ysubtitle', '[dimensionless]') options(prefix + 'pos_I_' + model + suffix, 'ysubtitle', '[Re]') options(prefix + 'pos_blocal_' + model + suffix, 'ysubtitle', '[nT]') options(prefix + 'pos_beq_' + model + suffix, 'ysubtitle', '[nT]') options(prefix + 'pos_eq_' + model + suffix, 'ysubtitle', '[Re Hour]') options(prefix + 'pos_iono_north_' + model + suffix, 'ysubtitle', '[deg. deg.]') options(prefix + 'pos_iono_south_' + model + suffix, 'ysubtitle', '[deg. deg.]') # set ylabels options(prefix + 'pos_lmc_' + model + suffix, 'legend_names', ['90deg', '80deg', '70deg', '60deg', '50deg', '40deg', '30deg', '20deg', '10deg']) options(prefix + 'pos_lstar_' + model + suffix, 'legend_names', ['90deg', '80deg', '70deg', '60deg', '50deg', '40deg', '30deg', '20deg', '10deg']) options(prefix + 'pos_I_' + model + suffix, 'legend_names', ['90deg', '80deg', '70deg', '60deg', '50deg', '40deg', '30deg', '20deg', '10deg']) options(prefix + 'pos_blocal_' + model + suffix, 'legend_names', '|B|') options(prefix + 'pos_beq_' + model + suffix, 'legend_names', '|B|') options(prefix + 'pos_eq_' + model + suffix, 'legend_names', ['Re', 'MLT']) options(prefix + 'pos_iono_north_' + model + suffix, 'legend_names', ['GLAT', 'GLON']) options(prefix + 'pos_iono_south_' + model + suffix, 'legend_names', ['GLAT', 'GLON']) # set y axis to logscale options(prefix + 'pos_blocal_' + model + suffix, 'ylog', 1) options(prefix + 'pos_beq_' + model + suffix, 'ylog', 1) return loaded_data