From 46ee7374929973d1ccb34d068b4bce5d3bd58373 Mon Sep 17 00:00:00 2001 From: Max Zwiessele Date: Mon, 31 Mar 2014 13:30:17 +0100 Subject: [PATCH] copy had slight bug in id(_parent_index_) > ids for ints are shared globally --- GPy/core/parameterization/parameter_core.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/GPy/core/parameterization/parameter_core.py b/GPy/core/parameterization/parameter_core.py index a60b8b38..2dac9bf3 100644 --- a/GPy/core/parameterization/parameter_core.py +++ b/GPy/core/parameterization/parameter_core.py @@ -176,11 +176,11 @@ class Pickleable(object): import copy memo = {} memo[id(self._parent_)] = None - memo[id(self._parent_index_)] = None memo[id(self.gradient)] = None memo[id(self.param_array)] = None memo[id(self._fixes_)] = None c = copy.deepcopy(self, memo) + c._parent_index_ = None return c def __deepcopy__(self, memo): @@ -403,6 +403,7 @@ class Constrainable(Nameable, Indexable, Observable): self._fixes_[fixed_indices] = FIXED else: self._fixes_ = None + del self.constraints[__fixed__] def _has_fixes(self): return hasattr(self, "_fixes_") and self._fixes_ is not None and self._fixes_.size == self.size @@ -875,7 +876,6 @@ class Parameterizable(OptimizationHandlable): if not p.param_array.flags['C_CONTIGUOUS']: raise ValueError, "This should not happen! Please write an email to the developers with the code, which reproduces this error. All parameter arrays must be C_CONTIGUOUS" - import ipdb;ipdb.set_trace() p.param_array.data = self.param_array[pslice].data p.full_gradient.data = self.full_gradient[pslice].data