示例#1
0
    def test__fit_figure_of_merit__matches_correct_fit_given_galaxy_profiles(
            self, imaging_data_7x7, mask_function_7x7):
        lens_galaxy = al.Galaxy(
            redshift=0.5,
            light=al.light_profiles.EllipticalSersic(intensity=0.1))

        phase_imaging_7x7 = al.PhaseImaging(
            mask_function=mask_function_7x7,
            galaxies=[lens_galaxy],
            cosmology=cosmo.FLRW,
            phase_name="test_phase",
        )

        analysis = phase_imaging_7x7.make_analysis(data=imaging_data_7x7)
        instance = phase_imaging_7x7.variable.instance_from_unit_vector([])
        fit_figure_of_merit = analysis.fit(instance=instance)

        mask = phase_imaging_7x7.meta_data_fit.mask_function(
            image=imaging_data_7x7.image, sub_size=2)
        lens_data = al.LensImagingData(imaging_data=imaging_data_7x7,
                                       mask=mask)
        tracer = analysis.tracer_for_instance(instance=instance)
        fit = al.LensImagingFit.from_lens_data_and_tracer(lens_data=lens_data,
                                                          tracer=tracer)

        assert fit.likelihood == fit_figure_of_merit
示例#2
0
    def test__fit_figure_of_merit__includes_hyper_image_and_noise__matches_fit(
            self, imaging_data_7x7, mask_function_7x7):
        hyper_image_sky = al.HyperImageSky(sky_scale=1.0)
        hyper_background_noise = al.HyperBackgroundNoise(noise_scale=1.0)

        lens_galaxy = al.Galaxy(
            redshift=0.5,
            light=al.light_profiles.EllipticalSersic(intensity=0.1))

        phase_imaging_7x7 = al.PhaseImaging(
            mask_function=mask_function_7x7,
            galaxies=[lens_galaxy],
            hyper_image_sky=hyper_image_sky,
            hyper_background_noise=hyper_background_noise,
            cosmology=cosmo.FLRW,
            phase_name="test_phase",
        )

        analysis = phase_imaging_7x7.make_analysis(data=imaging_data_7x7)
        instance = phase_imaging_7x7.variable.instance_from_unit_vector([])
        fit_figure_of_merit = analysis.fit(instance=instance)

        mask = phase_imaging_7x7.meta_data_fit.mask_function(
            image=imaging_data_7x7.image, sub_size=2)
        lens_data = al.LensImagingData(imaging_data=imaging_data_7x7,
                                       mask=mask)
        tracer = analysis.tracer_for_instance(instance=instance)
        fit = al.LensImagingFit.from_lens_data_and_tracer(
            lens_data=lens_data,
            tracer=tracer,
            hyper_image_sky=hyper_image_sky,
            hyper_background_noise=hyper_background_noise,
        )

        assert fit.likelihood == fit_figure_of_merit
示例#3
0
    def test__pixel_scale_interpolation_grid_input__grids_include_interpolator_on_blurring_grid(
            self, imaging_data_7x7, sub_mask_7x7):

        lens_imaging_data_7x7 = al.LensImagingData(
            imaging_data=imaging_data_7x7,
            mask=sub_mask_7x7,
            pixel_scale_interpolation_grid=1.0,
        )

        grid = al.Grid.from_mask(mask=sub_mask_7x7)
        new_grid = grid.new_grid_with_interpolator(
            pixel_scale_interpolation_grid=1.0)

        blurring_grid = al.Grid.blurring_grid_from_mask_and_psf_shape(
            mask=sub_mask_7x7, psf_shape=(3, 3))
        new_blurring_grid = blurring_grid.new_grid_with_interpolator(
            pixel_scale_interpolation_grid=1.0)

        assert (lens_imaging_data_7x7.grid == new_grid).all()
        assert (lens_imaging_data_7x7.grid.interpolator.vtx ==
                new_grid.interpolator.vtx).all()
        assert (lens_imaging_data_7x7.grid.interpolator.wts ==
                new_grid.interpolator.wts).all()

        assert (lens_imaging_data_7x7.blurring_grid == new_blurring_grid).all()
        assert (lens_imaging_data_7x7.blurring_grid.interpolator.vtx ==
                new_blurring_grid.interpolator.vtx).all()
        assert (lens_imaging_data_7x7.blurring_grid.interpolator.wts ==
                new_blurring_grid.interpolator.wts).all()
示例#4
0
    def test__default_mask_function(self, phase_imaging_7x7, imaging_data_7x7):
        lens_data = al.LensImagingData(
            imaging_data=imaging_data_7x7,
            mask=phase_imaging_7x7.meta_data_fit.mask_function(
                image=imaging_data_7x7.image, sub_size=1
            ),
        )

        assert len(lens_data._image_1d) == 9
示例#5
0
    def test__lens_data_is_binned_up(self, imaging_data_7x7, mask_7x7_1_pix,
                                     mask_function_7x7_1_pix):
        binned_up_imaging_data = imaging_data_7x7.new_imaging_data_with_binned_up_arrays(
            bin_up_factor=2)

        binned_up_mask = mask_7x7_1_pix.binned_up_mask_from_mask(
            bin_up_factor=2)

        phase_imaging_7x7 = al.PhaseImaging(
            phase_name="phase_imaging_7x7",
            bin_up_factor=2,
            mask_function=mask_function_7x7_1_pix,
        )

        analysis = phase_imaging_7x7.make_analysis(data=imaging_data_7x7)
        assert (analysis.lens_data.image(
            return_in_2d=True,
            return_masked=False) == binned_up_imaging_data.image).all()
        assert (analysis.lens_data.psf == binned_up_imaging_data.psf).all()
        assert (analysis.lens_data.noise_map(
            return_in_2d=True,
            return_masked=False) == binned_up_imaging_data.noise_map).all()

        assert (analysis.lens_data.mask == binned_up_mask).all()

        lens_data = al.LensImagingData(imaging_data=imaging_data_7x7,
                                       mask=mask_7x7_1_pix)

        binned_up_lens_data = lens_data.new_lens_imaging_data_with_binned_up_imaging_data_and_mask(
            bin_up_factor=2)

        assert (analysis.lens_data.image(
            return_in_2d=True) == binned_up_lens_data.image(
                return_in_2d=True)).all()
        assert (analysis.lens_data.psf == binned_up_lens_data.psf).all()
        assert (analysis.lens_data.noise_map(
            return_in_2d=True) == binned_up_lens_data.noise_map(
                return_in_2d=True)).all()

        assert (analysis.lens_data.mask == binned_up_lens_data.mask).all()

        assert (analysis.lens_data._image_1d == binned_up_lens_data._image_1d
                ).all()
        assert (analysis.lens_data._noise_map_1d ==
                binned_up_lens_data._noise_map_1d).all()
示例#6
0
    def test__different_imaging_data_without_mock_objects__customize_constructor_inputs(
            self):

        psf = al.PSF(np.ones((7, 7)), 1)
        imaging_data = al.ImagingData(
            np.ones((19, 19)),
            pixel_scale=3.0,
            psf=psf,
            noise_map=2.0 * np.ones((19, 19)),
        )
        mask = al.Mask.unmasked_from_shape_pixel_scale_and_sub_size(
            shape=(19, 19), pixel_scale=1.0, invert=True, sub_size=8)
        mask[9, 9] = False

        lens_imaging_data_7x7 = al.LensImagingData(
            imaging_data=imaging_data,
            mask=mask,
            trimmed_psf_shape=(7, 7),
            positions=[np.array([[1.0, 1.0]])],
            positions_threshold=1.0,
        )

        assert (lens_imaging_data_7x7.image(return_in_2d=True,
                                            return_masked=False) == np.ones(
                                                (19, 19))).all()
        assert (lens_imaging_data_7x7.noise_map(return_in_2d=True,
                                                return_masked=False) == 2.0 *
                np.ones((19, 19))).all()
        assert (lens_imaging_data_7x7.psf == np.ones((7, 7))).all()

        assert lens_imaging_data_7x7.sub_size == 8
        assert lens_imaging_data_7x7.convolver.psf.shape == (7, 7)
        assert (lens_imaging_data_7x7.positions[0] == np.array([[1.0,
                                                                 1.0]])).all()
        assert lens_imaging_data_7x7.positions_threshold == 1.0

        assert lens_imaging_data_7x7.trimmed_psf_shape == (7, 7)
示例#7
0
def make_lens_imaging_data_7x7(imaging_data_7x7, sub_mask_7x7):
    return al.LensImagingData(imaging_data=imaging_data_7x7, mask=sub_mask_7x7)
示例#8
0
def make_lens_imaging_data_6x6(imaging_data_6x6, mask_6x6):
    return al.LensImagingData(imaging_data=imaging_data_6x6, mask=mask_6x6)
示例#9
0
def test__simulate_lensed_source_and_fit__include_psf_blurring__chi_squared_is_0__noise_normalization_correct(
):

    psf = al.PSF.from_gaussian(shape=(3, 3), pixel_scale=0.2, sigma=0.75)

    grid = al.Grid.from_shape_pixel_scale_and_sub_size(shape=(11, 11),
                                                       pixel_scale=0.2,
                                                       sub_size=1)

    lens_galaxy = al.Galaxy(
        redshift=0.5,
        light=al.light_profiles.EllipticalSersic(centre=(0.1, 0.1),
                                                 intensity=0.1),
        mass=al.mass_profiles.EllipticalIsothermal(centre=(0.1, 0.1),
                                                   einstein_radius=1.8),
    )
    source_galaxy = al.Galaxy(
        redshift=1.0,
        light=al.light_profiles.EllipticalExponential(centre=(0.1, 0.1),
                                                      intensity=0.5),
    )
    tracer = al.Tracer.from_galaxies(galaxies=[lens_galaxy, source_galaxy])

    imaging_simulated = al.SimulatedImagingData.from_image_and_exposure_arrays(
        image=tracer.padded_profile_image_2d_from_grid_and_psf_shape(
            grid=grid, psf_shape=psf.shape),
        pixel_scale=0.2,
        exposure_time=300.0,
        psf=psf,
        background_sky_level=0.0,
        add_noise=False,
    )
    imaging_simulated.noise_map = np.ones(imaging_simulated.image.shape)

    path = "{}/data_temp/simulate_and_fit".format(
        os.path.dirname(os.path.realpath(
            __file__)))  # Setup path so we can output the simulated image.

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

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

    array_util.numpy_array_2d_to_fits(array_2d=imaging_simulated.image,
                                      file_path=path + "/image.fits")
    array_util.numpy_array_2d_to_fits(array_2d=imaging_simulated.noise_map,
                                      file_path=path + "/noise_map.fits")
    array_util.numpy_array_2d_to_fits(array_2d=psf,
                                      file_path=path + "/psf.fits")

    imaging_data = al.load_imaging_data_from_fits(
        image_path=path + "/image.fits",
        noise_map_path=path + "/noise_map.fits",
        psf_path=path + "/psf.fits",
        pixel_scale=0.2,
    )

    mask = al.Mask.circular(shape=imaging_data.image.shape,
                            pixel_scale=0.2,
                            sub_size=1,
                            radius_arcsec=0.8)

    lens_data = al.LensImagingData(imaging_data=imaging_data, mask=mask)

    tracer = al.Tracer.from_galaxies(galaxies=[lens_galaxy, source_galaxy])

    fitter = al.LensImagingFit.from_lens_data_and_tracer(lens_data=lens_data,
                                                         tracer=tracer)

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

    path = "{}/data_temp".format(os.path.dirname(os.path.realpath(
        __file__)))  # Setup path so we can output the simulated image.

    if os.path.exists(path) == True:
        shutil.rmtree(path)