from __future__ import annotations from k1link.compute.e38_perception_baseline import ( _dimension_metrics, _predict_tree, _train_tree, ) def test_e38_cart_is_deterministic_and_respects_minimum_leaf() -> None: rows = [ ({"score": 0.1, "support": 0.0}, "background"), ({"score": 0.2, "support": 1.0}, "background"), ({"score": 0.7, "support": 3.0}, "object"), ({"score": 0.8, "support": 4.0}, "object"), ({"score": 0.9, "support": 5.0}, "object"), ({"score": 1.0, "support": 6.0}, "object"), ] first = _train_tree( rows, feature_names=["score", "support"], max_depth=3, min_leaf=2, ) second = _train_tree( rows, feature_names=["score", "support"], max_depth=3, min_leaf=2, ) assert first == second assert _predict_tree(first, {"score": 0.15, "support": 1.0}) == "background" assert _predict_tree(first, {"score": 0.85, "support": 4.0}) == "object" def test_e38_dimension_metrics_do_not_blend_strata() -> None: rows = [ { "source_stratum": "agree", "prediction": {"presence": "object-present"}, "reference": {"presence": "object-present"}, }, { "source_stratum": "agree", "prediction": {"presence": "object-present"}, "reference": {"presence": "background-or-noise"}, }, { "source_stratum": "geometry-only", "prediction": {"presence": "occupied-environment"}, "reference": {"presence": "occupied-environment"}, }, ] metrics = _dimension_metrics(rows, dimension="presence", target=0.9) assert metrics["correct"] == 2 assert metrics["incorrect"] == 1 assert metrics["accuracy"] == 0.666667 assert metrics["passed"] is False assert metrics["by_stratum"]["agree"]["accuracy"] == 0.5 assert metrics["by_stratum"]["geometry-only"]["accuracy"] == 1.0