ufv_variation_masks_over_stack ============================== .. py:function:: t3toolbox.backend.ufv_masking.ufv_variation_masks_over_stack(frame_masks, frame_stack, out_stack) .. code-block:: python 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 (:py:func:`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.