class TestLowRank(unittest.TestCase): """test class for CLowRankCF""" def setUp(self): sp.random.seed(1) self.n = 4 self.rank = 2 self.C = LowRankCov(self.n,self.rank) self.name = 'lowrank' self.C.setRandomParams() def test_grad(self): def func(x, i): self.C.setParams(x) return self.C.K() def grad(x, i): self.C.setParams(x) return self.C.K_grad_i(i) x0 = self.C.getParams() err = mcheck_grad(func, grad, x0) np.testing.assert_almost_equal(err, 0., decimal = 6) def test_param_activation(self): self.assertEqual(len(self.C.getParams()), 8) self.C.act_X = False self.assertEqual(len(self.C.getParams()), 0) self.C.setParams(np.array([])) with self.assertRaises(ValueError): self.C.setParams(np.array([0])) with self.assertRaises(ValueError): self.C.K_grad_i(0)
class TestLowRank(unittest.TestCase): """test class for CLowRankCF""" def setUp(self): sp.random.seed(1) self.n = 4 self.rank = 2 self.C = LowRankCov(self.n, self.rank) self.name = 'lowrank' self.C.setRandomParams() def test_grad(self): def func(x, i): self.C.setParams(x) return self.C.K() def grad(x, i): self.C.setParams(x) return self.C.K_grad_i(i) x0 = self.C.getParams() err = mcheck_grad(func, grad, x0) np.testing.assert_almost_equal(err, 0., decimal=6) def test_param_activation(self): self.assertEqual(len(self.C.getParams()), 8) self.C.act_X = False self.assertEqual(len(self.C.getParams()), 0) self.C.setParams(np.array([])) with self.assertRaises(ValueError): self.C.setParams(np.array([0])) with self.assertRaises(ValueError): self.C.K_grad_i(0)
def setColCovars(self, Cg=None, Cn=None, rank=1, Cr=None): assert Cg is not None, 'Cov2KronSum: Specify Cg!' assert Cn is not None, 'Cov2KronSum: Specify Cn!' assert Cg.dim==Cn.dim, 'Cov2KronSum: Cg and Cn must have same dimensions!' if Cr is None: Cr = LowRankCov(Cg.dim, rank) Cr.setRandomParams() self._rank_c = rank else: self._rank_c = Cr.X.shape[1] self._dim_c = Cg.dim self._Cr = Cr self._Cg = Cg self._Cn = Cn self._Cg.register(self.col_covs_have_changed) self._Cn.register(self.col_covs_have_changed) self.col_covs_have_changed()
def setColCovars(self, Cg=None, Cn=None, rank=1, Cr=None): assert Cg is not None, 'Cov2KronSum: Specify Cg!' assert Cn is not None, 'Cov2KronSum: Specify Cn!' assert Cg.dim == Cn.dim, 'Cov2KronSum: Cg and Cn must have same dimensions!' if Cr is None: Cr = LowRankCov(Cg.dim, rank) Cr.setRandomParams() self._rank_c = rank else: self._rank_c = Cr.X.shape[1] self._dim_c = Cg.dim self._Cr = Cr self._Cg = Cg self._Cn = Cn self._Cg.register(self.col_covs_have_changed) self._Cn.register(self.col_covs_have_changed) self.col_covs_have_changed()
def setColCovars(self, Cg=None, Cn=None, rank=1, Cr=None): assert Cg is not None, 'Cov2KronSum: Specify Cg!' assert Cn is not None, 'Cov2KronSum: Specify Cn!' assert Cg.dim==Cn.dim, 'Cov2KronSum: Cg and Cn must have same dimensions!' assert Cr is None, '%s: more general covariance matrices are not supported at the moment' % self.__class__.__name__ if Cr is None: Cr = LowRankCov(Cg.dim, rank) Cr.setRandomParams() self._rank_c = rank else: self._rank_c = self.Cr.dim() self._dim_c = Cg.dim self._Cr = Cr self._Cg = Cg self._Cn = Cn self._Cg.register(self.col_covs_have_changed) self._Cn.register(self.col_covs_have_changed) self.col_covs_have_changed()