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'