ufv_variation_masks =================== .. py:function:: t3toolbox.backend.ufv_masking.ufv_variation_masks(frame_masks) .. code-block:: python def ufv_variation_masks( frame_masks: typ.Tuple[NDArray, NDArray, NDArray, NDArray], # (up, down, frame_left, frame_right); HOST bool ) -> typ.Tuple[NDArray, NDArray, NDArray, NDArray]: # (up, down, left[:-1], right[1:]) The variation masks of a frame: its rank masks with the **gauge shift** applied. A variation occupies one TT slot, not a boundary edge, so it takes the frame's left masks without the last and the right masks without the first. The up/down masks pass through. This one line is the whole convention, and it was previously open-coded at four sites; call it rather than slicing by hand. (The frontend twin is ``UT3Variations._variation_masks_of``.)