[link|unlink_parameter] renaming add_parameter to link_parameter

This commit is contained in:
Max Zwiessele 2014-09-08 08:57:28 +01:00
parent b9e897c50d
commit 4543fc3480
33 changed files with 90 additions and 83 deletions

View file

@ -82,7 +82,7 @@ class Parameterized(Parameterizable):
self._fixes_ = None
self._param_slices_ = []
#self._connect_parameters()
self.add_parameters(*parameters)
self.link_parameters(*parameters)
def build_pydot(self, G=None):
import pydot # @UnresolvedImport
@ -110,7 +110,7 @@ class Parameterized(Parameterizable):
#===========================================================================
# Add remove parameters:
#===========================================================================
def add_parameter(self, param, index=None, _ignore_added_names=False):
def link_parameter(self, param, index=None, _ignore_added_names=False):
"""
:param parameters: the parameters to add
:type parameters: list of or one :py:class:`GPy.core.param.Param`
@ -122,8 +122,8 @@ class Parameterized(Parameterizable):
at any given index using the :func:`list.insert` syntax
"""
if param in self.parameters and index is not None:
self.remove_parameter(param)
self.add_parameter(param, index)
self.unlink_parameter(param)
self.link_parameter(param, index)
# elif param.has_parent():
# raise HierarchyError, "parameter {} already in another model ({}), create new object (or copy) for adding".format(param._short(), param._highest_parent_._short())
elif param not in self.parameters:
@ -132,7 +132,7 @@ class Parameterized(Parameterizable):
if parent is self:
raise HierarchyError, "You cannot add a parameter twice into the hierarchy"
param.traverse_parents(visit, self)
param._parent_.remove_parameter(param)
param._parent_.unlink_parameter(param)
# make sure the size is set
if index is None:
start = sum(p.size for p in self.parameters)
@ -168,14 +168,14 @@ class Parameterized(Parameterizable):
raise HierarchyError, """Parameter exists already, try making a copy"""
def add_parameters(self, *parameters):
def link_parameters(self, *parameters):
"""
convenience method for adding several
parameters without gradient specification
"""
[self.add_parameter(p) for p in parameters]
[self.link_parameter(p) for p in parameters]
def remove_parameter(self, param):
def unlink_parameter(self, param):
"""
:param param: param object to remove from being a parameter of this parameterized object.
"""
@ -206,6 +206,11 @@ class Parameterized(Parameterizable):
self._highest_parent_._connect_fixes()
self._highest_parent_._notify_parent_change()
def add_parameter(self, *args, **kwargs):
raise DeprecationWarning, "add_parameter was renamed to link_parameter to avoid confusion of setting variables"
def remove_parameter(self, *args, **kwargs):
raise DeprecationWarning, "remove_parameter was renamed to link_parameter to avoid confusion of setting variables"
def _connect_parameters(self, ignore_added_names=False):
# connect parameterlist to this parameterized object
# This just sets up the right connection for the params objects
@ -294,7 +299,9 @@ class Parameterized(Parameterizable):
if hasattr(self, "parameters"):
try:
pnames = self.parameter_names(False, adjust_for_printing=True, recursive=False)
if name in pnames: self.parameters[pnames.index(name)][:] = val; return
if name in pnames:
param = self.parameters[pnames.index(name)]
param[:] = val; return
except AttributeError:
pass
object.__setattr__(self, name, val);

View file

@ -42,7 +42,7 @@ class SpikeAndSlabPrior(VariationalPrior):
self.pi = Param('Pi', pi, Logistic(1e-10,1.-1e-10))
else:
self.pi = Param('Pi', pi, __fixed__)
self.add_parameter(self.pi)
self.link_parameter(self.pi)
def KL_divergence(self, variational_posterior):
@ -89,7 +89,7 @@ class VariationalPosterior(Parameterized):
self.ndim = self.mean.ndim
self.shape = self.mean.shape
self.num_data, self.input_dim = self.mean.shape
self.add_parameters(self.mean, self.variance)
self.link_parameters(self.mean, self.variance)
self.num_data, self.input_dim = self.mean.shape
if self.has_uncertain_inputs():
assert self.variance.shape == self.mean.shape, "need one variance per sample and dimenion"
@ -156,7 +156,7 @@ class SpikeAndSlabPosterior(VariationalPosterior):
"""
super(SpikeAndSlabPosterior, self).__init__(means, variances, name)
self.gamma = Param("binary_prob",binary_prob, Logistic(1e-10,1.-1e-10))
self.add_parameter(self.gamma)
self.link_parameter(self.gamma)
def __getitem__(self, s):
if isinstance(s, (int, slice, tuple, list, np.ndarray)):