def test_half_cauchy_prior(self): # Test two specific function values p1 = pints.HalfCauchyLogPrior(0, 10) self.assertEqual(p1([0]), -float('Inf')) self.assertAlmostEqual(p1([10]), -3.447314978843445) p2 = pints.HalfCauchyLogPrior(10, 5) self.assertAlmostEqual(p2([10]), -2.594487638427916) # Test exceptions self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 0, 0) self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 10, -1) # Test means self.assertTrue(np.isnan(p1.mean())) self.assertTrue(np.isnan(p2.mean())) # Test other function calls self.assertEqual(p1.n_parameters(), 1) self.assertEqual(p2.n_parameters(), 1) # Test sensitivities p = pints.HalfCauchyLogPrior(-3, 5) val = p([3.3]) val1, dp = p.evaluateS1([3.3]) self.assertEqual(val, val1) self.assertAlmostEqual(dp[0], -0.19477508115628384, places=6)
def test_half_cauchy_prior_sampling(self): p1 = pints.HalfCauchyLogPrior(0, 1000) self.assertEqual(len(p1.sample()), 1) n = 1000 v_samples = p1.sample(n) self.assertEqual(len(v_samples), n) self.assertTrue(np.all(v_samples > 0)) # test medians p1 = pints.HalfCauchyLogPrior(-3, 10) n = 1000000 v_samples = p1.sample(n) self.assertTrue(np.abs(np.median(v_samples) - 10.45) < 0.1)
def __init__(self, centered=True): self._n_parameters = 10 self._y_j = [28, 8, -3, 7, -1, 1, 18, 12] self._sigma_j = [15, 10, 16, 11, 9, 11, 10, 18] # priors self._mu_log_pdf = pints.GaussianLogPrior(0, 5) self._tau_log_pdf = pints.HalfCauchyLogPrior(0, 5) self._centered = bool(centered)
def test_half_cauchy_prior_sampling(self): # Aren't many tests for Cauchy distributions # because they have no mean or variance! p1 = pints.HalfCauchyLogPrior(0, 1000) self.assertEqual(len(p1.sample()), 1) n = 1000 v_samples = p1.sample(n) self.assertEqual(len(v_samples), n) self.assertTrue(np.all(v_samples > 0))
def test_half_cauchy_prior(self): # Test two specific function values p1 = pints.HalfCauchyLogPrior(0, 10) self.assertEqual(p1([0]), -float('Inf')) self.assertAlmostEqual(p1([10]), -3.447314978843445) p2 = pints.HalfCauchyLogPrior(10, 5) self.assertAlmostEqual(p2([10]), -2.594487638427916) # Test exceptions self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 0, 0) self.assertRaises(ValueError, pints.HalfCauchyLogPrior, 10, -1) # Test means self.assertTrue(np.isnan(p1.mean())) self.assertTrue(np.isnan(p2.mean())) # Test other function calls self.assertEqual(p1.n_parameters(), 1) self.assertEqual(p2.n_parameters(), 1)
def test_half_cauchy_cdf_icdf(self): p1 = pints.HalfCauchyLogPrior(-3, 4.5) self.assertAlmostEqual(p1.cdf(5.5), 0.504576372137924) self.assertAlmostEqual(p1.icdf(0.72), 12.937927031237367)