58 lines
1.6 KiB
Python
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",
|
|
}
|