[parameterized] adding parameters in hierarchy, did not update higher siblings

This commit is contained in:
mzwiessele 2014-06-30 08:17:10 -07:00
parent 67620e47d0
commit cbcb0a9b99

View file

@ -57,9 +57,9 @@ class Parameterized(Parameterizable):
and concatenate them. Printing m[''] will result in printing of all parameters in detail. and concatenate them. Printing m[''] will result in printing of all parameters in detail.
""" """
#=========================================================================== #===========================================================================
# Metaclass for parameters changed after init. # Metaclass for parameters changed after init.
# This makes sure, that parameters changed will always be called after __init__ # This makes sure, that parameters changed will always be called after __init__
# **Never** call parameters_changed() yourself # **Never** call parameters_changed() yourself
__metaclass__ = ParametersChangedMeta __metaclass__ = ParametersChangedMeta
#=========================================================================== #===========================================================================
def __init__(self, name=None, parameters=[], *a, **kw): def __init__(self, name=None, parameters=[], *a, **kw):
@ -124,17 +124,16 @@ class Parameterized(Parameterizable):
param.traverse_parents(visit, self) param.traverse_parents(visit, self)
param._parent_.remove_parameter(param) param._parent_.remove_parameter(param)
# make sure the size is set # make sure the size is set
if index is None: if index is None: start = self.size
self.constraints.update(param.constraints, self.size) else: start = sum(p.size for p in self.parameters[:index])
self.priors.update(param.priors, self.size)
self.parameters.append(param) self.constraints.shift_right(start, param.size)
else: self.priors.shift_right(start, param.size)
start = sum(p.size for p in self.parameters[:index]) self.constraints.update(param.constraints, self.size)
self.constraints.shift_right(start, param.size) self.priors.update(param.priors, self.size)
self.priors.shift_right(start, param.size)
self.constraints.update(param.constraints, start) if index is None: self.parameters.append(param)
self.priors.update(param.priors, start) else: self.parameters.insert(index, param)
self.parameters.insert(index, param)
param.add_observer(self, self._pass_through_notify_observers, -np.inf) param.add_observer(self, self._pass_through_notify_observers, -np.inf)
@ -332,7 +331,7 @@ class Parameterized(Parameterizable):
def __str__(self, header=True): def __str__(self, header=True):
name = adjust_name_for_printing(self.name) + "." name = adjust_name_for_printing(self.name) + "."
constrs = self._constraints_str; constrs = self._constraints_str;
ts = self._ties_str ts = self._ties_str
prirs = self._priors_str prirs = self._priors_str
desc = self._description_str; names = self.parameter_names() desc = self._description_str; names = self.parameter_names()