T3Frame.has_numerically_minimal_ranks#

t3toolbox.frame_variations_format.T3Frame.has_numerically_minimal_ranks(atol=1e-09)#
def has_numerically_minimal_ranks(self, atol: float = 1e-9) -> NDArray:  # bool array, shape = stack_shape

True (per stack element) if the frame is numerically minimal – certified without an SVD.

An orthonormal frame’s cores are full-rank, so an orthogonal + structurally-minimal frame is automatically numerically minimal (no t3svd – and a frame is not a tensor to SVD anyway). So this returns is_orthogonal(atol) and has_minimal_ranks. A non-orthogonal frame returns False: the SVD certification path for non-orthogonal frames is intentionally not implemented (frames that need numerical minimality are expected to be orthonormal). Distinct from the structural has_minimal_ranks; for tensors see TuckerTensorTrain.has_numerically_minimal_ranks() (the SVD version).

Examples

>>> import numpy as np
>>> import t3toolbox.tucker_tensor_train as t3
>>> import t3toolbox.frame_variations_format as bvf
>>> np.random.seed(0)
>>> frame, _ = bvf.t3_orthogonal_representations(
...     t3.TuckerTensorTrain.randn((6, 7, 5), (2, 2, 2), (1, 2, 2, 1)))     # orthogonal + minimal
>>> print(frame.has_numerically_minimal_ranks())
True
>>> nb, _ = bvf.t3_orthogonal_representations(
...     t3.TuckerTensorTrain.randn((10, 11, 12), (4, 5, 4), (1, 2, 3, 1)))  # orthogonal, NON-minimal
>>> print(nb.is_orthogonal(), nb.has_minimal_ranks, nb.has_numerically_minimal_ranks())
True False False
Parameters:

atol (float)

Return type:

NDArray