From 9af637e214ee40c9af68af156b1457d8b0f3ab62 Mon Sep 17 00:00:00 2001 From: James Hensman Date: Thu, 6 Dec 2012 11:28:04 -0800 Subject: [PATCH] changes the naming of kern components Kern components now only get a number if their name is duplicated --- GPy/kern/kern.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/GPy/kern/kern.py b/GPy/kern/kern.py index 158913ff..3830d844 100644 --- a/GPy/kern/kern.py +++ b/GPy/kern/kern.py @@ -99,6 +99,7 @@ class kern(parameterised): newkern.constrained_fixed_values = self.constrained_fixed_values + other.constrained_fixed_values newkern.tied_indices = self.tied_indices + [self.Nparam + x for x in other.tied_indices] return newkern + def add(self,other): """ Add another kernel to this one. Both kernels are defined on the same _space_ @@ -139,7 +140,13 @@ class kern(parameterised): [p.set_param(x[s]) for p, s in zip(self.parts, self.param_slices)] def get_param_names(self): - return sum([[k.name+'_'+str(i)+'_'+n for n in k.get_param_names()] for i,k in enumerate(self.parts)],[]) + #this is a bit nasty: we wat to distinguish between parts with the same name by appending a count + part_names = np.array([k.name for k in self.parts],dtype=np.str) + counts = [np.sum(part_names==ni) for i, ni in enumerate(part_names)] + cum_counts = [np.sum(part_names[i:]==ni) for i, ni in enumerate(part_names)] + names = [name+'_'+str(cum_count) if count>1 else name for name,count,cum_count in zip(part_names,counts,cum_counts)] + + return sum([[name+'_'+n for n in k.get_param_names()] for name,k in zip(names,self.parts)],[]) def K(self,X,X2=None,slices1=None,slices2=None): assert X.shape[1]==self.D