Pozify / src /pozify /exercises /unknown /analyzer.py
tiena2cva's picture
Implement frame-level issue markers
6661f3a
Raw
History Blame Contribute Delete
850 Bytes
from __future__ import annotations
from pozify.contracts import PoseFrame
from pozify.exercises.shared.analyzer import (
ExerciseMetricResult,
mean_visibility,
range_optional,
score,
value_series,
)
from pozify.steps.rep_signals import average_axis
class UnknownAnalyzer:
def metrics(self, frames: list[PoseFrame]) -> ExerciseMetricResult:
movement_signal = value_series(
frames,
lambda frame: average_axis(frame, ("left_hip", "right_hip"), "y"),
)
movement = range_optional(movement_signal) or 0.0
confidence = mean_visibility(frames)
metrics = {
"movement_consistency_score": score(1.0 - movement * 4.0),
"landmark_confidence": confidence,
}
return metrics, 0.0, metrics["movement_consistency_score"], confidence, []