diff --git a/GPy/kern/periodic_Matern32.py b/GPy/kern/periodic_Matern32.py index 3e81044c..eeadf1c8 100644 --- a/GPy/kern/periodic_Matern32.py +++ b/GPy/kern/periodic_Matern32.py @@ -21,13 +21,14 @@ class periodic_Matern32(kernpart): """ def __init__(self,D=1,variance=1.,lengthscale=None,period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi): - assert D==1 + assert D==1, "Periodic kernels are only defined for D=1" self.name = 'periodic_Mat32' self.D = D if lengthscale is not None: - assert lengthscale.shape==(self.D,) + lengthscale = np.asarray(lengthscale) + assert lengthscale.size == 1, "Wrong size: only one lengthscale needed" else: - lengthscale = np.ones(self.D) + lengthscale = np.ones(1) self.lower,self.upper = lower, upper self.Nparam = 3 self.n_freq = n_freq diff --git a/GPy/kern/periodic_Matern52.py b/GPy/kern/periodic_Matern52.py index abdd6a7d..2db3d223 100644 --- a/GPy/kern/periodic_Matern52.py +++ b/GPy/kern/periodic_Matern52.py @@ -21,13 +21,14 @@ class periodic_Matern52(kernpart): """ def __init__(self,D=1,variance=1.,lengthscale=None,period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi): - assert D==1 + assert D==1, "Periodic kernels are only defined for D=1" self.name = 'periodic_Mat52' self.D = D if lengthscale is not None: - assert lengthscale.shape==(self.D,) + lengthscale = np.asarray(lengthscale) + assert lengthscale.size == 1, "Wrong size: only one lengthscale needed" else: - lengthscale = np.ones(self.D) + lengthscale = np.ones(1) self.lower,self.upper = lower, upper self.Nparam = 3 self.n_freq = n_freq diff --git a/GPy/kern/periodic_exponential.py b/GPy/kern/periodic_exponential.py index 2637afe5..d99bada8 100644 --- a/GPy/kern/periodic_exponential.py +++ b/GPy/kern/periodic_exponential.py @@ -21,13 +21,14 @@ class periodic_exponential(kernpart): """ def __init__(self,D=1,variance=1.,lengthscale=None,period=2*np.pi,n_freq=10,lower=0.,upper=4*np.pi): - assert D==1 + assert D==1, "Periodic kernels are only defined for D=1" self.name = 'periodic_exp' self.D = D if lengthscale is not None: - assert lengthscale.shape==(self.D,) + lengthscale = np.asarray(lengthscale) + assert lengthscale.size == 1, "Wrong size: only one lengthscale needed" else: - lengthscale = np.ones(self.D) + lengthscale = np.ones(1) self.lower,self.upper = lower, upper self.Nparam = 3 self.n_freq = n_freq @@ -45,7 +46,7 @@ class periodic_exponential(kernpart): r = np.sqrt(r1**2 + r2**2) psi = np.where(r1 != 0, (np.arctan(r2/r1) + (r1<0.)*np.pi),np.arcsin(r2)) return r,omega[:,0:1], psi - + def _int_computation(self,r1,omega1,phi1,r2,omega2,phi2): Gint1 = 1./(omega1+omega2.T)*( np.sin((omega1+omega2.T)*self.upper+phi1+phi2.T) - np.sin((omega1+omega2.T)*self.lower+phi1+phi2.T)) + 1./(omega1-omega2.T)*( np.sin((omega1-omega2.T)*self.upper+phi1-phi2.T) - np.sin((omega1-omega2.T)*self.lower+phi1-phi2.T) ) Gint2 = 1./(omega1+omega2.T)*( np.sin((omega1+omega2.T)*self.upper+phi1+phi2.T) - np.sin((omega1+omega2.T)*self.lower+phi1+phi2.T)) + np.cos(phi1-phi2.T)*(self.upper-self.lower)