Пример #1
0
    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
Пример #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)
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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)
Пример #6
0
    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
Пример #7
0
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
Пример #10
0
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)
Пример #11
0
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)
Пример #12
0
    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
Пример #14
0
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)"""
    )
Пример #15
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)"""
    )
Пример #16
0
    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)
Пример #17
0
    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
Пример #19
0
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)
Пример #21
0
    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)
Пример #22
0
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
Пример #23
0
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)
Пример #24
0
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)
Пример #25
0
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
Пример #26
0
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
Пример #27
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
Пример #28
0
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
Пример #29
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
Пример #30
0
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