Exemplo n.º 1
0
        def test___manual_image_and_psf(self, lens_data_stack_manual):

            g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=1.0))
            g1 = g.Galaxy(mass_profile=mp.SphericalIsothermal(
                einstein_radius=1.0))

            tracer = ray_tracing_stack.TracerImageSourcePlanesStack(
                lens_galaxies=[g0, g1],
                source_galaxies=[g0],
                image_plane_grid_stacks=lens_data_stack_manual.grid_stacks)

            padded_tracer = ray_tracing_stack.TracerImageSourcePlanesStack(
                lens_galaxies=[g0, g1],
                source_galaxies=[g0],
                image_plane_grid_stacks=lens_data_stack_manual.
                padded_grid_stacks)

            fit = lens_fit_stack.fit_lens_image_stack_with_tracer(
                lens_data_stack=lens_data_stack_manual,
                tracer=tracer,
                padded_tracer=padded_tracer)

            assert lens_data_stack_manual.noise_maps[0] == pytest.approx(
                fit.noise_maps[0], 1e-4)
            assert lens_data_stack_manual.noise_maps[1] == pytest.approx(
                fit.noise_maps[1], 1e-4)

            model_image_1d_0 = lens_fit_util.blurred_image_1d_from_1d_unblurred_and_blurring_images(
                unblurred_image_1d=tracer.image_plane_images_1d[0],
                blurring_image_1d=tracer.image_plane_blurring_images_1d[0],
                convolver=lens_data_stack_manual.convolvers_image[0])

            model_image_1d_1 = lens_fit_util.blurred_image_1d_from_1d_unblurred_and_blurring_images(
                unblurred_image_1d=tracer.image_plane_images_1d[1],
                blurring_image_1d=tracer.image_plane_blurring_images_1d[1],
                convolver=lens_data_stack_manual.convolvers_image[1])

            model_image_0 = lens_data_stack_manual.map_to_scaled_arrays[0](
                array_1d=model_image_1d_0)
            model_image_1 = lens_data_stack_manual.map_to_scaled_arrays[1](
                array_1d=model_image_1d_1)

            assert model_image_0 == pytest.approx(fit.model_images[0], 1e-4)
            assert model_image_1 == pytest.approx(fit.model_images[1], 1e-4)

            residual_map_0 = fit_util.residual_map_from_data_mask_and_model_data(
                data=lens_data_stack_manual.images[0],
                mask=lens_data_stack_manual.masks[0],
                model_data=model_image_0)
            residual_map_1 = fit_util.residual_map_from_data_mask_and_model_data(
                data=lens_data_stack_manual.images[1],
                mask=lens_data_stack_manual.masks[1],
                model_data=model_image_1)

            assert residual_map_0 == pytest.approx(fit.residual_maps[0], 1e-4)
            assert residual_map_1 == pytest.approx(fit.residual_maps[1], 1e-4)

            chi_squared_map_0 = fit_util.chi_squared_map_from_residual_map_noise_map_and_mask(
                residual_map=residual_map_0,
                mask=lens_data_stack_manual.masks[0],
                noise_map=lens_data_stack_manual.noise_maps[0])
            chi_squared_map_1 = fit_util.chi_squared_map_from_residual_map_noise_map_and_mask(
                residual_map=residual_map_1,
                mask=lens_data_stack_manual.masks[1],
                noise_map=lens_data_stack_manual.noise_maps[1])

            assert chi_squared_map_0 == pytest.approx(fit.chi_squared_maps[0],
                                                      1e-4)
            assert chi_squared_map_1 == pytest.approx(fit.chi_squared_maps[1],
                                                      1e-4)

            chi_squared_0 = fit_util.chi_squared_from_chi_squared_map_and_mask(
                chi_squared_map=chi_squared_map_0,
                mask=lens_data_stack_manual.masks[0])
            noise_normalization_0 = fit_util.noise_normalization_from_noise_map_and_mask(
                noise_map=lens_data_stack_manual.noise_maps[0],
                mask=lens_data_stack_manual.masks[0])
            likelihood_0 = fit_util.likelihood_from_chi_squared_and_noise_normalization(
                chi_squared=chi_squared_0,
                noise_normalization=noise_normalization_0)

            chi_squared_1 = fit_util.chi_squared_from_chi_squared_map_and_mask(
                chi_squared_map=chi_squared_map_1,
                mask=lens_data_stack_manual.masks[1])
            noise_normalization_1 = fit_util.noise_normalization_from_noise_map_and_mask(
                noise_map=lens_data_stack_manual.noise_maps[1],
                mask=lens_data_stack_manual.masks[1])
            likelihood_1 = fit_util.likelihood_from_chi_squared_and_noise_normalization(
                chi_squared=chi_squared_1,
                noise_normalization=noise_normalization_1)

            assert fit.chi_squareds == [chi_squared_0, chi_squared_1]
            assert fit.noise_normalizations == [
                noise_normalization_0, noise_normalization_1
            ]
            assert fit.likelihoods == [likelihood_0, likelihood_1]

            assert likelihood_0 + likelihood_1 == pytest.approx(
                fit.likelihood, 1e-4)
            assert likelihood_0 + likelihood_1 == fit.figure_of_merit
            blurred_image_of_planes_0 = lens_fit_util.blurred_image_of_planes_from_1d_images_and_convolver(
                total_planes=tracer.total_planes,
                image_plane_image_1d_of_planes=tracer.
                image_plane_images_1d_of_planes[0],
                image_plane_blurring_image_1d_of_planes=tracer.
                image_plane_blurring_images_1d_of_planes[0],
                convolver=lens_data_stack_manual.convolvers_image[0],
                map_to_scaled_array=lens_data_stack_manual.
                map_to_scaled_arrays[0])

            blurred_image_of_planes_1 = lens_fit_util.blurred_image_of_planes_from_1d_images_and_convolver(
                total_planes=tracer.total_planes,
                image_plane_image_1d_of_planes=tracer.
                image_plane_images_1d_of_planes[1],
                image_plane_blurring_image_1d_of_planes=tracer.
                image_plane_blurring_images_1d_of_planes[1],
                convolver=lens_data_stack_manual.convolvers_image[1],
                map_to_scaled_array=lens_data_stack_manual.
                map_to_scaled_arrays[1])

            assert (blurred_image_of_planes_0[0] ==
                    fit.model_images_of_planes[0][0]).all()
            assert (blurred_image_of_planes_0[1] ==
                    fit.model_images_of_planes[0][1]).all()
            assert (blurred_image_of_planes_1[0] ==
                    fit.model_images_of_planes[1][0]).all()
            assert (blurred_image_of_planes_1[1] ==
                    fit.model_images_of_planes[1][1]).all()

            unmasked_blurred_image_0 = \
                lens_fit_util.unmasked_blurred_image_from_padded_grid_stack_psf_and_unmasked_image(
                padded_grid_stack=lens_data_stack_manual.padded_grid_stacks[0], psf=lens_data_stack_manual.psfs[0],
                    unmasked_image_1d=padded_tracer.image_plane_images_1d[0])

            unmasked_blurred_image_1 = \
                lens_fit_util.unmasked_blurred_image_from_padded_grid_stack_psf_and_unmasked_image(
                padded_grid_stack=lens_data_stack_manual.padded_grid_stacks[1], psf=lens_data_stack_manual.psfs[1],
                    unmasked_image_1d=padded_tracer.image_plane_images_1d[1])

            assert (unmasked_blurred_image_0 == fit.unmasked_model_images[0]
                    ).all()
            assert (unmasked_blurred_image_1 == fit.unmasked_model_images[1]
                    ).all()

            unmasked_blurred_image_of_galaxies_i0 = \
                lens_fit_util.unmasked_blurred_image_of_galaxies_from_psf_and_unmasked_1d_galaxy_images(
                    galaxies=padded_tracer.image_plane.galaxies,
                    image_plane_image_1d_of_galaxies=padded_tracer.image_plane.image_plane_images_1d_of_galaxies[0],
                    padded_grid_stack=lens_data_stack_manual.padded_grid_stacks[0], psf=lens_data_stack_manual.psfs[0])

            unmasked_blurred_image_of_galaxies_s0 = \
                lens_fit_util.unmasked_blurred_image_of_galaxies_from_psf_and_unmasked_1d_galaxy_images(
                    galaxies=padded_tracer.source_plane.galaxies,
                    image_plane_image_1d_of_galaxies=padded_tracer.source_plane.image_plane_images_1d_of_galaxies[0],
                    padded_grid_stack=lens_data_stack_manual.padded_grid_stacks[0], psf=lens_data_stack_manual.psfs[0])

            unmasked_blurred_image_of_galaxies_i1 = \
                lens_fit_util.unmasked_blurred_image_of_galaxies_from_psf_and_unmasked_1d_galaxy_images(
                    galaxies=padded_tracer.image_plane.galaxies,
                    image_plane_image_1d_of_galaxies=padded_tracer.image_plane.image_plane_images_1d_of_galaxies[0],
                    padded_grid_stack=lens_data_stack_manual.padded_grid_stacks[1], psf=lens_data_stack_manual.psfs[1])

            unmasked_blurred_image_of_galaxies_s1 = \
                lens_fit_util.unmasked_blurred_image_of_galaxies_from_psf_and_unmasked_1d_galaxy_images(
                    galaxies=padded_tracer.source_plane.galaxies,
                    image_plane_image_1d_of_galaxies=padded_tracer.source_plane.image_plane_images_1d_of_galaxies[0],
                    padded_grid_stack=lens_data_stack_manual.padded_grid_stacks[1], psf=lens_data_stack_manual.psfs[1])

            assert (
                unmasked_blurred_image_of_galaxies_i0[0] == fit.
                unmasked_model_images_of_planes_and_galaxies[0][0][0]).all()
            assert (
                unmasked_blurred_image_of_galaxies_s0[0] == fit.
                unmasked_model_images_of_planes_and_galaxies[0][1][0]).all()
            assert (
                unmasked_blurred_image_of_galaxies_i1[0] == fit.
                unmasked_model_images_of_planes_and_galaxies[1][0][0]).all()
            assert (
                unmasked_blurred_image_of_galaxies_s1[0] == fit.
                unmasked_model_images_of_planes_and_galaxies[1][1][0]).all()
Exemplo n.º 2
0
    def test___same_as_above__image_and_source_plane(self):

        mask = msk.Mask(array=np.array([[True, True,
                                         True], [True, False, True],
                                        [True, True, True]]),
                        pixel_scale=1.0)

        padded_grid_stack = grids.GridStack.padded_grid_stack_from_mask_sub_grid_size_and_psf_shape(
            mask=mask, sub_grid_size=1, psf_shape=(3, 3))

        psf_0 = im.PSF(array=(np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0],
                                        [0.0, 0.0, 0.0]])),
                       pixel_scale=1.0)

        psf_1 = im.PSF(array=(np.array([[0.0, 3.0, 0.0], [0.0, 1.0, 2.0],
                                        [0.0, 0.0, 0.0]])),
                       pixel_scale=1.0)

        g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.1))
        g1 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.2))
        g2 = g.Galaxy(mass_profile=mp.SphericalIsothermal(einstein_radius=1.0))

        tracer = ray_tracing_stack.TracerImageSourcePlanesStack(
            lens_galaxies=[g0, g1, g2],
            source_galaxies=[g0, g1],
            image_plane_grid_stacks=[padded_grid_stack, padded_grid_stack])

        manual_blurred_image_i00 = tracer.image_plane.image_plane_images_1d_of_galaxies[
            0][0]
        manual_blurred_image_i00 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_i00)
        manual_blurred_image_i00 = psf_0.convolve(
            array=manual_blurred_image_i00)

        manual_blurred_image_i01 = tracer.image_plane.image_plane_images_1d_of_galaxies[
            0][1]
        manual_blurred_image_i01 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_i01)
        manual_blurred_image_i01 = psf_0.convolve(
            array=manual_blurred_image_i01)

        manual_blurred_image_i10 = tracer.image_plane.image_plane_images_1d_of_galaxies[
            1][0]
        manual_blurred_image_i10 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_i10)
        manual_blurred_image_i10 = psf_1.convolve(
            array=manual_blurred_image_i10)

        manual_blurred_image_i11 = tracer.image_plane.image_plane_images_1d_of_galaxies[
            1][1]
        manual_blurred_image_i11 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_i11)
        manual_blurred_image_i11 = psf_1.convolve(
            array=manual_blurred_image_i11)

        manual_blurred_image_s00 = tracer.source_plane.image_plane_images_1d_of_galaxies[
            0][0]
        manual_blurred_image_s00 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_s00)
        manual_blurred_image_s00 = psf_0.convolve(
            array=manual_blurred_image_s00)

        manual_blurred_image_s01 = tracer.source_plane.image_plane_images_1d_of_galaxies[
            0][1]
        manual_blurred_image_s01 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_s01)
        manual_blurred_image_s01 = psf_0.convolve(
            array=manual_blurred_image_s01)

        manual_blurred_image_s10 = tracer.source_plane.image_plane_images_1d_of_galaxies[
            1][0]
        manual_blurred_image_s10 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_s10)
        manual_blurred_image_s10 = psf_1.convolve(
            array=manual_blurred_image_s10)

        manual_blurred_image_s11 = tracer.source_plane.image_plane_images_1d_of_galaxies[
            1][1]
        manual_blurred_image_s11 = padded_grid_stack.regular.map_to_2d_keep_padded(
            padded_array_1d=manual_blurred_image_s11)
        manual_blurred_image_s11 = psf_1.convolve(
            array=manual_blurred_image_s11)

        unmasked_blurred_image_of_datas_planes_and_galaxies = \
            stack_util.unmasked_blurred_image_of_datas_planes_and_galaxies_from_padded_grid_stacks_and_psf(
                planes=tracer.planes, padded_grid_stacks=[padded_grid_stack, padded_grid_stack], psfs=[psf_0, psf_1])

        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[0][0][0] ==
                manual_blurred_image_i00[1:4, 1:4]).all()
        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[0][0][1] ==
                manual_blurred_image_i01[1:4, 1:4]).all()
        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[1][0][0] ==
                manual_blurred_image_i10[1:4, 1:4]).all()
        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[1][0][1] ==
                manual_blurred_image_i11[1:4, 1:4]).all()
        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[0][1][0] ==
                manual_blurred_image_s00[1:4, 1:4]).all()
        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[0][1][1] ==
                manual_blurred_image_s01[1:4, 1:4]).all()
        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[1][1][0] ==
                manual_blurred_image_s10[1:4, 1:4]).all()
        assert (unmasked_blurred_image_of_datas_planes_and_galaxies[1][1][1] ==
                manual_blurred_image_s11[1:4, 1:4]).all()
Exemplo n.º 3
0
    def test___if_galaxy_has_pixelization__unmasked_image_is_none(self):

        mask = msk.Mask(array=np.array([[True, True,
                                         True], [True, False, True],
                                        [True, True, True]]),
                        pixel_scale=1.0)

        padded_grid_stack = grids.GridStack.padded_grid_stack_from_mask_sub_grid_size_and_psf_shape(
            mask=mask, sub_grid_size=1, psf_shape=(3, 3))

        psf_0 = im.PSF(array=(np.array([[0.0, 0.0, 0.0], [0.0, 1.0, 0.0],
                                        [0.0, 0.0, 0.0]])),
                       pixel_scale=1.0)

        psf_1 = im.PSF(array=(np.array([[0.0, 3.0, 0.0], [0.0, 1.0, 2.0],
                                        [0.0, 0.0, 0.0]])),
                       pixel_scale=1.0)

        g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.1),
                      pixelization=pix.Rectangular(),
                      regularization=reg.Constant())
        g1 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.2))
        g2 = g.Galaxy(mass_profile=mp.SphericalIsothermal(einstein_radius=1.0))

        tracer = ray_tracing_stack.TracerImageSourcePlanesStack(
            lens_galaxies=[g0, g1, g2],
            source_galaxies=[g0, g1],
            image_plane_grid_stacks=[padded_grid_stack, padded_grid_stack])

        unmasked_blurred_image_of_datas_planes_and_galaxies = \
            stack_util.unmasked_blurred_image_of_datas_planes_and_galaxies_from_padded_grid_stacks_and_psf(
                planes=tracer.planes, padded_grid_stacks=[padded_grid_stack, padded_grid_stack], psfs=[psf_0, psf_1])

        assert unmasked_blurred_image_of_datas_planes_and_galaxies[0][0][
            0] == None
        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[0][0]
                    [1]) == scaled_array.ScaledSquarePixelArray
        assert unmasked_blurred_image_of_datas_planes_and_galaxies[1][0][
            0] == None
        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[1][0]
                    [1]) == scaled_array.ScaledSquarePixelArray
        assert unmasked_blurred_image_of_datas_planes_and_galaxies[0][1][
            0] == None
        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[0][1]
                    [1]) == scaled_array.ScaledSquarePixelArray
        assert unmasked_blurred_image_of_datas_planes_and_galaxies[1][1][
            0] == None
        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[1][1]
                    [1]) == scaled_array.ScaledSquarePixelArray

        g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.1))
        g1 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.2),
                      pixelization=pix.Rectangular(),
                      regularization=reg.Constant())
        g2 = g.Galaxy(mass_profile=mp.SphericalIsothermal(einstein_radius=1.0))

        tracer = ray_tracing_stack.TracerImageSourcePlanesStack(
            lens_galaxies=[g0, g1, g2],
            source_galaxies=[g0, g1],
            image_plane_grid_stacks=[padded_grid_stack, padded_grid_stack])

        unmasked_blurred_image_of_datas_planes_and_galaxies = \
            stack_util.unmasked_blurred_image_of_datas_planes_and_galaxies_from_padded_grid_stacks_and_psf(
                planes=tracer.planes, padded_grid_stacks=[padded_grid_stack, padded_grid_stack], psfs=[psf_0, psf_1])

        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[0][0]
                    [0]) == scaled_array.ScaledSquarePixelArray
        assert unmasked_blurred_image_of_datas_planes_and_galaxies[0][0][
            1] == None
        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[1][0]
                    [0]) == scaled_array.ScaledSquarePixelArray
        assert unmasked_blurred_image_of_datas_planes_and_galaxies[1][0][
            1] == None
        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[0][1]
                    [0]) == scaled_array.ScaledSquarePixelArray
        assert unmasked_blurred_image_of_datas_planes_and_galaxies[0][1][
            1] == None
        assert type(unmasked_blurred_image_of_datas_planes_and_galaxies[1][1]
                    [0]) == scaled_array.ScaledSquarePixelArray
        assert unmasked_blurred_image_of_datas_planes_and_galaxies[1][1][
            1] == None
Exemplo n.º 4
0
    def test__blurred_image_of_planes__x2_images(self, mask_0, mask_1,
                                                 convolver_blur_0,
                                                 convolver_blur_1):

        data_grid_stack_0 = grids.GridStack.grid_stack_from_mask_sub_grid_size_and_psf_shape(
            mask=mask_0, sub_grid_size=1, psf_shape=(3, 3))

        data_grid_stack_1 = grids.GridStack.grid_stack_from_mask_sub_grid_size_and_psf_shape(
            mask=mask_1, sub_grid_size=1, psf_shape=(3, 3))

        g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=1.0))
        g1 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=2.0))

        tracer = ray_tracing_stack.TracerImageSourcePlanesStack(
            lens_galaxies=[g0],
            source_galaxies=[g1],
            image_plane_grid_stacks=[data_grid_stack_0, data_grid_stack_1])

        blurred_lens_image_0 = convolver_blur_0.convolve_image(
            image_array=tracer.image_plane.image_plane_images_1d[0],
            blurring_array=tracer.image_plane.image_plane_blurring_images_1d[0]
        )
        blurred_lens_image_0 = data_grid_stack_0.regular.scaled_array_from_array_1d(
            array_1d=blurred_lens_image_0)

        blurred_source_image_0 = convolver_blur_0.convolve_image(
            image_array=tracer.source_plane.image_plane_images_1d[0],
            blurring_array=tracer.source_plane.
            image_plane_blurring_images_1d[0])
        blurred_source_image_0 = data_grid_stack_0.regular.scaled_array_from_array_1d(
            array_1d=blurred_source_image_0)

        blurred_lens_image_1 = convolver_blur_1.convolve_image(
            image_array=tracer.image_plane.image_plane_images_1d[1],
            blurring_array=tracer.image_plane.image_plane_blurring_images_1d[1]
        )
        blurred_lens_image_1 = data_grid_stack_1.regular.scaled_array_from_array_1d(
            array_1d=blurred_lens_image_1)

        blurred_source_image_1 = convolver_blur_1.convolve_image(
            image_array=tracer.source_plane.image_plane_images_1d[1],
            blurring_array=tracer.source_plane.
            image_plane_blurring_images_1d[1])
        blurred_source_image_1 = data_grid_stack_1.regular.scaled_array_from_array_1d(
            array_1d=blurred_source_image_1)

        blurred_images_of_planes = stack_util.blurred_images_of_images_and_planes_from_1d_images_and_convolver(
            total_planes=tracer.total_planes,
            image_plane_images_1d_of_planes=tracer.
            image_plane_images_1d_of_planes,
            image_plane_blurring_images_1d_of_planes=tracer.
            image_plane_blurring_images_1d_of_planes,
            convolvers=[convolver_blur_0, convolver_blur_1],
            map_to_scaled_arrays=[
                data_grid_stack_0.regular.array_2d_from_array_1d,
                data_grid_stack_1.regular.array_2d_from_array_1d
            ])

        assert (blurred_images_of_planes[0][0] == blurred_lens_image_0).all()
        assert (blurred_images_of_planes[0][1] == blurred_source_image_0).all()
        assert (blurred_images_of_planes[1][0] == blurred_lens_image_1).all()
        assert (blurred_images_of_planes[1][1] == blurred_source_image_1).all()