tv_apply_jacobian_from_sweep ============================ .. py:function:: t3toolbox.backend.apply.tv_apply_jacobian_from_sweep(variation, ww, frame, frame_sweep) .. code-block:: python def tv_apply_jacobian_from_sweep( variation: typ.Tuple[ typ.Sequence[NDArray], # var_tucker_cores. len=d, elm_shape=K+C+(nOi,Ni) typ.Sequence[NDArray], # var_tt_cores. len=d, elm_shape=K+C+(rLi,nUi,rRi) ], ww: typ.Sequence[NDArray], # apply vectors, len=d, elm_shape=W+(Ni,) -- for the variation's dxis frame: typ.Tuple[ typ.Sequence[NDArray], # up_tucker_cores U. len=d (unused; for a uniform call signature) typ.Sequence[NDArray], # down_tt_cores O. len=d typ.Sequence[NDArray], # left_tt_cores P. len=d (unused) typ.Sequence[NDArray], # right_tt_cores Q. len=d ], # frame order = T3Frame.data = (up, down, left, right) frame_sweep: typ.Tuple[ typ.Sequence[NDArray], # xis typ.Sequence[NDArray], # mus ], # = tv_precompute_apply_frame_sweep(frame, ww) (lean) ) -> NDArray: # the scalar apply(v, ww), one per stack element; shape = W + K + C Forward all-modes apply of a tangent vector reusing a precomputed frame sweep -- the bare ``𝒥`` with the frame edge variables injected. Equivalent to :py:func:`tv_apply`, but it takes the lean ``(xis, mus)`` from ``frame_sweep`` instead of recomputing them (the reuse hook for ``fitting.py``). Only the variation-dependent ``dxis`` is computed here. No gauge projector ``Π``. .. seealso:: :py:obj:`tv_precompute_apply_frame_sweep`, :py:obj:`tv_apply`