Skip to content

metric

Metric

Bases: Named, Protocol

Minimal template for metrics.

Call flow

call -> prepare(true), prepare(predicted) -> compute(true, predicted)

prepare(data)

Hook to normalize/collect/select data before computing metric.

Default: identity. Mixins override and call super().prepare(...)

Source code in src/flowcean/core/metric.py
24
25
26
27
28
29
def prepare(self, data: Data) -> Data:
    """Hook to normalize/collect/select data before computing metric.

    Default: identity. Mixins override and call super().prepare(...)
    """
    return data

__call__(true, predicted)

Execute metric: prepare inputs then compute.

Source code in src/flowcean/core/metric.py
35
36
37
38
39
40
41
42
@final
def __call__(
    self,
    true: Data,
    predicted: Data,
) -> Reportable | dict[str, Reportable]:
    """Execute metric: prepare inputs then compute."""
    return self.compute(true, predicted)

compute(true, predicted)

Implement metric logic on prepared inputs.

Source code in src/flowcean/core/metric.py
44
45
46
47
48
def compute(self, true: Data, predicted: Data) -> Reportable:
    """Implement metric logic on prepared inputs."""
    t = self.prepare(true)
    p = self.prepare(predicted)
    return self._compute(t, p)