ufv_variation_masks_over_stack#

t3toolbox.backend.ufv_masking.ufv_variation_masks_over_stack(frame_masks, frame_stack, out_stack)#
def ufv_variation_masks_over_stack(
        frame_masks,        # the frame's (up, down, frame_left, frame_right) masks, each (len,)+C+(size,)
        frame_stack,        # C, the frame stack
        out_stack,          # K + C, the stack of the variations the masks are for (K leading, possibly empty)
):                          # -> the 4 variation masks, each (d,)+K+C+(size,), HOST numpy

The frame’s gauge-shifted variation masks (ufv_variation_masks()) broadcast (constant) over an extra leading tangent stack K – the masks a K-stack of tangents at one C-stacked frame carries. Every op that produces variations with a stack wider than the frame’s needs this: the sampling transposes (K_new = the kept probe/tangent stack), the ambient projection of a K-stacked gradient, hence transport of a K-stacked tangent (the last two used to hand a C-stack mask to K+C variations and fail in a reshape, review C3). Host numpy: static structure.