code: def shift_peaks(sig, peak_inds, search_radius, peak_up):
      
      sig_len = sig.shape[0]
      n_peaks = len(peak_inds)
      # The indices to shift each peak ind by
      shift_inds = np.zeros(n_peaks, dtype='int')
  
      # Iterate through peaks
      for i in range(n_peaks):
          ind = peak_inds[i]
          local_sig = sig[max(0, ind - search_radius):min(ind + search_radius, sig_len-1)]
  
          if peak_up:
              shift_inds[i] = np.argmax(local_sig)
          else:
              shift_inds[i] = np.argmin(local_sig)
  
      # May have to adjust early values
      for i in range(n_peaks):
          ind = peak_inds[i]
          if ind >= search_radius:
              break
          shift_inds[i] -= search_radius - ind
  
      shifted_peak_inds = peak_inds + shift_inds - search_radius
  
      return shifted_peak_inds
docs: Helper function for correct_peaks. Return the shifted peaks to local
      maxima or minima within a radius.
  
      peak_up : bool
          Whether the expected peak direction is up