Пример #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_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])
Пример #3
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)
Пример #4
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.0]]), self.jump_proposal.eigen_vectors)
         )
Пример #5
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)
Пример #6
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)
Пример #7
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)
Пример #8
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)
Пример #9
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)
Пример #10
0
 def test_multiply_sample(self):
     other = 2
     expected = proposal.Sample(dict(a=2, c=4))
     self.assertDictEqual(expected, self.sample * other)
Пример #11
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)
Пример #12
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)
Пример #13
0
 def setUp(self):
     self.sample = proposal.Sample(dict(a=1, c=2))