From 0ba20735e8af619aad0f6cdc5ea3c8af96a0ce46 Mon Sep 17 00:00:00 2001 From: csongor <csongor.varady@gmail.com> Date: Sun, 29 May 2016 09:51:59 -0700 Subject: [PATCH] WIP: fix get/set item --- nifty_field.py | 52 ++++---------------------------------------------- 1 file changed, 4 insertions(+), 48 deletions(-) diff --git a/nifty_field.py b/nifty_field.py index 97a9409c1..b1ee34154 100644 --- a/nifty_field.py +++ b/nifty_field.py @@ -289,7 +289,7 @@ class field(object): new_field = EmptyField() # repair its class new_field.__class__ = self.__class__ - # copy domain, codomain, ishape and val + # copy domain, codomain and val for key, value in self.__dict__.items(): if key != 'val': new_field.__dict__[key] = value @@ -347,54 +347,10 @@ class field(object): # TODO: Add functionality for boolean indexing. def __getitem__(self, key): - if np.isscalar(key) == True or isinstance(key, slice): - key = (key,) - if self.ishape == (): - return self.domain.getitem(self.get_val(), key) - else: - gotten = self.get_val()[key[:len(self.ishape)]] - try: - is_data_container = (gotten.dtype.type == np.object_) - except(AttributeError): - is_data_container = False - - if len(key) > len(self.ishape): - if is_data_container: - gotten = map( - lambda z: self.domain.getitem( - z, key[len(self.ishape):]), - gotten) - else: - gotten = self.domain.getitem(gotten, - key[len(self.ishape):]) - return gotten + return self.val[key] - def __setitem__(self, key, value): - if np.isscalar(key) or isinstance(key, slice): - key = (key,) - if self.ishape == (): - return self.domain.setitem(self.get_val(), value, key) - else: - if len(key) > len(self.ishape): - gotten = self.get_val()[key[:len(self.ishape)]] - try: - is_data_container = (gotten.dtype.type == np.object_) - except(AttributeError): - is_data_container = False - - if is_data_container: - gotten = map( - lambda z1, z2: self.domain.setitem( - z1, z2, key[len(self.ishape):]), - gotten, value) - else: - gotten = self.domain.setitem(gotten, value, - key[len(self.ishape):]) - else: - dummy = np.empty(self.ishape) - gotten = self.val.__setitem__(key, self.cast( - value, ishape=np.shape(dummy[key]))) - return gotten + def __setitem__(self, key, item): + self.val[key] = item def get_shape(self): if len(self.domain) > 1: -- GitLab