SharedFrameData#

class t3toolbox.backend.sharing.SharedFrameData#

The per-frame companion of the shared geometry: everything the tied projection, the shared retraction, and the group-spectrum diagnostics need, derived from an orthogonal frame by fv_shared_frame_data() (never stored inside a frame).

All array fields carry the frame stack C leading; groups / row_splits are static structure (jax aux). One entry per NONTRIVIAL group (>= 2 modes), in canonical order; svd_* is the thin SVD of the stacked matrix M_g = concat_i(S_i^T) – deliberately an SVD, never a Cholesky/Gram: the solve gets the intrinsic least-squares sensitivity, svd_s IS the group spectrum s_g at full (non-squared) accuracy, and the clipped pseudoinverse is well-defined at the rank-deficient points rank continuation visits.

What ``s_g`` is (representation-independent – a property of the represented tensor T and the partition alone): the singular values of the concatenated matricization [T_(i1) | ... | T_(ik)] over the group’s modes; equivalently s_g^2 = eig(sum_i Gamma_i) (the summed mode Grams), equivalently the singular values of the Jacobian of T with respect to a gauged tied motion of the shared factor – the exact analog of what a per-mode Tucker spectrum is to an unshared factor. Note the scale: every mode carries the full norm, so sum_j s_gj^2 = k * ||T||^2 (a group of k modes inflates the spectrum by sqrt(k); the factor cancels in every condition-number ratio). Cf. Peshekhonov, Arzhantsev & Rakhuba (2024, SF-Tucker) and Molozhavenko & Rakhuba (2026, SF-ETT), whose algorithms compute this same object.

groups: tuple#
row_splits: tuple#
centers: tuple#
svd_U: tuple#
svd_s: tuple#
svd_Vt: tuple#