Split tile-graph off shared prep spine

This commit is contained in:
Meta Vens 2026-04-23 04:18:24 +01:00
commit b3a2d72cc1
14 changed files with 389 additions and 301 deletions

View file

@ -2,11 +2,10 @@ from __future__ import annotations
import numpy as np
from repixelizer.io import premultiply
from repixelizer.source_reference import build_source_lattice_reference
from repixelizer.source_reference import build_source_lattice_reference, build_tile_graph_source_reference
def test_source_lattice_reference_recovers_stable_cell_colors_and_deltas() -> None:
def test_source_lattice_reference_recovers_stable_cell_colors() -> None:
lowres = np.asarray(
[
[[1.0, 0.0, 0.0, 1.0], [0.0, 0.0, 1.0, 1.0]],
@ -25,15 +24,8 @@ def test_source_lattice_reference_recovers_stable_cell_colors_and_deltas() -> No
phase_y=0.0,
)
expected_premul = premultiply(lowres)
assert np.allclose(reference.sharp_rgba, lowres, atol=1e-5)
assert np.allclose(reference.mean_rgba[0, 1], lowres[0, 1], atol=1e-5)
assert reference.delta_x is not None
assert reference.delta_y is not None
assert reference.delta_diag is not None
assert reference.delta_anti is not None
assert np.allclose(reference.delta_x, expected_premul[:, 1:, :] - expected_premul[:, :-1, :], atol=1e-5)
assert np.allclose(reference.delta_y, expected_premul[1:, :, :] - expected_premul[:-1, :, :], atol=1e-5)
assert reference.dispersion >= 0.0
@ -63,12 +55,21 @@ def test_source_lattice_reference_tracks_edge_peaks_and_gradients() -> None:
assert np.all(reference.edge_strength[:, 0] == 1.0)
assert np.all(reference.edge_grad_x[:, 0] == 1.0)
assert np.all(reference.edge_grad_y[:, 0] == 0.0)
def test_source_lattice_reference_computes_default_edge_metadata() -> None:
def test_tile_graph_source_reference_matches_continuous_anchor_fields() -> None:
source = np.zeros((6, 6, 4), dtype=np.float32)
source[..., 3] = 1.0
source[:, 2, :3] = 1.0
reference = build_source_lattice_reference(
full = build_source_lattice_reference(
source,
target_width=2,
target_height=2,
phase_x=0.0,
phase_y=0.0,
)
tile = build_tile_graph_source_reference(
source,
target_width=2,
target_height=2,
@ -76,8 +77,12 @@ def test_source_lattice_reference_computes_default_edge_metadata() -> None:
phase_y=0.0,
)
assert np.all(reference.edge_strength[:, 0] > 0.0)
assert np.all(reference.edge_peak_x[:, 0] == 2)
assert np.allclose(tile.sharp_rgba, full.sharp_rgba, atol=1e-5)
assert np.array_equal(tile.sharp_x, full.sharp_x)
assert np.array_equal(tile.sharp_y, full.sharp_y)
assert np.array_equal(tile.edge_peak_x, full.edge_peak_x)
assert np.array_equal(tile.edge_peak_y, full.edge_peak_y)
assert np.allclose(tile.edge_strength, full.edge_strength, atol=1e-5)
def test_source_lattice_reference_cpu_device_matches_default_path() -> None: