Observability-Gated Spectral Phase Initialization / phase_track.py
Beats tuned baseline
1import numpy as np
2
3META = {
4 "name": "phase_synchronization_regression",
5 "domain": "geometry/graph synchronization",
6 "description": "Multi-view rotated node vectors with noisy pairwise relative-phase observations; predict a gauge-invariant latent regression target.",
7}
8N = 8
9EDGES = [(i, j) for i in range(N) for j in range(i + 1, N)]
10
11
12def _make(seed, n):
13 rng = np.random.default_rng(seed)
14 theta = rng.uniform(-np.pi, np.pi, N)
15 theta -= theta[0]
16 phi = np.array([theta[i] - theta[j] + rng.normal(0.0, 0.28) for i, j in EDGES], dtype=np.float32)
17 x = np.empty((n, N, 2), dtype=np.float32)
18 y = np.empty(n, dtype=np.float32)
19 c, s = np.cos(theta).astype(np.float32), np.sin(theta).astype(np.float32)
20 for k in range(n):
21 u = rng.normal(0.0, 1.0, (N, 2)).astype(np.float32)
22 x[k, :, 0] = c * u[:, 0] - s * u[:, 1]
23 x[k, :, 1] = s * u[:, 0] + c * u[:, 1]
24 y[k] = np.tanh(u[:, 0].sum() / 3.0) + 0.25 * np.sin(u[:, 1].sum())
25 obs = np.tile(phi, (n, 1)).astype(np.float32)
26 return np.concatenate([x.reshape(n, -1), obs], axis=1), y[:, None]
27
28
29def get_dataset(seed, n_train, n_test):
30 xtr, ytr = _make(seed, n_train)
31 xte, yte = _make(seed + 5000, n_test)
32 return {"xtr": xtr, "ytr": ytr, "xte": xte, "yte": yte,
33 "task": "regression", "metric": "mse", "out_dim": 1}