more testing

This commit is contained in:
Max Zwiessele 2013-10-14 18:00:11 +01:00
parent 3a97eaf684
commit 73f44ea0d8

View file

@ -13,7 +13,7 @@ from GPy.likelihoods.gaussian import Gaussian
class Test(unittest.TestCase): class Test(unittest.TestCase):
N, D, Q = 100, 1, 2 N, D, Q = 10, 6, 4
def setUp(self): def setUp(self):
self.rbf_variance = numpy.random.rand() self.rbf_variance = numpy.random.rand()
self.rbf_lengthscale = numpy.random.rand(self.Q) self.rbf_lengthscale = numpy.random.rand(self.Q)
@ -30,10 +30,9 @@ class Test(unittest.TestCase):
self.Y = numpy.random.multivariate_normal(numpy.zeros(self.N), K + numpy.eye(self.N) * .2, self.D).T self.Y = numpy.random.multivariate_normal(numpy.zeros(self.N), K + numpy.eye(self.N) * .2, self.D).T
self.bgplvm = BayesianGPLVM(Gaussian(self.Y, variance=self.noise_variance), self.Q, self.X, self.X_variance, kernel=self.kern) self.bgplvm = BayesianGPLVM(Gaussian(self.Y, variance=self.noise_variance), self.Q, self.X, self.X_variance, kernel=self.kern)
self.bgplvm.ensure_default_constraints() self.bgplvm.ensure_default_constraints(warning=False)
self.bgplvm.tie_params("noise_variance|white_variance") self.bgplvm.tie_params("noise_variance|white_variance")
self.bgplvm.constrain_fixed("rbf_var") self.bgplvm.constrain_fixed("rbf_var", warning=False)
self.parameter = Parameterized([ self.parameter = Parameterized([
Parameterized([ Parameterized([
Param('X', self.X), Param('X', self.X),
@ -48,15 +47,15 @@ class Test(unittest.TestCase):
Param('white_variance', self.noise_variance), Param('white_variance', self.noise_variance),
Param('noise_variance', self.noise_variance), Param('noise_variance', self.noise_variance),
]) ])
self.parameter['.*variance'].constrain_positive()
self.parameter['.*length'].constrain_positive() self.parameter['.*variance'].constrain_positive(False)
self.parameter['.*length'].constrain_positive(False)
self.parameter.white.tie_to(self.parameter.noise) self.parameter.white.tie_to(self.parameter.noise)
self.parameter.rbf_var.constrain_fixed() self.parameter.rbf_var.constrain_fixed(False)
def tearDown(self): def tearDown(self):
pass pass
# def testGrepParamNamesTest(self): # def testGrepParamNamesTest(self):
# assert(self.bgplvm.grep_param_names('X_\d') == self.parameter.grep_param_names('X_\d')) # assert(self.bgplvm.grep_param_names('X_\d') == self.parameter.grep_param_names('X_\d'))
# assert(self.bgplvm.grep_param_names('X_\d+_1') == self.parameter.grep_param_names('X_\d+_1')) # assert(self.bgplvm.grep_param_names('X_\d+_1') == self.parameter.grep_param_names('X_\d+_1'))
@ -85,25 +84,35 @@ class Test(unittest.TestCase):
assert(numpy.allclose(self.bgplvm._get_params_transformed(), self.parameter._get_params_transformed())) assert(numpy.allclose(self.bgplvm._get_params_transformed(), self.parameter._get_params_transformed()))
def testSlicing(self): def testSlicing(self):
assert(numpy.alltrue(self.parameter.X[:,1] == self.X[:,1])) assert(numpy.allclose(self.parameter.X[:,1], self.X[:,1]))
assert(numpy.alltrue(self.parameter.X[:,1] == self.X[:,1])) assert(numpy.allclose(self.parameter.X[:,1], self.X[:,1]))
assert(numpy.alltrue(self.parameter.X_variance[1,1] == self.X_variance[1,1])) assert(numpy.allclose(self.parameter.X_variance[1,1], self.X_variance[1,1]))
import ipdb;ipdb.set_trace() assert(numpy.allclose(self.parameter.X_variance[:], self.X_variance[:]))
assert(numpy.alltrue(self.parameter.X_variance[:] == self.X_variance[:])) assert(numpy.allclose(self.parameter.X[:,:][:,0:2][:,1], self.X[:,1]))
assert(numpy.alltrue(self.parameter.X[:,:][:,0:2][:,1] == self.X[:,1])) assert(numpy.allclose(self.parameter.X[:,1], self.X[:,1]))
assert(numpy.alltrue(self.parameter.X[:,1] == self.X[:,1])) assert(numpy.allclose(self.parameter.X_variance[1,1], self.X_variance[1,1]))
assert(numpy.alltrue(self.parameter.X_variance[1,1] == self.X_variance[1,1])) assert(numpy.allclose(self.parameter.X_variance[:], self.X_variance[:]))
assert(numpy.alltrue(self.parameter.X_variance[:] == self.X_variance[:]))
def testSlicingSet(self):
self.parameter['.*variance'] = 1.
assert(numpy.alltrue(self.parameter['.*variance'] == 1.))
self.parameter.X[0,:3] = 2
assert(numpy.alltrue(self.parameter.X[0,:3] == 2))
X = self.parameter.X.copy()
self.parameter.X[[0,4,9],[0,1,3]] -= 1
assert(numpy.alltrue((X[[0,4,9],[0,1,3]] - 1) == self.parameter.X[[0,4,9],[0,1,3]]))
self.parameter[''] = 10
assert(numpy.alltrue(self.parameter[''] == 10))
def testConstraints(self): def testConstraints(self):
self.parameter[''].unconstrain() self.parameter[''].unconstrain()
self.parameter.X.constrain_positive() self.parameter.X.constrain_positive()
self.parameter.X[:,0].unconstrain_positive() self.parameter.X[:,numpy.s_[0::2]].unconstrain_positive()
assert(numpy.alltrue(self.parameter._constraints.indices()[0] == numpy.r_[1:self.N*self.Q:2])) assert(numpy.alltrue(self.parameter._constraints.indices()[0] == numpy.r_[1:self.N*self.Q:2]))
def testNdarrayFunc(self): def testNdarrayFunc(self):
assert(numpy.alltrue(self.parameter.X * self.parameter.X == self.X * self.X)) assert(numpy.alltrue(self.parameter.X * self.parameter.X == self.X * self.X))
assert(numpy.alltrue(self.parameter.X * self.parameter.X == self.X * self.X)) assert(numpy.alltrue(self.parameter.X[0,:] * self.parameter.X[1,:] == self.X[0,:] * self.X[1,:]))
@ -115,5 +124,6 @@ if __name__ == "__main__":
'Test.testNdarrayFunc', 'Test.testNdarrayFunc',
'Test.testSetParams', 'Test.testSetParams',
'Test.testConstraints', 'Test.testConstraints',
'Test.testSlicingSet',
] ]
unittest.main() unittest.main()