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
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
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()
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
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()
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)
def make_lens_imaging_data_7x7(imaging_data_7x7, sub_mask_7x7): return al.LensImagingData(imaging_data=imaging_data_7x7, mask=sub_mask_7x7)
def make_lens_imaging_data_6x6(imaging_data_6x6, mask_6x6): return al.LensImagingData(imaging_data=imaging_data_6x6, mask=mask_6x6)
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)