tv_apply_transpose#

t3toolbox.backend.apply.tv_apply_transpose(c, ww, frame, sum_over_probes=False)#
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 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).

See also

tv_apply, tv_entries_transpose

Parameters:
  • c (NDArray)

  • ww (t3toolbox.backend.common.typ.Sequence[NDArray])

  • frame (t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]])

  • sum_over_probes (bool)

Return type:

t3toolbox.backend.common.typ.Tuple[t3toolbox.backend.common.typ.Sequence[NDArray], t3toolbox.backend.common.typ.Sequence[NDArray]]