-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_ssps.py
105 lines (86 loc) · 3.65 KB
/
test_ssps.py
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
import numpy as np
import scipy
import pytest
from ssp_bayes_opt import sspspace
def make_hex_space(domain_dim=2, ls=1, bounds = 15*np.array([[-1,1],[-1,1]])):
ssp_space = sspspace.HexagonalSSPSpace(
domain_dim,
ssp_dim=151,
scale_min=2*np.pi/np.sqrt(6) - 0.5,
scale_max=2*np.pi/np.sqrt(6) + 0.5,
domain_bounds=bounds,
length_scale=ls)
return ssp_space
def make_rand_space(domain_dim=2, ls=1, bounds = 15*np.array([[-1,1],[-1,1]])):
ssp_space = sspspace.RandomSSPSpace(
domain_dim,
ssp_dim=151,
domain_bounds=bounds,
length_scale=ls)
return ssp_space
def test_constructor():
ssp_space = make_hex_space()
assert True
def test_encoder():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
ssp_space = make_hex_space()
S0 = ssp_space.encode(test_x)
assert S0.shape == (1, ssp_space.ssp_dim)
assert np.inner(S0,S0).size == 1
assert np.isclose(np.inner(S0,S0), 1)
def test_hex_from_set_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
ssp_space = make_hex_space()
S0 = ssp_space.encode(test_x)
assert S0.shape == (1, ssp_space.ssp_dim)
recov_x = ssp_space.decode(S0, method='from-set', num_samples=300)
assert np.all(np.isclose(test_x, recov_x, atol=1e-1))
def test_rand_from_set_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
rand_ssp_space = make_rand_space()
S0 = rand_ssp_space.encode(test_x)
assert S0.shape == (1, rand_ssp_space.ssp_dim)
recov_x = rand_ssp_space.decode(S0, method='from-set', num_samples=300)
assert np.all(np.isclose(test_x, recov_x, atol=1e-1))
def test_hex_direct_optim_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
ssp_space = make_hex_space()
S0 = ssp_space.encode(test_x)
assert S0.shape == (1, ssp_space.ssp_dim)
recov_x = ssp_space.decode(S0, method='direct-optim')
assert np.all(np.isclose(test_x, recov_x))
def test_rand_direct_optim_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
rand_ssp_space = make_rand_space()
S0 = rand_ssp_space.encode(test_x)
assert S0.shape == (1, rand_ssp_space.ssp_dim)
recov_x = rand_ssp_space.decode(S0, method='direct-optim')
assert np.all(np.isclose(test_x, recov_x))
def test_hex_small_lenscale_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
ssp_space = make_hex_space(ls=0.05)
S0 = ssp_space.encode(test_x)
assert S0.shape == (1, ssp_space.ssp_dim)
recov_x = ssp_space.decode(S0, method='from-set', num_samples=500)
assert np.all(np.isclose(test_x, recov_x, atol=1e-2))
def test_rand_small_lenscale_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
rand_ssp_space = make_rand_space(ls=0.05)
S0 = rand_ssp_space.encode(test_x)
assert S0.shape == (1, rand_ssp_space.ssp_dim)
recov_x = rand_ssp_space.decode(S0, method='direct-optim')
assert np.all(np.isclose(test_x, recov_x))
def test_hex_large_lenscale_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
ssp_space = make_hex_space(ls=2)
S0 = ssp_space.encode(test_x)
assert S0.shape == (1, ssp_space.ssp_dim)
recov_x = ssp_space.decode(S0, method='direct-optim')
assert np.all(np.isclose(test_x, recov_x))
def test_rand_large_lenscale_decode():
test_x = np.atleast_2d(np.array([1.3,-3.4]))
rand_ssp_space = make_rand_space(ls=2)
S0 = rand_ssp_space.encode(test_x)
assert S0.shape == (1, rand_ssp_space.ssp_dim)
recov_x = rand_ssp_space.decode(S0, method='direct-optim')
assert np.all(np.isclose(test_x, recov_x))