26 lines
977 B
Python
26 lines
977 B
Python
"""Projection invariants from E题V2: quality weights means, not physical coverage."""
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
import numpy as np
|
|
|
|
import compare_models as cm
|
|
|
|
|
|
class ProjectionCoverageTests(unittest.TestCase):
|
|
def test_quality_changes_mean_but_not_physical_coverage(self) -> None:
|
|
values = np.asarray([[0.0], [10.0]], dtype=np.float32)
|
|
observed = np.ones_like(values, dtype=bool)
|
|
intervals = np.asarray([[0.0, 0.5], [0.5, 1.0]], dtype=np.float32)
|
|
qualities = np.asarray([1.0, 1e-8], dtype=np.float32)
|
|
edges = np.asarray([0.0, 1.0], dtype=np.float32)
|
|
projected, mask, coverage = cm._project_rows(values, observed, intervals, qualities, edges)
|
|
self.assertTrue(bool(mask[0, 0]))
|
|
self.assertAlmostEqual(float(projected[0, 0]), 10.0 * 1e-8 / (1.0 + 1e-8), places=6)
|
|
self.assertAlmostEqual(float(coverage[0, 0]), 1.0, places=6)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|