tv_apply_transpose ================== .. py:function:: t3toolbox.backend.apply.tv_apply_transpose(c, ww, frame, sum_over_probes = False) .. code-block:: python def tv_apply_transpose( c: NDArray, # residual, shape = W + C (one per probe-set, per base point) ww: typ.Sequence[NDArray], # the apply vectors, len=d, elm_shape=W+(Ni,) frame: typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray], typ.Sequence[NDArray], typ.Sequence[NDArray]], # (up, down, left, right) sum_over_probes: bool = False, ) -> typ.Tuple[typ.Sequence[NDArray], typ.Sequence[NDArray]]: # (dU_tildes, dG_tildes) = T3Variations.data Apply the transpose of :py:func:`tv_apply` -- back-project a residual ``c`` into a tangent. The adjoint of the (linear-in-the-variation) all-modes apply. Needs only the frame sweep (xi-hat, mu-hat, nu-hat, eta-hat) and a single-term scatter assembly (it skips the adjoint perturbation sweep that tv_probe_transpose runs). With ``sum_over_probes=False`` the probe stack W becomes the output tangent stack; with ``True`` it is summed (the ``J^T r`` back-projection). .. seealso:: :py:obj:`tv_apply`, :py:obj:`tv_entries_transpose`