a11oy / tests /test_formulas /test_kalman.py
betterwithage's picture
sync(space): full source mirror — resolve all GitHub<->Space drift (CTO)
a6a5d8e verified
Raw
History Blame
916 Bytes
# SPDX-License-Identifier: Apache-2.0
"""Tests for a11oy.formulas.kalman (Kalman 1960). thesis_v22.pdf §2."""
from a11oy.formulas import kalman
def test_scalar_variance_never_increases():
k = kalman.ScalarKalman(process_var=1e-3, meas_var=1e-1, init_var=1.0)
for z in [0.9, 0.92, 0.88, 0.91, 0.9]:
out = k.update(z)
assert out["posterior_le_prior"] is True
assert out["gain_in_unit_interval"] is True
def test_scalar_tracks_constant():
k = kalman.ScalarKalman(init_value=0.0)
for _ in range(100):
out = k.update(0.85)
assert abs(out["value"] - 0.85) < 0.05
def test_tracker_smooths_noise():
kt = kalman.KalmanTracker(meas_var=4.0, init_pos=0.0)
noisy = [0, 5, -3, 8, 2, 6, 1, 7]
last = None
for z in noisy:
last = kt.step(z)
assert last["citation"] == "thesis_v22.pdf §2"
assert "posterior_le_prior" in last["lean_theorem"]