From c69f6a2059d6346622bfcf56aa76be2a1e68e05c Mon Sep 17 00:00:00 2001 From: mu Date: Tue, 26 Nov 2013 09:56:42 +0000 Subject: [PATCH 1/3] ODE_UY --- GPy/kern/parts/ODE_UY.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/GPy/kern/parts/ODE_UY.py b/GPy/kern/parts/ODE_UY.py index 8e0096d2..f6c5e9d9 100644 --- a/GPy/kern/parts/ODE_UY.py +++ b/GPy/kern/parts/ODE_UY.py @@ -95,6 +95,8 @@ class ODE_UY(Kernpart): def K(self, X, X2, target): """Compute the covariance matrix between X and X2.""" + # model : a * dy/dt + b * y = U + #lu=sqrt(3)/theta1 ly=1/theta2 theta2= a/b :thetay sigma2=1/(2ab) :sigmay X,slices = X[:,:-1],index_to_slices(X[:,-1]) if X2 is None: From cb36368d134be6560512873800a45f2787027c58 Mon Sep 17 00:00:00 2001 From: mu Date: Tue, 10 Dec 2013 12:38:34 +0000 Subject: [PATCH 2/3] dk dparameter --- GPy/kern/parts/ODE_1.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/GPy/kern/parts/ODE_1.py b/GPy/kern/parts/ODE_1.py index 416278e3..8c5f123f 100644 --- a/GPy/kern/parts/ODE_1.py +++ b/GPy/kern/parts/ODE_1.py @@ -137,7 +137,11 @@ class ODE_1(Kernpart): k2 = (np.exp(-lu*dist)*(ly-2*lu+lu*ly*dist-lu**2*dist) + np.exp(-ly*dist)*(2*lu-ly) ) / (ly-lu)**2 k3 = np.exp(-lu*dist) * ( (1+lu*dist)/(lu+ly) + (lu)/(lu+ly)**2 ) dkdvar = k1+k2+k3 - + + #target[0] dk dvarU + #target[1] dk dvarY + #target[2] dk d theta1 + #target[3] dk d theta2 target[0] += np.sum(self.varianceY*dkdvar * dL_dK) target[1] += np.sum(self.varianceU*dkdvar * dL_dK) target[2] += np.sum(dktheta1*(-np.sqrt(3)*self.lengthscaleU**(-2)) * dL_dK) From bab477f149808d14faaf4127895af184feab5793 Mon Sep 17 00:00:00 2001 From: mu Date: Tue, 10 Dec 2013 17:07:37 +0000 Subject: [PATCH 3/3] ode UY --- GPy/kern/parts/ODE_UY.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/GPy/kern/parts/ODE_UY.py b/GPy/kern/parts/ODE_UY.py index f6c5e9d9..bb736cc5 100644 --- a/GPy/kern/parts/ODE_UY.py +++ b/GPy/kern/parts/ODE_UY.py @@ -189,6 +189,13 @@ class ODE_UY(Kernpart): if X2 is None: X2 = X dist = np.abs(X - X2.T) + X,slices = X[:,:-1],index_to_slices(X[:,-1]) + if X2 is None: + X2,slices2 = X,slices + else: + X2,slices2 = X2[:,:-1],index_to_slices(X2[:,-1]) + + ly=1/self.lengthscaleY lu=np.sqrt(3)/self.lengthscaleU #ly=self.lengthscaleY @@ -232,6 +239,25 @@ class ODE_UY(Kernpart): k3 = lambda dist: np.exp(-lu*dist) * ( (1+lu*dist)/(lu+ly) + (lu)/(lu+ly)**2 ) dkdvar = k1+k2+k3 + + for i, s1 in enumerate(slices): + for j, s2 in enumerate(slices2): + for ss1 in s1: + for ss2 in s2: + if i==0 and j==0: + #target[ss1,ss2] = kuu(np.abs(rdist[ss1,ss2])) + elif i==0 and j==1: + #target[ss1,ss2] = np.where( rdist[ss1,ss2]>0 , kuyp(np.abs(rdist[ss1,ss2])), kuyn(np.abs(rdist[s1[0],s2[0]]) ) ) + elif i==1 and j==1: + #target[ss1,ss2] = kyy(np.abs(rdist[ss1,ss2])) + else: + #target[ss1,ss2] = np.where( rdist[ss1,ss2]>0 , kyup(np.abs(rdist[ss1,ss2])), kyun(np.abs(rdist[s1[0],s2[0]]) ) ) + + + + + + target[0] += np.sum(self.varianceY*dkdvar * dL_dK) target[1] += np.sum(self.varianceU*dkdvar * dL_dK) target[2] += np.sum(dktheta1*(-np.sqrt(3)*self.lengthscaleU**(-2)) * dL_dK)