def test_prior(): p1 = Parameter('test_parameter', 1.0, min_value=-5.0, max_value=5.0, delta=0.2, desc='test', free=False, unit='MeV') my_prior = Uniform_prior() p1.prior = my_prior assert my_prior == p1.prior custom_prior = lambda x: x**2 with pytest.raises(NotCallableOrErrorInCall): p1.prior = custom_prior invalid_prior = lambda x, y: x * y with pytest.raises(NotCallableOrErrorInCall): p1.prior = invalid_prior # Test the set_uninformative_prior method p1.min_value = None p1.max_value = 100.0 with pytest.raises(ParameterMustHaveBounds): p1.set_uninformative_prior(Uniform_prior) p1.min_value = 0.0 p1.max_value = None with pytest.raises(ParameterMustHaveBounds): p1.set_uninformative_prior(Uniform_prior) p1.min_value = 0.0 p1.max_value = 100.0 p1.set_uninformative_prior(Uniform_prior) # Log-uniform cannot be used if minimum is 0.0 with pytest.raises(SettingOutOfBounds): p1.set_uninformative_prior(Log_uniform_prior) p1.min_value = 1.0 p1.set_uninformative_prior(Log_uniform_prior)
def test_remove_prior(): p1 = Parameter('test_parameter', 1.0, min_value=-5.0, max_value=5.0, delta=0.2, desc='test', free=False, unit='MeV') my_prior = Uniform_prior() p1.prior = my_prior assert p1.has_prior()==True # Now remove it p1.prior = None assert p1.has_prior()==False
def test_input_output_with_external_parameters(): mg = ModelGetter() m = mg.model # Create an external parameter fake_parameter = Parameter("external_parameter", 1.0, min_value=-1.0, max_value=1.0, free=True) # Link as equal (default) m.add_external_parameter(fake_parameter) # Save model temp_file = "__test.yml" m.save(temp_file, overwrite=True) # Now reload it again m_reloaded = load_model(temp_file) os.remove(temp_file) # Check that all sources have been recovered assert m_reloaded.sources.keys() == m.sources.keys() # Check that the external parameter have been recovered assert 'external_parameter' in m_reloaded # Remove external parameter m.remove_external_parameter("external_parameter") # Add a prior to the external parameter fake_parameter.prior = Uniform_prior() fake_parameter.value = -0.1 m.add_external_parameter(fake_parameter) # Save model temp_file = "__test.yml" m.save(temp_file, overwrite=True) # Now reload it again m_reloaded = load_model(temp_file) os.remove(temp_file) # Check that all sources have been recovered assert m_reloaded.sources.keys() == m.sources.keys() # Check that the external parameter have been recovered assert 'external_parameter' in m_reloaded assert m.external_parameter.value == m_reloaded.external_parameter.value