diff --git a/nifty_field.py b/nifty_field.py index 190eba6f8dc407e71619c311033e384984395c90..490a9a4dedb09d0ec4edaa96a1bdfdb3e9e5e839 100644 --- a/nifty_field.py +++ b/nifty_field.py @@ -9,6 +9,8 @@ from nifty.config import about,\ nifty_configuration as gc,\ dependency_injector as gdi +from nifty.nifty_core import space + import nifty.nifty_utilities as utilities POINT_DISTRIBUTION_STRATEGIES = DISTRIBUTION_STRATEGIES['global'] @@ -202,11 +204,10 @@ class field(object): if val is None: if kwargs == {}: - val = self._map(lambda: self.cast((0,))) + val = map(lambda z: self.cast(z), (0,)) else: - val = self._map(lambda: self.domain.get_random_values( - codomain=self.codomain, - **kwargs)) + val = map(lambda z: self.domain.get_random_values( + codomain=z, **kwargs), self.codomain) self.set_val(new_val=val, copy=copy) def _parse_comm(self, comm): @@ -229,7 +230,7 @@ class field(object): return result_comm def check_valid_domain(self, domain): - if not isinstance(domain, np.ndarray): + if not isinstance(domain, tuple): raise TypeError(about._errors.cstring( "ERROR: The given domain is not a list.")) for d in domain: @@ -245,15 +246,15 @@ class field(object): def check_codomain(self, domain, codomain): if codomain is None: return False - if domain.shape == codomain.shape: + if len(domain) == len(codomain): return np.all(map((lambda d, c: d._check_codomain(c)), domain, codomain)) else: return False def get_codomain(self, domain): - if domain.shape == (1,): - return np.array(domain[0].get_codomain()) + if len(domain) == 1: + return (domain[0].get_codomain(),) else: # TODO implement for multiple domain get_codomain need # calc_transform @@ -268,7 +269,7 @@ class field(object): else: working_field = self.copy_empty() - data_object = self._map( + data_object = map( lambda z: self.domain.apply_scalar_function(z, function, inplace), self.get_val()) @@ -276,7 +277,7 @@ class field(object): return working_field def copy(self, domain=None, codomain=None): - copied_val = self._map( + copied_val = map( lambda z: self.domain.unary_operation(z, op='copy'), self.get_val()) new_field = self.copy_empty(domain=domain, codomain=codomain) @@ -334,10 +335,10 @@ class field(object): """ if new_val is not None: if copy: - new_val = self._map( - lambda z: self.domain.unary_operation(z, 'copy'), + new_val = map( + lambda z: self.unary_operation(z, 'copy'), new_val) - self.val = self._map(lambda z: self.domain.cast(z), new_val) + self.val = map(lambda z: self.cast(z), new_val) return self.val def get_val(self): @@ -359,7 +360,7 @@ class field(object): if len(key) > len(self.ishape): if is_data_container: - gotten = self._map( + gotten = map( lambda z: self.domain.getitem( z, key[len(self.ishape):]), gotten) @@ -382,7 +383,7 @@ class field(object): is_data_container = False if is_data_container: - gotten = self._map( + gotten = map( lambda z1, z2: self.domain.setitem( z1, z2, key[len(self.ishape):]), gotten, value) @@ -607,7 +608,7 @@ class field(object): else: new_field = self.copy_empty() - new_val = self._map(lambda y: self.domain.calc_weight(y, power=power), + new_val = map(lambda y: self.domain.calc_weight(y, power=power), self.get_val()) new_field.set_val(new_val=new_val) @@ -675,12 +676,12 @@ class field(object): casted_x = self._cast_to_ishape(x) # Compute the dot respecting the fact of discrete/continous spaces if self.domain.discrete or bare: - result = self._map( + result = map( lambda z1, z2: self.domain.calc_dot(z1, z2), self.get_val(), casted_x) else: - result = self._map( + result = map( lambda z1, z2: self.domain.calc_dot( self.domain.calc_weight(z1, power=1), z2), @@ -744,7 +745,7 @@ class field(object): else: work_field = self.copy_empty() - new_val = self._map( + new_val = map( lambda z: self.domain.unary_operation(z, 'conjugate'), self.get_val()) work_field.set_val(new_val=new_val) @@ -789,7 +790,7 @@ class field(object): else: assert(new_domain.check_codomain(new_codomain)) - new_val = self._map( + new_val = map( lambda z: self.domain.calc_transform( z, codomain=new_domain, **kwargs), self.get_val()) @@ -835,7 +836,7 @@ class field(object): else: new_field = self.copy_empty() - new_val = self._map( + new_val = map( lambda z: self.domain.calc_smooth(z, sigma=sigma, **kwargs), self.get_val()) @@ -885,7 +886,7 @@ class field(object): kwargs.__delitem__("codomain") about.warnings.cprint("WARNING: codomain was removed from kwargs.") - power_spectrum = self._map( + power_spectrum = map( lambda z: self.domain.calc_power(z, codomain=self.codomain, **kwargs), self.get_val()) @@ -918,7 +919,7 @@ class field(object): The new diagonal operator instance. """ - any_zero_Q = self._map(lambda z: (z == 0).any(), self.get_val()) + any_zero_Q = map(lambda z: (z == 0).any(), self.get_val()) any_zero_Q = np.any(any_zero_Q) if any_zero_Q: raise AttributeError( @@ -1020,7 +1021,7 @@ class field(object): "\n- ishape = " + str(self.ishape) def _unary_helper(self, x, op, **kwargs): - result = self._map( + result = map( lambda z: self.domain.unary_operation(z, op=op, **kwargs), self.get_val()) return result @@ -1237,7 +1238,7 @@ class field(object): else: other_val = self._cast_to_tensor_helper(other_val) - new_val = self._map( + new_val = map( lambda z1, z2: self.domain.binary_operation(z1, z2, op=op, cast=0), self.get_val(), other_val) diff --git a/nifty_power_indices.py b/nifty_power_indices.py index ae10d6cc36c9c8f5dd132fcf6c3c5549eecf806b..5b10c65b73963dd1fc33420ae40599055963a4d5 100644 --- a/nifty_power_indices.py +++ b/nifty_power_indices.py @@ -427,9 +427,8 @@ class power_indices(object): class rg_power_indices(power_indices): - def __init__(self, shape, dgrid, datamodel, - allowed_distribution_strategies, - zerocentered=False, log=False, nbin=None, + def __init__(self, shape, dgrid, allowed_distribution_strategies, + datamodel='not', zerocentered=False, log=False, nbin=None, binbounds=None, comm=None): """ Returns an instance of the power_indices class. Given the shape and diff --git a/test/test_nifty_field.py b/test/test_nifty_field.py index 61f8fbb385037c1dadb30ea17ccbf4e2228204cd..0093fa4ebbce04b352562a8d89465af958e354e4 100644 --- a/test/test_nifty_field.py +++ b/test/test_nifty_field.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- -from numpy.testing import assert_equal,\ - assert_almost_equal,\ +from numpy.testing import assert_equal, \ + assert_almost_equal, \ assert_raises from nose_parameterized import parameterized @@ -9,21 +9,21 @@ import unittest import itertools import numpy as np -from nifty import space,\ - point_space,\ - rg_space,\ - lm_space,\ - hp_space,\ +from nifty import space, \ + point_space, \ + rg_space, \ + lm_space, \ + hp_space, \ gl_space from nifty.nifty_field import field from nifty.nifty_core import POINT_DISTRIBUTION_STRATEGIES -from nifty.rg.nifty_rg import RG_DISTRIBUTION_STRATEGIES,\ - gc as RG_GC -from nifty.lm.nifty_lm import LM_DISTRIBUTION_STRATEGIES,\ - GL_DISTRIBUTION_STRATEGIES,\ - HP_DISTRIBUTION_STRATEGIES +from nifty.rg.nifty_rg import RG_DISTRIBUTION_STRATEGIES, \ + gc as RG_GC +from nifty.lm.nifty_lm import LM_DISTRIBUTION_STRATEGIES, \ + GL_DISTRIBUTION_STRATEGIES, \ + HP_DISTRIBUTION_STRATEGIES ############################################################################### @@ -34,6 +34,7 @@ def custom_name_func(testcase_func, param_num, param): parameterized.to_safe_name("_".join(str(x) for x in param.args)), ) + ############################################################################### ############################################################################### @@ -92,62 +93,33 @@ for param in itertools.product([(1,), (4, 6), (5, 8)], [False], DATAMODELS['rg_space'], fft_modules): - space_list += [[(rg_space(shape=param[0], - zerocenter=param[1], - complexity=param[2], - distances=param[3], - harmonic=param[4], - fft_module=param[6]),param[6])]] + space_list += [[rg_space(shape=param[0], + zerocenter=param[1], + complexity=param[2], + distances=param[3], + harmonic=param[4], + fft_module=param[6]), param[5]]] ############################################################################### ############################################################################### class Test_field_init(unittest.TestCase): - - @parameterized.expand(space_list) - def test_successfull_init_and_attributes(self, s, datamodel): - f = field(domain=np.array([s]), dtype=s.dtype, datamodel=datamodel) - assert(f.domain[0] is s) - assert(s.check_codomain(f.codomain[0])) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @parameterized.expand( + itertools.product([(1,), (4, 6), (5, 8)], + [False, True], + [0, 1, 2], + [None, 0.3], + [False], + fft_modules, + DATAMODELS['rg_space']), + testcase_func_name=custom_name_func) + def test_successfull_init_and_attributes(self, shape, zerocenter, + complexity, distances, harmonic, + fft_module, datamodel): + s = rg_space(shape=shape, zerocenter=zerocenter, + complexity=complexity, distances=distances, + harmonic=harmonic, fft_module=fft_module) + f = field(domain=(s,), dtype=s.dtype, datamodel=datamodel) + assert (f.domain[0] is s) + assert (s.check_codomain(f.codomain[0]))