Exemple #1
0
    def test__samples_in_test_model(self):

        model = af.PriorModel(af.m.MockClassx4)
        model.one = af.UniformPrior(lower_limit=0.099, upper_limit=0.101)
        model.two = af.UniformPrior(lower_limit=0.199, upper_limit=0.201)
        model.three = af.UniformPrior(lower_limit=0.299, upper_limit=0.301)
        model.four = af.UniformPrior(lower_limit=0.399, upper_limit=0.401)

        initializer = af.InitializerPrior()

        unit_parameter_lists, parameter_lists, figure_of_merit_list = initializer.samples_in_test_mode(
            total_points=2,
            model=model,
        )

        assert 0.0 < unit_parameter_lists[0][0] < 1.0
        assert 0.0 < unit_parameter_lists[1][0] < 1.0
        assert 0.0 < unit_parameter_lists[0][1] < 1.0
        assert 0.0 < unit_parameter_lists[1][1] < 1.0
        assert 0.0 < unit_parameter_lists[0][2] < 1.0
        assert 0.0 < unit_parameter_lists[1][2] < 1.0
        assert 0.0 < unit_parameter_lists[0][3] < 1.0
        assert 0.0 < unit_parameter_lists[1][3] < 1.0

        assert 0.099 < parameter_lists[0][0] < 0.101
        assert 0.099 < parameter_lists[1][0] < 0.101
        assert 0.199 < parameter_lists[0][1] < 0.201
        assert 0.199 < parameter_lists[1][1] < 0.201
        assert 0.299 < parameter_lists[0][2] < 0.301
        assert 0.299 < parameter_lists[1][2] < 0.301
        assert 0.399 < parameter_lists[0][3] < 0.401
        assert 0.399 < parameter_lists[1][3] < 0.401

        assert figure_of_merit_list == [-1.0e99, -1.0e99]
    def test_different_prior_width(self, grid_search, mapper):
        mapper.component.one_tuple.one_tuple_0 = af.UniformPrior(0.0, 2.0)
        mappers = list(
            grid_search.model_mappers(
                grid_priors=[mapper.component.one_tuple.one_tuple_0], model=mapper
            )
        )

        assert len(mappers) == 10

        assert mappers[0].component.one_tuple.one_tuple_0.lower_limit == 0.0
        assert mappers[0].component.one_tuple.one_tuple_0.upper_limit == 0.2

        assert mappers[-1].component.one_tuple.one_tuple_0.lower_limit == 1.8
        assert mappers[-1].component.one_tuple.one_tuple_0.upper_limit == 2.0

        mapper.component.one_tuple.one_tuple_0 = af.UniformPrior(1.0, 1.5)
        mappers = list(
            grid_search.model_mappers(
                mapper, grid_priors=[mapper.component.one_tuple.one_tuple_0]
            )
        )

        assert len(mappers) == 10

        assert mappers[0].component.one_tuple.one_tuple_0.lower_limit == 1.0
        assert mappers[0].component.one_tuple.one_tuple_0.upper_limit == 1.05

        assert mappers[-1].component.one_tuple.one_tuple_0.lower_limit == 1.45
        assert mappers[-1].component.one_tuple.one_tuple_0.upper_limit == 1.5
Exemple #3
0
    def test__prior__samples_sample_priors(self):

        model = af.PriorModel(af.m.MockClassx4)
        model.one = af.UniformPrior(lower_limit=0.099, upper_limit=0.101)
        model.two = af.UniformPrior(lower_limit=0.199, upper_limit=0.201)
        model.three = af.UniformPrior(lower_limit=0.299, upper_limit=0.301)
        model.four = af.UniformPrior(lower_limit=0.399, upper_limit=0.401)

        initializer = af.InitializerPrior()

        unit_parameter_lists, parameter_lists, figure_of_merit_list = initializer.samples_from_model(
            total_points=2, model=model, fitness_function=MockFitness())

        assert 0.0 < unit_parameter_lists[0][0] < 1.0
        assert 0.0 < unit_parameter_lists[1][0] < 1.0
        assert 0.0 < unit_parameter_lists[0][1] < 1.0
        assert 0.0 < unit_parameter_lists[1][1] < 1.0
        assert 0.0 < unit_parameter_lists[0][2] < 1.0
        assert 0.0 < unit_parameter_lists[1][2] < 1.0
        assert 0.0 < unit_parameter_lists[0][3] < 1.0
        assert 0.0 < unit_parameter_lists[1][3] < 1.0

        assert 0.099 < parameter_lists[0][0] < 0.101
        assert 0.099 < parameter_lists[1][0] < 0.101
        assert 0.199 < parameter_lists[0][1] < 0.201
        assert 0.199 < parameter_lists[1][1] < 0.201
        assert 0.299 < parameter_lists[0][2] < 0.301
        assert 0.299 < parameter_lists[1][2] < 0.301
        assert 0.399 < parameter_lists[0][3] < 0.401
        assert 0.399 < parameter_lists[1][3] < 0.401

        assert figure_of_merit_list == [1.0, 1.0]
Exemple #4
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__result_derived_properties(self):
        lower_limit_lists = [[0.0, 0.0], [0.0, 0.5], [0.5, 0.0], [0.5, 0.5]]

        # noinspection PyTypeChecker
        grid_search_result = af.GridSearchResult(
            results=None,
            grid_priors=[
                af.UniformPrior(
                    lower_limit=-2.0,
                    upper_limit=2.0
                ),
                af.UniformPrior(
                    lower_limit=-3.0,
                    upper_limit=3.0
                )
            ],
            lower_limits_lists=lower_limit_lists,
        )

        assert grid_search_result.shape == (2, 2)
        assert grid_search_result.physical_step_sizes == (2.0, 3.0)
        assert grid_search_result.physical_centres_lists == [
            [-1.0, -1.5],
            [-1.0, 1.5],
            [1.0, -1.5],
            [1.0, 1.5],
        ]
        assert grid_search_result.physical_upper_limits_lists == [
            [0.0, 0.0],
            [0.0, 3.0],
            [2.0, 0.0],
            [2.0, 3.0],
        ]
Exemple #6
0
def test_collection():
    identifier = af.CollectionPriorModel(
        gaussian=af.PriorModel(Gaussian, centre=af.UniformPrior())).identifier
    assert identifier == af.CollectionPriorModel(
        gaussian=af.PriorModel(Gaussian, centre=af.UniformPrior())).identifier
    assert identifier != af.CollectionPriorModel(gaussian=af.PriorModel(
        Gaussian, centre=af.UniformPrior(upper_limit=0.5))).identifier
Exemple #7
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)
Exemple #8
0
def _test_gaussian():
    n_observations = 100
    x = np.arange(n_observations)
    y = make_data(Gaussian(centre=50.0, normalization=25.0, sigma=10.0), x)

    prior_model = af.PriorModel(
        Gaussian,
        # centre=af.GaussianPrior(mean=50, sigma=10),
        # normalization=af.GaussianPrior(mean=25, sigma=10),
        sigma=af.GaussianPrior(mean=10, sigma=10),
        centre=af.UniformPrior(lower_limit=30, upper_limit=70),
        normalization=af.UniformPrior(lower_limit=15, upper_limit=35),
        # sigma=af.UniformPrior(lower_limit=5, upper_limit=15),
    )

    factor_model = ep.AnalysisFactor(prior_model, analysis=Analysis(x=x, y=y))

    # optimiser = ep.LaplaceOptimiser(
    #     transform_cls=DiagonalMatrix
    # )
    optimiser = af.DynestyStatic()
    model = factor_model.optimise(optimiser)

    assert model.centre.mean == pytest.approx(50, rel=0.1)
    assert model.normalization.mean == pytest.approx(25, rel=0.1)
    assert model.sigma.mean == pytest.approx(10, rel=0.1)
    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
    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
Exemple #11
0
def test_model():
    identifier = af.PriorModel(af.Gaussian,
                               centre=af.UniformPrior()).identifier
    assert identifier == af.PriorModel(af.Gaussian,
                                       centre=af.UniformPrior()).identifier
    assert identifier != af.PriorModel(
        af.Gaussian, centre=af.UniformPrior(upper_limit=0.5)).identifier
Exemple #12
0
    def test__update_stellar_mass_priors_using_einstein_radius(self):

        grid = al.Grid2D.uniform(shape_native=(200, 200), pixel_scales=0.05)

        tracer = mock.MockTracer(einstein_radius=1.0, einstein_mass=4.0)
        fit = mock.MockFit(grid=grid)

        result = mock.MockResult(max_log_likelihood_tracer=tracer,
                                 max_log_likelihood_fit=fit)

        bulge_prior_model = af.PriorModel(al.lmp.SphericalSersic)

        bulge_prior_model.intensity = af.UniformPrior(lower_limit=0.99,
                                                      upper_limit=1.01)
        bulge_prior_model.effective_radius = af.UniformPrior(lower_limit=0.99,
                                                             upper_limit=1.01)
        bulge_prior_model.sersic_index = af.UniformPrior(lower_limit=2.99,
                                                         upper_limit=3.01)

        setup = al.SetupMassLightDark(bulge_prior_model=bulge_prior_model)

        setup.update_stellar_mass_priors_from_result(
            prior_model=bulge_prior_model,
            result=result,
            einstein_mass_range=[0.001, 10.0],
            bins=10,
        )

        assert setup.bulge_prior_model.mass_to_light_ratio.lower_limit == pytest.approx(
            0.00040519, 1.0e-1)
        assert setup.bulge_prior_model.mass_to_light_ratio.upper_limit == pytest.approx(
            4.051935, 1.0e-1)
Exemple #13
0
def test_prior():
    identifier = af.UniformPrior().identifier
    assert identifier == af.UniformPrior().identifier
    assert identifier != af.UniformPrior(
        lower_limit=0.5
    ).identifier
    assert identifier != af.UniformPrior(
        upper_limit=0.5
    ).identifier
        def customize_priors(self, results):

            ### Lens Subhalo, Adjust priors to physical masses (10^6 - 10^10) and concentrations (6-24)

            self.galaxies.subhalo.mass.kappa_s = af.UniformPrior(
                lower_limit=0.0005, upper_limit=0.2)
            self.galaxies.subhalo.mass.centre_0 = af.UniformPrior(
                lower_limit=-2.0, upper_limit=2.0)
            self.galaxies.subhalo.mass.centre_1 = af.UniformPrior(
                lower_limit=-2.0, upper_limit=2.0)
Exemple #15
0
def test_tuple_prior():
    centre = af.TuplePrior()
    centre.centre_0 = af.UniformPrior()
    centre.centre_1 = af.UniformPrior()

    model = af.Model(af.Gaussian, centre=centre)
    parameterization = model.parameterization
    assert parameterization == (
        'model                                                                                     Gaussian (N=4)'
    )
Exemple #16
0
        def customize_priors(self, results):

            self.galaxies.lens.sersic.centre_0 = 0.0
            self.galaxies.lens.sersic.centre_1 = 0.0
            self.galaxies.lens.sersic.axis_ratio = af.UniformPrior(
                lower_limit=-0.5, upper_limit=0.1)
            self.galaxies.lens.sersic.phi = 90.0
            self.galaxies.lens.sersic.intensity = af.UniformPrior(
                lower_limit=-0.5, upper_limit=0.1)
            self.galaxies.lens.sersic.effective_radius = 1.3
            self.galaxies.lens.sersic.sersic_index = 3.0
def test_model_order_no_complicated():
    model_1 = af.Model(af.Gaussian,
                       centre=1.0,
                       normalization=af.UniformPrior(0.0, 1.0))
    model_2 = af.Model(af.Gaussian,
                       centre=2.0,
                       normalization=af.UniformPrior(0.0, 0.5))
    model_3 = af.Model(af.Gaussian,
                       centre=2.0,
                       normalization=af.UniformPrior(0.0, 1.0))

    assert model_1.order_no < model_2.order_no < model_3.order_no
Exemple #18
0
def make_pipeline(name, folders, search=af.DynestyStatic()):

    lens = al.GalaxyModel(redshift=0.5, mass=al.mp.EllipticalIsothermal)

    lens.mass.centre_0 = af.UniformPrior(lower_limit=-0.01, upper_limit=0.01)
    lens.mass.centre_1 = af.UniformPrior(lower_limit=-0.01, upper_limit=0.01)
    lens.mass.einstein_radius = af.UniformPrior(lower_limit=1.55,
                                                upper_limit=1.65)

    source = al.GalaxyModel(redshift=1.0, light=al.lp.EllipticalSersic)

    source.light.centre_0 = af.UniformPrior(lower_limit=-0.01,
                                            upper_limit=0.01)
    source.light.centre_1 = af.UniformPrior(lower_limit=-0.01,
                                            upper_limit=0.01)
    source.light.intensity = af.UniformPrior(lower_limit=0.35,
                                             upper_limit=0.45)
    source.light.effective_radius = af.UniformPrior(lower_limit=0.45,
                                                    upper_limit=0.55)
    source.light.sersic_index = af.UniformPrior(lower_limit=0.9,
                                                upper_limit=1.1)

    class GridPhase(
            af.as_grid_search(phase_class=al.PhaseImaging, parallel=True)):
        @property
        def grid_priors(self):
            return [
                self.model.galaxies.subhalo.mass.centre_0,
                self.model.galaxies.subhalo.mass.centre_1,
            ]

    subhalo = al.GalaxyModel(redshift=0.5,
                             mass=al.mp.SphericalTruncatedNFWMCRLudlow)

    subhalo.mass.mass_at_200 = af.LogUniformPrior(lower_limit=1.0e6,
                                                  upper_limit=1.0e11)

    subhalo.mass.centre_0 = af.UniformPrior(lower_limit=-2.5, upper_limit=2.5)
    subhalo.mass.centre_1 = af.UniformPrior(lower_limit=-2.5, upper_limit=2.5)

    phase1 = GridPhase(
        phase_name="phase_1",
        folders=folders,
        galaxies=dict(lens=lens, subhalo=subhalo, source=source),
        search=search,
        settings=al.SettingsPhaseImaging(),
        number_of_steps=2,
    )

    return al.PipelineDataset(name, phase1)
Exemple #19
0
        def customize_priors(self, results):

            self.galaxies.lens.light.centre_0 = 0.0
            self.galaxies.lens.light.centre_1 = 0.0
            self.galaxies.lens.light.axis_ratio = results.from_phase(
                "phase_1").instance.lens.light.axis_ratio
            self.galaxies.lens.light.phi = results.from_phase(
                "phase_1").instance.lens.light.phi
            self.galaxies.lens.light.intensity = results.from_phase(
                "phase_1").instance.lens.light.intensity

            self.galaxies.lens.light.effective_radius = af.UniformPrior(
                lower_limit=0.0, upper_limit=4.0)
            self.galaxies.lens.light.sersic_index = af.UniformPrior(
                lower_limit=1.0, upper_limit=8.0)
Exemple #20
0
    def test__ball__samples_sample_centre_of_priors(self):

        model = af.PriorModel(af.m.MockClassx4)
        model.one = af.UniformPrior(lower_limit=0.0, upper_limit=1.0)
        model.two = af.UniformPrior(lower_limit=0.0, upper_limit=2.0)
        model.three = af.UniformPrior(lower_limit=0.0, upper_limit=3.0)
        model.four = af.UniformPrior(lower_limit=0.0, upper_limit=4.0)

        initializer = af.InitializerBall(lower_limit=0.4999,
                                         upper_limit=0.5001)

        unit_parameter_lists, parameter_lists, figure_of_merit_list = initializer.samples_from_model(
            total_points=2, model=model, fitness_function=MockFitness())

        assert 0.4999 < unit_parameter_lists[0][0] < 0.5001
        assert 0.4999 < unit_parameter_lists[1][0] < 0.5001
        assert 0.4999 < unit_parameter_lists[0][1] < 0.5001
        assert 0.4999 < unit_parameter_lists[1][1] < 0.5001
        assert 0.4999 < unit_parameter_lists[0][2] < 0.5001
        assert 0.4999 < unit_parameter_lists[1][2] < 0.5001
        assert 0.4999 < unit_parameter_lists[0][3] < 0.5001
        assert 0.4999 < unit_parameter_lists[1][3] < 0.5001

        assert 0.499 < parameter_lists[0][0] < 0.501
        assert 0.499 < parameter_lists[1][0] < 0.501
        assert 0.999 < parameter_lists[0][1] < 1.001
        assert 0.999 < parameter_lists[1][1] < 1.001
        assert 1.499 < parameter_lists[0][2] < 1.501
        assert 1.499 < parameter_lists[1][2] < 1.501
        assert 1.999 < parameter_lists[0][3] < 2.001
        assert 1.999 < parameter_lists[1][3] < 2.001

        initializer = af.InitializerBall(lower_limit=0.7999,
                                         upper_limit=0.8001)

        unit_parameter_lists, parameter_lists, figure_of_merit_list = initializer.samples_from_model(
            total_points=2, model=model, fitness_function=MockFitness())

        assert 0.799 < parameter_lists[0][0] < 0.801
        assert 0.799 < parameter_lists[1][0] < 0.801
        assert 1.599 < parameter_lists[0][1] < 1.601
        assert 1.599 < parameter_lists[1][1] < 1.601
        assert 2.399 < parameter_lists[0][2] < 2.401
        assert 2.399 < parameter_lists[1][2] < 2.401
        assert 3.199 < parameter_lists[0][3] < 3.201
        assert 3.199 < parameter_lists[1][3] < 3.201

        assert figure_of_merit_list == 2 * [1.0]
Exemple #21
0
def make_model():
    return af.Model(
        Gaussian,
        centre=af.UniformPrior(
            upper_limit=2.0
        )
    )
Exemple #22
0
def test_graph(hierarchical_factor):
    graph = g.FactorGraphModel(hierarchical_factor)
    assert len(graph.model_factors) == 1

    hierarchical_factor.add_drawn_variable(
        af.UniformPrior(lower_limit=0.0, upper_limit=1.0))
    assert len(graph.model_factors) == 2
Exemple #23
0
    def test_simple(self):
        uniform_prior = af.UniformPrior(0.0, 1.0)
        assert uniform_prior.mean == 0.5

        uniform_prior.mean = 1.0
        assert uniform_prior.lower_limit == 0.5
        assert uniform_prior.upper_limit == 1.5
Exemple #24
0
    def test_higher(self):
        uniform_prior = af.UniformPrior(1.0, 2.0)
        assert uniform_prior.mean == 1.5

        uniform_prior.mean = 2.0
        assert uniform_prior.lower_limit == 1.5
        assert uniform_prior.upper_limit == 2.5
Exemple #25
0
def set_upper_limit_of_pixelization_pixels_prior(hyper_model: af.Collection,
                                                 result: af.Result):
    """
    If the pixelization being fitted in the hyper-model fit is a `VoronoiBrightnessImage` pixelization, this function
    sets the upper limit of its `pixels` prior to the number of data points in the mask.

    This ensures the KMeans algorithm does not raise an exception due to having fewer data points than source pixels.

    Parameters
    ----------
    hyper_model : Collection
        The hyper model used by the hyper-fit, which models hyper-components like a `Pixelization` or `HyperGalaxy`'s.
    result
        The result of a previous `Analysis` search whose maximum log likelihood model forms the basis of the hyper model.
    """

    if hasattr(hyper_model, "galaxies"):

        pixels_in_mask = result.analysis.dataset.mask.pixels_in_mask

        if pixels_in_mask < hyper_model.galaxies.source.pixelization.pixels.upper_limit:

            if (hyper_model.galaxies.source.pixelization.cls is
                    aa.pix.VoronoiBrightnessImage):

                lower_limit = (hyper_model.galaxies.source.pixelization.pixels.
                               lower_limit)

                hyper_model.galaxies.source.pixelization.pixels = af.UniformPrior(
                    lower_limit=lower_limit, upper_limit=pixels_in_mask)
Exemple #26
0
    def test_prior_model(self, prior_model):
        prior_model_copy = deepcopy(prior_model)
        assert prior_model == prior_model_copy

        prior_model_copy.centre_0 = af.UniformPrior()

        assert prior_model != prior_model_copy
 def test_prior_with_limits(self):
     prior = af.UniformPrior(
         lower_limit=0,
         upper_limit=10,
     ).with_limits(3, 5)
     assert prior.lower_limit == 3
     assert prior.upper_limit == 5
Exemple #28
0
def test_projected_model():
    model = af.Model(
        af.Gaussian,
        centre=af.UniformPrior()
    )
    samples = af.Samples(
        model,
        [
            af.Sample(
                -1.0, -1.0,
                weight=random(),
                kwargs={
                    ("centre",): random(),
                    ("normalization",): random(),
                    ("sigma",): random(),
                }
            )
            for _ in range(100)
        ]
    )
    result = af.Result(
        samples=samples,
        model=model
    )
    projected_model = result.projected_model

    assert projected_model.prior_count == 3
    assert projected_model.centre is not model.centre
    assert projected_model.centre.id == model.centre.id
    assert isinstance(
        projected_model.centre,
        af.UniformPrior
    )
Exemple #29
0
    def make_factor_model(centre: float,
                          sigma: float,
                          optimiser=None) -> ep.AnalysisFactor:
        y = make_data(
            Gaussian(centre=centre, normalization=normalization, sigma=sigma),
            x)

        prior_model = af.PriorModel(
            Gaussian,
            centre=af.UniformPrior(lower_limit=10, upper_limit=100),
            normalization=normalization_prior,
            sigma=af.UniformPrior(lower_limit=0, upper_limit=20),
        )

        return ep.AnalysisFactor(prior_model,
                                 analysis=Analysis(x=x, y=y),
                                 optimiser=optimiser)
Exemple #30
0
    def test_list_prior_model(self, prior_model):
        list_prior_model = af.CollectionPriorModel([prior_model])
        list_prior_model_copy = deepcopy(list_prior_model)
        assert list_prior_model == list_prior_model_copy

        list_prior_model[0].centre_0 = af.UniformPrior()

        assert list_prior_model != list_prior_model_copy