예제 #1
0
 def test_jump_proposal_call(self):
     with mock.patch("numpy.random.normal") as m:
         m.return_value = 0.5
         sample = proposal.Sample(dict(reflective=0.0, periodic=0.0, default=0.0))
         new_sample = self.jump_proposal(sample)
         expected = proposal.Sample(dict(reflective=0.5, periodic=0.5, default=0.5))
         self.assertDictEqual(expected, new_sample)
예제 #2
0
 def test_jump_proposal_call_case_2(self):
     with mock.patch('random.random') as m:
         m.return_value = 0.7
         sample = proposal.Sample(dict(phase=0.2, psi=0.5))
         alpha = 0.7
         beta = 3.0 * np.pi * 0.7 - 2 * np.pi
         expected = proposal.Sample(dict(phase=0.5*(alpha-beta), psi=0.5*(alpha+beta)))
         self.assertEqual(expected, self.jump_proposal(sample))
예제 #3
0
 def test_jump_proposal_update_eigenvectors_1_d(self):
     coordinates = [proposal.Sample(dict(periodic=0.3)), proposal.Sample(dict(periodic=0.1))]
     with mock.patch('numpy.var') as m:
         m.return_value = 1
         self.jump_proposal.update_eigenvectors(coordinates)
         self.assertTrue(np.equal(np.array([1]), self.jump_proposal.eigen_values))
         self.assertTrue(np.equal(np.array([1]), self.jump_proposal.covariance))
         self.assertTrue(np.equal(np.array([[1.]]), self.jump_proposal.eigen_vectors))
예제 #4
0
 def test_jump_proposal_call_with_inverse_temperature(self):
     with mock.patch("random.gauss") as m:
         m.return_value = 1
         sample = proposal.Sample(dict(ra=0.2, dec=-0.5))
         expected = proposal.Sample(dict(ra=1.2, dec=0.5))
         new_sample = self.jump_proposal(sample, inverse_temperature=2.0)
         for key, value in new_sample.items():
             self.assertAlmostEqual(expected[key], value)
         m.assert_called_with(0, np.sqrt(1 / 2.0) / 2 / np.pi)
예제 #5
0
 def test_jump_proposal_call_case_1(self):
     with mock.patch("random.random") as m:
         m.return_value = 0.3
         sample = proposal.Sample(dict(phase=0.2, psi=0.5))
         alpha = 3.0 * np.pi * 0.3
         beta = 0.3
         expected = proposal.Sample(
             dict(phase=0.5 * (alpha - beta), psi=0.5 * (alpha + beta)))
         self.assertEqual(expected,
                          self.jump_proposal(sample, coordinates=None))
예제 #6
0
 def test_jump_proposal_call(self):
     with mock.patch('random.sample') as m:
         self.jump_proposal.random_number_generator = lambda: 2
         m.return_value = [proposal.Sample(dict(periodic=0.3, reflective=0.3, default=0.3)),
                           proposal.Sample(dict(periodic=0.1, reflective=0.1, default=0.1))]
         sample = proposal.Sample(dict(periodic=0.1, reflective=0.1, default=0.1))
         new_sample = self.jump_proposal(sample, coordinates=None)
         expected = proposal.Sample(dict(periodic=0.1, reflective=0.1, default=0.1))
         for key, value in new_sample.items():
             self.assertAlmostEqual(expected[key], value)
예제 #7
0
 def test_get_center_of_mass(self):
     samples = [
         proposal.Sample(
             dict(reflective=0.1 * i, periodic=0.1 * i, default=0.1 * i))
         for i in range(3)
     ]
     expected = proposal.Sample(
         dict(reflective=0.1, periodic=0.1, default=0.1))
     actual = self.jump_proposal.get_center_of_mass(samples)
     for key in samples[0].keys():
         self.assertAlmostEqual(expected[key], actual[key])
예제 #8
0
 def test_jump_proposal_update_eigenvectors_n_d(self):
     coordinates = [proposal.Sample(dict(periodic=0.3, reflective=0.3, default=0.3)),
                    proposal.Sample(dict(periodic=0.1, reflective=0.1, default=0.1))]
     with mock.patch('numpy.cov') as m:
         with mock.patch('numpy.linalg.eigh') as n:
             m.side_effect = lambda x: x
             n.return_value = 1, 2
             self.jump_proposal.update_eigenvectors(coordinates)
             self.assertTrue(np.array_equal(np.array([[0.3, 0.1], [0.3, 0.1], [0.3, 0.1]]), self.jump_proposal.covariance))
             self.assertEqual(1, self.jump_proposal.eigen_values)
             self.assertEqual(2, self.jump_proposal.eigen_vectors)
예제 #9
0
 def test_jump_proposal_call(self):
     with mock.patch('random.sample') as m:
         with mock.patch('random.gauss') as n:
             m.return_value = proposal.Sample(dict(periodic=0.2, reflective=0.2, default=0.2)),\
                              proposal.Sample(dict(periodic=0.3, reflective=0.3, default=0.3))
             n.return_value = 1
             sample = proposal.Sample(dict(periodic=0.1, reflective=0.1, default=0.1))
             expected = proposal.Sample(dict(periodic=0.2, reflective=0.2, default=0.2))
             new_sample = self.jump_proposal(sample, coordinates=None)
             for key, value in new_sample.items():
                 self.assertAlmostEqual(expected[key], value)
예제 #10
0
 def test_log_j_after_call(self):
     with mock.patch('random.uniform') as m1:
         with mock.patch('numpy.log') as m2:
             with mock.patch('numpy.exp') as m3:
                 m1.return_value = 1
                 m2.return_value = 1
                 m3.return_value = 1
                 coordinates = [proposal.Sample(dict(periodic=0.3, reflective=0.3, default=0.3)),
                                proposal.Sample(dict(periodic=0.3, reflective=0.3, default=0.3))]
                 sample = proposal.Sample(dict(periodic=0.2, reflective=0.2, default=0.2))
                 self.jump_proposal(sample=sample,
                                    coordinates=coordinates)
                 self.assertEqual(3, self.jump_proposal.log_j)
예제 #11
0
 def test_jump_proposal_call(self):
     with mock.patch('random.choice') as m:
         with mock.patch('random.uniform') as n:
             second_sample = proposal.Sample(dict(periodic=0.3, reflective=0.3, default=0.3))
             random_number = 0.5
             m.return_value = second_sample
             n.return_value = random_number
             sample = proposal.Sample(dict(periodic=0.1, reflective=0.1, default=0.1))
             new_sample = self.jump_proposal(sample, coordinates=None)
             coords = 0.3 - 0.2 * np.exp(random_number * np.log(self.jump_proposal.scale))
             expected = proposal.Sample(dict(periodic=coords, reflective=coords, default=coords))
             for key, value in new_sample.items():
                 self.assertAlmostEqual(expected[key], value)
예제 #12
0
 def test_jump_proposal_call(self):
     self.jump_proposal.update_eigenvectors = lambda x: None
     self.jump_proposal.eigen_values = np.array([1, np.nan, np.nan])
     self.jump_proposal.eigen_vectors = np.array([[0.1, np.nan, np.nan],
                                                  [0.4, np.nan, np.nan],
                                                  [0.7, np.nan, np.nan]])
     with mock.patch("random.randrange") as m:
         with mock.patch("random.gauss") as n:
             m.return_value = 0
             n.return_value = 1
             expected = proposal.Sample()
             expected["periodic"] = 0.2
             expected["reflective"] = 0.5
             expected["default"] = 0.8
             sample = proposal.Sample()
             sample["periodic"] = 0.1
             sample["reflective"] = 0.1
             sample["default"] = 0.1
             new_sample = self.jump_proposal(sample, coordinates=None)
             for key, value in new_sample.items():
                 self.assertAlmostEqual(expected[key], value)
예제 #13
0
 def test_multiply_sample(self):
     other = 2
     expected = proposal.Sample(dict(a=2, c=4))
     self.assertDictEqual(expected, self.sample * other)
예제 #14
0
 def test_subtract_sample(self):
     other = proposal.Sample(dict(a=2, c=5))
     expected = proposal.Sample(dict(a=-1, c=-3))
     self.assertDictEqual(expected, self.sample - other)
예제 #15
0
 def setUp(self):
     self.sample = proposal.Sample(dict(a=1, c=2))
예제 #16
0
 def test_jump_proposal_call(self):
     sample = proposal.Sample(dict(phase=0.2, psi=0.5))
     expected = proposal.Sample(dict(phase=0.2 + np.pi,
                                     psi=0.5 + np.pi / 2))
     self.assertEqual(expected, self.jump_proposal(sample))
예제 #17
0
 def test_jump_proposal_call(self):
     with mock.patch("bilby.core.prior.Uniform.sample") as m:
         m.return_value = 0.3
         sample = proposal.Sample(dict(phase=0.2, psi=0.5))
         expected = proposal.Sample(dict(phase=0.3, psi=0.3))
         self.assertEqual(expected, self.jump_proposal(sample))
예제 #18
0
 def test_add_sample(self):
     other = proposal.Sample(dict(a=2, c=5))
     expected = proposal.Sample(dict(a=3, c=7))
     self.assertDictEqual(expected, self.sample + other)