Skip to content

Commit

Permalink
Merge pull request #325 from bccp/fix-324
Browse files Browse the repository at this point in the history
.apply is no longer inplace. It creates a view with extended 'actions'.
  • Loading branch information
nickhand committed Apr 4, 2017
2 parents 6c85962 + 6548c45 commit 9dfda66
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 2 deletions.
18 changes: 17 additions & 1 deletion nbodykit/base/mesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,27 @@ def __init__(self, comm, Nmesh, BoxSize, dtype):
self.attrs['Nmesh'] = self.pm.Nmesh.copy()

self._actions = []
self.base = None

def view(self):
view = object.__new__(MeshSource)
view.comm = self.comm
view.dtype = self.dtype
view.pm = self.pm
view.attrs.update(self.attrs)
view._actions = []
view.actions.extend(self.actions)
view.base = self
return view

@property
def actions(self):
return self._actions

def apply(self, func, kind='wavenumber', mode='complex'):
self.actions.append((mode, func, kind))
view = self.view()
view.actions.append((mode, func, kind))
return view

def __len__(self):
"""
Expand All @@ -52,9 +66,11 @@ def __len__(self):
return 0

def to_real_field(self):
if self.base is not None: return self.base.to_real_field()
return NotImplemented

def to_complex_field(self):
if self.base is not None: return self.base.to_complex_field()
return NotImplemented

def to_field(self, mode='real'):
Expand Down
2 changes: 1 addition & 1 deletion nbodykit/tests/test_lab.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ def filter(k, v):
kk[kk == 0] = 1
return v / kk

source.apply(filter)
source = source.apply(filter)

real = source.paint(mode='real')
complex = source.paint(mode='complex')
Expand Down

0 comments on commit 9dfda66

Please sign in to comment.