docs: def _update_extrema(self, f_coords, extrema_type, threshold_frac=None,
                          threshold_abs=None):
          """Update _extrema_df, extrema_type and extrema_coords"""
  
          if threshold_frac is not None:
              if threshold_abs is not None:
                  logger.warning(  # Exit if both filter are set
                      "Filter can be either threshold_frac or threshold_abs!")
                  return
              if threshold_frac > 1 or threshold_frac < 0:
                  raise Exception("threshold_frac range is [0, 1]!")
  
          # Return empty result if coords list is empty
          if len(f_coords) == 0:
              df = pd.DataFrame({}, columns=['A', 'B', 'C', "Chgcar"])
              self._extrema_df = df
              self.extrema_coords = []
              logger.info("Find {} {}.".format(len(df), extrema_type))
              return
  
          data = {}
          unit = 1 / np.array(self.chgcar.dim)  # pixel along a, b, c
  
          for fc in f_coords:
              a, b, c = tuple(map(int, fc / unit))
              data[tuple(fc)] = self.chgcar.data["total"][a][b][c]
  
          df = pd.Series(data).reset_index()
          df.columns = ['a', 'b', 'c', 'Charge Density']
          ascending = (extrema_type == "local minima")
  
          if threshold_abs is None:
              threshold_frac = threshold_frac \
                  if threshold_frac is not None else 1.0
              num_extrema = int(threshold_frac * len(f_coords))
              df = df.sort_values(by="Charge Density", ascending=ascending)[
                   0:num_extrema]
              df.reset_index(drop=True, inplace=True)  # reset major index
          else:  # threshold_abs is set
              df = df.sort_values(by="Charge Density", ascending=ascending)
              df = df[df["Charge Density"] <= threshold_abs] if ascending \
                  else df[df["Charge Density"] >= threshold_abs]
  
          extrema_coords = []
          for row in df.iterrows():
              fc = np.array(row[1]["a":"c"])
              extrema_coords.append(fc)
  
          self._extrema_df = df
          self.extrema_type = extrema_type
          self.extrema_coords = extrema_coords
          logger.info("Find {} {}.".format(len(df), extrema_type))