Files
NODEDC_MISSION_CORE/tests/test_e39_perception_refinement.py

58 lines
1.6 KiB
Python

from __future__ import annotations
import numpy as np
from k1link.compute.e39_perception_refinement import (
_feature_names,
_fit_robust_scaler,
_predict_presence,
_project_dimensions,
_transform,
)
def test_e39_feature_contract_and_knn_are_deterministic() -> None:
assert len(_feature_names()) == 262
matrix = np.asarray(
[
[0.0, 1.0],
[0.1, 1.1],
[4.9, 5.0],
[5.0, 5.1],
],
dtype=np.float64,
)
median, scale = _fit_robust_scaler(matrix)
transformed = _transform(matrix, median=median, scale=scale, clip=20.0)
first = _predict_presence(
transformed[0],
transformed[1:],
["background", "object", "object"],
neighbors=3,
)
second = _predict_presence(
transformed[0],
transformed[1:],
["background", "object", "object"],
neighbors=3,
)
assert first == second == ("object", 2 / 3)
def test_e39_projects_presence_through_frozen_stratum_ontology() -> None:
assert _project_dimensions("camera-only", "object-present") == {
"presence": "object-present",
"geometry_association": "insufficient-support",
"freshness": "unavailable",
}
assert _project_dimensions("geometry-only", "occupied-environment") == {
"presence": "occupied-environment",
"geometry_association": "independent-occupied",
"freshness": "current",
}
assert _project_dimensions("unknown", "background-or-noise") == {
"presence": "background-or-noise",
"geometry_association": "rejected-nonobject",
"freshness": "current",
}