mirror of
https://github.com/SheffieldML/GPy.git
synced 2026-05-09 20:12:38 +02:00
GPy now fails silently if sympy is not present
This commit is contained in:
parent
56ecd4782a
commit
698f52e5e3
2 changed files with 37 additions and 27 deletions
|
|
@ -2,5 +2,9 @@
|
||||||
# Licensed under the BSD 3-clause license (see LICENSE.txt)
|
# Licensed under the BSD 3-clause license (see LICENSE.txt)
|
||||||
|
|
||||||
|
|
||||||
from constructors import rbf, Matern32, Matern52, exponential, linear, white, bias, finite_dimensional, spline, Brownian, rbf_sympy, sympykern, periodic_exponential, periodic_Matern32, periodic_Matern52, prod, prod_orthogonal, symmetric, coregionalise, rational_quadratic, fixed, rbfcos
|
from constructors import rbf, Matern32, Matern52, exponential, linear, white, bias, finite_dimensional, spline, Brownian, periodic_exponential, periodic_Matern32, periodic_Matern52, prod, prod_orthogonal, symmetric, coregionalise, rational_quadratic, fixed, rbfcos
|
||||||
|
try:
|
||||||
|
from constructors import rbf_sympy, sympykern # these depend on sympy
|
||||||
|
except:
|
||||||
|
pass
|
||||||
from kern import kern
|
from kern import kern
|
||||||
|
|
|
||||||
|
|
@ -165,34 +165,40 @@ def Brownian(D,variance=1.):
|
||||||
part = Brownianpart(D,variance)
|
part = Brownianpart(D,variance)
|
||||||
return kern(D, [part])
|
return kern(D, [part])
|
||||||
|
|
||||||
import sympy as sp
|
try:
|
||||||
from sympykern import spkern
|
import sympy as sp
|
||||||
from sympy.parsing.sympy_parser import parse_expr
|
from sympykern import spkern
|
||||||
|
from sympy.parsing.sympy_parser import parse_expr
|
||||||
|
sympy_available = True
|
||||||
|
except ImportError:
|
||||||
|
sympy_available = False
|
||||||
|
|
||||||
def rbf_sympy(D,ARD=False,variance=1., lengthscale=1.):
|
if sympy_available:
|
||||||
"""
|
def rbf_sympy(D,ARD=False,variance=1., lengthscale=1.):
|
||||||
Radial Basis Function covariance.
|
"""
|
||||||
"""
|
Radial Basis Function covariance.
|
||||||
X = [sp.var('x%i'%i) for i in range(D)]
|
"""
|
||||||
Z = [sp.var('z%i'%i) for i in range(D)]
|
X = [sp.var('x%i'%i) for i in range(D)]
|
||||||
rbf_variance = sp.var('rbf_variance',positive=True)
|
Z = [sp.var('z%i'%i) for i in range(D)]
|
||||||
if ARD:
|
rbf_variance = sp.var('rbf_variance',positive=True)
|
||||||
rbf_lengthscales = [sp.var('rbf_lengthscale_%i'%i,positive=True) for i in range(D)]
|
if ARD:
|
||||||
dist_string = ' + '.join(['(x%i-z%i)**2/rbf_lengthscale_%i**2'%(i,i,i) for i in range(D)])
|
rbf_lengthscales = [sp.var('rbf_lengthscale_%i'%i,positive=True) for i in range(D)]
|
||||||
dist = parse_expr(dist_string)
|
dist_string = ' + '.join(['(x%i-z%i)**2/rbf_lengthscale_%i**2'%(i,i,i) for i in range(D)])
|
||||||
f = rbf_variance*sp.exp(-dist/2.)
|
dist = parse_expr(dist_string)
|
||||||
else:
|
f = rbf_variance*sp.exp(-dist/2.)
|
||||||
rbf_lengthscale = sp.var('rbf_lengthscale',positive=True)
|
else:
|
||||||
dist_string = ' + '.join(['(x%i-z%i)**2'%(i,i) for i in range(D)])
|
rbf_lengthscale = sp.var('rbf_lengthscale',positive=True)
|
||||||
dist = parse_expr(dist_string)
|
dist_string = ' + '.join(['(x%i-z%i)**2'%(i,i) for i in range(D)])
|
||||||
f = rbf_variance*sp.exp(-dist/(2*rbf_lengthscale**2))
|
dist = parse_expr(dist_string)
|
||||||
return kern(D,[spkern(D,f)])
|
f = rbf_variance*sp.exp(-dist/(2*rbf_lengthscale**2))
|
||||||
|
return kern(D,[spkern(D,f)])
|
||||||
|
|
||||||
def sympykern(D,k):
|
def sympykern(D,k):
|
||||||
"""
|
"""
|
||||||
A kernel from a symbolic sympy representation
|
A kernel from a symbolic sympy representation
|
||||||
"""
|
"""
|
||||||
return kern(D,[spkern(D,k)])
|
return kern(D,[spkern(D,k)])
|
||||||
|
del sympy_available
|
||||||
|
|
||||||
def periodic_exponential(D=1,variance=1., lengthscale=None, period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi):
|
def periodic_exponential(D=1,variance=1., lengthscale=None, period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue