ut3frameweights_to_t3frameweights ================================= .. py:function:: t3toolbox.backend.ufv_conversions.ut3frameweights_to_t3frameweights(weights) .. code-block:: python def ut3frameweights_to_t3frameweights( weights: typ.Tuple[ NDArray, NDArray, NDArray, NDArray, # up, down, left, right supercores, (d,)+C+(size,) typ.Tuple[NDArray, NDArray, NDArray, NDArray], # the four edge masks ], ) -> typ.Union[ typ.Tuple[typ.Tuple[NDArray, ...], ...], # (up, down, left, right) ragged families, if unstacked typ.Tuple, # else a nested tree (shaped like C) of those ]: Convert uniform frame-weight supercores + masks back to ragged ``T3FrameWeights`` families. The frame-weight twin of :py:func:`ut3frame_to_t3frame`. As there, a **stacked** weight returns a *tree* of ragged weights (a varying-rank stack has no single ragged representation), and the real slots are selected *through the masks* rather than by slicing a prefix, since a mask may be gappy after ``+``/``x`` (``docs/uniform_masks_vs_ranks.md``).