From 023203dc3a449c6ef046774c8539a5aba5c2f4f2 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Thu, 27 Feb 2014 08:07:00 +0000 Subject: [PATCH] parent observer now static and always last --- GPy/core/parameterization/param.py | 2 ++ GPy/core/parameterization/parameter_core.py | 5 +++-- GPy/core/parameterization/parameterized.py | 1 - 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/GPy/core/parameterization/param.py b/GPy/core/parameterization/param.py index 53b2260e..96df98f4 100644 --- a/GPy/core/parameterization/param.py +++ b/GPy/core/parameterization/param.py @@ -161,6 +161,8 @@ class Param(Constrainable, ObservableArray, Gradcheckable): return new_arr def __setitem__(self, s, val): super(Param, self).__setitem__(s, val) + if self.has_parent(): + self._direct_parent_._notify_parameters_changed() #self._notify_observers() #=========================================================================== diff --git a/GPy/core/parameterization/parameter_core.py b/GPy/core/parameterization/parameter_core.py index b8dca23c..55fe660c 100644 --- a/GPy/core/parameterization/parameter_core.py +++ b/GPy/core/parameterization/parameter_core.py @@ -391,8 +391,7 @@ class Parameterizable(Constrainable, Observable): # don't overwrite this anymore! import itertools [p._set_params(params[s]) for p, s in itertools.izip(self._parameters_, self._param_slices_)] - self.parameters_changed() - self._notify_observers() + self._notify_parameters_changed() def copy(self): """Returns a (deep) copy of the current model""" @@ -428,6 +427,8 @@ class Parameterizable(Constrainable, Observable): def _notify_parameters_changed(self, which): self.parameters_changed() self._notify_observers() + if self.has_parent(): + self._direct_parent_._notify_parameters_changed() def parameters_changed(self): """ diff --git a/GPy/core/parameterization/parameterized.py b/GPy/core/parameterization/parameterized.py index 16ae43a7..18cea61a 100644 --- a/GPy/core/parameterization/parameterized.py +++ b/GPy/core/parameterization/parameterized.py @@ -92,7 +92,6 @@ class Parameterized(Parameterizable, Pickleable, Gradcheckable): self.constraints.update(param.constraints, start) self.priors.update(param.priors, start) self._parameters_.insert(index, param) - param.add_observer(self, self._notify_parameters_changed) self.size += param.size else: raise RuntimeError, """Parameter exists already added and no copy made"""