UT3Masks ======== .. py:class:: t3toolbox.uniform_tucker_tensor_train.UT3Masks Bases: :py:obj:`t3toolbox.backend.common.ValueHashedMasks` The static rank structure of a uniform Tucker tensor train: its two boolean edge masks. Slot ``j`` of an edge is real iff its mask is ``True`` there (the prefix/canonical form). Held as a separate object so it can ride as jax ``aux_data``. Hash/eq are **value-based** (the :py:class:`~t3toolbox.backend.common.ValueHashedMasks` mixin), so a rebuilt-but-identical holder is the *same* jit cache key -- no per-iteration recompile in optimization loops; see ``docs/contributor/uniform_pytree_composition.md``. (The physical ``shape`` is a separate static int tuple on :py:class:`UniformTuckerTensorTrain` -- not a mask, and already value-hashable.) .. py:attribute:: tucker_edge_mask :type: t3toolbox.backend.common.NDArray .. py:attribute:: tt_edge_mask :type: t3toolbox.backend.common.NDArray .. py:property:: data :type: Tuple[t3toolbox.backend.common.NDArray, t3toolbox.backend.common.NDArray] The two raw rank-mask arrays, ``(tucker_edge_mask, tt_edge_mask)``.