parent observer now static and always last

This commit is contained in:
Max Zwiessele 2014-02-27 08:07:00 +00:00
parent f1487c6935
commit 023203dc3a
3 changed files with 5 additions and 3 deletions

View file

@ -161,6 +161,8 @@ class Param(Constrainable, ObservableArray, Gradcheckable):
return new_arr return new_arr
def __setitem__(self, s, val): def __setitem__(self, s, val):
super(Param, self).__setitem__(s, val) super(Param, self).__setitem__(s, val)
if self.has_parent():
self._direct_parent_._notify_parameters_changed()
#self._notify_observers() #self._notify_observers()
#=========================================================================== #===========================================================================

View file

@ -391,8 +391,7 @@ class Parameterizable(Constrainable, Observable):
# don't overwrite this anymore! # don't overwrite this anymore!
import itertools import itertools
[p._set_params(params[s]) for p, s in itertools.izip(self._parameters_, self._param_slices_)] [p._set_params(params[s]) for p, s in itertools.izip(self._parameters_, self._param_slices_)]
self.parameters_changed() self._notify_parameters_changed()
self._notify_observers()
def copy(self): def copy(self):
"""Returns a (deep) copy of the current model""" """Returns a (deep) copy of the current model"""
@ -428,6 +427,8 @@ class Parameterizable(Constrainable, Observable):
def _notify_parameters_changed(self, which): def _notify_parameters_changed(self, which):
self.parameters_changed() self.parameters_changed()
self._notify_observers() self._notify_observers()
if self.has_parent():
self._direct_parent_._notify_parameters_changed()
def parameters_changed(self): def parameters_changed(self):
""" """

View file

@ -92,7 +92,6 @@ class Parameterized(Parameterizable, Pickleable, Gradcheckable):
self.constraints.update(param.constraints, start) self.constraints.update(param.constraints, start)
self.priors.update(param.priors, start) self.priors.update(param.priors, start)
self._parameters_.insert(index, param) self._parameters_.insert(index, param)
param.add_observer(self, self._notify_parameters_changed)
self.size += param.size self.size += param.size
else: else:
raise RuntimeError, """Parameter exists already added and no copy made""" raise RuntimeError, """Parameter exists already added and no copy made"""