def __init__(self, mask, psf):
if psf.shape[<NUM_LIT:0>] % <NUM_LIT:2> == <NUM_LIT:0> or psf.shape[<NUM_LIT:1>] % <NUM_LIT:2> == <NUM_LIT:0>:<EOL><INDENT>raise exc.KernelException("<STR_LIT>")<EOL><DEDENT>self.mask_index_array = np.full(mask.shape, -<NUM_LIT:1>)<EOL>self.pixels_in_mask = int(np.size(mask) - np.sum(mask))<EOL>count = <NUM_LIT:0><EOL>for x in range(mask.shape[<NUM_LIT:0>]):<EOL><INDENT>for y in range(mask.shape[<NUM_LIT:1>]):<EOL><INDENT>if not mask[x, y]:<EOL><INDENT>self.mask_index_array[x, y] = count<EOL>count += <NUM_LIT:1><EOL><DEDENT><DEDENT><DEDENT>self.psf = psf<EOL>self.psf_shape = psf.shape<EOL>self.psf_max_size = self.psf_shape[<NUM_LIT:0>] * self.psf_shape[<NUM_LIT:1>]<EOL>image_index = <NUM_LIT:0><EOL>self.image_frame_indexes = np.zeros((self.pixels_in_mask, self.psf_max_size), dtype='<STR_LIT:int>')<EOL>self.image_frame_psfs = np.zeros((self.pixels_in_mask, self.psf_max_size))<EOL>self.image_frame_lengths = np.zeros((self.pixels_in_mask), dtype='<STR_LIT:int>')<EOL>for x in range(self.mask_index_array.shape[<NUM_LIT:0>]):<EOL><INDENT>for y in range(self.mask_index_array.shape[<NUM_LIT:1>]):<EOL><INDENT>if not mask[x][y]:<EOL><INDENT>image_frame_indexes, image_frame_psfs = self.frame_at_coordinates_jit((x, y), mask,<EOL>self.mask_index_array,<EOL>self.psf[:, :])<EOL>self.image_frame_indexes[image_index, :] = image_frame_indexes<EOL>self.image_frame_psfs[image_index, :] = image_frame_psfs<EOL>self.image_frame_lengths[image_index] = image_frame_indexes[image_frame_indexes >= <NUM_LIT:0>].shape[<NUM_LIT:0>]<EOL>image_index += <NUM_LIT:1><EOL><DEDENT><DEDENT><DEDENT>
Class to create regular frames and blurring frames used to convolve a psf with a 1D regular of non-masked \
values.

Parameters
----------
mask : Mask
    A masks where True eliminates datas.
psf : regular.PSF or ndarray
    An array representing a PSF.