Source code for pyspedas.tplot_tools.tplot_math.tkm2re

import logging
import pyspedas
from pyspedas.tplot_tools import store_data, get_data, tnames, get_units, set_units


[docs] def tkm2re(name, km=False, newname=None, suffix=''): """ Converts a tplot variable to Re or Km Parameters ----------- name: str or list of str Names of tplot variables to convert (wildcards accepted) km: bool, optional If True, convert Re to Km. If False, convert Km to Re. Default: False newname: str or list of str, optional Output variable names; if not set, the names of the input variables are used + '_re' or '_km' Default: None suffix: str, optional Specify to append a suffix to each variable (only valid if newname is not specified) Default: '' Returns -------- List of the tplot variables created Examples -------- >>> import pyspedas >>> pyspedas.store_data('a', data={'x':[0,4,8,12,16], 'y':[1,2,3,4,5]}) >>> pyspedas.tkm2re('a', km = True) """ km_in_re = 6371.2 names = tnames(name) if names == []: logging.error('tkm2re: No valid tplot variables found: ' + name) return if newname is None: newname = [n + suffix for n in names] if km == False: newname = [n + '_re' for n in newname] else: newname = [n + '_km' for n in newname] else: if not isinstance(newname, list): newname = [newname] if len(newname) != len(names): logging.error('Number of output variable names (newname) should match the number of input variables.') return out = [] for in_tvar, out_tvar in zip(names, newname): data = get_data(in_tvar) metadata = get_data(in_tvar, metadata=True) if data is None: logging.error('Problem reading variable: ' + in_tvar) continue data_in_units = get_units(in_tvar) if data_in_units is None: data_in_units = 'None' if km == False: new_units = 'Re' if 're' in data_in_units.lower(): logging.warning(f'Tplot variable {in_tvar} is already in units of Re!') data_out = data.y else: data_out = data.y/km_in_re else: new_units = 'km' if 'km' in data_in_units.lower(): logging.warning(f'Tplot variable {in_tvar} is already in units of km!') data_out = data.y else: data_out = data.y*km_in_re saved = store_data(out_tvar, data={'x': data.times, 'y': data_out}, attr_dict=metadata) if not saved: logging.error('Problem creating tplot variable.') continue else: set_units(out_tvar, new_units) # update the subtitle, if needed yaxis_opt = pyspedas.tplot_tools.data_quants[out_tvar].attrs['plot_options'].get('yaxis_opt') if yaxis_opt is not None: subtitle = yaxis_opt.get('axis_subtitle') if subtitle is not None: if km == False: new_subtitle = pyspedas.tplot_tools.data_quants[out_tvar].attrs['plot_options']['yaxis_opt']['axis_subtitle'].lower().replace('km', 'Re') else: new_subtitle = pyspedas.tplot_tools.data_quants[out_tvar].attrs['plot_options']['yaxis_opt']['axis_subtitle'].lower().replace('re', 'km') pyspedas.tplot_tools.data_quants[out_tvar].attrs['plot_options']['yaxis_opt']['axis_subtitle'] = new_subtitle out.append(out_tvar) return out