Source code for pyspedas.tplot_tools.replace_metadata

import pyspedas
from pyspedas.tplot_tools import get_y_range
from copy import deepcopy
import logging


[docs] def replace_metadata(tplot_name, new_metadata): """ This function will replace all the metadata in a tplot variable. Parameters ---------- tplot_name : str The name of the tplot variable. new_metadata : dict A dictionary with metadata values. A deep copy will be performed so that no references to new_metadata are retained. Returns ------- None Examples -------- >>> # Copy Variable 1 metadata into Variable 2, which must already exist >>> import pyspedas >>> meta = pyspedas.get_data('Variable1', metadata=True) >>> pyspedas.replace_metadata("Variable2", meta) """ # if old name input is a number, convert to corresponding name if isinstance(tplot_name, int): tplot_name = pyspedas.tplot_tools.data_quants[tplot_name].name # check if old name is in current dictionary if tplot_name not in pyspedas.tplot_tools.data_quants.keys(): logging.error(f"replace_metadata: {tplot_name} is currently not in pyspedas") return original_create_time = pyspedas.tplot_tools.data_quants[tplot_name].attrs['plot_options']['create_time'] original_error = pyspedas.tplot_tools.data_quants[tplot_name].attrs['plot_options']['error'] original_trange = pyspedas.tplot_tools.data_quants[tplot_name].attrs['plot_options']['trange'] xaxis_opt = pyspedas.tplot_tools.data_quants[tplot_name].attrs['plot_options']['xaxis_opt'] yaxis_opt = pyspedas.tplot_tools.data_quants[tplot_name].attrs['plot_options']['yaxis_opt'] zaxis_opt = pyspedas.tplot_tools.data_quants[tplot_name].attrs['plot_options']['zaxis_opt'] xaxis_opt['crosshair'] = 'X' yaxis_opt['crosshair'] = 'Y' zaxis_opt['crosshair'] = 'Z' xaxis_opt['x_axis_type'] = 'linear' yaxis_opt['y_axis_type'] = 'linear' zaxis_opt['z_axis_type'] = 'linear' line_opt = {} time_bar = [] extras = dict(panel_size=1, border=True) links = {} md_copy = deepcopy(new_metadata) if 'plot_options' not in md_copy.keys(): md_copy['plot_options'] = {} md_copy['plot_options']['xaxis_opt'] = xaxis_opt md_copy['plot_options']['yaxis_opt'] = yaxis_opt md_copy['plot_options']['zaxis_opt'] = zaxis_opt md_copy['plot_options']['line_opt'] = line_opt md_copy['plot_options']['trange'] = original_trange md_copy['plot_options']['time_bar'] = time_bar md_copy['plot_options']['extras'] = extras md_copy['plot_options']['create_time'] = original_create_time md_copy['plot_options']['links'] = links #md_copy['plot_options']['spec_bins_ascending'] = _check_spec_bins_ordering(times, spec_bins) md_copy['plot_options']['overplots'] = [] md_copy['plot_options']['overplots_mpl'] = [] md_copy['plot_options']['interactive_xaxis_opt'] = {} md_copy['plot_options']['interactive_yaxis_opt'] = {} md_copy['plot_options']['error'] = original_error pyspedas.tplot_tools.data_quants[tplot_name].attrs = md_copy pyspedas.tplot_tools.data_quants[tplot_name].attrs["plot_options"]["yaxis_opt"]["y_range"] = ( get_y_range(pyspedas.tplot_tools.data_quants[tplot_name]) ) return