def test_slice(example_grid_nd): """test scalar slicing""" sf = ScalarField(example_grid_nd, 0.5) p = example_grid_nd.get_random_point() for i in range(example_grid_nd.num_axes): sf_slc = sf.slice({example_grid_nd.axes[i]: p[i]}) np.testing.assert_allclose(sf_slc.data, 0.5) assert sf_slc.grid.dim < example_grid_nd.dim assert sf_slc.grid.num_axes == example_grid_nd.num_axes - 1 with pytest.raises(boundaries.DomainError): sf.slice({example_grid_nd.axes[0]: -10}) with pytest.raises(ValueError): sf.slice({"q": 0})
def test_complex_methods(): """test special methods for complex data type""" grid = UnitGrid([2, 2]) f = ScalarField(grid, 1j) for backend in ["scipy", "numba"]: val = f.interpolate([1, 1], backend=backend) np.testing.assert_allclose(val, np.array([1j, 1j])) f = ScalarField(grid, 1 + 2j) np.testing.assert_allclose(f.project("x").data, np.full((2,), 2 + 4j)) np.testing.assert_allclose(f.slice({"x": 1}).data, np.full((2,), 1 + 2j))
def test_slice_positions(): """test scalar slicing at standard positions""" grid = UnitGrid([3, 1]) sf = ScalarField(grid, np.arange(3).reshape(3, 1)) assert sf.slice({"x": "min"}).data == 0 assert sf.slice({"x": "mid"}).data == 1 assert sf.slice({"x": "max"}).data == 2 with pytest.raises(ValueError): sf.slice({"x": "foo"}) with pytest.raises(ValueError): sf.slice({"x": 0}, method="nonsense")