Example #1
0
    def test_cauchy_prior(self):
        # Test two specific function values
        p1 = pints.CauchyLogPrior(0, 10)
        self.assertEqual(p1([0]), -3.447314978843446)
        p2 = pints.CauchyLogPrior(10, 5)
        self.assertTrue(np.abs(p2([10]) + 2.7541677982835) < 0.001)
        p3 = pints.CauchyLogPrior(-3, 3.5)
        self.assertAlmostEqual(p3([1.4]), -3.3454404435815586)

        # Test exceptions
        self.assertRaises(ValueError, pints.CauchyLogPrior, 0, 0)
        self.assertRaises(ValueError, pints.CauchyLogPrior, 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.CauchyLogPrior(10, 5)
        val = p([-3.3])
        val1, dp = p.evaluateS1([-3.3])
        self.assertEqual(val, val1)
        self.assertAlmostEqual(dp[0], 0.13175491604338996, places=6)
Example #2
0
    def test_cauchy_prior_sampling(self):
        p1 = pints.CauchyLogPrior(0, 1000)
        self.assertEqual(len(p1.sample()), 1)
        self.assertEqual(len(p1.sample(100)), 100)

        p1 = pints.CauchyLogPrior(-4.7, 10)
        n = 1000000
        v_samples = p1.sample(n)
        self.assertTrue(np.abs(np.median(v_samples) - -4.695) < 0.1)
Example #3
0
    def test_cauchy_prior(self):
        # Test two specific function values
        p1 = pints.CauchyLogPrior(0, 10)
        self.assertEqual(p1([0]), -3.447314978843446)
        p2 = pints.CauchyLogPrior(10, 5)
        self.assertTrue(np.abs(p2([10]) + 2.7541677982835) < 0.001)

        # Test exceptions
        self.assertRaises(ValueError, pints.CauchyLogPrior, 0, 0)
        self.assertRaises(ValueError, pints.CauchyLogPrior, 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)
Example #4
0
    def __init__(self, location, scale):
        # Test inputs
        if float(scale) <= 0:
            raise ValueError('Scale must be positive')

        self._location = location
        self._scale = scale
        self._cauchy = pints.CauchyLogPrior(location=self._location,
                                            scale=self._scale)

        # Cache constants
        self._norm_factor = -np.log(np.arctan(location / scale) / np.pi + 0.5)
Example #5
0
 def test_cauchy_cdf_icdf(self):
     p = pints.CauchyLogPrior(-3, 2)
     self.assertAlmostEqual(p.cdf(5.5), 0.92644155602673783)
     self.assertAlmostEqual(p.icdf(0.1), -9.1553670743505062)
Example #6
0
 def test_cauchy_prior_sampling(self):
     # Aren't many tests for Cauchy distributions
     # because they have no mean or variance!
     p1 = pints.CauchyLogPrior(0, 1000)
     self.assertEqual(len(p1.sample()), 1)
     self.assertEqual(len(p1.sample(100)), 100)