def block_sep1(self, Y):
        """Separate variable into component corresponding to Y1 in Y."""

        Y1 = Y[..., self.cri.M:]

        # If cri.Cd > 1 (multi-channel dictionary), we need to undo the
        # reshape performed in block_cat
        if self.cri.Cd > 1:
            shp = list(Y1.shape)
            shp[self.cri.axisM] = self.cri.dimN
            shp[self.cri.axisC] = self.cri.Cd
            Y1 = Y1.reshape(shp)

        # Axes are swapped here for similar reasons to those
        # motivating swapping in cbpdn.ConvTwoBlockCnstrnt.block_sep0
        Y1 = np.swapaxes(Y1[..., np.newaxis], self.cri.axisM, -1)

        return Y1
def block_sep1 ( self , Y ) : Y1 = Y [ ... , self . cri . M : ] if self . cri . Cd > 1 : shp = list ( Y1 . shape ) shp [ self . cri . axisM ] = self . cri . dimN shp [ self . cri . axisC ] = self . cri . Cd Y1 = Y1 . reshape ( shp ) Y1 = np . swapaxes ( Y1 [ ... , np . newaxis ] , self . cri . axisM , - 1 ) return Y1
Separate variable into component corresponding to Y1 in Y.