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