Source code for pytplot.tplot_math.flatten

# Copyright 2020 Regents of the University of Colorado. All Rights Reserved.
# Released under the MIT license.
# This software was developed at the University of Colorado's Laboratory for Atmospheric and Space Physics.
# Verify current version before use at: https://github.com/MAVENSDC/Pytplot

import pytplot
import copy

[docs]def flatten(tvar,range=None,new_tvar=None): """ Divides the column by an average over specified time .. note:: This analysis routine assumes the data is no more than 2 dimensions. If there are more, they may become flattened! Parameters: tvar : str Name of first tplot variable. range : [int, int], optional The time range to average over. The default is the whole range. new_tvar : str Name of new tvar for added data. If not set, then a name is made up. Returns: None Examples: >>> # Divide each column by the average of the data between times 8 and 14 >>> pytplot.store_data('d', data={'x':[2,5,8,11,14,17,21], 'y':[[1,1,50],[2,2,3],[100,4,47],[4,90,5],[5,5,99],[6,6,25],[7,7,-5]]}) >>> pytplot.flatten('d',[8,14],'d_flatten') >>> print(pytplot.data_quants['d_flatten'].values) """ if new_tvar is None: new_tvar = tvar + "_flattened" if 'spec_bins' in pytplot.data_quants[tvar].coords: df, s = pytplot.tplot_utilities.convert_tplotxarray_to_pandas_dataframe(tvar) else: df = pytplot.tplot_utilities.convert_tplotxarray_to_pandas_dataframe(tvar, no_spec_bins=True) s=None if range is None: pass time = df.index #if time given not an index, choose closest time if range is None: df_index = list(df.columns) # divide by column average for i in df_index: df[i] = df[i] / df[i].mean() else: if range[0] not in time: tdiff = abs(time - range[0]) start_t = time[tdiff.argmin()] if range[1] not in time: tdiff = abs(time - range[1]) end_t = time[tdiff.argmin()] df_index = list(df.columns) #divide by specified time average for i in df_index: df[i] = df[i]/((df.loc[start_t:end_t])[i]).mean() if s is not None: pytplot.store_data(new_tvar,data = {'x':df.index,'y':df.values, 'v': s.values}) pytplot.data_quants[new_tvar].attrs = copy.deepcopy(pytplot.data_quants[tvar].attrs) else: pytplot.store_data(new_tvar, data={'x': df.index, 'y': df.values}) pytplot.data_quants[new_tvar].attrs = copy.deepcopy(pytplot.data_quants[tvar].attrs) return