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
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
def test_no_override(self): mapper = af.ModelMapper() mapper.one = af.PriorModel(af.m.MockClassx2) af.ModelMapper() assert mapper.one is not None
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
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([])
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)
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
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
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
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
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
def make_mapper_with_list(): mapper = af.ModelMapper() mapper.list = [ af.PriorModel(af.m.MockClassx2), af.PriorModel(af.m.MockClassx2) ] return mapper
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_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
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)
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
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
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)
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 ) )()
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)
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
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
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
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)
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
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)
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
def test_with_tuple(self): mm = af.ModelMapper() mm.tuple = (0, 1) assert ( mm.info == "tuple (0, 1)" )