docs: def sget_voltage(self, cycle, step, set_number=None):
          """Returns voltage for cycle, step.
  
          Convinience function; same as issuing
             dfdata[(dfdata[cycle_index_header] == cycle) &
                   (dfdata[step_index_header] == step)][voltage_header]
  
          Args:
              cycle: cycle number
              step: step number
              set_number: the dataset number (automatic selection if None)
  
          Returns:
              pandas.Series or None if empty
          """
  
          time_00 = time.time()
          set_number = self._validate_dataset_number(set_number)
          if set_number is None:
              self._report_empty_dataset()
              return
          cycle_index_header = self.headers_normal.cycle_index_txt
          voltage_header = self.headers_normal.voltage_txt
          step_index_header = self.headers_normal.step_index_txt
          test = self.datasets[set_number].dfdata
  
          if isinstance(step, (list, tuple)):
              warnings.warn(f"The varialbe step is a list."
                            f"Should be an integer."
                            f"{step}")
              step = step[0]
  
          c = test[(test[cycle_index_header] == cycle) &
                   (test[step_index_header] == step)]
  
          self.logger.debug(f"(dt: {(time.time() - time_00):4.2f}s)")
          if not self.is_empty(c):
              v = c[voltage_header]
              return v
          else:
              return None