UT3Frame ======== .. toctree:: :hidden: /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.data /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.d /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.N /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.nU /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.nD /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.rL /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.rR /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.stack_shape /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.uniform_structure /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.uniform_variation_shapes /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.up_ranks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.down_ranks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.left_ranks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.right_ranks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.structure /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.apply_masks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.orthogonality_residual /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.is_orthogonal /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.minimal_ranks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.has_minimal_ranks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.has_numerically_minimal_ranks /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.is_consistent /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.allclose /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.from_t3frame /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.to_t3frame /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.from_ut3 /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.to_ut3 /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.to_dense /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.reverse /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.orthogonalize /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.random_orthogonal /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.random_orthogonal_like /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.save /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.load /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.supercores /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.contains_jax /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.to_jax /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.to_numpy /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.copy /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.__repr__ /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.validate /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.__post_init__ /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.unstack /autoapi/t3toolbox/uniform_frame_variations_format/UT3Frame.stack .. py:class:: t3toolbox.uniform_frame_variations_format.UT3Frame Frame (orthogonal frame) for the frame-variations representation of uniform Tucker tensor trains. Uniform analog of :py:class:`~t3toolbox.frame_variations_format.T3Frame`: four padded supercores (``up_tucker``, ``down_tt``, ``left_tt``, ``right_tt``) + the static physical ``shape`` (an int tuple, shared across the stack) + a :py:class:`UT3FrameMasks` holder (the four per-stack rank masks). .. rubric:: Examples >>> import numpy as np >>> import t3toolbox.uniform_frame_variations_format as ubcf >>> d, N, nU, nD, rL, rR = 3, 6, 4, 5, 3, 2 >>> up = np.random.randn(d, nU, N) >>> down = np.random.randn(d, rL, nD, rR) >>> left = np.random.randn(d, rL, nU, rL) >>> right = np.random.randn(d, rR, nU, rR) >>> shape = (4, 5, 6) # real mode dims (each <= N=6) >>> up_mask = np.arange(nU) < np.array([[2],[3],[4]]) # (d, nU); per-mode up rank >>> down_mask = np.arange(nD) < np.array([[3],[4],[5]]) # (d, nD) >>> left_mask = np.arange(rL) < np.array([[1],[2],[3],[1]]) # (d+1, rL); boundary TT ranks >>> right_mask = np.arange(rR) < np.array([[1],[2],[2],[1]]) # (d+1, rR) >>> masks = ubcf.UT3FrameMasks(up_mask, down_mask, left_mask, right_mask) >>> B = ubcf.UT3Frame(up, down, left, right, shape, masks) >>> B.shape (4, 5, 6) >>> np.asarray(B.up_ranks).tolist() [2, 3, 4] >>> B.stack_shape () .. py:attribute:: up_tucker_supercore :type: t3toolbox.backend.common.NDArray .. py:attribute:: down_tt_supercore :type: t3toolbox.backend.common.NDArray .. py:attribute:: left_tt_supercore :type: t3toolbox.backend.common.NDArray .. py:attribute:: right_tt_supercore :type: t3toolbox.backend.common.NDArray .. py:attribute:: shape :type: t3toolbox.backend.common.typ.Tuple[int, Ellipsis] .. py:attribute:: masks :type: UT3FrameMasks Methods ------- .. autoapisummary:: t3toolbox.uniform_frame_variations_format.UT3Frame.data t3toolbox.uniform_frame_variations_format.UT3Frame.d t3toolbox.uniform_frame_variations_format.UT3Frame.N t3toolbox.uniform_frame_variations_format.UT3Frame.nU t3toolbox.uniform_frame_variations_format.UT3Frame.nD t3toolbox.uniform_frame_variations_format.UT3Frame.rL t3toolbox.uniform_frame_variations_format.UT3Frame.rR t3toolbox.uniform_frame_variations_format.UT3Frame.stack_shape t3toolbox.uniform_frame_variations_format.UT3Frame.uniform_structure t3toolbox.uniform_frame_variations_format.UT3Frame.uniform_variation_shapes t3toolbox.uniform_frame_variations_format.UT3Frame.up_ranks t3toolbox.uniform_frame_variations_format.UT3Frame.down_ranks t3toolbox.uniform_frame_variations_format.UT3Frame.left_ranks t3toolbox.uniform_frame_variations_format.UT3Frame.right_ranks t3toolbox.uniform_frame_variations_format.UT3Frame.structure t3toolbox.uniform_frame_variations_format.UT3Frame.apply_masks t3toolbox.uniform_frame_variations_format.UT3Frame.orthogonality_residual t3toolbox.uniform_frame_variations_format.UT3Frame.is_orthogonal t3toolbox.uniform_frame_variations_format.UT3Frame.minimal_ranks t3toolbox.uniform_frame_variations_format.UT3Frame.has_minimal_ranks t3toolbox.uniform_frame_variations_format.UT3Frame.has_numerically_minimal_ranks t3toolbox.uniform_frame_variations_format.UT3Frame.is_consistent t3toolbox.uniform_frame_variations_format.UT3Frame.allclose t3toolbox.uniform_frame_variations_format.UT3Frame.from_t3frame t3toolbox.uniform_frame_variations_format.UT3Frame.to_t3frame t3toolbox.uniform_frame_variations_format.UT3Frame.from_ut3 t3toolbox.uniform_frame_variations_format.UT3Frame.to_ut3 t3toolbox.uniform_frame_variations_format.UT3Frame.to_dense t3toolbox.uniform_frame_variations_format.UT3Frame.reverse t3toolbox.uniform_frame_variations_format.UT3Frame.orthogonalize t3toolbox.uniform_frame_variations_format.UT3Frame.random_orthogonal t3toolbox.uniform_frame_variations_format.UT3Frame.random_orthogonal_like t3toolbox.uniform_frame_variations_format.UT3Frame.save t3toolbox.uniform_frame_variations_format.UT3Frame.load t3toolbox.uniform_frame_variations_format.UT3Frame.supercores t3toolbox.uniform_frame_variations_format.UT3Frame.contains_jax t3toolbox.uniform_frame_variations_format.UT3Frame.to_jax t3toolbox.uniform_frame_variations_format.UT3Frame.to_numpy t3toolbox.uniform_frame_variations_format.UT3Frame.copy t3toolbox.uniform_frame_variations_format.UT3Frame.__repr__ t3toolbox.uniform_frame_variations_format.UT3Frame.validate t3toolbox.uniform_frame_variations_format.UT3Frame.__post_init__ t3toolbox.uniform_frame_variations_format.UT3Frame.unstack t3toolbox.uniform_frame_variations_format.UT3Frame.stack