예제 #1
0
    def test__via_plane_from__same_as_plane_image(self):

        psf = ag.Kernel2D.from_gaussian(
            shape_native=(7, 7), sigma=0.5, pixel_scales=0.05
        )

        grid = ag.Grid2D.uniform(shape_native=(20, 20), pixel_scales=0.05, sub_size=1)

        galaxy_0 = ag.Galaxy(redshift=0.5, light=ag.lp.EllSersic(intensity=1.0))

        galaxy_1 = ag.Galaxy(redshift=1.0, light=ag.lp.EllSersic(intensity=0.3))

        plane = ag.Plane(redshift=0.75, galaxies=[galaxy_0, galaxy_1])

        simulator = ag.SimulatorImaging(
            psf=psf,
            exposure_time=10000.0,
            background_sky_level=100.0,
            add_poisson_noise=False,
        )

        imaging = simulator.via_plane_from(plane=plane, grid=grid)

        imaging_via_image = simulator.via_image_from(
            image=plane.image_2d_from(grid=grid)
        )

        assert imaging.shape_native == (20, 20)
        assert imaging.image.native[0, 0] != imaging_via_image.image.native[0, 0]
        assert imaging.image.native[10, 10] == imaging_via_image.image.native[10, 10]
        assert (imaging.psf == imaging_via_image.psf).all()
        assert (imaging.noise_map == imaging_via_image.noise_map).all()
예제 #2
0
def test__signal_to_noise_via_simulator_correct():

    background_sky_level = 10.0
    exposure_time = 300.0

    grid = ag.Grid2D.uniform(shape_native=(3, 3), pixel_scales=1.0)

    sersic = ag.lp_snr.EllSersic(signal_to_noise_ratio=10.0)

    sersic.set_intensity_from(
        grid=grid,
        exposure_time=exposure_time,
        background_sky_level=background_sky_level,
    )

    psf = ag.Kernel2D.manual_native(array=[[1.0]], pixel_scales=0.2)

    simulator = ag.SimulatorImaging(
        psf=psf,
        exposure_time=exposure_time,
        noise_seed=1,
        background_sky_level=background_sky_level,
    )

    imaging = simulator.via_galaxies_from(
        grid=grid, galaxies=[ag.Galaxy(redshift=0.5, light=sersic)])

    assert 9.0 < imaging.signal_to_noise_max < 11.0
예제 #3
0
    def test__simulate_imaging_from_galaxy__source_galaxy__compare_to_imaging(
            self):

        galaxy_0 = ag.Galaxy(
            redshift=0.5,
            mass=ag.mp.EllIsothermal(centre=(0.0, 0.0),
                                     einstein_radius=1.6,
                                     elliptical_comps=(0.17647, 0.0)),
        )

        galaxy_1 = ag.Galaxy(
            redshift=1.0,
            light=ag.lp.EllSersic(
                centre=(0.1, 0.1),
                elliptical_comps=(0.096225, -0.055555),
                intensity=0.3,
                effective_radius=1.0,
                sersic_index=2.5,
            ),
        )

        grid = ag.Grid2D.uniform(shape_native=(11, 11),
                                 pixel_scales=0.2,
                                 sub_size=1)

        psf = ag.Kernel2D.no_blur(pixel_scales=0.2)

        simulator = ag.SimulatorImaging(
            psf=psf,
            exposure_time=10000.0,
            background_sky_level=100.0,
            add_poisson_noise=True,
            noise_seed=1,
        )

        imaging = simulator.from_galaxies_and_grid(
            galaxies=[galaxy_0, galaxy_1], grid=grid)

        plane = ag.Plane(redshift=0.75, galaxies=[galaxy_0, galaxy_1])

        imaging_via_image = simulator.from_image(
            image=plane.image_2d_from_grid(grid=grid))

        assert imaging.shape_native == (11, 11)
        assert (imaging.image == imaging_via_image.image).all()
        assert (imaging.psf == imaging_via_image.psf).all()
        assert (imaging.noise_map == imaging_via_image.noise_map).all()
예제 #4
0
def test__simulate_imaging_data_and_fit__include_psf_blurring__chi_squared_is_0__noise_normalization_correct(
):
    grid = ag.Grid2D.uniform(shape_native=(11, 11),
                             pixel_scales=0.2,
                             sub_size=1)

    psf = ag.Kernel2D.from_gaussian(shape_native=(3, 3),
                                    pixel_scales=0.2,
                                    sigma=0.75,
                                    normalize=True)

    lens_galaxy = ag.Galaxy(
        redshift=0.5,
        light=ag.lp.EllSersic(centre=(0.1, 0.1), intensity=0.1),
        mass=ag.mp.EllIsothermal(centre=(0.1, 0.1), einstein_radius=1.8),
    )
    source_galaxy = ag.Galaxy(redshift=1.0,
                              light=ag.lp.EllExponential(centre=(0.1, 0.1),
                                                         intensity=0.5))
    plane = ag.Plane(galaxies=[lens_galaxy, source_galaxy])

    simulator = ag.SimulatorImaging(exposure_time=300.0,
                                    psf=psf,
                                    add_poisson_noise=False)

    imaging = simulator.from_plane_and_grid(plane=plane, grid=grid)
    imaging.noise_map = ag.Array2D.ones(
        shape_native=imaging.image.shape_native, pixel_scales=0.2)

    file_path = path.join(
        "{}".format(path.dirname(path.realpath(__file__))),
        "data_temp",
        "simulate_and_fit",
    )

    try:
        shutil.rmtree(file_path)
    except FileNotFoundError:
        pass

    if path.exists(file_path) is False:
        os.makedirs(file_path)

    imaging.output_to_fits(
        image_path=path.join(file_path, "image.fits"),
        noise_map_path=path.join(file_path, "noise_map.fits"),
        psf_path=path.join(file_path, "psf.fits"),
    )

    imaging = ag.Imaging.from_fits(
        image_path=path.join(file_path, "image.fits"),
        noise_map_path=path.join(file_path, "noise_map.fits"),
        psf_path=path.join(file_path, "psf.fits"),
        pixel_scales=0.2,
    )

    mask = ag.Mask2D.circular(
        shape_native=imaging.image.shape_native,
        pixel_scales=0.2,
        sub_size=1,
        radius=0.8,
    )

    masked_imaging = imaging.apply_mask(mask=mask)
    masked_imaging = masked_imaging.apply_settings(
        settings=ag.SettingsImaging(grid_class=ag.Grid2D, sub_size=1))

    plane = ag.Plane(galaxies=[lens_galaxy, source_galaxy])

    fit = ag.FitImaging(imaging=masked_imaging, plane=plane)

    assert fit.chi_squared == pytest.approx(0.0, 1e-4)

    file_path = path.join("{}".format(path.dirname(path.realpath(__file__))),
                          "data_temp")

    if path.exists(file_path) is True:
        shutil.rmtree(file_path)