t3toolbox.basis_coordinates_format.T3Coordinates ================================================ .. py:class:: t3toolbox.basis_coordinates_format.T3Coordinates Tuple containing coordinate cores for basis-coordinate representations of TuckerTensorTrains. *Components* - tucker_coordinates = (V0, ..., V(d-1)), elm_shape=(nDi, Ni) - tt_coordinates = (H0, ..., H(d-1)), elm_shape=(rLi, nUi, rRi) The coordinates should fit in the "holes" of a T3Basis. .. seealso:: :py:obj:`T3Basis` .. rubric:: Examples >>> import numpy as np >>> import t3toolbox.basis_coordinates_format as bcf >>> ss = (2,3) # stack shape >>> tucker_cores = (np.ones(ss+(10, 14)), np.ones(ss+(11, 15)), np.ones(ss+(12, 16))) >>> left_tt_cores = (np.ones(ss+(1, 10, 2)), np.ones(ss+(2, 11, 3)), np.ones(ss+(3,12,5))) >>> right_tt_cores = (np.ones(ss+(2, 10, 4)), np.ones(ss+(4, 11, 5)), np.ones(ss+(5, 12, 1))) >>> outer_tt_cores = (np.ones(ss+(1, 9, 4)), np.ones(ss+(2, 8, 5)), np.ones(ss+(3, 7, 1))) >>> base = bcf.T3Basis(tucker_cores, left_tt_cores, right_tt_cores, outer_tt_cores) >>> print(base.structure) ((14, 15, 16), (10, 11, 12), (1, 2, 3, 5), (2, 4, 5, 1), (9, 8, 7), (2, 3)) >>> tucker_coords = tuple([np.ones(ss + B_shape) for B_shape in base.coordinate_shapes[0]]) >>> tt_coords = tuple([np.ones(ss + G_shape) for G_shape in base.coordinate_shapes[1]]) >>> coords = bcf.T3Coordinates(tucker_coords, tt_coords) # variation that fits with base >>> print(coords.structure) # same as base, except first right tt rank and last left tt rank, which are None ((14, 15, 16), (9, 8, 7), (1, 2, 3, None), (None, 4, 5, 1), (10, 11, 12), (2, 3)) .. py:attribute:: tucker_coordinates :type: t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis] .. py:attribute:: tt_coordinates :type: t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis] .. py:method:: d() -> int .. py:method:: shape() -> t3toolbox.backend.common.typ.Tuple[int, Ellipsis] .. py:method:: up_tucker_ranks() -> t3toolbox.backend.common.typ.Tuple[int, Ellipsis] .. py:method:: down_tucker_ranks() -> t3toolbox.backend.common.typ.Tuple[int, Ellipsis] .. py:method:: left_ranks() -> t3toolbox.backend.common.typ.Tuple[int, Ellipsis] .. py:method:: right_ranks() -> t3toolbox.backend.common.typ.Tuple[int, Ellipsis] .. py:method:: stack_shape() -> t3toolbox.backend.common.typ.Tuple[int, Ellipsis] .. py:method:: structure() -> t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis], t3toolbox.backend.common.typ.Tuple[int, Ellipsis]] .. py:method:: coordinate_shapes() -> t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], Ellipsis], t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[int, Ellipsis], Ellipsis]] T3Coordinates shapes that fit with this T3Basis. Shapes of the "holes" in the following tensor diagrams:: 1 -- L0 -- ( ) -- R2 -- R3 -- 1 | | | | U0 U1 U2 U3 | | | | 1 -- L0 -- L1 -- O2 -- R3 -- 1 | | | | U0 U1 ( ) U3 | | | | .. py:method:: data() -> t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis], t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.NDArray, Ellipsis]] .. py:method:: validate() -> None Check rank and shape consistency of Tucker tensor train coordinates (`T3Coordinates`). :param self: :type self: T3Coordinates :raises ValueError: Error raised if the cores of the T3Coordinates have inconsistent shapes. .. seealso:: :py:obj:`T3Basis`, :py:obj:`T3Coordinates` .. py:method:: __post_init__()