Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
import unittest
import mock
import numpy as np
import bilby.gw.sampler.proposal
from bilby.core import prior
from bilby.core.sampler import proposal
class TestSkyLocationWanderJump(unittest.TestCase):
def setUp(self):
self.priors = prior.PriorDict(
dict(
ra=prior.Uniform(minimum=0.0, maximum=2 * np.pi, boundary="periodic"),
dec=prior.Uniform(minimum=0.0, maximum=np.pi, boundary="reflective"),
)
)
self.jump_proposal = bilby.gw.sampler.proposal.SkyLocationWanderJump(
priors=self.priors
)
def tearDown(self):
del self.priors
del self.jump_proposal
def test_jump_proposal_call_without_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)
for key, value in new_sample.items():
self.assertAlmostEqual(expected[key], value)
m.assert_called_with(0, 1.0 / 2 / np.pi)
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)
class TestCorrelatedPolarisationPhaseJump(unittest.TestCase):
def setUp(self):
self.priors = prior.PriorDict(
dict(
phase=prior.Uniform(minimum=0.0, maximum=2 * np.pi),
psi=prior.Uniform(minimum=0.0, maximum=np.pi),
)
)
self.jump_proposal = bilby.gw.sampler.proposal.CorrelatedPolarisationPhaseJump(
priors=self.priors
)
def tearDown(self):
del self.priors
del self.jump_proposal
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))
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))
class TestPolarisationPhaseJump(unittest.TestCase):
def setUp(self):
self.priors = prior.PriorDict(
dict(
phase=prior.Uniform(minimum=0.0, maximum=2 * np.pi),
psi=prior.Uniform(minimum=0.0, maximum=np.pi),
)
)
self.jump_proposal = bilby.gw.sampler.proposal.PolarisationPhaseJump(
priors=self.priors
)
def tearDown(self):
del self.priors
del self.jump_proposal
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))
class TestDrawFlatPrior(unittest.TestCase):
def setUp(self):
self.priors = prior.PriorDict(
dict(
phase=prior.Uniform(minimum=0.0, maximum=2 * np.pi),
psi=prior.Cosine(minimum=0.0, maximum=np.pi),
)
)
self.jump_proposal = proposal.DrawFlatPrior(priors=self.priors)
def tearDown(self):
del self.priors
del self.jump_proposal
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))
if __name__ == "__main__":
unittest.main()