def test__max_log_likelihood_plane_available_as_result( self, analysis_imaging_7x7): galaxy_0 = ag.Galaxy(redshift=0.5, light=ag.lp.EllSersic(intensity=1.0)) galaxy_1 = ag.Galaxy(redshift=0.5, light=ag.lp.EllSersic(intensity=2.0)) model = af.Collection( galaxies=af.Collection(galaxy_0=galaxy_0, galaxy_1=galaxy_1)) max_log_likelihood_plane = ag.Plane(galaxies=[galaxy_0, galaxy_1]) search = MockSearch( name="test_search", samples=MockSamples( max_log_likelihood_instance=max_log_likelihood_plane), ) result = search.fit(model=model, analysis=analysis_imaging_7x7) assert isinstance(result.max_log_likelihood_plane, ag.Plane) assert result.max_log_likelihood_plane.galaxies[ 0].light.intensity == 1.0 assert result.max_log_likelihood_plane.galaxies[ 1].light.intensity == 2.0
def make_factor_graph_model(): model_factor_1 = g.AnalysisFactor(af.Collection(one=af.UniformPrior()), af.m.MockAnalysis()) model_factor_2 = g.AnalysisFactor(af.Collection(one=af.UniformPrior()), af.m.MockAnalysis()) return g.FactorGraphModel(model_factor_1, model_factor_2)
def test__figure_of_merit__includes_hyper_image_and_noise__matches_fit( interferometer_7): hyper_background_noise = al.hyper_data.HyperBackgroundNoise( noise_scale=1.0) lens_galaxy = al.Galaxy(redshift=0.5, light=al.lp.EllSersic(intensity=0.1)) model = af.Collection( galaxies=af.Collection(lens=lens_galaxy), hyper_background_noise=hyper_background_noise, ) analysis = al.AnalysisInterferometer(dataset=interferometer_7) instance = model.instance_from_unit_vector([]) analysis_log_likelihood = analysis.log_likelihood_function( instance=instance) tracer = analysis.tracer_via_instance_from(instance=instance) fit = al.FitInterferometer( dataset=interferometer_7, tracer=tracer, hyper_background_noise=hyper_background_noise, ) assert fit.log_likelihood == analysis_log_likelihood
def test__tracer_for_instance(analysis_imaging_7x7): model = af.Collection( galaxies=af.Collection( lens=al.Galaxy( redshift=0.5, light=al.lp.SphSersic(intensity=2.0), mass=al.mp.SphIsothermal(centre=(0.0, 0.0), einstein_radius=1.0), ), source=al.Galaxy(redshift=1.0), ), clumps=af.Collection(clump=al.Galaxy( redshift=0.5, light=al.lp.SphSersic(intensity=0.1), mass=al.mp.SphIsothermal(einstein_radius=0.2), )), ) instance = model.instance_from_unit_vector([]) tracer = analysis_imaging_7x7.tracer_via_instance_from(instance=instance) assert tracer.galaxies[0].redshift == 0.5 assert tracer.galaxies[0].light.intensity == 2.0 assert tracer.galaxies[0].mass.centre == pytest.approx((0.0, 0.0), 1.0e-4) assert tracer.galaxies[0].mass.einstein_radius == 1.0 assert tracer.galaxies[1].redshift == 0.5 assert tracer.galaxies[1].light.intensity == 0.1 assert tracer.galaxies[1].mass.einstein_radius == 0.2
def test__tracer_for_instance__subhalo_redshift_rescale_used( analysis_imaging_7x7): model = af.Collection(galaxies=af.Collection( lens=al.Galaxy( redshift=0.5, mass=al.mp.SphIsothermal(centre=(0.0, 0.0), einstein_radius=1.0), ), subhalo=al.Galaxy(redshift=0.25, mass=al.mp.SphNFW(centre=(0.1, 0.2))), source=al.Galaxy(redshift=1.0), )) instance = model.instance_from_unit_vector([]) tracer = analysis_imaging_7x7.tracer_via_instance_from(instance=instance) assert tracer.galaxies[0].mass.centre == pytest.approx((0.1, 0.2), 1.0e-4) model = af.Collection(galaxies=af.Collection( lens=al.Galaxy( redshift=0.5, mass=al.mp.SphIsothermal(centre=(0.0, 0.0), einstein_radius=1.0), ), subhalo=al.Galaxy(redshift=0.75, mass=al.mp.SphNFW(centre=(0.1, 0.2))), source=al.Galaxy(redshift=1.0), )) instance = model.instance_from_unit_vector([]) tracer = analysis_imaging_7x7.tracer_via_instance_from(instance=instance) assert tracer.galaxies[1].mass.centre == pytest.approx( (-0.19959, -0.39919), 1.0e-4)
def test__fit_figure_of_merit__includes_hyper_image_and_noise__matches_fit( self, interferometer_7 ): 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_background_noise=hyper_background_noise, galaxies=af.Collection(galaxy=galaxy), ) analysis = ag.AnalysisInterferometer(dataset=interferometer_7) 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.FitInterferometer( interferometer=interferometer_7, plane=plane, hyper_background_noise=hyper_background_noise, ) assert fit.log_likelihood == fit_figure_of_merit
def make_model(): return af.Collection( galaxies=af.Collection( galaxy=af.Model(ag.Galaxy, redshift=0.5, light=ag.lp.EllSersic), source=af.Model(ag.Galaxy, redshift=1.0, light=ag.lp.EllSersic), ) )
def test__figure_of_merit__includes_hyper_image_and_noise__matches_fit( self, masked_imaging_7x7): hyper_image_sky = al.hyper_data.HyperImageSky(sky_scale=1.0) hyper_background_noise = al.hyper_data.HyperBackgroundNoise( noise_scale=1.0) lens_galaxy = al.Galaxy(redshift=0.5, light=al.lp.EllSersic(intensity=0.1)) model = af.Collection( hyper_image_sky=hyper_image_sky, hyper_background_noise=hyper_background_noise, galaxies=af.Collection(lens=lens_galaxy), ) analysis = al.AnalysisImaging(dataset=masked_imaging_7x7) instance = model.instance_from_unit_vector([]) analysis_log_likelihood = analysis.log_likelihood_function( instance=instance) tracer = analysis.tracer_for_instance(instance=instance) fit = al.FitImaging( dataset=masked_imaging_7x7, tracer=tracer, hyper_image_sky=hyper_image_sky, hyper_background_noise=hyper_background_noise, ) assert fit.log_likelihood == analysis_log_likelihood
def test__figure_of_merit__matches_correct_fit_given_galaxy_profiles( self, dataset_quantity_7x7_array_2d): galaxy = al.Galaxy(redshift=0.5, light=al.mp.EllIsothermal(einstein_radius=1.0)) model = af.Collection(galaxies=af.Collection(galaxy=galaxy)) analysis = al.AnalysisQuantity(dataset=dataset_quantity_7x7_array_2d, func_str="convergence_2d_from") instance = model.instance_from_unit_vector([]) fit_figure_of_merit = analysis.log_likelihood_function( instance=instance) tracer = analysis.tracer_for_instance(instance=instance) fit = al.FitQuantity( dataset=dataset_quantity_7x7_array_2d, tracer=tracer, func_str="convergence_2d_from", ) assert fit.log_likelihood == fit_figure_of_merit fit = al.FitQuantity( dataset=dataset_quantity_7x7_array_2d, tracer=tracer, func_str="potential_2d_from", ) assert fit.log_likelihood != fit_figure_of_merit
def test__stochastic_model_from(): model = af.Collection(galaxies=af.Collection( lens=af.Model( ag.Galaxy, redshift=0.5, light=ag.lp.SphSersic(), mass=ag.mp.SphIsothermal(), ), source=af.Model( ag.Galaxy, redshift=1.0, pixelization=ag.pix.VoronoiBrightnessImage(), regularization=ag.reg.AdaptiveBrightness(), ), )) instance = model.instance_from_prior_medians() model = af.Collection(galaxies=af.Collection( lens=af.Model(ag.Galaxy, redshift=0.5))) result = mock.MockResult(instance=instance, model=model) model = ag.util.model.stochastic_model_from(result=result) assert isinstance(model.galaxies.lens.mass.centre, af.TuplePrior) assert isinstance(model.galaxies.lens.light.intensity, float) assert isinstance(model.galaxies.source.pixelization.pixels, int) assert isinstance(model.galaxies.source.regularization.inner_coefficient, float) model = ag.util.model.stochastic_model_from(result=result, include_lens_light=True) assert isinstance(model.galaxies.lens.mass.centre, af.TuplePrior) assert isinstance(model.galaxies.lens.light.intensity, af.LogUniformPrior) assert isinstance(model.galaxies.source.pixelization.pixels, int) assert isinstance(model.galaxies.source.regularization.inner_coefficient, float) model = ag.util.model.stochastic_model_from(result=result, include_pixelization=True) assert isinstance(model.galaxies.lens.mass.centre, af.TuplePrior) assert isinstance(model.galaxies.lens.light.intensity, float) assert isinstance(model.galaxies.source.pixelization.pixels, af.UniformPrior) assert not isinstance( model.galaxies.source.regularization.inner_coefficient, af.UniformPrior) model = ag.util.model.stochastic_model_from(result=result, include_regularization=True) assert isinstance(model.galaxies.lens.mass.centre, af.TuplePrior) assert isinstance(model.galaxies.lens.light.intensity, float) assert isinstance(model.galaxies.source.pixelization.pixels, int) assert isinstance(model.galaxies.source.regularization.inner_coefficient, af.UniformPrior)
def test_assertions_collection(source_gaussian, target_gaussian): target_gaussian.add_assertion( target_gaussian.centre <= target_gaussian.normalization) target_collection = af.Collection(gaussian=target_gaussian) source_collection = af.Collection(gaussian=source_gaussian) with pytest.raises(AssertionError): target_collection.take_attributes(source_collection)
def test__use_border__determines_if_border_pixel_relocation_is_used( self, masked_imaging_7x7 ): model = af.Collection( galaxies=af.Collection( lens=al.Galaxy( redshift=0.5, mass=al.mp.SphIsothermal(einstein_radius=100.0) ), source=al.Galaxy( redshift=1.0, pixelization=al.pix.Rectangular(shape=(3, 3)), regularization=al.reg.Constant(coefficient=1.0), ), ) ) masked_imaging_7x7 = masked_imaging_7x7.apply_settings( settings=al.SettingsImaging(sub_size_inversion=2) ) analysis = al.AnalysisImaging( dataset=masked_imaging_7x7, settings_pixelization=al.SettingsPixelization(use_border=True), ) analysis.dataset.grid_inversion[4] = np.array([[500.0, 0.0]]) instance = model.instance_from_unit_vector([]) tracer = analysis.tracer_for_instance(instance=instance) fit = analysis.fit_imaging_for_tracer( tracer=tracer, hyper_image_sky=None, hyper_background_noise=None ) assert fit.inversion.linear_obj_list[0].source_grid_slim[4][0] == pytest.approx( 97.19584, 1.0e-2 ) assert fit.inversion.linear_obj_list[0].source_grid_slim[4][1] == pytest.approx( -3.699999, 1.0e-2 ) analysis = al.AnalysisImaging( dataset=masked_imaging_7x7, settings_pixelization=al.SettingsPixelization(use_border=False), ) analysis.dataset.grid_inversion[4] = np.array([300.0, 0.0]) instance = model.instance_from_unit_vector([]) tracer = analysis.tracer_for_instance(instance=instance) fit = analysis.fit_imaging_for_tracer( tracer=tracer, hyper_image_sky=None, hyper_background_noise=None ) assert fit.inversion.linear_obj_list[0].source_grid_slim[4][0] == pytest.approx( 200.0, 1.0e-4 )
def test__figure_of_merit__matches_correct_fit_given_galaxy_profiles( self, positions_x2, positions_x2_noise_map): point_source_dataset = al.PointSourceDataset( name="point_0", positions=positions_x2, positions_noise_map=positions_x2_noise_map, ) point_source_dict = al.PointSourceDict( point_source_dataset_list=[point_source_dataset]) model = af.Collection(galaxies=af.Collection(lens=al.Galaxy( redshift=0.5, point_0=al.ps.PointSource(centre=(0.0, 0.0))))) solver = mock.MockPositionsSolver(model_positions=positions_x2) analysis = al.AnalysisPointSource(point_source_dict=point_source_dict, solver=solver) instance = model.instance_from_unit_vector([]) analysis_log_likelihood = analysis.log_likelihood_function( instance=instance) tracer = analysis.tracer_for_instance(instance=instance) fit_positions = al.FitPositionsImage( name="point_0", positions=positions_x2, noise_map=positions_x2_noise_map, tracer=tracer, positions_solver=solver, ) assert fit_positions.chi_squared == 0.0 assert fit_positions.log_likelihood == analysis_log_likelihood model_positions = al.Grid2DIrregular([(0.0, 1.0), (1.0, 2.0)]) solver = mock.MockPositionsSolver(model_positions=model_positions) analysis = al.AnalysisPointSource(point_source_dict=point_source_dict, solver=solver) analysis_log_likelihood = analysis.log_likelihood_function( instance=instance) fit_positions = al.FitPositionsImage( name="point_0", positions=positions_x2, noise_map=positions_x2_noise_map, tracer=tracer, positions_solver=solver, ) assert fit_positions.residual_map.in_list == [1.0, 1.0] assert fit_positions.chi_squared == 2.0 assert fit_positions.log_likelihood == analysis_log_likelihood
def test_instance(): model = af.Collection(collection=af.Collection(gaussian=af.Gaussian())) parameterization = model.parameterization assert parameterization == ( """model CollectionPriorModel (N=0) collection CollectionPriorModel (N=0) gaussian Gaussian (N=0)""" )
def test_parameterization(): model = af.Collection(collection=af.Collection( gaussian=af.Model(af.Gaussian))) parameterization = model.parameterization assert parameterization == ( """model CollectionPriorModel (N=3) collection CollectionPriorModel (N=3) gaussian Gaussian (N=3)""" )
def test__make_result__result_interferometer_is_returned(self, interferometer_7): model = af.Collection(galaxies=af.Collection(galaxy_0=ag.Galaxy(redshift=0.5))) analysis = ag.AnalysisInterferometer(dataset=interferometer_7) search = mock.MockSearch(name="test_search") result = search.fit(model=model, analysis=analysis) assert isinstance(result, res.ResultInterferometer)
def test__make_result__result_imaging_is_returned(self, masked_imaging_7x7): model = af.Collection(galaxies=af.Collection(galaxy_0=ag.Galaxy(redshift=0.5))) analysis = ag.AnalysisImaging(dataset=masked_imaging_7x7) search = mock.MockSearch(name="test_search") result = search.fit(model=model, analysis=analysis) assert isinstance(result, res.ResultImaging)
def test__hyper_model_from__adds_hyper_galaxies(): model = af.Collection( galaxies=af.Collection( galaxy_0=af.Model(ag.Galaxy, redshift=0.5), galaxy_1=af.Model(ag.Galaxy, redshift=1.0, bulge=ag.lp.EllSersic), ) ) instance = model.instance_from_prior_medians() path_galaxy_tuples = [ (("galaxies", "galaxy_0"), ag.Galaxy(redshift=0.5)), (("galaxies", "galaxy_1"), ag.Galaxy(redshift=1.0)), ] hyper_galaxy_image_path_dict = { ("galaxies", "galaxy_0"): ag.Array2D.ones( shape_native=(3, 3), pixel_scales=1.0 ), ("galaxies", "galaxy_1"): ag.Array2D.full( fill_value=2.0, shape_native=(3, 3), pixel_scales=1.0 ), } result = mock.MockResult( instance=instance, path_galaxy_tuples=path_galaxy_tuples, hyper_galaxy_image_path_dict=hyper_galaxy_image_path_dict, ) setup_hyper = ag.SetupHyper() setup_hyper.hyper_galaxy_names = ["galaxy_0"] model = ag.util.model.hyper_model_from(result=result, setup_hyper=setup_hyper) assert isinstance(model.galaxies.galaxy_0, af.Model) assert model.galaxies.galaxy_0.redshift == 0.5 assert model.galaxies.galaxy_0.hyper_galaxy.cls is ag.HyperGalaxy assert model.galaxies.galaxy_1.hyper_galaxy is None setup_hyper = ag.SetupHyper() setup_hyper.hyper_galaxy_names = ["galaxy_0", "galaxy_1"] model = ag.util.model.hyper_model_from(result=result, setup_hyper=setup_hyper) assert isinstance(model.galaxies.galaxy_0, af.Model) assert model.galaxies.galaxy_0.redshift == 0.5 assert model.galaxies.galaxy_0.hyper_galaxy.cls is ag.HyperGalaxy assert isinstance(model.galaxies.galaxy_1, af.Model) assert model.galaxies.galaxy_1.redshift == 1.0 assert model.galaxies.galaxy_1.hyper_galaxy.cls is ag.HyperGalaxy
def test__max_log_likelihood_tracer_available_as_result( analysis_imaging_7x7, samples_with_result): model = af.Collection(galaxies=af.Collection( lens=al.Galaxy(redshift=0.5), source=al.Galaxy(redshift=1.0))) search = al.m.MockSearch(name="test_search_2", samples=samples_with_result) result = search.fit(model=model, analysis=analysis_imaging_7x7) assert isinstance(result.max_log_likelihood_tracer, al.Tracer) assert result.max_log_likelihood_tracer.galaxies[0].light.intensity == 1.0 assert result.max_log_likelihood_tracer.galaxies[1].light.intensity == 2.0
def test__make_result__result_quantity_is_returned( self, dataset_quantity_7x7_array_2d): model = af.Collection(galaxies=af.Collection(galaxy_0=al.Galaxy( redshift=0.5))) analysis = al.AnalysisQuantity(dataset=dataset_quantity_7x7_array_2d, func_str="convergence_2d_from") search = mock.MockSearch(name="test_search") result = search.fit(model=model, analysis=analysis) assert isinstance(result, ResultQuantity)
def test__make_result__result_imaging_is_returned(self, point_dict): model = af.Collection(galaxies=af.Collection(lens=al.Galaxy( redshift=0.5, point_0=al.ps.Point(centre=(0.0, 0.0))))) search = al.m.MockSearch(name="test_search") solver = al.m.MockPointSolver( model_positions=point_dict["point_0"].positions) analysis = al.AnalysisPoint(point_dict=point_dict, solver=solver) result = search.fit(model=model, analysis=analysis) assert isinstance(result, ResultPoint)
def test_unique_tag(): search = af.MockSearch() search.fit(model=af.Collection(), analysis=af.mock.mock.MockAnalysis()) identifier = search.paths.identifier search = af.MockSearch(unique_tag="dataset") search.fit( model=af.Collection(), analysis=af.mock.mock.MockAnalysis(), ) assert search.paths.identifier != identifier
def test__table__write_table(): model = af.Collection(mock_class_1=af.m.MockClassx4) parameters = [ [0.0, 1.0, 2.0, 3.0], [0.0, 1.0, 2.0, 3.0], [0.0, 1.0, 2.0, 3.0], [21.0, 22.0, 23.0, 24.0], [0.0, 1.0, 2.0, 3.0], ] samples_x5 = af.Samples( model=model, sample_list=af.Sample.from_lists( model=model, parameter_lists=parameters, log_likelihood_list=[1.0, 2.0, 3.0, 10.0, 5.0], log_prior_list=[0.0, 0.0, 0.0, 0.0, 0.0], weight_list=[1.0, 1.0, 1.0, 1.0, 1.0], ), ) filename = "samples.csv" samples_x5.write_table(filename=filename) assert os.path.exists(filename) os.remove(filename)
def test__gaussian_priors(): parameters = [ [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.1], [1.0, 2.0, 3.0, 4.1], [0.88, 1.88, 2.88, 3.88], [1.12, 2.12, 3.12, 4.32], ] model = af.Collection(mock_class=af.m.MockClassx4) samples_x5 = af.m.MockSamples( model=model, sample_list=af.Sample.from_lists( model=model, parameter_lists=parameters, log_likelihood_list=[10.0, 0.0, 0.0, 0.0, 0.0], log_prior_list=[0.0, 0.0, 0.0, 0.0, 0.0], weight_list=[1.0, 1.0, 1.0, 1.0, 1.0], ), ) gaussian_priors = samples_x5.gaussian_priors_at_sigma(sigma=1.0) assert gaussian_priors[0][0] == 1.0 assert gaussian_priors[1][0] == 2.0 assert gaussian_priors[2][0] == 3.0 assert gaussian_priors[3][0] == 4.0 assert gaussian_priors[0][1] == pytest.approx(0.12, 1.0e-4) assert gaussian_priors[1][1] == pytest.approx(0.12, 1.0e-4) assert gaussian_priors[2][1] == pytest.approx(0.12, 1.0e-4) assert gaussian_priors[3][1] == pytest.approx(0.32, 1.0e-4)
def test_tuples(samples): model = af.Collection( lens=af.Model( af.m.MockWithTuple ) ) samples = af.Samples( model=model, sample_list=[ af.Sample( log_likelihood=0, log_prior=0, weight=0, kwargs={ path: i for i, path in enumerate( model.paths ) } ) ] ) samples = samples.without_paths( [ ("lens", "tup",), ] ) assert len(samples.parameter_lists) == 1
def test__instance_from_sample_index(): model = af.Collection(mock_class=af.m.MockClassx4) parameters = [ [1.0, 2.0, 3.0, 4.0], [5.0, 6.0, 7.0, 8.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.1, 2.1, 3.1, 4.1], ] samples_x5 = af.m.MockSamples( model=model, sample_list=af.Sample.from_lists( model=model, parameter_lists=parameters, log_likelihood_list=[0.0, 0.0, 0.0, 0.0, 0.0], log_prior_list=[0.0, 0.0, 0.0, 0.0, 0.0], weight_list=[1.0, 1.0, 1.0, 1.0, 1.0], ), ) instance = samples_x5.instance_from_sample_index(sample_index=0) assert instance.mock_class.one == 1.0 assert instance.mock_class.two == 2.0 assert instance.mock_class.three == 3.0 assert instance.mock_class.four == 4.0 instance = samples_x5.instance_from_sample_index(sample_index=1) assert instance.mock_class.one == 5.0 assert instance.mock_class.two == 6.0 assert instance.mock_class.three == 7.0 assert instance.mock_class.four == 8.0
def test__addition_of_samples__raises_error_if_model_mismatch(samples_x5): model = af.Collection(mock_class_1=af.m.MockClassx2) parameters = [ [0.0, 1.0], [0.0, 1.0], [0.0, 1.0], [21.0, 22.0], [0.0, 1.0], ] samples_different_model = af.m.MockSamples( model=model, sample_list=af.Sample.from_lists( model=model, parameter_lists=parameters, log_likelihood_list=[1.0, 2.0], log_prior_list=[0.0, 0.0], weight_list=[1.0, 1.0], ), ) with pytest.raises(af.exc.SamplesException): samples_x5 + samples_different_model
def test__log_prior_list_and_max_log_posterior_vector_and_instance(): model = af.Collection(mock_class_1=af.m.MockClassx4) parameters = [ [0.0, 1.0, 2.0, 3.0], [0.0, 1.0, 2.0, 3.0], [0.0, 1.0, 2.0, 3.0], [0.0, 1.0, 2.0, 3.0], [21.0, 22.0, 23.0, 24.0], ] samples_x5 = af.m.MockSamples( model=model, sample_list=af.Sample.from_lists( model=model, parameter_lists=parameters, log_likelihood_list=[1.0, 2.0, 3.0, 0.0, 5.0], log_prior_list=[1.0, 2.0, 3.0, 10.0, 6.0], weight_list=[1.0, 1.0, 1.0, 1.0, 1.0], ), ) assert samples_x5.log_posterior_list == [2.0, 4.0, 6.0, 10.0, 11.0] assert samples_x5.max_log_posterior_vector == [21.0, 22.0, 23.0, 24.0] instance = samples_x5.max_log_posterior_instance assert instance.mock_class_1.one == 21.0 assert instance.mock_class_1.two == 22.0 assert instance.mock_class_1.three == 23.0 assert instance.mock_class_1.four == 24.0
def test_mapper_from_prior_arguments_simple_collection(): old = af.UniformPrior() new = af.UniformPrior() collection = af.Collection(value=old) collection = collection.mapper_from_prior_arguments({old: new}) assert collection.value == new
def test__figure_of_merit__matches_correct_fit_given_galaxy_profiles( masked_imaging_7x7): lens = al.Galaxy(redshift=0.5, light=al.lp.EllSersic(intensity=0.1)) model = af.Collection(galaxies=af.Collection(lens=lens)) analysis = al.AnalysisImaging(dataset=masked_imaging_7x7) instance = model.instance_from_unit_vector([]) analysis_log_likelihood = analysis.log_likelihood_function( instance=instance) tracer = analysis.tracer_via_instance_from(instance=instance) fit = al.FitImaging(dataset=masked_imaging_7x7, tracer=tracer) assert fit.log_likelihood == analysis_log_likelihood