flasc.utilities.optimization.find_timeshift_between_dfs

flasc.utilities.optimization.find_timeshift_between_dfs#

flasc.utilities.optimization.find_timeshift_between_dfs(df1, df2, cols_df1, cols_df2, use_circular_statistics=False, t_step=numpy.timedelta64(720, 'h'), correct_y_shift=False, y_shift_range=array([-180., -178., -176., -174., -172., -170., -168., -166., -164., -162., -160., -158., -156., -154., -152., -150., -148., -146., -144., -142., -140., -138., -136., -134., -132., -130., -128., -126., -124., -122., -120., -118., -116., -114., -112., -110., -108., -106., -104., -102., -100., -98., -96., -94., -92., -90., -88., -86., -84., -82., -80., -78., -76., -74., -72., -70., -68., -66., -64., -62., -60., -58., -56., -54., -52., -50., -48., -46., -44., -42., -40., -38., -36., -34., -32., -30., -28., -26., -24., -22., -20., -18., -16., -14., -12., -10., -8., -6., -4., -2., 0., 2., 4., 6., 8., 10., 12., 14., 16., 18., 20., 22., 24., 26., 28., 30., 32., 34., 36., 38., 40., 42., 44., 46., 48., 50., 52., 54., 56., 58., 60., 62., 64., 66., 68., 70., 72., 74., 76., 78., 80., 82., 84., 86., 88., 90., 92., 94., 96., 98., 100., 102., 104., 106., 108., 110., 112., 114., 116., 118., 120., 122., 124., 126., 128., 130., 132., 134., 136., 138., 140., 142., 144., 146., 148., 150., 152., 154., 156., 158., 160., 162., 164., 166., 168., 170., 172., 174., 176., 178.]), opt_bounds=None, opt_Ns=None, verbose=True)[source]#

Find the optimal time shift between two dataframes.

This function is used to find the optimal time shift between two dataframes 'df1' and 'df2'. The function will resample the dataframes to a common time vector and then compare the dataframes in time steps of 't_step'. The function will then find the optimal time shift between the two dataframes by minimizing the Pearson correlation coefficient between the two dataframes. The function can also correct for a bias in the y-values of the dataframes by minimizing the Pearson correlation coefficient between the two dataframes after a bias has been removed.

Parameters:
  • df1 (pd.DataFrame) -- Dataframe 1.

  • df2 (pd.DataFrame) -- Dataframe 2.

  • cols_df1 (list) -- Columns to use in dataframe 1.

  • cols_df2 (list) -- Columns to use in dataframe 2.

  • use_circular_statistics (bool) -- Use circular statistics for averaging. Default is False.

  • t_step (np.timedelta64) -- Time step for comparison. Default is 30 days.

  • correct_y_shift (bool) -- Correct for a bias in the y-values. Default is False.

  • y_shift_range (np.array) -- Range of y-shifts to evaluate. Default is np.arange(-180.0, 180.0, 2.0).

  • opt_bounds (list) -- Bounds for optimization. Default is None.

  • opt_Ns (int) -- Number of steps for optimization. Default is None.

  • verbose (bool) -- Print verbose output. Default is True.

Returns:

List of dictionaries with the following keys:
  • t0: Start time of comparison.

  • t1: End time of comparison.

  • x_opt: Optimal time shift.

  • J_opt: Optimal cost function value.

  • x: Time shifts evaluated.

  • J: Cost function values evaluated.

Return type:

list