def _get_average_value()

in src/hpcadvisor/batch_handler.py [0:0]


def _get_average_value(metrics_data):
    values = []
    if metrics_data.value is None:
        return None

    for item in metrics_data.value:
        for timeserie in item.timeseries:
            for data in timeserie.data:
                if data.average is not None:
                    values.append(data.average)

    log.debug(f"metric values={values}")
    numbers = np.array(values)
    n = len(numbers)
    numbers.sort()

    if n == 0:
        log.warn("zero values coming from collected metric data")
        return float("nan")
    else:
        cut_off_low = numbers[int(0.1 * n)]
        cut_off_high = numbers[int(0.9 * n)]

    filtered_numbers = [x for x in numbers if x >= cut_off_low and x <= cut_off_high]

    return np.average(filtered_numbers)