def test_distribute_products_k(self): print 'distribute' k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = ff.SqExpKernel(dimension=1, lengthscale=2, sf=2) k3 = k.copy() k4 = k.copy() k5 = ff.NoiseKernel(sf=-1) k6 = ff.ConstKernel(sf=1) k = (k1 + k2 + k3) * (k4 + k5) print '\n', k.pretty_print(), '\n' components = k.distribute_products().simplified() print components print components.collapse_additive_idempotency() for k in components.operands: print '\n', k.pretty_print(), '\n' k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = ff.SqExpKernel(dimension=1, lengthscale=2, sf=2) k3 = k.copy() k4 = k.copy() k5 = ff.NoiseKernel(sf=-1) k6 = ff.ConstKernel(sf=1) k = (k1 * (k2 + k3)) + (k4 * k5) print '\n', k.pretty_print(), '\n' components = k.distribute_products().simplified() print components print components.collapse_additive_idempotency() for k in components.operands: print '\n', k.pretty_print(), '\n'
def test_simplify(self): m = ff.GPModel(mean=ff.MeanZero(), kernel=ff.SumKernel(operands=[ ff.ProductKernel(operands=[ ff.ConstKernel(sf=0.170186999131), ff.SqExpKernel(dimension=0, lengthscale=1.02215322228, sf=5.9042619611) ]), ff.ProductKernel(operands=[ ff.NoiseKernel(sf=2.43188502201), ff.ConstKernel(sf=-0.368638271154) ]), ff.ProductKernel(operands=[ ff.NoiseKernel(sf=1.47110516981), ff.PeriodicKernel(dimension=0, lengthscale=-1.19651800365, period=0.550394248167, sf=0.131044872864) ]), ff.ProductKernel(operands=[ ff.SqExpKernel(dimension=0, lengthscale=3.33346140605, sf=3.7579461353), ff.PeriodicKernel(dimension=0, lengthscale=0.669624964607, period=0.00216264543496, sf=2.41995024965) ]) ]), likelihood=ff.LikGauss(sf=-np.inf), nll=599.59757993, ndata=144) assert not m.simplified() == m m = ff.GPModel(mean=ff.MeanZero(), kernel=ff.SumKernel(operands=[ ff.ProductKernel(operands=[ ff.ConstKernel(sf=0.170186999131), ff.SqExpKernel(dimension=0, lengthscale=1.02215322228, sf=5.9042619611) ]), ff.ProductKernel(operands=[ ff.NoiseKernel(sf=2.43188502201), ff.ConstKernel(sf=-0.368638271154) ]) ]), likelihood=ff.LikGauss(sf=-np.inf), nll=599.59757993, ndata=144) assert not m.simplified() == m
def test_collapse_mult_idempotent(self): k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = k1 * k2 print '\n', k.pretty_print(), '\n' k = k.collapse_multiplicative_idempotency() assert (isinstance(k, ff.SqExpKernel)) and (k.dimension == 0) print '\n', k.pretty_print(), '\n' k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = ff.SqExpKernel(dimension=1, lengthscale=2, sf=2) k3 = k.copy() k4 = k.copy() k5 = ff.NoiseKernel(sf=-1) k6 = ff.ConstKernel(sf=1) k = k1 * k2 * k3 * k4 * k5 * k5.copy() + k6 + k6.copy() print '\n', k.pretty_print(), '\n' k = k.collapse_multiplicative_idempotency() print '\n', k.pretty_print(), '\n' k = k1 * k2 * k3 * k4 * k5 * k5.copy() * k6 * k6.copy() print '\n', k.pretty_print(), '\n' k = k.collapse_multiplicative_idempotency() print '\n', k.pretty_print(), '\n'
def test_noise_kernel(self): k = ff.NoiseKernel() print '\n', k.pretty_print(), '\n' print '\n', k.syntax, '\n' print '\n', k, '\n' print '\n', k.get_gpml_expression(dimensions=3), '\n' k.initialise_params(data_shape={'y_sd': 0}) print '\n', k, '\n' k = k.copy() print '\n', k, '\n' assert k == k.copy() k.load_param_vector(k.param_vector) print '\n', k, '\n'
def test_canonical_k(self): print 'canonical_k form' k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = ff.SqExpKernel(dimension=1, lengthscale=2, sf=2) k3 = k.copy() k4 = k.copy() k5 = ff.NoiseKernel(sf=-1) k6 = ff.ConstKernel(sf=1) k = k1 * k2 * k3 * k4 * k5 * k5.copy() + k6 + k6.copy( ) + k1.copy() * k1.copy() * k3.copy() print '\n', k.pretty_print(), '\n' print '\n', k.canonical().pretty_print(), '\n'
def test_collapse_add_idempotent(self): k = ff.SqExpKernel() k1 = k.copy() k2 = k.copy() k = ff.NoiseKernel(sf=-1) k3 = k.copy() k4 = k.copy() k = ff.ConstKernel(sf=1) k5 = k.copy() k6 = k.copy() k = k1 + k2 + k3 + k4 + k5 + k6 print '\n', k.pretty_print(), '\n' k = k.collapse_additive_idempotency() print '\n', k.pretty_print(), '\n'
def test_additive_form_k(self): print 'additive form' k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = ff.SqExpKernel(dimension=1, lengthscale=2, sf=2) k3 = k.copy() k4 = k.copy() k5 = ff.NoiseKernel(sf=-1) k6 = ff.ConstKernel(sf=1) k = (k1 * (k2 + k3)) + (k4 * k5) print '\n', k.pretty_print(), '\n' components = k.additive_form().simplified() print components for k in components.operands: print '\n', k.pretty_print(), '\n'
def test_collapse_zero(self): k1 = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k2 = ff.NoiseKernel(sf=-1) k = k1 * k2 print '\n', k.pretty_print(), '\n' k = k.collapse_multiplicative_zero() assert isinstance(k, ff.NoiseKernel) print '\n', k.pretty_print(), '\n' k = (k1 + k1.copy() + k1.copy() * k2.copy()) * k2 print(k1 + k1.copy()).sf print(k1.copy() * k2.copy()).sf print(k1 + k1.copy() + k1.copy() * k2.copy()).sf print k.sf print '\n', k.pretty_print(), '\n' k = k.collapse_multiplicative_zero() assert isinstance(k, ff.NoiseKernel) print '\n', k.pretty_print(), '\n'
def test_simplified_k(self): print 'simplified_k' k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = k1 * k2 k = ff.SqExpKernel(dimension=0, lengthscale=0, sf=1) k1 = k.copy() k2 = k.copy() k = ff.SqExpKernel(dimension=1, lengthscale=2, sf=2) k3 = k.copy() k4 = k.copy() k5 = ff.NoiseKernel(sf=-1) k6 = ff.ConstKernel(sf=1) k = k1 * k2 * k3 * k4 * k5 * k5.copy() + k6 + k6.copy( ) + k1.copy() * k1.copy() * k3.copy() print '\n', k.pretty_print(), '\n' k = k.simplified() print '\n', k.pretty_print(), '\n'