From a272d7c5e8a7a9d2fd948e31ba8f686b17bcd292 Mon Sep 17 00:00:00 2001
From: Martin Reinecke <martin@mpa-garching.mpg.de>
Date: Thu, 5 Dec 2019 12:03:12 +0100
Subject: [PATCH] more renamings

---
 demos/Wiener_Filter.ipynb                      | 14 +++++++-------
 demos/bernoulli_demo.py                        |  2 +-
 demos/find_amplitude_parameters.py             |  2 +-
 demos/getting_started_1.py                     |  2 +-
 demos/getting_started_2.py                     |  4 ++--
 demos/polynomial_fit.py                        |  2 +-
 nifty6/domains/lm_space.py                     |  6 +++---
 nifty6/domains/power_space.py                  |  2 +-
 nifty6/domains/rg_space.py                     |  4 ++--
 nifty6/field.py                                | 18 +++++++++++-------
 nifty6/library/correlated_fields.py            |  4 ++--
 nifty6/library/los_response.py                 | 13 ++++++-------
 nifty6/linearization.py                        |  4 ++--
 nifty6/minimization/metric_gaussian_kl_mpi.py  |  2 +-
 nifty6/minimization/scipy_minimizer.py         |  2 +-
 nifty6/multi_field.py                          |  9 +++++++--
 nifty6/operator_spectrum.py                    |  2 +-
 nifty6/operators/distributors.py               |  4 ++--
 nifty6/plot.py                                 |  2 +-
 nifty6/probing.py                              |  2 +-
 nifty6/sugar.py                                |  4 ++--
 test/test_minimizers.py                        | 12 ++++++------
 test/test_multi_field.py                       |  2 +-
 test/test_operators/test_adjoint.py            |  4 ++--
 test/test_operators/test_representation.py     |  4 ++--
 test/test_operators/test_smoothing_operator.py |  2 +-
 26 files changed, 68 insertions(+), 60 deletions(-)

diff --git a/demos/Wiener_Filter.ipynb b/demos/Wiener_Filter.ipynb
index 26f5e4028..175421085 100644
--- a/demos/Wiener_Filter.ipynb
+++ b/demos/Wiener_Filter.ipynb
@@ -427,12 +427,12 @@
     "\n",
     "mask = np.full(s_space.shape, 1.)\n",
     "mask[l:h] = 0\n",
-    "mask = ift.Field.from_arr(s_space, mask)\n",
+    "mask = ift.Field.from_raw(s_space, mask)\n",
     "\n",
     "R = ift.DiagonalOperator(mask)(HT)\n",
-    "n = n.val.copy()\n",
+    "n = n.val_rw()\n",
     "n[l:h] = 0\n",
-    "n = ift.Field.from_arr(s_space, n)\n",
+    "n = ift.Field.from_raw(s_space, n)\n",
     "\n",
     "d = R(sh) + n"
    ]
@@ -501,7 +501,7 @@
     "m_data = HT(m).val\n",
     "m_var_data = m_var.val\n",
     "uncertainty = np.sqrt(m_var_data)\n",
-    "d_data = d.val.copy()\n",
+    "d_data = d.val_rw()\n",
     "\n",
     "# Set lost data to NaN for proper plotting\n",
     "d_data[d_data == 0] = np.nan"
@@ -583,12 +583,12 @@
     "\n",
     "mask = np.full(s_space.shape, 1.)\n",
     "mask[l:h,l:h] = 0.\n",
-    "mask = ift.Field.from_arr(s_space, mask)\n",
+    "mask = ift.Field.from_raw(s_space, mask)\n",
     "\n",
     "R = ift.DiagonalOperator(mask)(HT)\n",
-    "n = n.val.copy()\n",
+    "n = n.val_rw()\n",
     "n[l:h, l:h] = 0\n",
-    "n = ift.Field.from_arr(s_space, n)\n",
+    "n = ift.Field.from_raw(s_space, n)\n",
     "curv = Curvature(R=R, N=N, Sh=Sh)\n",
     "D = curv.inverse\n",
     "\n",
diff --git a/demos/bernoulli_demo.py b/demos/bernoulli_demo.py
index 19e82af32..4cd8dbc1d 100644
--- a/demos/bernoulli_demo.py
+++ b/demos/bernoulli_demo.py
@@ -63,7 +63,7 @@ if __name__ == '__main__':
     mock_position = ift.from_random('normal', harmonic_space)
     tmp = p(mock_position).val.astype(np.float64)
     data = np.random.binomial(1, tmp)
-    data = ift.Field.from_arr(R.target, data)
+    data = ift.Field.from_raw(R.target, data)
 
     # Compute likelihood and Hamiltonian
     position = ift.from_random('normal', harmonic_space)
diff --git a/demos/find_amplitude_parameters.py b/demos/find_amplitude_parameters.py
index e96c06615..90cdfd293 100644
--- a/demos/find_amplitude_parameters.py
+++ b/demos/find_amplitude_parameters.py
@@ -57,7 +57,7 @@ if __name__ == '__main__':
         for _ in range(n_samps):
             fld = pspec(ift.from_random('normal', pspec.domain))
             klengths = fld.domain[0].k_lengths
-            ycoord = fld.val.copy()
+            ycoord = fld.val_rw()
             ycoord[0] = ycoord[1]
             ax.plot(klengths, ycoord, alpha=1)
 
diff --git a/demos/getting_started_1.py b/demos/getting_started_1.py
index b0277a750..3698549a0 100644
--- a/demos/getting_started_1.py
+++ b/demos/getting_started_1.py
@@ -95,7 +95,7 @@ if __name__ == '__main__':
     # and harmonic transformaion
 
     # Masking operator to model that parts of the field have not been observed
-    mask = ift.Field.from_arr(position_space, mask)
+    mask = ift.Field.from_raw(position_space, mask)
     Mask = ift.MaskOperator(mask)
 
     # The response operator consists of
diff --git a/demos/getting_started_2.py b/demos/getting_started_2.py
index 62f2e9351..17b4e0515 100644
--- a/demos/getting_started_2.py
+++ b/demos/getting_started_2.py
@@ -40,7 +40,7 @@ def exposure_2d():
     exposure[:, x_shape*4//5:x_shape] *= .1
     exposure[:, x_shape//2:x_shape*3//2] *= 3.
 
-    return ift.Field.from_arr(position_space, exposure)
+    return ift.Field.from_raw(position_space, exposure)
 
 
 if __name__ == '__main__':
@@ -95,7 +95,7 @@ if __name__ == '__main__':
     mock_position = ift.from_random('normal', domain)
     data = lamb(mock_position)
     data = np.random.poisson(data.val.astype(np.float64))
-    data = ift.Field.from_arr(d_space, data)
+    data = ift.Field.from_raw(d_space, data)
     likelihood = ift.PoissonianEnergy(data)(lamb)
 
     # Settings for minimization
diff --git a/demos/polynomial_fit.py b/demos/polynomial_fit.py
index dcc3a47e1..be51daf0c 100644
--- a/demos/polynomial_fit.py
+++ b/demos/polynomial_fit.py
@@ -71,7 +71,7 @@ class PolynomialResponse(ift.LinearOperator):
 
     def apply(self, x, mode):
         self._check_input(x, mode)
-        val = x.val.copy()
+        val = x.val_rw()
         if mode == self.TIMES:
             # FIXME Use polynomial() here
             out = self._mat.dot(val)
diff --git a/nifty6/domains/lm_space.py b/nifty6/domains/lm_space.py
index ad5799bfd..d3e9723d0 100644
--- a/nifty6/domains/lm_space.py
+++ b/nifty6/domains/lm_space.py
@@ -87,7 +87,7 @@ class LMSpace(StructuredDomain):
         for m in range(1, mmax+1):
             ldist[idx:idx+2*(lmax+1-m)] = tmp[2*m:]
             idx += 2*(lmax+1-m)
-        return Field.from_arr(self, ldist)
+        return Field.from_raw(self, ldist)
 
     def get_unique_k_lengths(self):
         return np.arange(self.lmax+1, dtype=np.float64)
@@ -123,7 +123,7 @@ class LMSpace(StructuredDomain):
         lm0 = gl.get_default_codomain()
         theta = pyHealpix.GL_thetas(gl.nlat)
         # evaluate the kernel function at the required thetas
-        kernel_sphere = Field.from_arr(gl, func(theta))
+        kernel_sphere = Field.from_raw(gl, func(theta))
         # normalize the kernel such that the integral over the sphere is 4pi
         kernel_sphere = kernel_sphere * (4 * np.pi / kernel_sphere.integrate())
         # compute the spherical harmonic coefficients of the kernel
@@ -131,7 +131,7 @@ class LMSpace(StructuredDomain):
         kernel_lm = op.adjoint_times(kernel_sphere.weight(1)).val
         # evaluate the k lengths of the harmonic space
         k_lengths = self.get_k_length_array().val.astype(np.int)
-        return Field.from_arr(self, kernel_lm[k_lengths])
+        return Field.from_raw(self, kernel_lm[k_lengths])
 
     @property
     def lmax(self):
diff --git a/nifty6/domains/power_space.py b/nifty6/domains/power_space.py
index f5774e3fd..13b73cdb8 100644
--- a/nifty6/domains/power_space.py
+++ b/nifty6/domains/power_space.py
@@ -240,7 +240,7 @@ class PowerSpace(StructuredDomain):
 
     @property
     def pindex(self):
-        """data_object : bin indices
+        """numpy.ndarray : bin indices
 
         Bin index for every pixel in the harmonic partner.
         """
diff --git a/nifty6/domains/rg_space.py b/nifty6/domains/rg_space.py
index 3301d2e68..7b41ff754 100644
--- a/nifty6/domains/rg_space.py
+++ b/nifty6/domains/rg_space.py
@@ -97,14 +97,14 @@ class RGSpace(StructuredDomain):
         res = np.arange(self.shape[0], dtype=np.float64)
         res = np.minimum(res, self.shape[0]-res)*self.distances[0]
         if len(self.shape) == 1:
-            return Field.from_arr(self, res)
+            return Field.from_raw(self, res)
         res *= res
         for i in range(1, len(self.shape)):
             tmp = np.arange(self.shape[i], dtype=np.float64)
             tmp = np.minimum(tmp, self.shape[i]-tmp)*self.distances[i]
             tmp *= tmp
             res = np.add.outer(res, tmp)
-        return Field.from_arr(self, np.sqrt(res))
+        return Field.from_raw(self, np.sqrt(res))
 
     def get_k_length_array(self):
         if (not self.harmonic):
diff --git a/nifty6/field.py b/nifty6/field.py
index 1adb5143c..00cb2923d 100644
--- a/nifty6/field.py
+++ b/nifty6/field.py
@@ -32,8 +32,8 @@ class Field(object):
     ----------
     domain : DomainTuple
         The domain of the new Field.
-    val : data_object
-        This object's global shape must match the domain shape
+    val : numpy.ndarray
+        This object's shape must match the domain shape
         After construction, the object will no longer be writeable!
 
     Notes
@@ -93,7 +93,7 @@ class Field(object):
         return Field(domain, val)
 
     @staticmethod
-    def from_arr(domain, arr):
+    def from_raw(domain, arr):
         """Returns a Field constructed from `domain` and `arr`.
 
         Parameters
@@ -148,15 +148,19 @@ class Field(object):
 
     @property
     def val(self):
-        """numpy.ndarray : the data object storing the field's entries.
+        """numpy.ndarray : the array storing the field's entries.
 
         Notes
         -----
-        This property is intended for low-level, internal use only. Do not use
-        from outside of NIFTy's core; there should be better alternatives.
+        The returned array is read-only.
         """
         return self._val
 
+    def val_rw(self):
+        """numpy.ndarray : a copy of the array storing the field's entries.
+        """
+        return self._val.copy()
+
     @property
     def dtype(self):
         """type : the data type of the field's entries"""
@@ -241,7 +245,7 @@ class Field(object):
         Field
             The weighted field.
         """
-        aout = self.val.copy()
+        aout = self.val_rw()
 
         spaces = utilities.parse_spaces(spaces, len(self._domain))
 
diff --git a/nifty6/library/correlated_fields.py b/nifty6/library/correlated_fields.py
index a6a8a019b..ba348cac0 100644
--- a/nifty6/library/correlated_fields.py
+++ b/nifty6/library/correlated_fields.py
@@ -179,7 +179,7 @@ class _TwoLogIntegrations(LinearOperator):
             res[from_third] = (res[from_third] + res[no_border])/2*self._log_vol[extender_sl] + x[first]
             res[from_third] = np.cumsum(res[from_third], axis=axis)
         else:
-            x = x.val.copy()
+            x = x.val_rw()
             res = np.zeros(self._domain.shape)
             x[from_third] = np.cumsum(x[from_third][reverse], axis=axis)[reverse]
             res[first] += x[from_third]
@@ -199,7 +199,7 @@ class _Normalization(Operator):
         pd = PowerDistributor(hspace,
                               power_space=self._domain[space],
                               space=space)
-        mode_multiplicity = pd.adjoint(full(pd.target, 1.)).val.copy()
+        mode_multiplicity = pd.adjoint(full(pd.target, 1.)).val_rw()
         zero_mode = (slice(None),)*self._domain.axes[space][0] + (0,)
         mode_multiplicity[zero_mode] = 0
         self._mode_multiplicity = makeField(self._domain,
diff --git a/nifty6/library/los_response.py b/nifty6/library/los_response.py
index 25e05de19..bd8e65c12 100644
--- a/nifty6/library/los_response.py
+++ b/nifty6/library/los_response.py
@@ -172,12 +172,11 @@ class LOSResponse(LinearOperator):
                              "getting negative distances")
         real_ends = starts + diffs*real_distances
         dist = np.array(self.domain[0].distances).reshape((-1, 1))
-        localized_pixel_starts = starts/dist + 0.5
-        localized_pixel_ends = real_ends/dist + 0.5
+        pixel_starts = starts/dist + 0.5
+        pixel_ends = real_ends/dist + 0.5
 
-        # get the shape of the local data slice
-        w_i = _comp_traverse(localized_pixel_starts,
-                             localized_pixel_ends,
+        w_i = _comp_traverse(pixel_starts,
+                             pixel_ends,
                              self.domain[0].shape,
                              np.array(self.domain[0].distances),
                              1./(1./difflen+truncation*sigmas),
@@ -229,6 +228,6 @@ class LOSResponse(LinearOperator):
         if mode == self.TIMES:
             result_arr = self._smat.matvec(x.val.reshape(-1))
             return Field(self._target, result_arr)
-        local_input_data = x.val.reshape(-1)
-        res = self._smat.rmatvec(local_input_data).reshape(self.domain[0].shape)
+        input_data = x.val.reshape(-1)
+        res = self._smat.rmatvec(input_data).reshape(self.domain[0].shape)
         return Field(self._domain, res)
diff --git a/nifty6/linearization.py b/nifty6/linearization.py
index 10141ca65..d62d5b402 100644
--- a/nifty6/linearization.py
+++ b/nifty6/linearization.py
@@ -321,7 +321,7 @@ class Linearization(object):
         tmp = self._val.sinc()
         tmp2 = ((np.pi*self._val).cos()-tmp)/self._val
         ind = self._val.val == 0
-        loc = tmp2.val.copy()
+        loc = tmp2.val_rw()
         loc[ind] = 0
         tmp2 = Field(tmp.domain, loc)
         return self.new(tmp, makeOp(tmp2)(self._jac))
@@ -371,7 +371,7 @@ class Linearization(object):
         tmp2 = self._val.sign()
 
         ind = self._val.val == 0
-        loc = tmp2.val.copy().astype(float)
+        loc = tmp2.val_rw().astype(float)
         loc[ind] = np.nan
         tmp2 = Field(tmp.domain, loc)
 
diff --git a/nifty6/minimization/metric_gaussian_kl_mpi.py b/nifty6/minimization/metric_gaussian_kl_mpi.py
index f0dc1ce58..9de0866af 100644
--- a/nifty6/minimization/metric_gaussian_kl_mpi.py
+++ b/nifty6/minimization/metric_gaussian_kl_mpi.py
@@ -188,7 +188,7 @@ class MetricGaussianKL_MPI(Energy):
             for s in self._samples:
                 tmp = self._hamiltonian(self._lin+s)
                 if v is None:
-                    v = tmp.val.val.copy()
+                    v = tmp.val.val_rw()
                     g = tmp.gradient
                 else:
                     v += tmp.val.val
diff --git a/nifty6/minimization/scipy_minimizer.py b/nifty6/minimization/scipy_minimizer.py
index fcba48631..353006869 100644
--- a/nifty6/minimization/scipy_minimizer.py
+++ b/nifty6/minimization/scipy_minimizer.py
@@ -48,7 +48,7 @@ def _toArray(fld):
 
 def _toArray_rw(fld):
     if isinstance(fld, Field):
-        return fld.val.copy().reshape(-1)
+        return fld.val_rw().reshape(-1)
     return _multiToArray(fld)
 
 
diff --git a/nifty6/multi_field.py b/nifty6/multi_field.py
index b78caa5a0..66d655505 100644
--- a/nifty6/multi_field.py
+++ b/nifty6/multi_field.py
@@ -132,12 +132,17 @@ class MultiField(object):
         return MultiField(domain, tuple(Field(dom, val)
                           for dom in domain._domains))
 
-    def to_global_data(self):
+    @property
+    def val(self):
         return {key: val.val
                 for key, val in zip(self._domain.keys(), self._val)}
 
+    def val_rw(self):
+        return {key: val.val_rw()
+                for key, val in zip(self._domain.keys(), self._val)}
+
     @staticmethod
-    def from_global_data(domain, arr):
+    def from_raw(domain, arr):
         return MultiField(
             domain, tuple(Field(domain[key], arr[key])
                           for key in domain.keys()))
diff --git a/nifty6/operator_spectrum.py b/nifty6/operator_spectrum.py
index 53336afc6..cb0a8a3ef 100644
--- a/nifty6/operator_spectrum.py
+++ b/nifty6/operator_spectrum.py
@@ -56,7 +56,7 @@ class _DomRemover(LinearOperator):
     def apply(self, x, mode):
         self._check_input(x, mode)
         self._check_float_dtype(x)
-        x = x.to_global_data()
+        x = x.val
         if isinstance(self._domain, DomainTuple):
             res = x.ravel() if mode == self.TIMES else x.reshape(
                 self._domain.shape)
diff --git a/nifty6/operators/distributors.py b/nifty6/operators/distributors.py
index ee7e102ef..bcd413ad3 100644
--- a/nifty6/operators/distributors.py
+++ b/nifty6/operators/distributors.py
@@ -74,7 +74,7 @@ class DOFDistributor(LinearOperator):
             wgt = np.bincount(dofdex.val.ravel(), minlength=nbin)
             wgt = wgt*partner.scalar_dvol
         else:
-            dvol = Field.from_arr(partner, partner.dvol).val
+            dvol = Field.from_raw(partner, partner.dvol).val
             wgt = np.bincount(dofdex.val.ravel(),
                               minlength=nbin, weights=dvol)
         # The explicit conversion to float64 is necessary because bincount
@@ -108,7 +108,7 @@ class DOFDistributor(LinearOperator):
         oarr = np.zeros(self._hshape, dtype=x.dtype)
         oarr = special_add_at(oarr, 1, self._dofdex, arr)
         oarr = oarr.reshape(self._domain.shape)
-        res = Field.from_arr(self._domain, oarr)
+        res = Field.from_raw(self._domain, oarr)
         return res
 
     def _times(self, x):
diff --git a/nifty6/plot.py b/nifty6/plot.py
index 574a54587..8e84cd674 100644
--- a/nifty6/plot.py
+++ b/nifty6/plot.py
@@ -310,7 +310,7 @@ def _plot1D(f, ax, **kwargs):
         plt.yscale(kwargs.pop("yscale", "log"))
         xcoord = dom.k_lengths
         for i, fld in enumerate(f):
-            ycoord = fld.val.copy()
+            ycoord = fld.val_rw()
             ycoord[0] = ycoord[1]
             plt.plot(xcoord, ycoord, label=label[i],
                      linewidth=linewidth[i], alpha=alpha[i])
diff --git a/nifty6/probing.py b/nifty6/probing.py
index f99b8d386..337e239a1 100644
--- a/nifty6/probing.py
+++ b/nifty6/probing.py
@@ -144,7 +144,7 @@ def approximation2endo(op, nsamples):
     approx = sc.var
     dct = approx.to_dict()
     for kk in dct:
-        foo = dct[kk].to_global_data_rw()
+        foo = dct[kk].val_rw()
         foo[foo == 0] = 1
         dct[kk] = makeField(dct[kk].domain, foo)
     return MultiField.from_dict(dct)
diff --git a/nifty6/sugar.py b/nifty6/sugar.py
index 973b989d0..2a568eac9 100644
--- a/nifty6/sugar.py
+++ b/nifty6/sugar.py
@@ -297,8 +297,8 @@ def makeField(domain, arr):
         The newly created random field
     """
     if isinstance(domain, (dict, MultiDomain)):
-        return MultiField.from_global_data(domain, arr)
-    return Field.from_arr(domain, arr)
+        return MultiField.from_raw(domain, arr)
+    return Field.from_raw(domain, arr)
 
 
 def makeDomain(domain):
diff --git a/test/test_minimizers.py b/test/test_minimizers.py
index 83c8d8986..e0c664180 100644
--- a/test/test_minimizers.py
+++ b/test/test_minimizers.py
@@ -131,11 +131,11 @@ def test_rosenbrock(minimizer):
 
         @property
         def value(self):
-            return rosen(self._position.val.copy())
+            return rosen(self._position.val_rw())
 
         @property
         def gradient(self):
-            inp = self._position.val.copy()
+            inp = self._position.val_rw()
             out = ift.Field(space, rosen_der(inp))
             return out
 
@@ -143,13 +143,13 @@ def test_rosenbrock(minimizer):
         def metric(self):
             class RBCurv(ift.EndomorphicOperator):
                 def __init__(self, loc):
-                    self._loc = loc.val.copy()
+                    self._loc = loc.val_rw()
                     self._capability = self.TIMES
                     self._domain = space
 
                 def apply(self, x, mode):
                     self._check_input(x, mode)
-                    inp = x.val.copy()
+                    inp = x.val_rw()
                     out = ift.Field(
                         space, rosen_hess_prod(self._loc.copy(), inp))
                     return out
@@ -159,8 +159,8 @@ def test_rosenbrock(minimizer):
             return ift.InversionEnabler(RBCurv(self._position), t1)
 
         def apply_metric(self, x):
-            inp = x.val.copy()
-            pos = self._position.val.copy()
+            inp = x.val_rw()
+            pos = self._position.val_rw()
             return ift.Field(space, rosen_hess_prod(pos, inp))
 
     try:
diff --git a/test/test_multi_field.py b/test/test_multi_field.py
index 9c1a7c081..e29fd3187 100644
--- a/test/test_multi_field.py
+++ b/test/test_multi_field.py
@@ -44,7 +44,7 @@ def test_multifield_field_consistency():
 
 def test_dataconv():
     f1 = ift.full(dom, 27)
-    f2 = ift.makeField(dom, f1.to_global_data())
+    f2 = ift.makeField(dom, f1.val)
     for key, val in f1.items():
         assert_equal(val.val, f2[key].val)
     if "d1" not in f2:
diff --git a/test/test_operators/test_adjoint.py b/test/test_operators/test_adjoint.py
index 0f3b2622a..c55f6b986 100644
--- a/test/test_operators/test_adjoint.py
+++ b/test/test_operators/test_adjoint.py
@@ -127,7 +127,7 @@ def testDOFDistributor(sp, dtype):
     if sp.size < 4:
         return
     dofdex = np.arange(sp.size).reshape(sp.shape) % 3
-    dofdex = ift.Field.from_arr(sp, dofdex)
+    dofdex = ift.Field.from_raw(sp, dofdex)
     op = ift.DOFDistributor(dofdex)
     ift.extra.consistency_check(op, dtype, dtype)
 
@@ -174,7 +174,7 @@ def testMask(sp, dtype):
     f = ift.from_random('normal', sp).val
     mask = np.zeros_like(f)
     mask[f > 0] = 1
-    mask = ift.Field.from_arr(sp, mask)
+    mask = ift.Field.from_raw(sp, mask)
     # Test MaskOperator
     op = ift.MaskOperator(mask)
     ift.extra.consistency_check(op, dtype, dtype)
diff --git a/test/test_operators/test_representation.py b/test/test_operators/test_representation.py
index efa87b848..b817b18be 100644
--- a/test/test_operators/test_representation.py
+++ b/test/test_operators/test_representation.py
@@ -102,7 +102,7 @@ def testDOFDistributor(sp, dtype):
     if sp.size < 4:
         return
     dofdex = np.arange(sp.size).reshape(sp.shape) % 3
-    dofdex = ift.Field.from_arr(sp, dofdex)
+    dofdex = ift.Field.from_raw(sp, dofdex)
     _check_repr(ift.DOFDistributor(dofdex))
 
 
@@ -140,7 +140,7 @@ def testMask(sp, dtype):
     f = ift.from_random('normal', sp).val
     mask = np.zeros_like(f)
     mask[f > 0] = 1
-    mask = ift.Field.from_arr(sp, mask)
+    mask = ift.Field.from_raw(sp, mask)
     # Test MaskOperator
     _check_repr(ift.MaskOperator(mask))
 
diff --git a/test/test_operators/test_smoothing_operator.py b/test/test_operators/test_smoothing_operator.py
index 71ce7b825..3bebbc419 100644
--- a/test/test_operators/test_smoothing_operator.py
+++ b/test/test_operators/test_smoothing_operator.py
@@ -56,7 +56,7 @@ def test_times(space, sigma):
     op = ift.HarmonicSmoothingOperator(space, sigma=sigma)
     fld = np.zeros(space.shape, dtype=np.float64)
     fld[0] = 1.
-    rand1 = ift.Field.from_arr(space, fld)
+    rand1 = ift.Field.from_raw(space, fld)
     tt1 = op.times(rand1)
     assert_allclose(1, tt1.sum())
 
-- 
GitLab