예제 #1
0
    def test__from_image__psf_and_noise__noise_added_to_blurred_image(self):
        image = aa.Array2D.manual_native(
            array=np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0,
                                                               0.0]]),
            pixel_scales=1.0,
        )

        psf = aa.Kernel2D.manual_native(
            array=np.array([[0.0, 1.0, 0.0], [1.0, 2.0, 1.0], [0.0, 1.0,
                                                               0.0]]),
            pixel_scales=1.0,
        )

        simulator = aa.SimulatorImaging(
            exposure_time=20.0,
            psf=psf,
            add_poisson_noise=True,
            noise_seed=1,
            normalize_psf=False,
        )

        imaging = simulator.from_image(image=image)

        assert imaging.image.native == pytest.approx(
            np.array([[0.0, 1.05, 0.0], [1.3, 2.35, 1.05], [0.0, 1.05, 0.0]]),
            1e-2)
예제 #2
0
    def test__from_image__all_features_off(self):

        image = aa.Array2D.manual_native(
            array=np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0,
                                                               0.0]]),
            pixel_scales=0.1,
        )

        simulator = aa.SimulatorImaging(exposure_time=1.0,
                                        add_poisson_noise=False)

        imaging = simulator.from_image(image=image)

        assert (imaging.image.native == np.array([[0.0, 0.0, 0.0],
                                                  [0.0, 1.0, 0.0],
                                                  [0.0, 0.0, 0.0]])).all()
        assert imaging.pixel_scales == (0.1, 0.1)
예제 #3
0
    def test__from_image__noise_off___noise_map_is_noise_value(self):

        image = aa.Array2D.manual_native(
            array=np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0,
                                                               0.0]]),
            pixel_scales=1.0,
        )

        simulator = aa.SimulatorImaging(
            exposure_time=1.0,
            add_poisson_noise=False,
            noise_if_add_noise_false=0.2,
            noise_seed=1,
        )

        imaging = simulator.from_image(image=image)

        assert (imaging.image.native == np.array([[0.0, 0.0, 0.0],
                                                  [0.0, 1.0, 0.0],
                                                  [0.0, 0.0, 0.0]])).all()
        assert (imaging.noise_map.native == 0.2 * np.ones((3, 3))).all()
예제 #4
0
    def test__from_image__background_sky_on__noise_on_so_background_adds_noise_to_image(
        self, ):

        image = aa.Array2D.manual_native(
            array=np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0,
                                                               0.0]]),
            pixel_scales=1.0,
        )

        simulator = aa.SimulatorImaging(
            exposure_time=1.0,
            background_sky_level=16.0,
            add_poisson_noise=True,
            noise_seed=1,
        )

        imaging = simulator.from_image(image=image)

        assert (imaging.image.native == np.array([[1.0, 5.0, 4.0],
                                                  [1.0, 2.0, 1.0],
                                                  [5.0, 2.0, 7.0]])).all()

        assert imaging.noise_map.native[0, 0] == pytest.approx(4.12310, 1.0e-4)
예제 #5
0
    def test__setup_with_noise(self):

        image = aa.Array2D.manual_native(
            array=np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0,
                                                               0.0]]),
            pixel_scales=1.0,
        )

        simulator = aa.SimulatorImaging(exposure_time=20.0,
                                        add_poisson_noise=True,
                                        noise_seed=1)

        imaging = simulator.from_image(image=image)

        assert imaging.image.native == pytest.approx(
            np.array([[0.0, 0.0, 0.0], [0.0, 1.05, 0.0], [0.0, 0.0, 0.0]]),
            1e-2)

        # Because of the value is 1.05, the estimated Poisson noise_map_1d is:
        # sqrt((1.05 * 20))/20 = 0.2291

        assert imaging.noise_map.native == pytest.approx(
            np.array([[0.0, 0.0, 0.0], [0.0, 0.2291, 0.0], [0.0, 0.0, 0.0]]),
            1e-2)
예제 #6
0
    def test__from_image__psf_blurs_image_with_edge_trimming(self):

        image = aa.Array2D.manual_native(
            array=np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0], [0.0, 0.0,
                                                               0.0]]),
            pixel_scales=1.0,
        )

        psf = aa.Kernel2D.manual_native(
            array=np.array([[0.0, 1.0, 0.0], [1.0, 2.0, 1.0], [0.0, 1.0,
                                                               0.0]]),
            pixel_scales=1.0,
        )

        simulator = aa.SimulatorImaging(exposure_time=1.0,
                                        psf=psf,
                                        add_poisson_noise=False,
                                        normalize_psf=False)

        imaging = simulator.from_image(image=image)

        assert (imaging.image.native == np.array([[0.0, 1.0, 0.0],
                                                  [1.0, 2.0, 1.0],
                                                  [0.0, 1.0, 0.0]])).all()