code: def _binning_dft(
      X,
      window_size,
      series_length,
      dft_length,
      norm,
      inverse_sqrt_win_size,
      lower_bounding,
  ):
      num_windows_per_inst = math.ceil(series_length / window_size)
  
      # Splits individual time series into windows and returns the DFT for each
      data = np.zeros((len(X), num_windows_per_inst, window_size))
      for i in prange(len(X)):
          for j in range(num_windows_per_inst - 1):
              data[i, j] = X[i, window_size * j : window_size * (j + 1)]
  
          start = series_length - window_size
          data[i, -1] = X[i, start:series_length]
  
      dft = np.zeros((len(X), num_windows_per_inst, dft_length))
      for i in prange(len(X)):
          return_val = _fast_fourier_transform(
              data[i], norm, dft_length, inverse_sqrt_win_size
          )
          dft[i] = return_val
  
      if lower_bounding:
          dft[:, :, 1::2] = dft[:, :, 1::2] * -1  # lower bounding
  
      return dft.reshape(dft.shape[0] * dft.shape[1], dft_length)
  
file_path: sktime/sktime/transformations/panel/dictionary_based/_sfa_fast_numba.py
imports: import math
  from warnings import simplefilter
  import numpy
  from sktime.utils.numba.njit import njit
  from sktime.utils.validation._dependencies import _check_soft_dependencies
label_desc: Use image node_id 1 for calling a global function with example usage: _binning_dft(X, window_size, series_length, dft_length, norm, inverse_sqrt_win_size, lower_bounding) and returns: dft