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)
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)
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()
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)
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)
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()