| from __future__ import annotations | |
| from dovla_cil.eval.lattice_eval import ( | |
| _empty_task_stats, | |
| _finalize_task_stats, | |
| _ndcg, | |
| _validation_group_ids, | |
| ) | |
| def test_lattice_ndcg_rewards_correct_order() -> None: | |
| utilities = [2.0, 1.0, 0.0] | |
| assert _ndcg([3.0, 2.0, 1.0], utilities) == 1.0 | |
| assert _ndcg([1.0, 2.0, 3.0], utilities) < 1.0 | |
| def test_lattice_validation_split_is_group_deterministic() -> None: | |
| groups = [f"g{index}" for index in range(10)] | |
| first = _validation_group_ids(groups, val_fraction=0.2, seed=7) | |
| second = _validation_group_ids(groups, val_fraction=0.2, seed=7) | |
| assert first == second | |
| assert len(first) == 2 | |
| assert len(set(first)) == len(first) | |
| def test_edge_metrics_are_undefined_without_comparable_pairs() -> None: | |
| metrics = _finalize_task_stats(_empty_task_stats()) | |
| assert metrics["num_pairs"] == 0 | |
| assert metrics["pairwise_ranking_accuracy"] is None | |
| assert metrics["potential_edge_mae"] is None | |