From ffcd54aaa7a78cb98330ded7ce900e9c1cde77a8 Mon Sep 17 00:00:00 2001 From: Michail Kaseris Date: Thu, 1 Feb 2024 15:03:12 +0200 Subject: [PATCH] Metric list --- src/skelcast/metrics/metric.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/skelcast/metrics/metric.py b/src/skelcast/metrics/metric.py index 2fee27f..6830815 100644 --- a/src/skelcast/metrics/metric.py +++ b/src/skelcast/metrics/metric.py @@ -1,4 +1,6 @@ from abc import ABC, abstractmethod +from skelcast.metrics import METRICS + class Metric(ABC): @abstractmethod @@ -28,3 +30,24 @@ def reset(self): Resets the metric state. """ pass + + +def create_metric(metric_name, **kwargs): + metric_class = METRICS.get_module(metric_name) + return metric_class(**kwargs) + + +class MetricList: + def __init__(self, metric_names): + self.metrics = [create_metric(name) for name in metric_names] + + def update(self, output): + for metric in self.metrics: + metric.update(output) + + def compute(self): + return {type(metric).__name__: metric.result() for metric in self.metrics} + + def reset(self): + for metric in self.metrics: + metric.reset()