Source: tests/test_diagnostics.py · Plain text

tests/test_diagnostics.py

import torch
from torch import nn

from mcss.diagnostics import (
    intervention_specificity,
    measurement_generalization_matrix,
    no_bypass_audit,
    query_equivariance_error,
)
from mcss.measurements import FixedMeasurementRenderer


class _AuditableModel(nn.Module):
    def __init__(self) -> None:
        super().__init__()
        self.renderer = FixedMeasurementRenderer(n_samples=4)
        self.encoder = nn.Linear(2, 2)

    def forward(self, context_rgb, context_cameras, target_cameras, bounds):
        raise NotImplementedError


def test_no_bypass_audit_accepts_parameter_free_renderer_and_label_free_signature() -> None:
    report = no_bypass_audit(_AuditableModel())

    assert report.passed
    assert report.renderer_parameter_count == 0
    assert report.forbidden_forward_arguments == ()


def test_query_equivariance_and_intervention_specificity_have_known_values() -> None:
    reference = {"depth": torch.tensor([[[[[1.0]]], [[[2.0]]]]])}
    permuted = {"depth": torch.tensor([[[[[2.0]]], [[[1.0]]]]])}
    error = query_equivariance_error(reference, permuted, torch.tensor([1, 0]))
    assert error["depth"] == 0.0

    baseline = {"rgb": torch.zeros(1), "depth": torch.zeros(1)}
    density_change = {"rgb": torch.zeros(1), "depth": torch.ones(1)}
    color_change = {"rgb": torch.ones(1), "depth": torch.zeros(1)}
    specificity = intervention_specificity(baseline, density_change, color_change)
    assert specificity["density_to_depth"] == 1.0
    assert specificity["color_to_rgb"] == 1.0
    assert specificity["cross_talk"] == 0.0


def test_measurement_matrix_keeps_train_and_heldout_axes() -> None:
    records = [
        {"trained": "rgb+depth", "evaluated": "rgb", "score": 20.0},
        {"trained": "rgb+depth", "evaluated": "normal", "score": 12.0},
    ]
    matrix = measurement_generalization_matrix(records)

    assert matrix["rgb+depth"]["rgb"] == 20.0
    assert matrix["rgb+depth"]["normal"] == 12.0