def test__subtracted_images_of_galaxies(masked_imaging_7x7_no_blur): g0 = ag.Galaxy(redshift=0.5, light_profile=MockLightProfile(image_2d=np.ones(1))) g1 = ag.Galaxy(redshift=1.0, light_profile=MockLightProfile(image_2d=2.0 * np.ones(1))) g2 = ag.Galaxy(redshift=1.0, light_profile=MockLightProfile(image_2d=3.0 * np.ones(1))) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1, g2]) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane) assert fit.subtracted_images_of_galaxies[0].slim[0] == -4.0 assert fit.subtracted_images_of_galaxies[1].slim[0] == -3.0 assert fit.subtracted_images_of_galaxies[2].slim[0] == -2.0 g0 = ag.Galaxy(redshift=0.5, light_profile=MockLightProfile(image_2d=np.ones(1))) g1 = ag.Galaxy(redshift=0.5) g2 = ag.Galaxy(redshift=1.0, light_profile=MockLightProfile(image_2d=3.0 * np.ones(1))) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1, g2]) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane) assert fit.subtracted_images_of_galaxies[0].slim[0] == -2.0 assert fit.subtracted_images_of_galaxies[1].slim[0] == -3.0 assert fit.subtracted_images_of_galaxies[2].slim[0] == 0.0
def test__noise_map__with_and_without_hyper_galaxy(masked_imaging_7x7_no_blur): g0 = ag.Galaxy(redshift=0.5, light_profile=MockLightProfile(image_2d_value=1.0)) plane = ag.Plane(galaxies=[g0]) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane) assert fit.noise_map.slim == pytest.approx( np.full(fill_value=2.0, shape=(9, )), 1.0e-1) hyper_image = ag.Array2D.ones(shape_native=(3, 3), pixel_scales=1.0) g0 = ag.Galaxy( redshift=0.5, light_profile=MockLightProfile(image_2d_value=1.0), hyper_galaxy=ag.HyperGalaxy(contribution_factor=1.0, noise_factor=1.0, noise_power=1.0), hyper_model_image=hyper_image, hyper_galaxy_image=hyper_image, hyper_minimum_value=0.0, ) plane = ag.Plane(galaxies=[g0]) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane) assert fit.noise_map.slim == pytest.approx( np.full(fill_value=4.0, shape=(9, )), 1.0e-1) assert fit.log_likelihood == pytest.approx(-20.7470, 1.0e-4)
def test__fit_figure_of_merit(masked_imaging_7x7): g0 = ag.Galaxy( redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0), mass_profile=ag.mp.SphIsothermal(einstein_radius=1.0), ) g1 = ag.Galaxy(redshift=1.0, light_profile=ag.lp.EllSersic(intensity=1.0)) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) assert (fit.image == np.full(fill_value=1.0, shape=(9, ))).all() assert (fit.noise_map == np.full(fill_value=2.0, shape=(9, ))).all() assert fit.log_likelihood == pytest.approx(-75938.05, 1e-4) assert fit.figure_of_merit == pytest.approx(-75938.05, 1.0e-4) pix = ag.pix.Rectangular(shape=(3, 3)) reg = ag.reg.Constant(coefficient=1.0) g0 = ag.Galaxy(redshift=0.5, pixelization=pix, regularization=reg) plane = ag.Plane(galaxies=[ag.Galaxy(redshift=0.5), g0]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) assert (fit.image == np.full(fill_value=1.0, shape=(9, ))).all() assert (fit.noise_map == np.full(fill_value=2.0, shape=(9, ))).all() assert fit.log_evidence == pytest.approx(-22.9005, 1e-4) assert fit.figure_of_merit == pytest.approx(-22.9005, 1.0e-4) galaxy_light = ag.Galaxy(redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0)) pix = ag.pix.Rectangular(shape=(3, 3)) reg = ag.reg.Constant(coefficient=1.0) galaxy_pix = ag.Galaxy(redshift=1.0, pixelization=pix, regularization=reg) plane = ag.Plane(redshift=0.75, galaxies=[galaxy_light, galaxy_pix]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) assert (fit.image == np.full(fill_value=1.0, shape=(9, ))).all() assert (fit.noise_map == np.full(fill_value=2.0, shape=(9, ))).all() assert fit.log_evidence == pytest.approx(-6840.5851, 1e-4) assert fit.figure_of_merit == pytest.approx(-6840.5851, 1.0e-4)
def fit_imaging_via_database_from( fit: Fit, settings_imaging: Optional[ag.SettingsImaging] = None, settings_pixelization: Optional[ag.SettingsPixelization] = None, settings_inversion: Optional[ag.SettingsInversion] = None, ): """ Returns a `FitImaging` object from an aggregator's `SearchOutput` class, which we call an 'agg_obj' to describe that it acts as the aggregator object for one result in the `Aggregator`. This uses the aggregator's generator outputs such that the function can use the `Aggregator`'s map function to to create a `FitImaging` generator. The `FitImaging` is created following the same method as the PyAutoGalaxy `Search` classes. Parameters ---------- fit : af.SearchOutput A PyAutoFit aggregator's SearchOutput object containing the generators of the results of PyAutoGalaxy model-fits. """ imaging = imaging_via_database_from(fit=fit, settings_imaging=settings_imaging) plane = plane_via_database_from(fit=fit) settings_pixelization = settings_pixelization or fit.value( name="settings_pixelization" ) settings_inversion = settings_inversion or fit.value(name="settings_inversion") return ag.FitImaging( imaging=imaging, plane=plane, settings_pixelization=settings_pixelization, settings_inversion=settings_inversion, )
def test__figure_of_merit__includes_hyper_image_and_noise__matches_fit( self, masked_imaging_7x7 ): hyper_image_sky = ag.hyper_data.HyperImageSky(sky_scale=1.0) hyper_background_noise = ag.hyper_data.HyperBackgroundNoise(noise_scale=1.0) galaxy = ag.Galaxy(redshift=0.5, light=ag.lp.EllSersic(intensity=0.1)) model = af.Collection( hyper_image_sky=hyper_image_sky, hyper_background_noise=hyper_background_noise, galaxies=af.Collection(galaxy=galaxy), ) analysis = ag.AnalysisImaging(dataset=masked_imaging_7x7) instance = model.instance_from_unit_vector([]) fit_figure_of_merit = analysis.log_likelihood_function(instance=instance) plane = analysis.plane_for_instance(instance=instance) fit = ag.FitImaging( imaging=masked_imaging_7x7, plane=plane, hyper_image_sky=hyper_image_sky, hyper_background_noise=hyper_background_noise, ) assert fit.log_likelihood == fit_figure_of_merit
def test__uses_hyper_fit_correctly(self, masked_imaging_7x7): galaxies = af.ModelInstance() galaxies.galaxy = ag.Galaxy(redshift=0.5, light=ag.lp.EllSersic(intensity=1.0), mass=ag.mp.SphIsothermal) galaxies.source = ag.Galaxy(redshift=1.0, light=ag.lp.EllSersic()) instance = af.ModelInstance() instance.galaxies = galaxies galaxy_hyper_image = ag.Array2D.ones(shape_native=(3, 3), pixel_scales=0.1) galaxy_hyper_image[4] = 10.0 hyper_model_image = ag.Array2D.full(fill_value=0.5, shape_native=(3, 3), pixel_scales=0.1) hyper_galaxy_image_path_dict = { ("galaxies", "galaxy"): galaxy_hyper_image } result = mock.MockResult( hyper_galaxy_image_path_dict=hyper_galaxy_image_path_dict, hyper_model_image=hyper_model_image, ) analysis = ag.AnalysisImaging(dataset=masked_imaging_7x7, hyper_dataset_result=result) hyper_galaxy = ag.HyperGalaxy(contribution_factor=1.0, noise_factor=1.0, noise_power=1.0) instance.galaxies.galaxy.hyper_galaxy = hyper_galaxy fit_likelihood = analysis.log_likelihood_function(instance=instance) g0 = ag.Galaxy( redshift=0.5, light_profile=instance.galaxies.galaxy.light, mass_profile=instance.galaxies.galaxy.mass, hyper_galaxy=hyper_galaxy, hyper_model_image=hyper_model_image, hyper_galaxy_image=galaxy_hyper_image, hyper_minimum_value=0.0, ) g1 = ag.Galaxy(redshift=1.0, light_profile=instance.galaxies.source.light) plane = ag.Plane(galaxies=[g0, g1]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) assert (fit.plane.galaxies[0].hyper_galaxy_image == galaxy_hyper_image ).all() assert fit_likelihood == fit.log_likelihood
def test__model_image__with_and_without_psf_blurring( masked_imaging_7x7_no_blur, masked_imaging_7x7): g0 = ag.Galaxy( redshift=0.5, light_profile=MockLightProfile(image_2d_value=1.0, image_2d_first_value=2.0), ) plane = ag.Plane(galaxies=[g0]) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane) assert fit.model_image.slim == pytest.approx( np.array([2.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]), 1.0e-4) assert fit.log_likelihood == pytest.approx(-14.63377, 1.0e-4) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) assert fit.model_image.slim == pytest.approx( np.array([1.33, 1.16, 1.0, 1.16, 1.0, 1.0, 1.0, 1.0, 1.0]), 1.0e-1) assert fit.log_likelihood == pytest.approx(-14.52960, 1.0e-4)
def test__image__with_and_without_hyper_background_sky( masked_imaging_7x7_no_blur): g0 = ag.Galaxy(redshift=0.5, light_profile=MockLightProfile(image_2d_value=1.0)) plane = ag.Plane(galaxies=[g0]) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane) assert fit.image.slim == pytest.approx( np.full(fill_value=1.0, shape=(9, )), 1.0e-1) hyper_image_sky = ag.hyper_data.HyperImageSky(sky_scale=1.0) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane, hyper_image_sky=hyper_image_sky) assert fit.image.slim == pytest.approx( np.full(fill_value=2.0, shape=(9, )), 1.0e-1) assert fit.log_likelihood == pytest.approx(-15.6337, 1.0e-4)
def test__noise_map__with_and_without_hyper_background( masked_imaging_7x7_no_blur): g0 = ag.Galaxy(redshift=0.5, light_profile=MockLightProfile(image_2d_value=1.0)) plane = ag.Plane(galaxies=[g0]) fit = ag.FitImaging(dataset=masked_imaging_7x7_no_blur, plane=plane) assert fit.noise_map.slim == pytest.approx( np.full(fill_value=2.0, shape=(9, )), 1.0e-1) hyper_background_noise = ag.hyper_data.HyperBackgroundNoise( noise_scale=1.0) fit = ag.FitImaging( dataset=masked_imaging_7x7_no_blur, plane=plane, hyper_background_noise=hyper_background_noise, ) assert fit.noise_map.slim == pytest.approx( np.full(fill_value=3.0, shape=(9, )), 1.0e-1) assert fit.log_likelihood == pytest.approx(-18.1579, 1.0e-4)
def test__figure_of_merit__matches_correct_fit_given_galaxy_profiles( self, masked_imaging_7x7 ): galaxy = ag.Galaxy(redshift=0.5, light=ag.lp.EllSersic(intensity=0.1)) model = af.Collection(galaxies=af.Collection(galaxy=galaxy)) analysis = ag.AnalysisImaging(dataset=masked_imaging_7x7) instance = model.instance_from_unit_vector([]) fit_figure_of_merit = analysis.log_likelihood_function(instance=instance) plane = analysis.plane_for_instance(instance=instance) fit = ag.FitImaging(imaging=masked_imaging_7x7, plane=plane) assert fit.log_likelihood == fit_figure_of_merit
def fit_imaging_from_agg_obj(agg_obj): """ Returns a `FitImaging` object from an aggregator's `SearchOutput` class, which we call an 'agg_obj' to describe that it acts as the aggregator object for one result in the `Aggregator`. This uses the aggregator's generator outputs such that the function can use the `Aggregator`'s map function to to create a `FitImaging` generator. The `FitImaging` is created following the same method as the PyAutoGalaxy `Search` classes. Parameters ---------- agg_obj : af.SearchOutput A PyAutoFit aggregator's SearchOutput object containing the generators of the results of PyAutoGalaxy model-fits. """ imaging = imaging_from_agg_obj(agg_obj=agg_obj) plane = plane_from_agg_obj(agg_obj=agg_obj) return ag.FitImaging( imaging=imaging, plane=plane, settings_pixelization=agg_obj.settings_pixelization, settings_inversion=agg_obj.settings_inversion, )
def make_fit_imaging_x2_galaxy_7x7(): plane = ag.Plane(galaxies=[make_gal_x1_lp(), make_gal_x1_lp()]) return ag.FitImaging(imaging=make_masked_imaging_7x7(), plane=plane)
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)
def make_fit_imaging_x2_galaxy_inversion_7x7(): return ag.FitImaging(imaging=make_masked_imaging_7x7(), plane=make_plane_x2_galaxy_inversion_7x7())
def test__fit_figure_of_merit__include_hyper_methods(masked_imaging_7x7): hyper_image_sky = ag.hyper_data.HyperImageSky(sky_scale=1.0) hyper_background_noise = ag.hyper_data.HyperBackgroundNoise( noise_scale=1.0) hyper_galaxy = ag.HyperGalaxy(contribution_factor=1.0, noise_factor=1.0, noise_power=1.0) g0 = ag.Galaxy( redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0), mass_profile=ag.mp.SphIsothermal(einstein_radius=1.0), hyper_galaxy=hyper_galaxy, hyper_model_image=np.ones(9), hyper_galaxy_image=np.ones(9), hyper_minimum_value=0.0, ) g1 = ag.Galaxy(redshift=1.0, light_profile=ag.lp.EllSersic(intensity=1.0)) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1]) fit = ag.FitImaging( dataset=masked_imaging_7x7, plane=plane, hyper_image_sky=hyper_image_sky, hyper_background_noise=hyper_background_noise, ) assert (fit.image == np.full(fill_value=2.0, shape=(9, ))).all() assert (fit.noise_map == np.full(fill_value=5.0, shape=(9, ))).all() assert fit.log_likelihood == pytest.approx(-12104.68, 1e-4) assert fit.figure_of_merit == pytest.approx(-12104.68, 1.0e-4) pix = ag.pix.Rectangular(shape=(3, 3)) reg = ag.reg.Constant(coefficient=1.0) g0 = ag.Galaxy( redshift=0.5, pixelization=pix, regularization=reg, hyper_galaxy=hyper_galaxy, hyper_model_image=np.ones(9), hyper_galaxy_image=np.ones(9), hyper_minimum_value=0.0, ) plane = ag.Plane(galaxies=[ag.Galaxy(redshift=0.5), g0]) fit = ag.FitImaging( dataset=masked_imaging_7x7, plane=plane, hyper_image_sky=hyper_image_sky, hyper_background_noise=hyper_background_noise, settings_inversion=ag.SettingsInversion(use_w_tilde=False), ) assert (fit.image == np.full(fill_value=2.0, shape=(9, ))).all() assert (fit.noise_map == np.full(fill_value=5.0, shape=(9, ))).all() assert fit.log_evidence == pytest.approx(-30.1448, 1e-4) assert fit.figure_of_merit == pytest.approx(-30.1448, 1.0e-4) galaxy_light = ag.Galaxy( redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0), hyper_galaxy=hyper_galaxy, hyper_model_image=np.ones(9), hyper_galaxy_image=np.ones(9), hyper_minimum_value=0.0, ) galaxy_pix = ag.Galaxy(redshift=1.0, pixelization=pix, regularization=reg) plane = ag.Plane(redshift=0.75, galaxies=[galaxy_light, galaxy_pix]) fit = ag.FitImaging( dataset=masked_imaging_7x7, plane=plane, hyper_image_sky=hyper_image_sky, hyper_background_noise=hyper_background_noise, settings_inversion=ag.SettingsInversion(use_w_tilde=False), ) assert (fit.image == np.full(fill_value=2.0, shape=(9, ))).all() assert (fit.noise_map == np.full(fill_value=5.0, shape=(9, ))).all() assert fit.log_evidence == pytest.approx(-1132.9297, 1e-4) assert fit.figure_of_merit == pytest.approx(-1132.9297, 1.0e-4)
def test__galaxy_model_image_dict(masked_imaging_7x7): g0 = ag.Galaxy( redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0), mass_profile=ag.mp.SphIsothermal(einstein_radius=1.0), ) g1 = ag.Galaxy(redshift=1.0, light_profile=ag.lp.EllSersic(intensity=1.0)) g2 = ag.Galaxy(redshift=1.0) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1, g2]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) g0_blurred_image_2d = g0.blurred_image_2d_via_convolver_from( grid=masked_imaging_7x7.grid, blurring_grid=masked_imaging_7x7.blurring_grid, convolver=masked_imaging_7x7.convolver, ) g1_blurred_image_2d = g1.blurred_image_2d_via_convolver_from( grid=masked_imaging_7x7.grid, blurring_grid=masked_imaging_7x7.blurring_grid, convolver=masked_imaging_7x7.convolver, ) assert fit.galaxy_model_image_dict[g0] == pytest.approx( g0_blurred_image_2d, 1.0e-4) assert fit.galaxy_model_image_dict[g1] == pytest.approx( g1_blurred_image_2d, 1.0e-4) assert (fit.galaxy_model_image_dict[g2].slim == np.zeros(9)).all() assert fit.model_image.native == pytest.approx( fit.galaxy_model_image_dict[g0].native + fit.galaxy_model_image_dict[g1].native, 1.0e-4, ) pix = ag.pix.Rectangular(shape=(3, 3)) reg = ag.reg.Constant(coefficient=1.0) g0 = ag.Galaxy(redshift=0.5) g1 = ag.Galaxy(redshift=1.0, pixelization=pix, regularization=reg) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) mapper = pix.mapper_from(source_grid_slim=masked_imaging_7x7.grid, source_pixelization_grid=None) inversion = ag.Inversion(dataset=masked_imaging_7x7, linear_obj_list=[mapper], regularization_list=[reg]) assert (fit.galaxy_model_image_dict[g0] == np.zeros(9)).all() assert fit.galaxy_model_image_dict[g1].native == pytest.approx( inversion.mapped_reconstructed_image.native, 1.0e-4) assert fit.model_image.native == pytest.approx( fit.galaxy_model_image_dict[g1].native, 1.0e-4) g0 = ag.Galaxy(redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0)) g1 = ag.Galaxy(redshift=0.5, light_profile=ag.lp.EllSersic(intensity=2.0)) g2 = ag.Galaxy(redshift=0.5) pix = ag.pix.Rectangular(shape=(3, 3)) reg = ag.reg.Constant(coefficient=1.0) galaxy_pix = ag.Galaxy(redshift=1.0, pixelization=pix, regularization=reg) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1, g2, galaxy_pix]) masked_imaging_7x7.image[0] = 3.0 fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) g0_blurred_image = g0.blurred_image_2d_via_convolver_from( grid=masked_imaging_7x7.grid, convolver=masked_imaging_7x7.convolver, blurring_grid=masked_imaging_7x7.blurring_grid, ) g1_blurred_image = g1.blurred_image_2d_via_convolver_from( grid=masked_imaging_7x7.grid, convolver=masked_imaging_7x7.convolver, blurring_grid=masked_imaging_7x7.blurring_grid, ) blurred_image = g0_blurred_image + g1_blurred_image profile_subtracted_image = masked_imaging_7x7.image - blurred_image mapper = pix.mapper_from( source_grid_slim=masked_imaging_7x7.grid, settings=ag.SettingsPixelization(use_border=False), ) inversion = ag.InversionImaging( image=profile_subtracted_image, noise_map=masked_imaging_7x7.noise_map, convolver=masked_imaging_7x7.convolver, w_tilde=masked_imaging_7x7.w_tilde, linear_obj_list=[mapper], regularization_list=[reg], ) assert (fit.galaxy_model_image_dict[g2] == np.zeros(9)).all() assert fit.galaxy_model_image_dict[g0].native == pytest.approx( g0_blurred_image.native, 1.0e-4) assert fit.galaxy_model_image_dict[g1].native == pytest.approx( g1_blurred_image.native, 1.0e-4) assert fit.galaxy_model_image_dict[galaxy_pix].native == pytest.approx( inversion.mapped_reconstructed_image.native, 1.0e-4) assert fit.model_image.native == pytest.approx( fit.galaxy_model_image_dict[g0].native + fit.galaxy_model_image_dict[g1].native + inversion.mapped_reconstructed_image.native, 1.0e-4, )
def make_fit_imaging_7x7(): return ag.FitImaging(imaging=make_masked_imaging_7x7(), plane=make_plane_7x7())
def test___blurred_and_model_image_properties(masked_imaging_7x7): g0 = ag.Galaxy( redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0), mass_profile=ag.mp.SphIsothermal(einstein_radius=1.0), ) g1 = ag.Galaxy(redshift=1.0, light_profile=ag.lp.EllSersic(intensity=1.0)) plane = ag.Plane(redshift=0.75, galaxies=[g0, g1]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) g0_blurred_image = g0.blurred_image_2d_via_convolver_from( grid=masked_imaging_7x7.grid, convolver=masked_imaging_7x7.convolver, blurring_grid=masked_imaging_7x7.blurring_grid, ) g1_blurred_image = g1.blurred_image_2d_via_convolver_from( grid=masked_imaging_7x7.grid, convolver=masked_imaging_7x7.convolver, blurring_grid=masked_imaging_7x7.blurring_grid, ) assert g0_blurred_image.native == pytest.approx( fit.model_images_of_galaxies[0].native, 1.0e-4) assert g1_blurred_image.native == pytest.approx( fit.model_images_of_galaxies[1].native, 1.0e-4) unmasked_blurred_image = plane.unmasked_blurred_image_2d_via_psf_from( grid=masked_imaging_7x7.grid, psf=masked_imaging_7x7.psf) assert (unmasked_blurred_image == fit.unmasked_blurred_image).all() unmasked_blurred_image_of_galaxies = plane.unmasked_blurred_image_2d_list_via_psf_from( grid=masked_imaging_7x7.grid, psf=masked_imaging_7x7.psf) assert (unmasked_blurred_image_of_galaxies[0] == fit.unmasked_blurred_image_of_galaxies[0]).all() assert (unmasked_blurred_image_of_galaxies[1] == fit.unmasked_blurred_image_of_galaxies[1]).all() pix = ag.pix.Rectangular(shape=(3, 3)) reg = ag.reg.Constant(coefficient=1.0) g0 = ag.Galaxy(redshift=1.0, pixelization=pix, regularization=reg) plane = ag.Plane(redshift=0.75, galaxies=[ag.Galaxy(redshift=0.5), g0]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) mapper = pix.mapper_from( source_grid_slim=masked_imaging_7x7.grid, settings=ag.SettingsPixelization(use_border=False), ) inversion = ag.Inversion(dataset=masked_imaging_7x7, linear_obj_list=[mapper], regularization_list=[reg]) assert (fit.model_images_of_galaxies[0].native == np.zeros((7, 7))).all() assert inversion.mapped_reconstructed_image.native == pytest.approx( fit.model_images_of_galaxies[1].native, 1.0e-4) galaxy_light = ag.Galaxy(redshift=0.5, light_profile=ag.lp.EllSersic(intensity=1.0)) pix = ag.pix.Rectangular(shape=(3, 3)) reg = ag.reg.Constant(coefficient=1.0) galaxy_pix = ag.Galaxy(redshift=1.0, pixelization=pix, regularization=reg) plane = ag.Plane(redshift=0.75, galaxies=[galaxy_light, galaxy_pix]) fit = ag.FitImaging(dataset=masked_imaging_7x7, plane=plane) blurred_image = plane.blurred_image_2d_via_convolver_from( grid=masked_imaging_7x7.grid, convolver=masked_imaging_7x7.convolver, blurring_grid=masked_imaging_7x7.blurring_grid, ) profile_subtracted_image = masked_imaging_7x7.image - blurred_image mapper = pix.mapper_from( source_grid_slim=masked_imaging_7x7.grid, settings=ag.SettingsPixelization(use_border=False), ) inversion = ag.InversionImaging( image=profile_subtracted_image, noise_map=masked_imaging_7x7.noise_map, convolver=masked_imaging_7x7.convolver, w_tilde=masked_imaging_7x7.w_tilde, linear_obj_list=[mapper], regularization_list=[reg], ) assert blurred_image.native == pytest.approx( fit.model_images_of_galaxies[0].native, 1.0e-4) assert inversion.mapped_reconstructed_image.native == pytest.approx( fit.model_images_of_galaxies[1].native, 1.0e-4)