Merge branch 'params' of github.com:SheffieldML/GPy into params

This commit is contained in:
James Hensman 2014-02-12 12:30:12 +00:00
commit 71399f6db3
2 changed files with 5 additions and 21 deletions

View file

@ -6,19 +6,6 @@ __updated__ = '2013-12-16'
import numpy as np
from parameter_core import Observable
class ListArray(np.ndarray):
"""
ndarray which can be stored in lists and checked if it is in.
WARNING: This overrides the functionality of x==y!!!
Use numpy.equal(x,y) for element-wise equality testing.
"""
def __new__(cls, input_array):
obj = np.asanyarray(input_array).view(cls)
return obj
#def __eq__(self, other):
# return other is self
class ParamList(list):
def __contains__(self, other):
@ -29,7 +16,7 @@ class ParamList(list):
pass
class ObservableArray(ListArray, Observable):
class ObservableArray(np.ndarray, Observable):
"""
An ndarray which reports changes to its observers.
The observers can add themselves with a callable, which
@ -46,6 +33,7 @@ class ObservableArray(ListArray, Observable):
# see InfoArray.__array_finalize__ for comments
if obj is None: return
self._observers_ = getattr(obj, '_observers_', None)
def __setitem__(self, s, val, update=True):
super(ObservableArray, self).__setitem__(s, val)
if update:
@ -54,8 +42,10 @@ class ObservableArray(ListArray, Observable):
return self.__getitem__(slice(start, stop))
def __setslice__(self, start, stop, val):
return self.__setitem__(slice(start, stop), val)
def __copy__(self, *args):
return ObservableArray(self.view(np.ndarray).copy())
def copy(self, *args):
return self.__copy__(*args)
@ -69,25 +59,21 @@ class ObservableArray(ListArray, Observable):
self._notify_observers()
return r
def __irshift__(self, *args, **kwargs):
r = np.ndarray.__irshift__(self, *args, **kwargs)
self._notify_observers()
return r
def __rrshift__(self, *args, **kwargs):
r = np.ndarray.__rrshift__(self, *args, **kwargs)
self._notify_observers()
return r
def __ixor__(self, *args, **kwargs):
r = np.ndarray.__ixor__(self, *args, **kwargs)
self._notify_observers()
return r
def __rxor__(self, *args, **kwargs):
r = np.ndarray.__rxor__(self, *args, **kwargs)
self._notify_observers()

View file

@ -46,6 +46,7 @@ class Param(ObservableArray, Constrainable, Gradcheckable):
"""
__array_priority__ = -1 # Never give back Param
_fixes_ = None
_parameters_ = []
def __new__(cls, name, input_array, default_constraint=None):
obj = numpy.atleast_1d(super(Param, cls).__new__(cls, input_array=input_array))
obj._current_slice_ = (slice(obj.shape[0]),)
@ -144,9 +145,6 @@ class Param(ObservableArray, Constrainable, Gradcheckable):
# from_name = self.name
# self.name = new_name
# self._direct_parent_._name_changed(self, from_name)
@property
def _parameters_(self):
return []
def _collect_gradient(self, target):
target[:] = self.gradient.flat
#===========================================================================