Skip to content

Commit 849285a

Browse files
committed
Added CircularGridDistribution
1 parent f974d5e commit 849285a

1 file changed

Lines changed: 43 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import unittest
2+
import numpy as np
3+
from pyrecest.distributions.circle.circular_grid_distribution import CircularGridDistribution
4+
from pyrecest.distributions import VonMisesDistribution, WrappedNormalDistribution
5+
6+
class CircularGridDistributionTest(unittest.TestCase):
7+
8+
@staticmethod
9+
def _test_grid_conversion(dist, coeffs, enforceNonnegative, tolerance):
10+
figd = CircularGridDistribution.from_distribution(dist, coeffs, enforce_pdf_nonnegative=enforceNonnegative)
11+
# Test grid values
12+
xvals = np.linspace(0, 2*np.pi, coeffs, endpoint=False)
13+
np.testing.assert_allclose(figd.pdf(xvals), dist.pdf(xvals), atol=tolerance)
14+
# Test approximation of pdf
15+
xvals = np.arange(-2 * np.pi, 3 * np.pi, 0.01)
16+
np.testing.assert_allclose(figd.pdf(xvals), dist.pdf(xvals), atol=tolerance)
17+
18+
def test_VMToGridId(self):
19+
mu = 0.4
20+
for kappa in np.arange(.1, 2.1, .1):
21+
dist = VonMisesDistribution(mu, kappa)
22+
self._test_grid_conversion(dist, 101, False, 1E-8)
23+
24+
def test_VMToGridSqrt(self):
25+
mu = 0.5
26+
for kappa in np.arange(.1, 2.1, .1):
27+
dist = VonMisesDistribution(mu, kappa)
28+
self._test_grid_conversion(dist, 101, True, 1E-8)
29+
30+
def test_WNToGridId(self):
31+
mu = 0.8
32+
for sigma in np.arange(.2, 2.1, .1):
33+
dist = WrappedNormalDistribution(mu, sigma)
34+
self._test_grid_conversion(dist, 101, False, 1E-8)
35+
36+
def test_WNToGridSqrt(self):
37+
mu = 0.9
38+
for sigma in np.arange(.2, 2.1, .1):
39+
dist = WrappedNormalDistribution(mu, sigma)
40+
self._test_grid_conversion(dist, 101, True, 1E-8)
41+
42+
if __name__ == "__main__":
43+
unittest.main()

0 commit comments

Comments
 (0)