def add_pattern_noise_to_slice(pattern_noise, image_slice):
    """
    This transformation adds a fixed pattern of noise to a slice.

    The fixed pattern noise is different for each slice, for each CCD.

    The default values should be zero, because the expected pattern noise is zero.

    This transformation is present to accommodate the flight electronics where *pattern noise* may be present.

    :param pattern_noise: A two dimensional array of floats, representing a fixed pattern     disturbance in a slice.
    :type pattern_noise: :py:class:`numpy.ndarray`
    :param image_slice: The input slice. Units: ADU
    :type image_slice: :py:class:`~httm.data_structures.common.Slice`
    :rtype:  :py:class:`~httm.data_structures.common.Slice`
    """
    assert image_slice.units == 'ADU', 'pixel units must be in ADU'
    assert image_slice.pixels.shape == pattern_noise.shape, 'Image slice and pattern noise must be the same shape; image slice shape was {image_shape} and pattern noise shape was {pattern_noise_shape}'.format(
        image_shape=image_slice.pixels.shape, pattern_noise_shape=
        pattern_noise.shape)
    return image_slice._replace(pixels=image_slice.pixels + pattern_noise)
