docs: def pre_process_data(self):
          """perform some pre-processing of the data (i.e. interpolation)"""
  
          logging.debug("pre-processing the data")
  
          capacity = self.capacity
          voltage = self.voltage
  
          # performing an interpolation in v(q) space
          logging.debug(" - interpolating voltage(capacity)")
          c1, c2 = index_bounds(capacity)
          if self.max_points is not None:
              len_capacity = min(self.max_points, self.len_capacity)
          elif self.capacity_resolution is not None:
              len_capacity = round(abs(c2-c1) / self.capacity_resolution, 0)
          else:
              len_capacity = self.len_capacity
  
          f = interp1d(capacity, voltage, kind=self.interpolation_method)
  
  
          self.capacity_preprocessed = np.linspace(c1, c2, len_capacity)
          self.voltage_preprocessed = f(self.capacity_preprocessed)
  
          if self.pre_smoothing:
              logging.debug(" - pre-smoothing (savgol filter window)")
              savgol_filter_window_divisor = np.amin(
                  (self.savgol_filter_window_divisor_default, len_capacity / 5)
              )
              savgol_filter_window_length = int(
                  len_capacity / savgol_filter_window_divisor
              )
  
              if savgol_filter_window_length % 2 == 0:
                  savgol_filter_window_length -= 1
              savgol_filter_window_length = np.amax(
                  [3, savgol_filter_window_length]
              )
  
              self.voltage_preprocessed = savgol_filter(
                  self.voltage_preprocessed,
                  savgol_filter_window_length,
                  self.savgol_filter_window_order
              )