Exemplo n.º 1
0
    def test__in_order_of_class_constructor(self):
        mapper = af.ModelMapper(mock_cls_0=af.m.MockChildTuplex2)

        model_map = mapper.instance_from_unit_vector([0.25, 0.5, 0.75, 1.0])

        assert model_map.mock_cls_0.tup == (0.25, 0.5)
        assert model_map.mock_cls_0.one == 1.5
        assert model_map.mock_cls_0.two == 2.0

        mapper = af.ModelMapper(
            mock_cls_0=af.m.MockChildTuplex2,
            mock_cls_1=af.m.MockChildTuple,
            mock_cls_2=af.m.MockChildTuplex2,
        )

        model_map = mapper.instance_from_unit_vector(
            [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])

        assert model_map.mock_cls_0.tup == (0.1, 0.2)
        assert model_map.mock_cls_0.one == 0.6
        assert model_map.mock_cls_0.two == 0.8

        assert model_map.mock_cls_1.tup == (0.5, 0.6)

        assert model_map.mock_cls_2.tup == (0.7, 0.8)
        assert model_map.mock_cls_2.one == 1.8
        assert model_map.mock_cls_2.two == 2.0
Exemplo n.º 2
0
    def test__instance_from_prior_medians(self):
        mapper = af.ModelMapper(mock_cls_0=af.m.MockChildTuplex2)

        model_map = mapper.instance_from_prior_medians()

        model_2 = mapper.instance_from_unit_vector([0.5, 0.5, 0.5, 0.5])

        assert model_map.mock_cls_0.tup == model_2.mock_cls_0.tup == (0.5, 0.5)
        assert model_map.mock_cls_0.one == model_2.mock_cls_0.one == 1.0
        assert model_map.mock_cls_0.two == model_2.mock_cls_0.two == 1.0

        mapper = af.ModelMapper(
            mock_cls_0=af.m.MockChildTuplex2,
            mock_cls_1=af.m.MockChildTuple,
            mock_cls_2=af.m.MockChildTuplex2,
        )

        model_map = mapper.instance_from_prior_medians()

        model_2 = mapper.instance_from_unit_vector(
            [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5])

        assert model_map.mock_cls_0.tup == model_2.mock_cls_0.tup == (0.5, 0.5)
        assert model_map.mock_cls_0.one == model_2.mock_cls_0.one == 1.0
        assert model_map.mock_cls_0.two == model_2.mock_cls_0.two == 1.0

        assert model_map.mock_cls_1.tup == model_2.mock_cls_1.tup == (0.5, 0.5)

        assert model_map.mock_cls_2.tup == model_2.mock_cls_2.tup == (0.5, 0.5)
        assert model_map.mock_cls_2.one == model_2.mock_cls_2.one == 1.0
        assert model_map.mock_cls_2.two == model_2.mock_cls_2.two == 1.0
Exemplo n.º 3
0
    def test_no_override(self):
        mapper = af.ModelMapper()

        mapper.one = af.PriorModel(af.m.MockClassx2)

        af.ModelMapper()

        assert mapper.one is not None
Exemplo n.º 4
0
    def test_mapper_plus_mapper(self):
        one = af.ModelMapper()
        two = af.ModelMapper()
        one.a = af.PriorModel(mock.MockClassx2)
        two.b = af.PriorModel(mock.MockClassx2)

        three = one + two

        assert three.prior_count == 4
Exemplo n.º 5
0
    def test_numerical(self):
        model = af.ModelMapper()
        model.add_assertion(True)
        model.instance_from_unit_vector([])

        model = af.ModelMapper()
        model.add_assertion(False)
        with pytest.raises(exc.FitException):
            model.instance_from_unit_vector([])
Exemplo n.º 6
0
def test__covariance_matrix():
    log_likelihood_list = list(range(3))

    weight_list = 3 * [0.1]

    parameters = [[2.0, 2.0], [1.0, 1.0], [0.0, 0.0]]

    model = af.ModelMapper(mock_class=af.m.MockClassx2)
    samples_x5 = af.m.MockSamples(
        model=model,
        sample_list=af.Sample.from_lists(
            model=model,
            parameter_lists=parameters,
            log_likelihood_list=log_likelihood_list,
            log_prior_list=3 * [0.0],
            weight_list=weight_list,
        ),
    )

    assert samples_x5.covariance_matrix() == pytest.approx(
        np.array([[1.0, 1.0], [1.0, 1.0]]), 1.0e-4)

    parameters = [[0.0, 2.0], [1.0, 1.0], [2.0, 0.0]]

    model = af.ModelMapper(mock_class=af.m.MockClassx2)
    samples_x5 = af.m.MockSamples(
        model=model,
        sample_list=af.Sample.from_lists(
            model=model,
            parameter_lists=parameters,
            log_likelihood_list=log_likelihood_list,
            log_prior_list=3 * [0.0],
            weight_list=weight_list,
        ),
    )

    assert samples_x5.covariance_matrix() == pytest.approx(
        np.array([[1.0, -1.0], [-1.0, 1.0]]), 1.0e-4)

    weight_list = [0.1, 0.2, 0.3]

    model = af.ModelMapper(mock_class=af.m.MockClassx2)
    samples_x5 = af.m.MockSamples(
        model=model,
        sample_list=af.Sample.from_lists(
            model=model,
            parameter_lists=parameters,
            log_likelihood_list=log_likelihood_list,
            log_prior_list=10 * [0.0],
            weight_list=weight_list,
        ),
    )

    assert samples_x5.covariance_matrix() == pytest.approx(
        np.array([[0.90909, -0.90909], [-0.90909, 0.90909]]), 1.0e-4)
Exemplo n.º 7
0
    def test__make_pixelization_model(self):
        instance = af.ModelInstance()
        mapper = af.ModelMapper()

        mapper.lens_galaxy = al.GalaxyModel(
            redshift=al.Redshift,
            pixelization=al.pix.Rectangular,
            regularization=al.reg.Constant,
        )
        mapper.source_galaxy = al.GalaxyModel(
            redshift=al.Redshift, light=al.lp.EllipticalLightProfile)

        assert mapper.prior_count == 10

        instance.lens_galaxy = al.Galaxy(
            pixelization=al.pix.Rectangular(),
            regularization=al.reg.Constant(),
            redshift=1.0,
        )
        instance.source_galaxy = al.Galaxy(
            redshift=1.0, light=al.lp.EllipticalLightProfile())

        # noinspection PyTypeChecker
        phase = al.ModelFixingHyperPhase(
            MockPhase(),
            "mock_phase",
            model_classes=(al.pix.Pixelization, al.reg.Regularization),
        )

        mapper = mapper.copy_with_fixed_priors(instance, phase.model_classes)

        assert mapper.prior_count == 3
        assert mapper.lens_galaxy.redshift == 1.0
        assert mapper.source_galaxy.light.axis_ratio == 1.0
Exemplo n.º 8
0
def test__vector_drawn_randomly_from_pdf():
    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],
    ]

    model = af.ModelMapper(mock_class_1=af.m.MockClassx4)

    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, 4.0, 5.0],
            log_prior_list=5 * [0.0],
            weight_list=[0.0, 0.0, 0.0, 1.0, 0.0],
        ),
    )

    vector = samples_x5.vector_drawn_randomly_from_pdf()

    assert vector == [21.0, 22.0, 23.0, 24.0]

    instance = samples_x5.instance_drawn_randomly_from_pdf()

    assert vector == [21.0, 22.0, 23.0, 24.0]

    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
Exemplo n.º 9
0
 def __init__(
     self,
     mask=None,
     model_image=None,
     galaxy_images=(),
     model_visibilities=None,
     galaxy_visibilities=(),
     instance=None,
     analysis=None,
     optimizer=None,
     pixelization=None,
 ):
     self.mask_2d = mask
     self.model_image = model_image
     self.unmasked_model_image = model_image
     self.galaxy_images = galaxy_images
     self.model_visibilities = model_visibilities
     self.galaxy_visibilities = galaxy_visibilities
     self.instance = instance or af.ModelInstance()
     self.model = af.ModelMapper()
     self.analysis = analysis
     self.optimizer = optimizer
     self.pixelization = pixelization
     self.hyper_combined = MockHyperCombinedPhase()
     self.use_as_hyper_dataset = False
Exemplo n.º 10
0
    def test__samples_from_model(self):
        pyswarms = af.PySwarmsGlobal()
        pyswarms.paths = af.DirectoryPaths(
            path_prefix=path.join("non_linear", "pyswarms"))
        pyswarms.paths._identifier = "tag"

        model = af.ModelMapper(mock_class=af.m.MockClassx3)
        model.mock_class.one = af.LogUniformPrior(lower_limit=1e-8,
                                                  upper_limit=100.0)
        model.mock_class.two = af.LogUniformPrior(lower_limit=1e-8,
                                                  upper_limit=100.0)
        model.mock_class.three = af.LogUniformPrior(lower_limit=1e-8,
                                                    upper_limit=100.0)
        # model.mock_class.four = af.LogUniformPrior(lower_limit=1e-8, upper_limit=100.0)

        samples = pyswarms.samples_from(model=model)

        assert isinstance(samples.parameter_lists, list)
        assert isinstance(samples.parameter_lists[0], list)
        assert isinstance(samples.log_likelihood_list, list)
        assert isinstance(samples.log_prior_list, list)
        assert isinstance(samples.log_posterior_list, list)

        assert samples.parameter_lists[0] == pytest.approx(
            [50.1254, 1.04626, 10.09456], 1.0e-4)

        assert samples.log_likelihood_list[0] == pytest.approx(
            -5071.80777, 1.0e-4)
        assert samples.log_posterior_list[0] == pytest.approx(
            -5070.73298, 1.0e-4)
        assert samples.weight_list[0] == 1.0

        assert len(samples.parameter_lists) == 500
        assert len(samples.log_likelihood_list) == 500
Exemplo n.º 11
0
    def test__samples_from_model(self):
        
        lbfgs = af.LBFGS()
        lbfgs.paths = af.DirectoryPaths(path_prefix=path.join("non_linear", "LBFGS"))
        lbfgs.paths._identifier = "tag"

        model = af.ModelMapper(mock_class=af.m.MockClassx3)
        model.mock_class.one = af.LogUniformPrior(lower_limit=1e-8, upper_limit=100.0)
        model.mock_class.two = af.LogUniformPrior(lower_limit=1e-8, upper_limit=100.0)
        model.mock_class.three = af.LogUniformPrior(lower_limit=1e-8, upper_limit=100.0)

        samples = lbfgs.samples_from(model=model)

        assert isinstance(samples.parameter_lists, list)
        assert isinstance(samples.parameter_lists[0], list)
        assert isinstance(samples.log_likelihood_list, list)
        assert isinstance(samples.log_prior_list, list)
        assert isinstance(samples.log_posterior_list, list)

        assert samples.parameter_lists[0] == pytest.approx(
            [50.005469, 25.143677, 10.06950], 1.0e-4
        )

        assert samples.log_likelihood_list[0] == pytest.approx(-45.134121, 1.0e-4)
        assert samples.log_posterior_list[0] == pytest.approx(-44.97504284, 1.0e-4)
        assert samples.weight_list[0] == 1.0

        assert len(samples.parameter_lists) == 1
        assert len(samples.log_likelihood_list) == 1
Exemplo n.º 12
0
def make_mapper_with_list():
    mapper = af.ModelMapper()
    mapper.list = [
        af.PriorModel(af.m.MockClassx2),
        af.PriorModel(af.m.MockClassx2)
    ]
    return mapper
Exemplo n.º 13
0
    def test__check_order_for_different_unit_values(self):

        mapper = af.ModelMapper(
            mock_cls_0=af.m.MockChildTuplex2,
            mock_cls_1=af.m.MockChildTuple,
            mock_cls_2=af.m.MockChildTuplex2,
        )

        mapper.mock_cls_0.tup.tup_0 = af.UniformPrior(0.0, 1.0)
        mapper.mock_cls_0.tup.tup_1 = af.UniformPrior(0.0, 1.0)
        mapper.mock_cls_0.one = af.UniformPrior(0.0, 1.0)
        mapper.mock_cls_0.two = af.UniformPrior(0.0, 1.0)

        mapper.mock_cls_1.tup.tup_0 = af.UniformPrior(0.0, 1.0)
        mapper.mock_cls_1.tup.tup_1 = af.UniformPrior(0.0, 1.0)

        mapper.mock_cls_2.tup.tup_0 = af.UniformPrior(0.0, 1.0)
        mapper.mock_cls_2.tup.tup_1 = af.UniformPrior(0.0, 1.0)
        mapper.mock_cls_2.one = af.UniformPrior(0.0, 1.0)
        mapper.mock_cls_2.two = af.UniformPrior(0.0, 1.0)

        model_map = mapper.instance_from_unit_vector(
            [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])

        assert model_map.mock_cls_0.tup == (0.1, 0.2)
        assert model_map.mock_cls_0.one == 0.3
        assert model_map.mock_cls_0.two == 0.4

        assert model_map.mock_cls_1.tup == (0.5, 0.6)

        assert model_map.mock_cls_2.tup == (0.7, 0.8)
        assert model_map.mock_cls_2.one == 0.9
        assert model_map.mock_cls_2.two == 1.0
Exemplo n.º 14
0
    def test_attribution(self):
        mapper = af.ModelMapper()

        mapper.mock_class = af.m.MockClassx2

        assert hasattr(mapper, "mock_class")
        assert hasattr(mapper.mock_class, "one")
    def test__check_order_for_different_unit_values(self):
        mapper = af.ModelMapper(
            profile_1=mock_real.EllProfile,
            profile_2=mock_real.SphProfile,
            profile_3=mock_real.EllProfile,
        )

        mapper.profile_1.centre.centre_0 = af.UniformPrior(0.0, 1.0)
        mapper.profile_1.centre.centre_1 = af.UniformPrior(0.0, 1.0)
        mapper.profile_1.axis_ratio = af.UniformPrior(0.0, 1.0)
        mapper.profile_1.phi = af.UniformPrior(0.0, 1.0)

        mapper.profile_2.centre.centre_0 = af.UniformPrior(0.0, 1.0)
        mapper.profile_2.centre.centre_1 = af.UniformPrior(0.0, 1.0)

        mapper.profile_3.centre.centre_0 = af.UniformPrior(0.0, 1.0)
        mapper.profile_3.centre.centre_1 = af.UniformPrior(0.0, 1.0)
        mapper.profile_3.axis_ratio = af.UniformPrior(0.0, 1.0)
        mapper.profile_3.phi = af.UniformPrior(0.0, 1.0)

        model_map = mapper.instance_from_unit_vector(
            [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0])

        assert model_map.profile_1.centre == (0.1, 0.2)
        assert model_map.profile_1.axis_ratio == 0.3
        assert model_map.profile_1.phi == 0.4

        assert model_map.profile_2.centre == (0.5, 0.6)

        assert model_map.profile_3.centre == (0.7, 0.8)
        assert model_map.profile_3.axis_ratio == 0.9
        assert model_map.profile_3.phi == 1.0
Exemplo n.º 16
0
    def test___image_dict(self, analysis_imaging_7x7):

        galaxies = af.ModelInstance()
        galaxies.lens = al.Galaxy(redshift=0.5)
        galaxies.source = al.Galaxy(redshift=1.0)

        instance = af.ModelInstance()
        instance.galaxies = galaxies

        result = ResultImaging(
            samples=mock.MockSamples(max_log_likelihood_instance=instance),
            model=af.ModelMapper(),
            analysis=analysis_imaging_7x7,
            search=None,
        )

        image_dict = result.image_galaxy_dict
        assert isinstance(image_dict[("galaxies", "lens")], np.ndarray)
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)

        result.instance.galaxies.lens = al.Galaxy(redshift=0.5)

        image_dict = result.image_galaxy_dict
        assert (image_dict[("galaxies", "lens")].native == np.zeros(
            (7, 7))).all()
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)
Exemplo n.º 17
0
 def __init__(self, most_likely_fit=None):
     self.most_likely_fit = most_likely_fit
     self.analysis = MockAnalysis()
     self.path_galaxy_tuples = []
     self.model = af.ModelMapper()
     self.mask = None
     self.positions = None
Exemplo n.º 18
0
    def test__samples_from_model(self):

        drawer = af.Drawer()
        drawer.paths = af.DirectoryPaths(
            path_prefix=path.join("non_linear", "drawer"))
        drawer.paths._identifier = "tag"

        model = af.ModelMapper(mock_class=af.m.MockClassx3)
        model.mock_class.one = af.LogUniformPrior(lower_limit=1e-8,
                                                  upper_limit=100.0)
        model.mock_class.two = af.LogUniformPrior(lower_limit=1e-8,
                                                  upper_limit=100.0)
        model.mock_class.three = af.LogUniformPrior(lower_limit=1e-8,
                                                    upper_limit=100.0)

        samples = drawer.samples_from(model=model)

        assert isinstance(samples.parameter_lists, list)
        assert isinstance(samples.parameter_lists[0], list)
        assert isinstance(samples.log_likelihood_list, list)
        assert isinstance(samples.log_prior_list, list)
        assert isinstance(samples.log_posterior_list, list)

        assert samples.parameter_lists[0] == pytest.approx(
            [49.507679, 49.177471, 14.76753], 1.0e-4)

        assert samples.log_likelihood_list[0] == pytest.approx(
            -2763.925766, 1.0e-4)
        assert samples.log_posterior_list[0] == pytest.approx(
            -2763.817517, 1.0e-4)
        assert samples.weight_list[0] == 1.0

        assert len(samples.parameter_lists) == 3
        assert len(samples.log_likelihood_list) == 3
Exemplo n.º 19
0
    def test__samples_from_model(self):

        emcee = af.Emcee()
        emcee.paths = af.DirectoryPaths(
            path_prefix=path.join("non_linear", "emcee"))
        emcee.paths._identifier = "tag"

        model = af.ModelMapper(mock_class=af.m.MockClassx4)
        model.mock_class.two = af.LogUniformPrior(lower_limit=1e-8,
                                                  upper_limit=10.0)

        samples = emcee.samples_from(model=model)

        assert isinstance(samples.parameter_lists, list)
        assert isinstance(samples.parameter_lists[0], list)
        assert isinstance(samples.log_likelihood_list, list)
        assert isinstance(samples.log_prior_list, list)
        assert isinstance(samples.log_posterior_list, list)
        assert isinstance(samples.weight_list, list)

        assert samples.parameter_lists[0] == pytest.approx(
            [0.173670, 0.162607, 3095.28, 0.62104], 1.0e-4)
        assert samples.log_likelihood_list[0] == pytest.approx(
            -17257775239.32677, 1.0e-4)
        assert samples.log_prior_list[0] == pytest.approx(
            1.6102016075510708, 1.0e-4)
        assert samples.weight_list[0] == pytest.approx(1.0, 1.0e-4)
        assert samples.total_steps == 1000
        assert samples.total_walkers == 10
        assert samples.auto_correlations.times[0] == pytest.approx(
            31.98507, 1.0e-4)
Exemplo n.º 20
0
    def test___image_dict(self, masked_imaging_7x7):

        galaxies = af.ModelInstance()
        galaxies.lens = al.Galaxy(redshift=0.5)
        galaxies.source = al.Galaxy(redshift=1.0)

        instance = af.ModelInstance()
        instance.galaxies = galaxies

        analysis = al.PhaseImaging.Analysis(
            masked_imaging=masked_imaging_7x7,
            settings=al.SettingsPhaseImaging(),
            results=mock.MockResults(),
            cosmology=cosmo.Planck15,
        )

        result = al.PhaseImaging.Result(
            samples=mock.MockSamples(max_log_likelihood_instance=instance),
            previous_model=af.ModelMapper(),
            analysis=analysis,
            search=None,
        )

        image_dict = result.image_galaxy_dict
        assert isinstance(image_dict[("galaxies", "lens")], np.ndarray)
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)

        result.instance.galaxies.lens = al.Galaxy(redshift=0.5)

        image_dict = result.image_galaxy_dict
        assert (image_dict[("galaxies", "lens")].native == np.zeros(
            (7, 7))).all()
        assert isinstance(image_dict[("galaxies", "source")], np.ndarray)
 def test_samples(self):
     db.Object.from_object(
         OptimizerSamples(
             af.ModelMapper(),
             None
         )
     )()
Exemplo n.º 22
0
    def test__offset_vector_from_input_vector(self):
        model = af.ModelMapper(mock_class_1=MockClassx4)

        parameters = [
            [1.1, 2.1, 3.1, 4.1],
            [1.0, 2.0, 3.0, 4.0],
            [1.0, 2.0, 3.0, 4.0],
            [1.0, 2.0, 3.0, 4.0],
            [1.0, 2.0, 3.0, 4.1],
        ]

        weight_list = [0.3, 0.2, 0.2, 0.2, 0.1]

        log_likelihood_list = list(
            map(lambda weight: 10.0 * weight, weight_list))

        samples = MockSamples(model=model,
                              samples=Sample.from_lists(
                                  model=model,
                                  parameter_lists=parameters,
                                  log_likelihood_list=log_likelihood_list,
                                  log_prior_list=10 * [0.0],
                                  weight_list=weight_list,
                              ))

        offset_values = samples.offset_vector_from_input_vector(
            input_vector=[1.0, 1.0, 2.0, 3.0])

        assert offset_values == pytest.approx([0.0, 1.0, 1.0, 1.025], 1.0e-4)
Exemplo n.º 23
0
def test__latex(samples):
    latex_results_at_sigma = samples_text.latex(samples=samples, sigma=3.0)

    assert r"one_label^{\rm{o}} = 1.00^{+0.20}_{-0.00} & " in latex_results_at_sigma
    assert r"two_label^{\rm{o}} = 2.00^{+0.20}_{-0.00}" in latex_results_at_sigma

    latex_results_at_sigma = samples_text.latex(samples=samples,
                                                sigma=3.0,
                                                include_quickmath=True)

    assert r"$one_label^{\rm{o}} = 1.00^{+0.20}_{-0.00}$ & " in latex_results_at_sigma
    assert r"$two_label^{\rm{o}} = 2.00^{+0.20}_{-0.00}$" in latex_results_at_sigma

    model = af.ModelMapper(mock_class=af.m.MockClassx2FormatExp)

    parameters = [[1.0, 200.0], [1.2, 200.0]]

    log_likelihood_list = [1.0, 0.0]

    samples_exp = af.m.MockSamples(model=model,
                                   sample_list=af.Sample.from_lists(
                                       parameter_lists=parameters,
                                       log_likelihood_list=log_likelihood_list,
                                       log_prior_list=[0.0, 0.0],
                                       weight_list=log_likelihood_list,
                                       model=model))

    latex_results_at_sigma = samples_text.latex(samples=samples_exp,
                                                sigma=3.0,
                                                include_quickmath=True)

    print(latex_results_at_sigma)

    assert r"$one_label^{\rm{o}} = 1.00^{+0.20}_{-0.00}$ & " in latex_results_at_sigma
    assert r"$one_label^{\rm{o}} = 1.00^{+0.20}_{-0.00}$ & $2.00^{+0.00}_{-0.00} \times 10^{2}$" in latex_results_at_sigma
Exemplo n.º 24
0
    def test__log_prior_list_and_max_log_posterior_vector_and_instance(self):
        model = af.ModelMapper(mock_class_1=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 = MockSamples(
            model=model,
            samples=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.log_posterior_list == [2.0, 4.0, 6.0, 10.0, 11.0]

        assert samples.max_log_posterior_vector == [21.0, 22.0, 23.0, 24.0]

        instance = samples.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
Exemplo n.º 25
0
    def test__unconverged_sample_size__uses_value_unless_fewer_samples(self):
        model = af.ModelMapper(mock_class_1=MockClassx4)

        log_likelihood_list = 4 * [0.0] + [1.0]
        weight_list = 4 * [0.0] + [1.0]

        samples = MockSamples(
            model=model,
            samples=Sample.from_lists(
                model=model,
                parameter_lists=5 * [[]],
                log_likelihood_list=log_likelihood_list,
                log_prior_list=[1.0, 1.0, 1.0, 1.0, 1.0],
                weight_list=weight_list,
            ),
            unconverged_sample_size=2,
        )

        assert samples.pdf_converged is False
        assert samples.unconverged_sample_size == 2

        samples = MockSamples(
            model=model,
            samples=Sample.from_lists(
                model=model,
                parameter_lists=5 * [[]],
                log_likelihood_list=log_likelihood_list,
                log_prior_list=[1.0, 1.0, 1.0, 1.0, 1.0],
                weight_list=weight_list,
            ),
            unconverged_sample_size=6,
        )

        assert samples.pdf_converged is False
        assert samples.unconverged_sample_size == 5
Exemplo n.º 26
0
    def test__unconverged__median_pdf_vector(self):
        parameters = [
            [1.0, 2.0],
            [1.0, 2.0],
            [1.0, 2.0],
            [1.0, 2.0],
            [1.0, 2.0],
            [1.0, 2.0],
            [1.0, 2.0],
            [1.0, 2.0],
            [1.1, 2.1],
            [0.9, 1.9],
        ]

        log_likelihood_list = 9 * [0.0] + [1.0]
        weight_list = 9 * [0.0] + [1.0]

        model = af.ModelMapper(mock_class=MockClassx2)
        samples = MockSamples(model=model,
                              samples=Sample.from_lists(
                                  model=model,
                                  parameter_lists=parameters,
                                  log_likelihood_list=log_likelihood_list,
                                  log_prior_list=10 * [0.0],
                                  weight_list=weight_list,
                              ))

        assert samples.pdf_converged is False

        median_pdf_vector = samples.median_pdf_vector

        assert median_pdf_vector[0] == pytest.approx(0.9, 1.0e-4)
        assert median_pdf_vector[1] == pytest.approx(1.9, 1.0e-4)
Exemplo n.º 27
0
    def test__instance_from_sample_index(self):
        model = af.ModelMapper(mock_class=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 = MockSamples(
            model=model,
            samples=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.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.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
Exemplo n.º 28
0
    def test__gaussian_priors(self):
        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.ModelMapper(mock_class=MockClassx4)
        samples = MockSamples(
            model=model,
            samples=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.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)
Exemplo n.º 29
0
    def test_create_instance(self):
        mapper = af.ModelMapper()
        mapper.complex = af.m.MockComplexClass

        instance = mapper.instance_from_unit_vector([1.0, 0.0])

        assert instance.complex.simple.one == 1.0
        assert instance.complex.simple.two == 0.0
Exemplo n.º 30
0
    def test_with_tuple(self):
        mm = af.ModelMapper()
        mm.tuple = (0, 1)

        assert (
            mm.info ==
            "tuple                                                                                     (0, 1)"
        )