Exemplo n.º 1
0
 def loss(delta):
   x = np.arange(100.0)
   border = 10
   indices = np.arange(x.size) + delta
   # linear interpolation of the linear function y=x should be exact
   shifted = lsp_ndimage.map_coordinates(x, [indices], order=1)
   return ((x - shifted) ** 2)[border:-border].mean()
Exemplo n.º 2
0
    def testMapCoordinates(self, shape, dtype, coords_shape, coords_dtype,
                           order, mode, cval, impl, round_, rng_factory):
        def args_maker():
            x = np.arange(prod(shape), dtype=dtype).reshape(shape)
            coords = [(size - 1) * rng(coords_shape, coords_dtype)
                      for size in shape]
            if round_:
                coords = [c.round().astype(int) for c in coords]
            return x, coords

        rng = rng_factory(self.rng())
        lsp_op = lambda x, c: lsp_ndimage.map_coordinates(
            x, c, order=order, mode=mode, cval=cval)
        impl_fun = (osp_ndimage.map_coordinates
                    if impl == "original" else _fixed_ref_map_coordinates)
        osp_op = lambda x, c: impl_fun(x, c, order=order, mode=mode, cval=cval)
        if dtype in float_dtypes:
            epsilon = max([
                dtypes.finfo(dtypes.canonicalize_dtype(d)).eps
                for d in [dtype, coords_dtype]
            ])
            self._CheckAgainstNumpy(osp_op,
                                    lsp_op,
                                    args_maker,
                                    tol=100 * epsilon)
        else:
            self._CheckAgainstNumpy(osp_op, lsp_op, args_maker, tol=0)
Exemplo n.º 3
0
  def testMapCoordinatesRoundHalf(self, dtype, order):
    x = np.arange(-3, 3, dtype=dtype)
    c = np.array([[.5, 1.5, 2.5, 3.5]])
    def args_maker():
      return x, c

    lsp_op = lambda x, c: lsp_ndimage.map_coordinates(x, c, order=order)
    osp_op = lambda x, c: osp_ndimage.map_coordinates(x, c, order=order)
    self._CheckAgainstNumpy(osp_op, lsp_op, args_maker)
Exemplo n.º 4
0
    def testMapCoordinatesRoundHalf(self, dtype, order):
        x = np.arange(-3, 3, dtype=dtype)
        c = np.array([[.5, 1.5, 2.5, 3.5]])

        def args_maker():
            return x, c

        lsp_op = lambda x, c: lsp_ndimage.map_coordinates(x, c, order=order)
        osp_op = lambda x, c: osp_ndimage.map_coordinates(x, c, order=order)

        with jtu.strict_promotion_if_dtypes_match([dtype, c.dtype]):
            self._CheckAgainstNumpy(osp_op, lsp_op, args_maker)
Exemplo n.º 5
0
 def testMapCoordinatesErrors(self):
   x = np.arange(5.0)
   c = [np.linspace(0, 5, num=3)]
   with self.assertRaisesRegex(NotImplementedError, 'requires order<=1'):
     lsp_ndimage.map_coordinates(x, c, order=2)
   with self.assertRaisesRegex(
       NotImplementedError, 'does not yet support mode'):
     lsp_ndimage.map_coordinates(x, c, order=1, mode='reflect')
   with self.assertRaisesRegex(ValueError, 'sequence of length'):
     lsp_ndimage.map_coordinates(x, [c, c], order=1)
Exemplo n.º 6
0
def _resample_1d(inputs, new_size):
  if inputs.ndim != 1:
    raise ValueError(f'inputs must be 1d but has shape {inputs.shape}')
  x = jnp.linspace(0, inputs.size - 1, num=new_size)
  return ndimage.map_coordinates(inputs, [x], order=1, mode='nearest')
Exemplo n.º 7
0
 def interp(x):
     xu = interval_to_unit(x, y0, y1)
     xun = np.clip(xu * n, 0, n)
     return map_coordinates(pvals, np.atleast_1d(xun), order=1, mode='nearest')