Download legacy/code/aureole_core.py from PureOne/AUREOLE-R-v3: direct link, hf CLI and curl.
- Browser
- Download file 3.67 kB
-
https://huggingface.co/PureOne/AUREOLE-R-v3/resolve/main/legacy/code/aureole_core.py
- Command line
-
hf download hf://PureOne/AUREOLE-R-v3/legacy/code/aureole_core.py
-
curl -L -o aureole_core.py https://huggingface.co/PureOne/AUREOLE-R-v3/resolve/main/legacy/code/aureole_core.py
3.67 kB
| """AUREOLE v1: small, explicit linear-Gaussian reference operations. | |
| This is a CPU research witness, not a neural renderer or DLSS implementation. | |
| All matrices use float64. Measurements are conditionally independent unless | |
| an explicit joint noise covariance is provided. Never reuse correlated rays | |
| as independent observations. | |
| """ | |
| from __future__ import annotations | |
| import numpy as np | |
| def sym(a): | |
| return (a + a.T) * 0.5 | |
| def sqrt_psd(a): | |
| vals, vecs = np.linalg.eigh(sym(a)) | |
| if vals.min() < -1e-10: | |
| raise ValueError("Matrix is not positive semidefinite") | |
| return (vecs * np.sqrt(np.maximum(vals, 0))) @ vecs.T | |
| def observe(mean, covariance, h, value, noise_variance): | |
| """One scalar Gaussian update, using Joseph form for numerical stability.""" | |
| h = np.asarray(h, dtype=float) | |
| if noise_variance <= 0: | |
| raise ValueError("Noise variance must be positive") | |
| ph = covariance @ h | |
| innovation_var = float(noise_variance + h @ ph) | |
| k = ph / innovation_var | |
| m = mean + k * (value - h @ mean) | |
| residual = np.eye(len(mean)) - np.outer(k, h) | |
| p = residual @ covariance @ residual.T + noise_variance * np.outer(k, k) | |
| return m, sym(p) | |
| def query_value(covariance, task_metric, h, noise_variance): | |
| """Exact one-query quadratic Bayes risk reduction; future task map is fixed.""" | |
| ph = covariance @ h | |
| return float(ph @ task_metric @ ph / (noise_variance + h @ ph)) | |
| def batch_covariance(p, h, noise): | |
| """Exact joint update, including correlated measurement noise.""" | |
| v = h @ p @ h.T + noise | |
| return sym(p - p @ h.T @ np.linalg.solve(v, h @ p)) | |
| def future_metric(dynamics, task_maps, weights): | |
| """W=sum w_tau Phi_tau.T C_tau.T C_tau Phi_tau; tau starts at zero.""" | |
| p = np.eye(dynamics.shape[0]) | |
| w = np.zeros_like(dynamics, dtype=float) | |
| for c, weight in zip(task_maps, weights): | |
| w += weight * p.T @ c.T @ c @ p | |
| p = dynamics @ p | |
| return sym(w) | |
| def closed_observation_basis(dynamics_list, channel_rows, tol=1e-10): | |
| """Smallest common A.T-invariant column span containing all C.T and H.T. | |
| Returns orthonormal U with quotient z=U.T x. This exact finite-dimensional | |
| construction is expensive for a full scene; intended for tests/local blocks. | |
| """ | |
| def orth(x): | |
| u, s, _ = np.linalg.svd(x, full_matrices=False) | |
| return u[:, s > tol] | |
| basis = orth(np.asarray(channel_rows, float).T) | |
| while True: | |
| enlarged = orth(np.concatenate([basis] + [a.T @ basis for a in dynamics_list], axis=1)) | |
| if enlarged.shape[1] == basis.shape[1]: | |
| return enlarged | |
| basis = enlarged | |
| def risk(p, w): | |
| return float(np.trace(w @ p)) | |
| def transform_coding(source_covariance, task_metric, rank): | |
| """Optimal exact rank-r linear encoding of a Gaussian source innovation. | |
| This source covariance is NOT automatically the renderer's posterior P. | |
| The encoder must actually possess the source being compressed. | |
| """ | |
| root = sqrt_psd(source_covariance) | |
| vals, vectors = np.linalg.eigh(sym(root @ task_metric @ root)) | |
| order = np.argsort(vals)[::-1] | |
| vals, vectors = vals[order], vectors[:, order] | |
| kept = vectors[:, :rank] | |
| error_cov = root @ (np.eye(len(vals)) - kept @ kept.T) @ root | |
| return kept, np.maximum(vals, 0), sym(error_cov) | |
| def area_mixture(operators, weights): | |
| """Convex area mixing under the manuscript's independent patch assumptions.""" | |
| weights = np.asarray(weights, float) | |
| if np.min(weights) < 0 or not np.isclose(weights.sum(), 1): | |
| raise ValueError("Mixture weights must form a simplex") | |
| return np.einsum("k,kij->ij", weights, operators) | |