diff --git a/GPy/core/parameterization/array_core.py b/GPy/core/parameterization/array_core.py index 780367c8..ab8214f2 100644 --- a/GPy/core/parameterization/array_core.py +++ b/GPy/core/parameterization/array_core.py @@ -1,7 +1,7 @@ # Copyright (c) 2012, GPy authors (see AUTHORS.txt). # Licensed under the BSD 3-clause license (see LICENSE.txt) -__updated__ = '2014-03-21' +__updated__ = '2014-03-24' import numpy as np from parameter_core import Observable @@ -38,24 +38,9 @@ class ObsAr(np.ndarray, Observable): np.ndarray.__setstate__(self, state[0]) Observable._setstate(self, state[1]) - def _s_not_empty(self, s): - # this checks whether there is something picked by this slice. - return True - # TODO: disarmed, for performance increase, - if not isinstance(s, (list,tuple,np.ndarray)): - return True - if isinstance(s, (list,tuple)): - return len(s)!=0 - if isinstance(s, np.ndarray): - if s.dtype is bool: - return np.all(s) - else: - return s.size != 0 - def __setitem__(self, s, val): - if self._s_not_empty(s): - super(ObsAr, self).__setitem__(s, val) - self.notify_observers() + super(ObsAr, self).__setitem__(s, val) + self.notify_observers() def __getslice__(self, start, stop): return self.__getitem__(slice(start, stop)) diff --git a/GPy/core/parameterization/index_operations.py b/GPy/core/parameterization/index_operations.py index c22d8b6b..e2a041f7 100644 --- a/GPy/core/parameterization/index_operations.py +++ b/GPy/core/parameterization/index_operations.py @@ -183,7 +183,7 @@ class ParameterIndexOperationsView(object): def remove(self, prop, indices): - removed = self._param_index_ops.remove(prop, indices+self._offset) + removed = self._param_index_ops.remove(prop, numpy.array(indices)+self._offset) if removed.size > 0: return removed - self._size + 1 return removed diff --git a/GPy/core/parameterization/parameterized.py b/GPy/core/parameterization/parameterized.py index 6460c988..bc83d8c8 100644 --- a/GPy/core/parameterization/parameterized.py +++ b/GPy/core/parameterization/parameterized.py @@ -63,7 +63,7 @@ class Parameterized(Parameterizable, Pickleable): # Metaclass for parameters changed after init. # This makes sure, that parameters changed will always be called after __init__ # **Never** call parameters_changed() yourself - __metaclass__ = ParametersChangedMeta + __metaclass__ = ParametersChangedMeta #=========================================================================== def __init__(self, name=None, parameters=[], *a, **kw): super(Parameterized, self).__init__(name=name, *a, **kw) diff --git a/GPy/models/bayesian_gplvm.py b/GPy/models/bayesian_gplvm.py index fb821d64..a3ebdb7d 100644 --- a/GPy/models/bayesian_gplvm.py +++ b/GPy/models/bayesian_gplvm.py @@ -26,7 +26,10 @@ class BayesianGPLVM(SparseGP): Z=None, kernel=None, inference_method=None, likelihood=None, name='bayesian gplvm', **kwargs): if X == None: from ..util.initialization import initialize_latent - X = initialize_latent(init, input_dim, Y) + X, fracs = initialize_latent(init, input_dim, Y) + else: + fracs = np.ones(input_dim) + self.init = init if X_variance is None: @@ -38,7 +41,7 @@ class BayesianGPLVM(SparseGP): assert Z.shape[1] == X.shape[1] if kernel is None: - kernel = kern.RBF(input_dim) # + kern.white(input_dim) + kernel = kern.RBF(input_dim, lengthscale=fracs, ARD=True) # + kern.white(input_dim) if likelihood is None: likelihood = Gaussian()