some updates for params changes and likelihood fixes

This commit is contained in:
Max Zwiessele 2014-02-14 15:05:38 +00:00
parent 6419401d60
commit 345e5b3e7c
3 changed files with 22 additions and 4 deletions

View file

@ -37,10 +37,26 @@ class ObservableArray(np.ndarray, Observable):
if obj is None: return
self._observers_ = getattr(obj, '_observers_', None)
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, update=True):
super(ObservableArray, self).__setitem__(s, val)
if update:
self._notify_observers()
if self._s_not_empty(s):
super(ObservableArray, self).__setitem__(s, val)
if update:
self._notify_observers()
def __getslice__(self, start, stop):
return self.__getitem__(slice(start, stop))
def __setslice__(self, start, stop, val):

View file

@ -146,7 +146,7 @@ class Param(ObservableArray, Constrainable, Gradcheckable, Indexable, Parameteri
def __setitem__(self, s, val, update=True):
super(Param, self).__setitem__(s, val, update=update)
#self._notify_tied_parameters()
if update:
if update and self._s_not_empty(s):
self._notify_parameters_changed()
#===========================================================================