File size: 987 Bytes
20c251e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
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