def test_map_hierarchical_transformed_prior(self): model = SimpleModel() inner = prior.TransformedPrior(np.sqrt, prior.Uniform(0, 2)) full = prior.TransformedPrior(np.maximum, [inner, prior.Uniform(0, 1)]) position = len(model._parameters) parameter_map = model._convert_to_map(full) placeholder = ['_parameter_{}'.format(position + i) for i in range(2)] submap = [transformed_prior, [np.sqrt, [placeholder[0]]]] expected = [transformed_prior, [np.maximum, [submap, placeholder[1]]]]
def test_read_hierarchical_transformed(self): inner_map = [transformed_prior, [np.sqrt, ['_parameter_0']]] parameter_map = [transformed_prior, [np.maximum, ['_parameter_1', inner_map]]] priors = [prior.Uniform(0, 1), prior.Uniform(1, 2)] expected_base = [prior.Uniform(1, 2), prior.TransformedPrior(np.sqrt, prior.Uniform(0, 1))] expected_full = prior.TransformedPrior(np.maximum, expected_base) self.assertEqual(read_map(parameter_map, priors), expected_full) values = [25, 7] self.assertEqual(read_map(inner_map, values), 5) self.assertEqual(read_map(parameter_map, values), 7)
def test_map_transformed_prior(self): model = SimpleModel() transformed = prior.TransformedPrior(np.sqrt, prior.Uniform(0, 2), name='sqrt') position = len(model._parameters) parameter_map = model._convert_to_map(transformed) placeholder = "_parameter_{}".format(position) expected = [transformed_prior, [np.sqrt, [placeholder]]] self.assertEqual(parameter_map, expected)
def test_transformed_priors_are_tied(self): base_prior = prior.Uniform(0, 2, name='x') transformed = prior.TransformedPrior(np.sqrt, base_prior, name='y') scatterer = Sphere(n=1.5, r=0.5, center=[base_prior, transformed, prior.Uniform(5, 10)]) model = AlphaModel(scatterer) expected_priors = [base_prior, prior.Uniform(5, 10)] expected_names = ['x', 'center.2'] self.assertEqual(model._parameters, expected_priors) self.assertEqual(model._parameter_names, expected_names)
def test_read_transformed_prior_map_priors(self): parameter_map = [transformed_prior, [np.sqrt, ['_parameter_0']]] priors = [prior.Uniform(0, 1)] expected = prior.TransformedPrior(np.sqrt, priors) self.assertEqual(read_map(parameter_map, priors), expected)
def test_read_complex_map_priors(self): parameter_map = [transformed_prior, [complex, ['_parameter_0', '_parameter_1']]] priors = [prior.Uniform(0, 1), prior.Uniform(1, 2)] expected = prior.TransformedPrior(complex, [priors[0], priors[1]]) self.assertEqual(read_map(parameter_map, priors), expected)
def test_map_transformed_prior_names(self): model = SimpleModel() base_prior = [prior.Uniform(0, 2, name='first'), prior.Uniform(1, 2)] transformed = {'trans': prior.TransformedPrior(np.maximum, base_prior)} parameter_map = model._convert_to_map(transformed) self.assertEqual(model._parameter_names[-2:], ['first', 'trans.1'])