def combined_stats_over_time(label,
                             runs,
                             objective,
                             worst,
                             best,
                             ):

  extract_fn = _.result.time
  combine_fn = min
  no_data = 999

  by_run = [stats_over_time(session, run, extract_fn, combine_fn, no_data)
            for run, session in runs]
  max_len = max(map(len, by_run))

  by_run_streams = [Stream() << x << repeat(x[-1], max_len-len(x))
                    for x in by_run]
  by_quanta = zip(*by_run_streams[:])

  # TODO: Fix this, this variable should be configurable
  stats_quanta = 10
  def get_data(value_function):
    final_values = []
    for quanta, values in enumerate(by_quanta):
      sec = quanta*stats_quanta
      final_values.append([sec] + value_function(values))
    return final_values

  mean_values = get_data(lambda values: [mean(values), stddev(values)])

  def extract_percentiles(values):
    values = sorted(values)
    return ([values[int(round(p*(len(values)-1)))] for p in PCTSTEPS]
           + [mean(values)])
  percentile_values = get_data(extract_percentiles)
  return mean_values, percentile_values
combine stats_over_time() vectors for multiple runs
dataset/ETHPy150Open jansel/opentuner/opentuner/utils/stats_matplotlib.py/combined_stats_over_time