[parameterized] bugfix: downstream parameters did not get constraint update on add_parameter

This commit is contained in:
mzwiessele 2014-06-30 09:20:56 -07:00
parent cbcb0a9b99
commit 8ef16f5529
3 changed files with 45 additions and 14 deletions

View file

@ -124,16 +124,20 @@ class Parameterized(Parameterizable):
param.traverse_parents(visit, self)
param._parent_.remove_parameter(param)
# make sure the size is set
if index is None: start = self.size
else: start = sum(p.size for p in self.parameters[:index])
self.constraints.shift_right(start, param.size)
self.priors.shift_right(start, param.size)
self.constraints.update(param.constraints, self.size)
self.priors.update(param.priors, self.size)
if index is None: self.parameters.append(param)
else: self.parameters.insert(index, param)
if index is None:
start = sum(p.size for p in self.parameters)
self.constraints.shift_right(start, param.size)
self.priors.shift_right(start, param.size)
self.constraints.update(param.constraints, self.size)
self.priors.update(param.priors, self.size)
self.parameters.append(param)
else:
start = sum(p.size for p in self.parameters[:index])
self.constraints.shift_right(start, param.size)
self.priors.shift_right(start, param.size)
self.constraints.update(param.constraints, start)
self.priors.update(param.priors, start)
self.parameters.insert(index, param)
param.add_observer(self, self._pass_through_notify_observers, -np.inf)
@ -143,6 +147,7 @@ class Parameterized(Parameterizable):
parent = parent._parent_
self._connect_parameters()
self._notify_parent_change()
self._highest_parent_._connect_parameters(ignore_added_names=_ignore_added_names)
self._highest_parent_._notify_parent_change()
@ -197,7 +202,7 @@ class Parameterized(Parameterizable):
# no parameters for this class
return
if self.param_array.size != self.size:
self.param_array = np.empty(self.size, dtype=np.float64)
self._param_array_ = np.empty(self.size, dtype=np.float64)
if self.gradient.size != self.size:
self._gradient_array_ = np.empty(self.size, dtype=np.float64)