diff --git a/.travis.yml b/.travis.yml
index 471c8bd9f6..042f048892 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,16 +22,16 @@ git:
depth: 10000
install:
- - export IRIS_TEST_DATA_REF="e8e62ab79a2f8789f01f8dfa9829915984a39b2a"
+ - export IRIS_TEST_DATA_REF="a754fc977d30fdcdacb820b5a5fabd91056afc7b"
- export IRIS_TEST_DATA_SUFFIX=$(echo "${IRIS_TEST_DATA_REF}" | sed "s/^v//")
# Install miniconda
# -----------------
- - export CONDA_BASE=http://repo.continuum.io/miniconda/Miniconda
+ - export CONDA_BASE=https://repo.continuum.io/miniconda/Miniconda
- if [[ "$TRAVIS_PYTHON_VERSION" == 2* ]]; then
- wget ${CONDA_BASE}-3.7.0-Linux-x86_64.sh -O miniconda.sh;
+ wget ${CONDA_BASE}2-latest-Linux-x86_64.sh -O miniconda.sh;
else
- wget ${CONDA_BASE}3-3.7.0-Linux-x86_64.sh -O miniconda.sh;
+ wget ${CONDA_BASE}3-latest-Linux-x86_64.sh -O miniconda.sh;
fi
- bash miniconda.sh -b -p $HOME/miniconda
- export PATH="$HOME/miniconda/bin:$PATH"
@@ -60,10 +60,6 @@ install:
fi
fi
- # Perceptual image hashing (TBD: push recipe to conda-forge!)
- - conda install pip
- - pip install imagehash
-
- PREFIX=$HOME/miniconda/envs/$ENV_NAME
# Output debug info
@@ -75,9 +71,11 @@ install:
- python -c 'import cartopy; cartopy.io.shapereader.natural_earth()'
# iris test data
- - wget -O iris-test-data.zip https://github.com/SciTools/iris-test-data/archive/${IRIS_TEST_DATA_REF}.zip
- - unzip -q iris-test-data.zip
- - ln -s $(pwd)/iris-test-data-${IRIS_TEST_DATA_SUFFIX} iris-test-data
+ - if [[ "$TEST_MINIMAL" != true ]]; then
+ wget -O iris-test-data.zip https://github.com/SciTools/iris-test-data/archive/${IRIS_TEST_DATA_REF}.zip;
+ unzip -q iris-test-data.zip;
+ ln -s $(pwd)/iris-test-data-${IRIS_TEST_DATA_SUFFIX} iris-test-data;
+ fi
# prepare iris build directory
- python setup.py --with-unpack build_ext --include-dirs=${PREFIX}/include --library-dirs=${PREFIX}/lib
diff --git a/conda-requirements.txt b/conda-requirements.txt
index e8956ba09b..dfdf58143f 100644
--- a/conda-requirements.txt
+++ b/conda-requirements.txt
@@ -21,6 +21,7 @@ pep8
sphinx
iris_sample_data
filelock
+imagehash
# Optional iris dependencies
nc_time_axis
diff --git a/lib/iris/coord_systems.py b/lib/iris/coord_systems.py
index 1d23225940..51a95f4506 100644
--- a/lib/iris/coord_systems.py
+++ b/lib/iris/coord_systems.py
@@ -914,11 +914,11 @@ def __repr__(self):
return ("LambertAzimuthalEqualArea(latitude_of_projection_origin={!r},"
" longitude_of_projection_origin={!r}, false_easting={!r},"
" false_northing={!r}, ellipsoid={!r})").format(
- self.latitude_of_projection_origin,
- self.longitude_of_projection_origin,
- self.false_easting,
- self.false_northing,
- self.ellipsoid)
+ self.latitude_of_projection_origin,
+ self.longitude_of_projection_origin,
+ self.false_easting,
+ self.false_northing,
+ self.ellipsoid)
def as_cartopy_crs(self):
if self.ellipsoid is not None:
diff --git a/lib/iris/cube.py b/lib/iris/cube.py
index aa234ea71d..26604ac0e6 100644
--- a/lib/iris/cube.py
+++ b/lib/iris/cube.py
@@ -1835,6 +1835,9 @@ def summary(self, shorten=False, name_padding=35):
nameunit = '{name} / ({units})'.format(name=self.name(),
units=self.units)
+ # If all unknown and a STASH attribute exists, use it.
+ if nameunit == 'unknown / (unknown)' and 'STASH' in self.attributes:
+ nameunit = '{}'.format(self.attributes['STASH'])
cube_header = '{nameunit!s:{length}} ({dimension})'.format(
length=name_padding,
nameunit=nameunit,
diff --git a/lib/iris/experimental/regrid.py b/lib/iris/experimental/regrid.py
index c6123da4f5..06cc8b956e 100644
--- a/lib/iris/experimental/regrid.py
+++ b/lib/iris/experimental/regrid.py
@@ -137,8 +137,8 @@ def _within_bounds(src_bounds, tgt_bounds, orderswap=False):
extremes of the source bounds.
"""
- min_bound = np.min(src_bounds)
- max_bound = np.max(src_bounds)
+ min_bound = np.min(src_bounds) - 1e-14
+ max_bound = np.max(src_bounds) + 1e-14
# Swap upper-lower is necessary.
if orderswap is True:
diff --git a/lib/iris/plot.py b/lib/iris/plot.py
index 5b4f2989db..cccd7102c5 100644
--- a/lib/iris/plot.py
+++ b/lib/iris/plot.py
@@ -27,8 +27,6 @@
import collections
import datetime
-from functools import wraps
-import threading
import cartopy.crs as ccrs
import cartopy.mpl.geoaxes
@@ -56,26 +54,6 @@
PlotDefn = collections.namedtuple('PlotDefn', ('coords', 'transpose'))
-# Threading reentrant lock to ensure thread-safe plotting.
-_lock = threading.RLock()
-
-
-def _locker(func):
- """
- Decorator that ensures a thread-safe atomic operation is
- performed by the decorated function.
-
- Uses a shared threading reentrant lock to provide thread-safe
- plotting by public API functions.
-
- """
- @wraps(func)
- def decorated_func(*args, **kwargs):
- with _lock:
- result = func(*args, **kwargs)
- return result
- return decorated_func
-
def _get_plot_defn_custom_coords_picked(cube, coords, mode, ndims=2):
def names(coords):
@@ -686,7 +664,6 @@ def _map_common(draw_method_name, arg_func, mode, cube, plot_defn,
return plotfn(*new_args, **kwargs)
-@_locker
def contour(cube, *args, **kwargs):
"""
Draws contour lines based on the given Cube.
@@ -711,7 +688,6 @@ def contour(cube, *args, **kwargs):
return result
-@_locker
def contourf(cube, *args, **kwargs):
"""
Draws filled contours based on the given Cube.
@@ -838,7 +814,6 @@ def _fill_orography(cube, coords, mode, vert_plot, horiz_plot, style_args):
return result
-@_locker
def orography_at_bounds(cube, facecolor='#888888', coords=None, axes=None):
"""Plots orography defined at cell boundaries from the given Cube."""
@@ -869,7 +844,6 @@ def horiz_plot(v_coord, orography, style_args):
horiz_plot, style_args)
-@_locker
def orography_at_points(cube, facecolor='#888888', coords=None, axes=None):
"""Plots orography defined at sample points from the given Cube."""
@@ -891,7 +865,6 @@ def horiz_plot(v_coord, orography, style_args):
horiz_plot, style_args)
-@_locker
def outline(cube, coords=None, color='k', linewidth=None, axes=None):
"""
Draws cell outlines based on the given Cube.
@@ -929,7 +902,6 @@ def outline(cube, coords=None, color='k', linewidth=None, axes=None):
return result
-@_locker
def pcolor(cube, *args, **kwargs):
"""
Draws a pseudocolor plot based on the given Cube.
@@ -956,7 +928,6 @@ def pcolor(cube, *args, **kwargs):
return result
-@_locker
def pcolormesh(cube, *args, **kwargs):
"""
Draws a pseudocolor plot based on the given Cube.
@@ -981,7 +952,6 @@ def pcolormesh(cube, *args, **kwargs):
return result
-@_locker
def points(cube, *args, **kwargs):
"""
Draws sample point positions based on the given Cube.
@@ -1009,7 +979,6 @@ def _scatter_args(u, v, data, *args, **kwargs):
*args, **kwargs)
-@_locker
def plot(*args, **kwargs):
"""
Draws a line plot based on the given cube(s) or coordinate(s).
@@ -1054,7 +1023,6 @@ def plot(*args, **kwargs):
return _draw_1d_from_points('plot', _plot_args, *args, **kwargs)
-@_locker
def scatter(x, y, *args, **kwargs):
"""
Draws a scatter plot based on the given cube(s) or coordinate(s).
@@ -1090,7 +1058,6 @@ def scatter(x, y, *args, **kwargs):
show = plt.show
-@_locker
def symbols(x, y, symbols, size, axes=None, units='inches'):
"""
Draws fixed-size symbols.
@@ -1154,7 +1121,6 @@ def symbols(x, y, symbols, size, axes=None, units='inches'):
axes.autoscale_view()
-@_locker
def citation(text, figure=None, axes=None):
"""
Add a text citation to a plot.
diff --git a/lib/iris/tests/__init__.py b/lib/iris/tests/__init__.py
index d732a70072..db155743c1 100644
--- a/lib/iris/tests/__init__.py
+++ b/lib/iris/tests/__init__.py
@@ -45,6 +45,7 @@
import json
import io
import logging
+import math
import os
import os.path
import shutil
@@ -183,7 +184,10 @@ def get_data_path(relative_path):
"""
if not isinstance(relative_path, six.string_types):
relative_path = os.path.join(*relative_path)
- data_path = os.path.join(iris.config.TEST_DATA_DIR, relative_path)
+ test_data_dir = iris.config.TEST_DATA_DIR
+ if test_data_dir is None:
+ test_data_dir = ''
+ data_path = os.path.join(test_data_dir, relative_path)
if _EXPORT_DATAPATHS_FILE is not None:
_EXPORT_DATAPATHS_FILE.write(data_path + '\n')
@@ -281,12 +285,11 @@ def assertCMLApproxData(self, cubes, reference_filename=None, *args,
reference_filename = [self.get_result_path(reference_filename)]
for i, cube in enumerate(cubes):
fname = list(reference_filename)
- # don't want the ".cml" for the numpy data file
+ # don't want the ".cml" for the json stats file
if fname[-1].endswith(".cml"):
fname[-1] = fname[-1][:-4]
- fname[-1] += '.data.%d.npy' % i
+ fname[-1] += '.data.%d.json' % i
self.assertCubeDataAlmostEqual(cube, fname, *args, **kwargs)
-
self.assertCML(cubes, reference_filename, checksum=False)
def assertCDL(self, netcdf_filename, reference_filename=None, flags='-h'):
@@ -398,32 +401,38 @@ def assertTextFile(self, source_filename, reference_filename, desc="text file"):
diff = ''.join(difflib.unified_diff(reference_text, source_text, 'Reference', 'Test result', '', '', 0))
self.fail("%s does not match reference file: %s\n%s" % (desc, reference_filename, diff))
- def assertCubeDataAlmostEqual(self, cube, reference_filename, *args, **kwargs):
+ def assertCubeDataAlmostEqual(self, cube, reference_filename, *args,
+ **kwargs):
reference_path = self.get_result_path(reference_filename)
if self._check_reference_file(reference_path):
kwargs.setdefault('err_msg', 'Reference file %s' % reference_path)
-
- result = np.load(reference_path)
- if isinstance(result, np.lib.npyio.NpzFile):
- self.assertIsInstance(cube.data, ma.MaskedArray, 'Cube data was not a masked array.')
- # Avoid comparing any non-initialised array data.
- data = cube.data.filled()
- np.testing.assert_array_almost_equal(data, result['data'],
- *args, **kwargs)
- np.testing.assert_array_equal(cube.data.mask, result['mask'])
- else:
- np.testing.assert_array_almost_equal(cube.data, result, *args, **kwargs)
+ with open(reference_path, 'r') as reference_file:
+ stats = json.load(reference_file)
+ self.assertEqual(stats.get('shape', []), list(cube.shape))
+ self.assertEqual(stats.get('masked', False),
+ isinstance(cube.data, ma.MaskedArray))
+ nstats = np.array((stats.get('mean', 0.), stats.get('std', 0.),
+ stats.get('max', 0), stats.get('min', 0)))
+ if math.isnan(stats.get('mean', 0)):
+ self.assertEqual(math.isnan(stats.get('mean', 0)),
+ math.isnan(cube.data.mean()))
+ else:
+ cube_stats = np.array((cube.data.mean(), cube.data.std(),
+ cube.data.max(), cube.data.min()))
+ self.assertArrayAllClose(nstats, cube_stats, **kwargs)
else:
self._ensure_folder(reference_path)
logger.warning('Creating result file: %s', reference_path)
+ masked = False
if isinstance(cube.data, ma.MaskedArray):
- # Avoid recording any non-initialised array data.
- data = cube.data.filled()
- with open(reference_path, 'wb') as reference_file:
- np.savez(reference_file, data=data, mask=cube.data.mask)
- else:
- with open(reference_path, 'wb') as reference_file:
- np.save(reference_file, cube.data)
+ masked = True
+ stats = {'mean': np.float_(cube.data.mean()),
+ 'std': np.float_(cube.data.std()),
+ 'max': np.float_(cube.data.max()),
+ 'min': np.float_(cube.data.min()),
+ 'shape': cube.shape, 'masked': masked}
+ with open(reference_path, 'w') as reference_file:
+ reference_file.write(json.dumps(stats))
def assertFilesEqual(self, test_filename, reference_filename):
reference_path = self.get_result_path(reference_filename)
@@ -666,7 +675,7 @@ def _ensure_folder(self, path):
logger.warning('Creating folder: %s', dir_path)
os.makedirs(dir_path)
- def _assert_graphic(self, tol=_HAMMING_DISTANCE):
+ def check_graphic(self):
"""
Check the hash of the current matplotlib figure matches the expected
image hash for the current graphic test.
@@ -725,24 +734,15 @@ def _create_missing():
figure.savefig(hash_fname)
msg = 'Creating imagerepo entry: {} -> {}'
print(msg.format(unique_id, uri))
- with open(repo_fname, 'wb') as fo:
- json.dump(repo, codecs.getwriter('utf-8')(fo), indent=4,
- sort_keys=True)
-
- # TBD: Push this fix to imagehash (done!)
- # See https://github.com/JohannesBuchner/imagehash/pull/31
- # Now need this imagehash/master pushed to pypi ...
- def _hex_to_hash(hexstr, hash_size=_HASH_SIZE):
- l = []
- count = hash_size * (hash_size // 4)
- if len(hexstr) != count:
- emsg = 'Expected hex string size of {}.'
- raise ValueError(emsg.format(count))
- for i in range(count // 2):
- h = hexstr[i*2:i*2+2]
- v = int("0x" + h, 16)
- l.append([v & 2**i > 0 for i in range(8)])
- return imagehash.ImageHash(np.array(l))
+ lock = filelock.FileLock(os.path.join(_RESULT_PATH,
+ 'imagerepo.lock'))
+ # The imagerepo.json file is a critical resource, so ensure
+ # thread safe read/write behaviour via platform independent
+ # file locking.
+ with lock.acquire(timeout=600):
+ with open(repo_fname, 'wb') as fo:
+ json.dump(repo, codecs.getwriter('utf-8')(fo),
+ indent=4, sort_keys=True)
# Calculate the test result perceptual image hash.
buffer = io.BytesIO()
@@ -761,13 +761,15 @@ def _hex_to_hash(hexstr, hash_size=_HASH_SIZE):
else:
uris = repo[unique_id]
# Create the expected perceptual image hashes from the uris.
- expected = [_hex_to_hash(os.path.splitext(os.path.basename(uri))[0])
+ to_hash = imagehash.hex_to_hash
+ expected = [to_hash(os.path.splitext(os.path.basename(uri))[0],
+ hash_size=_HASH_SIZE)
for uri in uris]
# Calculate the hamming distance vector for the result hash.
distances = [e - phash for e in expected]
- if np.all([hd > tol for hd in distances]):
+ if np.all([hd > _HAMMING_DISTANCE for hd in distances]):
if dev_mode:
_create_missing()
else:
@@ -788,19 +790,6 @@ def _hex_to_hash(hexstr, hash_size=_HASH_SIZE):
finally:
plt.close()
- def check_graphic(self):
- """
- Checks that the image hash for the current matplotlib figure matches
- the expected image hash for the current test.
-
- """
- fname = os.path.join(_RESULT_PATH, 'imagerepo.lock')
- lock = filelock.FileLock(fname)
- # The imagerepo.json file is a critical resource, so ensure thread
- # safe read/write behaviour via platform independent file locking.
- with lock.acquire(timeout=600):
- self._assert_graphic()
-
def _remove_testcase_patches(self):
"""Helper to remove per-testcase patches installed by :meth:`patch`."""
# Remove all patches made, ignoring errors.
diff --git a/lib/iris/tests/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py b/lib/iris/tests/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py
index 2bcf89da35..8fdd3ee9ab 100644
--- a/lib/iris/tests/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py
+++ b/lib/iris/tests/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py
@@ -155,6 +155,7 @@ def _resampled_grid(cube, x_samplefactor, y_samplefactor):
return new_cube
+@tests.skip_data
class TestAreaWeightedRegrid(tests.IrisTest):
def setUp(self):
# A cube with a hybrid height derived coordinate.
diff --git a/lib/iris/tests/experimental/regrid/test_regrid_conservative_via_esmpy.py b/lib/iris/tests/experimental/regrid/test_regrid_conservative_via_esmpy.py
index cfc219bfc2..2f553da8ee 100644
--- a/lib/iris/tests/experimental/regrid/test_regrid_conservative_via_esmpy.py
+++ b/lib/iris/tests/experimental/regrid/test_regrid_conservative_via_esmpy.py
@@ -226,6 +226,7 @@ def test_simple_missing_data(self):
[True, False, False, False, True],
[True, True, True, True, True]])
+ @tests.skip_data
def test_multidimensional(self):
"""
Check valid operation on a multidimensional cube.
diff --git a/lib/iris/tests/idiff.py b/lib/iris/tests/idiff.py
index f2e1364d54..7ba1df3898 100755
--- a/lib/iris/tests/idiff.py
+++ b/lib/iris/tests/idiff.py
@@ -137,25 +137,11 @@ def skip(event):
plt.show()
-# TBD: Push this fix to imagehash (done!)
-# See https://github.com/JohannesBuchner/imagehash/pull/31
-# Now need this imagehash/master pushed to pypi ...
-def _hex_to_hash(hexstr, hash_size=iris.tests._HASH_SIZE):
- l = []
- count = hash_size * (hash_size // 4)
- if len(hexstr) != count:
- emsg = 'Expected hex string size of {}.'
- raise ValueError(emsg.format(count))
- for i in range(count // 2):
- h = hexstr[i*2:i*2+2]
- v = int("0x" + h, 16)
- l.append([v & 2**i > 0 for i in range(8)])
- return imagehash.ImageHash(np.array(l))
-
-
def _calculate_hit(uris, phash, action):
# Create the expected perceptual image hashes from the uris.
- expected = [_hex_to_hash(os.path.splitext(os.path.basename(uri))[0])
+ to_hash = imagehash.hex_to_hash
+ expected = [to_hash(os.path.splitext(os.path.basename(uri))[0],
+ hash_size=_HASH_SIZE)
for uri in uris]
# Calculate the hamming distance vector for the result hash.
distances = [e - phash for e in expected]
diff --git a/lib/iris/tests/integration/test_netcdf.py b/lib/iris/tests/integration/test_netcdf.py
index de998564ba..20e1e95bbd 100644
--- a/lib/iris/tests/integration/test_netcdf.py
+++ b/lib/iris/tests/integration/test_netcdf.py
@@ -44,6 +44,7 @@
import iris.tests.stock as stock
+@tests.skip_data
class TestHybridPressure(tests.IrisTest):
def setUp(self):
# Modify stock cube so it is suitable to have a
@@ -79,6 +80,7 @@ def test_save_load_loop(self):
self.assertEqual(cube, other_cube)
+@tests.skip_data
class TestSaveMultipleAuxFactories(tests.IrisTest):
def test_hybrid_height_and_pressure(self):
cube = stock.realistic_4d()
@@ -306,6 +308,7 @@ def test_unknown_method(self):
shutil.rmtree(temp_dirpath)
+@tests.skip_data
class TestCoordSystem(tests.IrisTest):
def test_load_laea_grid(self):
cube = iris.load_cube(
diff --git a/lib/iris/tests/integration/test_pp.py b/lib/iris/tests/integration/test_pp.py
index a327b8ca66..8bf3880d0a 100644
--- a/lib/iris/tests/integration/test_pp.py
+++ b/lib/iris/tests/integration/test_pp.py
@@ -637,6 +637,7 @@ def test_time_mean_and_zonal_mean(self):
self.assertEqual(int(field.lbproc), 192)
+@tests.skip_data
class TestCallbackLoad(tests.IrisTest):
def setUp(self):
self.pass_name = 'air_potential_temperature'
diff --git a/lib/iris/tests/results/analysis/apply_ifunc.data.0.json b/lib/iris/tests/results/analysis/apply_ifunc.data.0.json
new file mode 100644
index 0000000000..3c3dde46b3
--- /dev/null
+++ b/lib/iris/tests/results/analysis/apply_ifunc.data.0.json
@@ -0,0 +1 @@
+{"std": 600.0958251953125, "min": 5.4993666708469391e-05, "max": 2069.03369140625, "shape": [73, 96], "masked": false, "mean": 664.99627685546875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/apply_ifunc.data.0.npy b/lib/iris/tests/results/analysis/apply_ifunc.data.0.npy
deleted file mode 100644
index 5eabfad532..0000000000
Binary files a/lib/iris/tests/results/analysis/apply_ifunc.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/apply_ifunc_frompyfunc.data.0.json b/lib/iris/tests/results/analysis/apply_ifunc_frompyfunc.data.0.json
new file mode 100644
index 0000000000..1b77395e01
--- /dev/null
+++ b/lib/iris/tests/results/analysis/apply_ifunc_frompyfunc.data.0.json
@@ -0,0 +1 @@
+{"std": 848.63707924732125, "min": 2.0000550754478277, "max": 2927.4700625478599, "shape": [73, 96], "masked": false, "mean": 941.88598170710736}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/apply_ifunc_frompyfunc.data.0.npy b/lib/iris/tests/results/analysis/apply_ifunc_frompyfunc.data.0.npy
deleted file mode 100644
index d9faaaf93e..0000000000
Binary files a/lib/iris/tests/results/analysis/apply_ifunc_frompyfunc.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/apply_ifunc_original.data.0.json b/lib/iris/tests/results/analysis/apply_ifunc_original.data.0.json
new file mode 100644
index 0000000000..a612f9728c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/apply_ifunc_original.data.0.json
@@ -0,0 +1 @@
+{"std": 16.345842361450195, "min": -15.285690307617188, "max": 45.48663330078125, "shape": [73, 96], "masked": false, "mean": 19.945165634155273}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/apply_ifunc_original.data.0.npy b/lib/iris/tests/results/analysis/apply_ifunc_original.data.0.npy
deleted file mode 100644
index 102b6cd64c..0000000000
Binary files a/lib/iris/tests/results/analysis/apply_ifunc_original.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/apply_ufunc.data.0.json b/lib/iris/tests/results/analysis/apply_ufunc.data.0.json
new file mode 100644
index 0000000000..3c3dde46b3
--- /dev/null
+++ b/lib/iris/tests/results/analysis/apply_ufunc.data.0.json
@@ -0,0 +1 @@
+{"std": 600.0958251953125, "min": 5.4993666708469391e-05, "max": 2069.03369140625, "shape": [73, 96], "masked": false, "mean": 664.99627685546875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/apply_ufunc.data.0.npy b/lib/iris/tests/results/analysis/apply_ufunc.data.0.npy
deleted file mode 100644
index 5eabfad532..0000000000
Binary files a/lib/iris/tests/results/analysis/apply_ufunc.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/apply_ufunc_frompyfunc.data.0.json b/lib/iris/tests/results/analysis/apply_ufunc_frompyfunc.data.0.json
new file mode 100644
index 0000000000..1b77395e01
--- /dev/null
+++ b/lib/iris/tests/results/analysis/apply_ufunc_frompyfunc.data.0.json
@@ -0,0 +1 @@
+{"std": 848.63707924732125, "min": 2.0000550754478277, "max": 2927.4700625478599, "shape": [73, 96], "masked": false, "mean": 941.88598170710736}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/apply_ufunc_frompyfunc.data.0.npy b/lib/iris/tests/results/analysis/apply_ufunc_frompyfunc.data.0.npy
deleted file mode 100644
index d9faaaf93e..0000000000
Binary files a/lib/iris/tests/results/analysis/apply_ufunc_frompyfunc.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/apply_ufunc_original.data.0.json b/lib/iris/tests/results/analysis/apply_ufunc_original.data.0.json
new file mode 100644
index 0000000000..a612f9728c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/apply_ufunc_original.data.0.json
@@ -0,0 +1 @@
+{"std": 16.345842361450195, "min": -15.285690307617188, "max": 45.48663330078125, "shape": [73, 96], "masked": false, "mean": 19.945165634155273}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/apply_ufunc_original.data.0.npy b/lib/iris/tests/results/analysis/apply_ufunc_original.data.0.npy
deleted file mode 100644
index 102b6cd64c..0000000000
Binary files a/lib/iris/tests/results/analysis/apply_ufunc_original.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_simple_wrt_x.data.0.json b/lib/iris/tests/results/analysis/calculus/delta_handmade_simple_wrt_x.data.0.json
new file mode 100644
index 0000000000..dc7edcae22
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_simple_wrt_x.data.0.json
@@ -0,0 +1 @@
+{"std": 0.21794494986534119, "min": 1.0, "max": 2.0, "shape": [4, 5], "masked": false, "mean": 1.0499999523162842}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_simple_wrt_x.data.0.npy b/lib/iris/tests/results/analysis/calculus/delta_handmade_simple_wrt_x.data.0.npy
deleted file mode 100644
index 8b6fec90ee..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/delta_handmade_simple_wrt_x.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lat.data.0.json b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lat.data.0.json
new file mode 100644
index 0000000000..32b3104232
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lat.data.0.json
@@ -0,0 +1 @@
+{"std": 0.24206146597862244, "min": 1.0, "max": 2.0, "shape": [4, 4], "masked": false, "mean": 1.0625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lat.data.0.npy b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lat.data.0.npy
deleted file mode 100644
index 5afca70510..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lat.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.data.0.json b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.data.0.json
new file mode 100644
index 0000000000..9d98a55251
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.data.0.json
@@ -0,0 +1 @@
+{"std": 1.8708287477493286, "min": -4.0, "max": 2.0, "shape": [4, 5], "masked": false, "mean": 0.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.data.0.npy b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.data.0.npy
deleted file mode 100644
index e400581400..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_lon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.data.0.json b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.data.0.json
new file mode 100644
index 0000000000..9d98a55251
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.data.0.json
@@ -0,0 +1 @@
+{"std": 1.8708287477493286, "min": -4.0, "max": 2.0, "shape": [4, 5], "masked": false, "mean": 0.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.data.0.npy b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.data.0.npy
deleted file mode 100644
index e400581400..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_x.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.data.0.json b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.data.0.json
new file mode 100644
index 0000000000..32b3104232
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.data.0.json
@@ -0,0 +1 @@
+{"std": 0.24206146597862244, "min": 1.0, "max": 2.0, "shape": [4, 4], "masked": false, "mean": 1.0625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.data.0.npy b/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.data.0.npy
deleted file mode 100644
index 5afca70510..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/delta_handmade_wrt_y.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.data.0.json b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.data.0.json
new file mode 100644
index 0000000000..f085c17bc3
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 0.2222222238779068, "max": 0.2222222238779068, "shape": [50, 49], "masked": false, "mean": 0.2222222238779068}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.data.0.npy b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.data.0.npy
deleted file mode 100644
index 33b1bb6b7e..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lat.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.data.0.json b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.data.0.json
new file mode 100644
index 0000000000..325c7d9d0c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.data.0.json
@@ -0,0 +1 @@
+{"std": 9.5367431640625e-07, "min": 11.111110687255859, "max": 11.111110687255859, "shape": [49, 50], "masked": false, "mean": 11.111111640930176}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.data.0.npy b/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.data.0.npy
deleted file mode 100644
index 6e8db0618c..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/handmade2_wrt_lon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_simple_wrt_x.data.0.json b/lib/iris/tests/results/analysis/calculus/handmade_simple_wrt_x.data.0.json
new file mode 100644
index 0000000000..dc7edcae22
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/handmade_simple_wrt_x.data.0.json
@@ -0,0 +1 @@
+{"std": 0.21794494986534119, "min": 1.0, "max": 2.0, "shape": [4, 5], "masked": false, "mean": 1.0499999523162842}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_simple_wrt_x.data.0.npy b/lib/iris/tests/results/analysis/calculus/handmade_simple_wrt_x.data.0.npy
deleted file mode 100644
index 8b6fec90ee..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/handmade_simple_wrt_x.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.data.0.json b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.data.0.json
new file mode 100644
index 0000000000..ec37eb3937
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0053791436366736889, "min": 0.02222222276031971, "max": 0.04444444552063942, "shape": [4, 4], "masked": false, "mean": 0.023611113429069519}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.data.0.npy b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.data.0.npy
deleted file mode 100644
index acf3201df1..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lat.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.data.0.json b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.data.0.json
new file mode 100644
index 0000000000..baa77f637d
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.data.0.json
@@ -0,0 +1 @@
+{"std": 0.020786985754966736, "min": -0.04444444552063942, "max": 0.02222222276031971, "shape": [4, 5], "masked": false, "mean": 3.7252903539730653e-10}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.data.0.npy b/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.data.0.npy
deleted file mode 100644
index 78b21dacce..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/handmade_wrt_lon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.data.0.json b/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.data.0.json
new file mode 100644
index 0000000000..a1de71d548
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.data.0.json
@@ -0,0 +1 @@
+{"std": 0.22607769072055817, "min": 1.0, "max": 2.0, "shape": [4, 5], "masked": false, "mean": 1.0666667222976685}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.data.0.npy b/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.data.0.npy
deleted file mode 100644
index c498544b3f..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/handmade_wrt_x.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.data.0.json b/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.data.0.json
new file mode 100644
index 0000000000..32b3104232
--- /dev/null
+++ b/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.data.0.json
@@ -0,0 +1 @@
+{"std": 0.24206146597862244, "min": 1.0, "max": 2.0, "shape": [4, 4], "masked": false, "mean": 1.0625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.data.0.npy b/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.data.0.npy
deleted file mode 100644
index 5afca70510..0000000000
Binary files a/lib/iris/tests/results/analysis/calculus/handmade_wrt_y.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/exp.data.0.json b/lib/iris/tests/results/analysis/exp.data.0.json
new file mode 100644
index 0000000000..1e52495f02
--- /dev/null
+++ b/lib/iris/tests/results/analysis/exp.data.0.json
@@ -0,0 +1 @@
+{"std": 6401.1652629017917, "min": 1.0, "max": 22026.465794806718, "shape": [11], "masked": false, "mean": 3167.7067132119382}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/exp.data.0.npy b/lib/iris/tests/results/analysis/exp.data.0.npy
deleted file mode 100644
index d5887314c5..0000000000
Binary files a/lib/iris/tests/results/analysis/exp.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/exponentiate.data.0.json b/lib/iris/tests/results/analysis/exponentiate.data.0.json
new file mode 100644
index 0000000000..e7425d0e4a
--- /dev/null
+++ b/lib/iris/tests/results/analysis/exponentiate.data.0.json
@@ -0,0 +1 @@
+{"std": 978472.15716317657, "min": 3.0243033780422146e-09, "max": 4280900.9029495027, "shape": [73, 96], "masked": false, "mean": 802335.05663924129}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/exponentiate.data.0.npy b/lib/iris/tests/results/analysis/exponentiate.data.0.npy
deleted file mode 100644
index bf1d6bd75a..0000000000
Binary files a/lib/iris/tests/results/analysis/exponentiate.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/gmean_latitude.data.0.json b/lib/iris/tests/results/analysis/gmean_latitude.data.0.json
new file mode 100644
index 0000000000..81da27a8d4
--- /dev/null
+++ b/lib/iris/tests/results/analysis/gmean_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 306.9084856481536, "min": 100878.38609750666, "max": 101988.84048626159, "shape": [10, 720], "masked": false, "mean": 101441.5793318709}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/gmean_latitude.data.0.npy b/lib/iris/tests/results/analysis/gmean_latitude.data.0.npy
deleted file mode 100644
index 7c235bc402..0000000000
Binary files a/lib/iris/tests/results/analysis/gmean_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/gmean_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/gmean_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..55a6386cbc
--- /dev/null
+++ b/lib/iris/tests/results/analysis/gmean_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 1.4551915228366852e-11, "min": 101441.11521734977, "max": 101441.11521734977, "shape": [10], "masked": false, "mean": 101441.11521734975}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/gmean_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/gmean_latitude_longitude.data.0.npy
deleted file mode 100644
index 3eb2c7d3aa..0000000000
Binary files a/lib/iris/tests/results/analysis/gmean_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..c6c36b2a45
--- /dev/null
+++ b/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 1.4551915228366852e-11, "min": 101441.11521735013, "max": 101441.11521735013, "shape": [10], "masked": false, "mean": 101441.11521735015}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index ec3b18b06d..0000000000
Binary files a/lib/iris/tests/results/analysis/gmean_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/hmean_latitude.data.0.json b/lib/iris/tests/results/analysis/hmean_latitude.data.0.json
new file mode 100644
index 0000000000..de3773040e
--- /dev/null
+++ b/lib/iris/tests/results/analysis/hmean_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 62791732.052807324, "min": 10173628652.643913, "max": 10401222118.976389, "shape": [10, 720], "masked": false, "mean": 10289063259.465273}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/hmean_latitude.data.0.npy b/lib/iris/tests/results/analysis/hmean_latitude.data.0.npy
deleted file mode 100644
index a5a6b5f729..0000000000
Binary files a/lib/iris/tests/results/analysis/hmean_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/hmean_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/hmean_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..9007f1fdf7
--- /dev/null
+++ b/lib/iris/tests/results/analysis/hmean_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 1.9073486328125e-06, "min": 10288680426.032187, "max": 10288680426.032187, "shape": [10], "masked": false, "mean": 10288680426.032185}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/hmean_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/hmean_latitude_longitude.data.0.npy
deleted file mode 100644
index 70b32616cf..0000000000
Binary files a/lib/iris/tests/results/analysis/hmean_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..10d9962912
--- /dev/null
+++ b/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 10288680426.032185, "max": 10288680426.032185, "shape": [10], "masked": false, "mean": 10288680426.032185}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 35e77acf32..0000000000
Binary files a/lib/iris/tests/results/analysis/hmean_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/positive.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/positive.data.0.json
new file mode 100644
index 0000000000..9bb2969bbd
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/positive.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33973028517732512, "min": 0.0, "max": 1.1000000000000001, "shape": [3, 24], "masked": false, "mean": 0.55000000000000004}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/positive.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/positive.data.0.npy
deleted file mode 100644
index 24c285e4d5..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/positive.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/symmetric.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/symmetric.data.0.json
new file mode 100644
index 0000000000..9bb2969bbd
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/symmetric.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33973028517732512, "min": 0.0, "max": 1.1000000000000001, "shape": [3, 24], "masked": false, "mean": 0.55000000000000004}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/symmetric.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/symmetric.data.0.npy
deleted file mode 100644
index 8b2771133f..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/circular_wrapping/symmetric.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_0.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_0.data.0.json
new file mode 100644
index 0000000000..526e4b6aab
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_0.data.0.json
@@ -0,0 +1 @@
+{"std": 3.2659863237109041, "min": 2.0, "max": 10.0, "shape": [3, 4], "masked": false, "mean": 6.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_0.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_0.data.0.npy
deleted file mode 100644
index 86d6e81709..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_0.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_1.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_1.data.0.json
new file mode 100644
index 0000000000..b22387080a
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_1.data.0.json
@@ -0,0 +1 @@
+{"std": 1.1180339887498949, "min": 4.0, "max": 7.0, "shape": [4, 4], "masked": false, "mean": 5.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_1.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_1.data.0.npy
deleted file mode 100644
index a47b258d82..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_1.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_nan.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_nan.data.0.json
new file mode 100644
index 0000000000..c3bc9b5673
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_nan.data.0.json
@@ -0,0 +1 @@
+{"std": NaN, "min": NaN, "max": NaN, "shape": [3, 3], "masked": false, "mean": NaN}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_nan.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_nan.data.0.npy
deleted file mode 100644
index 676e8f6ca7..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_nan.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_same.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_same.data.0.json
new file mode 100644
index 0000000000..e52d7576da
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_same.data.0.json
@@ -0,0 +1 @@
+{"std": 3.2659863237109041, "min": 2.0, "max": 10.0, "shape": [3, 3], "masked": false, "mean": 6.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_same.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_same.data.0.npy
deleted file mode 100644
index a489bfae8e..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_many_same.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_same_pt.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_same_pt.data.0.json
new file mode 100644
index 0000000000..083821afc1
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_same_pt.data.0.json
@@ -0,0 +1 @@
+{"std": 3.2659863237109041, "min": 2.0, "max": 10.0, "shape": [3, 1], "masked": false, "mean": 6.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_same_pt.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_same_pt.data.0.npy
deleted file mode 100644
index 71bec8fd98..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_same_pt.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_0.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_0.data.0.json
new file mode 100644
index 0000000000..6b64ed5556
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_0.data.0.json
@@ -0,0 +1 @@
+{"std": 3.2659863237109041, "min": 2.0, "max": 10.0, "shape": [3], "masked": false, "mean": 6.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_0.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_0.data.0.npy
deleted file mode 100644
index da195dd91d..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_0.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_1.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_1.data.0.json
new file mode 100644
index 0000000000..7d9a7486b6
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_1.data.0.json
@@ -0,0 +1 @@
+{"std": 1.1180339887498949, "min": 4.0, "max": 7.0, "shape": [4], "masked": false, "mean": 5.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_1.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_1.data.0.npy
deleted file mode 100644
index 7596c5e945..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_1.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_nan.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_nan.data.0.json
new file mode 100644
index 0000000000..28e588dc39
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_nan.data.0.json
@@ -0,0 +1 @@
+{"std": NaN, "min": NaN, "max": NaN, "shape": [3], "masked": false, "mean": NaN}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_nan.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_nan.data.0.npy
deleted file mode 100644
index 988998331b..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_scalar_nan.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_0.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_0.data.0.json
new file mode 100644
index 0000000000..083821afc1
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_0.data.0.json
@@ -0,0 +1 @@
+{"std": 3.2659863237109041, "min": 2.0, "max": 10.0, "shape": [3, 1], "masked": false, "mean": 6.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_0.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_0.data.0.npy
deleted file mode 100644
index 71bec8fd98..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_0.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_1.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_1.data.0.json
new file mode 100644
index 0000000000..6eb7f12a11
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_1.data.0.json
@@ -0,0 +1 @@
+{"std": 1.1180339887498949, "min": 4.0, "max": 7.0, "shape": [1, 4], "masked": false, "mean": 5.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_1.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_1.data.0.npy
deleted file mode 100644
index 28f66974d8..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_1.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_nan.data.0.json b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_nan.data.0.json
new file mode 100644
index 0000000000..ba31ec5d67
--- /dev/null
+++ b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_nan.data.0.json
@@ -0,0 +1 @@
+{"std": NaN, "min": NaN, "max": NaN, "shape": [3, 1], "masked": false, "mean": NaN}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_nan.data.0.npy b/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_nan.data.0.npy
deleted file mode 100644
index 351715ceb0..0000000000
Binary files a/lib/iris/tests/results/analysis/interpolation/linear/single_pt_to_single_pt_nan.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/log.data.0.json b/lib/iris/tests/results/analysis/log.data.0.json
new file mode 100644
index 0000000000..c17557292d
--- /dev/null
+++ b/lib/iris/tests/results/analysis/log.data.0.json
@@ -0,0 +1 @@
+{"std": 0.059119906276464462, "min": 5.500091552734375, "max": 5.7219061851501465, "shape": [73, 96], "masked": false, "mean": 5.6328606605529785}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/log.data.0.npy b/lib/iris/tests/results/analysis/log.data.0.npy
deleted file mode 100644
index 0d2533c3e8..0000000000
Binary files a/lib/iris/tests/results/analysis/log.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/log10.data.0.json b/lib/iris/tests/results/analysis/log10.data.0.json
new file mode 100644
index 0000000000..d5c0091b03
--- /dev/null
+++ b/lib/iris/tests/results/analysis/log10.data.0.json
@@ -0,0 +1 @@
+{"std": 0.025675451382994652, "min": 2.3886594772338867, "max": 2.4849922657012939, "shape": [73, 96], "masked": false, "mean": 2.4463202953338623}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/log10.data.0.npy b/lib/iris/tests/results/analysis/log10.data.0.npy
deleted file mode 100644
index ab3c8084f4..0000000000
Binary files a/lib/iris/tests/results/analysis/log10.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/log2.data.0.json b/lib/iris/tests/results/analysis/log2.data.0.json
new file mode 100644
index 0000000000..08b3b3fac5
--- /dev/null
+++ b/lib/iris/tests/results/analysis/log2.data.0.json
@@ -0,0 +1 @@
+{"std": 0.085292011499404907, "min": 7.9349546432495117, "max": 8.2549657821655273, "shape": [73, 96], "masked": false, "mean": 8.126500129699707}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/log2.data.0.npy b/lib/iris/tests/results/analysis/log2.data.0.npy
deleted file mode 100644
index 29dd4162a7..0000000000
Binary files a/lib/iris/tests/results/analysis/log2.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/maths_original.data.0.npy b/lib/iris/tests/results/analysis/maths_original.data.0.npy
deleted file mode 100644
index 102b6cd64c..0000000000
Binary files a/lib/iris/tests/results/analysis/maths_original.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/max_latitude.data.0.json b/lib/iris/tests/results/analysis/max_latitude.data.0.json
new file mode 100644
index 0000000000..d9698a928c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/max_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 331.70321238027685, "min": 101864.0, "max": 102977.0, "shape": [10, 720], "masked": true, "mean": 102466.40277777778}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/max_latitude.data.0.npy b/lib/iris/tests/results/analysis/max_latitude.data.0.npy
deleted file mode 100644
index a95c8e6355..0000000000
Binary files a/lib/iris/tests/results/analysis/max_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/max_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/max_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..5e9a638999
--- /dev/null
+++ b/lib/iris/tests/results/analysis/max_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 102977.0, "max": 102977.0, "shape": [10], "masked": true, "mean": 102977.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/max_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/max_latitude_longitude.data.0.npy
deleted file mode 100644
index 46d6c7e814..0000000000
Binary files a/lib/iris/tests/results/analysis/max_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/max_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/max_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..5e9a638999
--- /dev/null
+++ b/lib/iris/tests/results/analysis/max_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 102977.0, "max": 102977.0, "shape": [10], "masked": true, "mean": 102977.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/max_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/max_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 46d6c7e814..0000000000
Binary files a/lib/iris/tests/results/analysis/max_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/mean_latitude.data.0.json b/lib/iris/tests/results/analysis/mean_latitude.data.0.json
new file mode 100644
index 0000000000..f6017416ee
--- /dev/null
+++ b/lib/iris/tests/results/analysis/mean_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 305.67198815976997, "min": 100885.3425925926, "max": 101990.07175925926, "shape": [10, 720], "masked": true, "mean": 101445.07356931583}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/mean_latitude.data.0.npy b/lib/iris/tests/results/analysis/mean_latitude.data.0.npy
deleted file mode 100644
index 4691185210..0000000000
Binary files a/lib/iris/tests/results/analysis/mean_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/mean_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/mean_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..bab6eae4c3
--- /dev/null
+++ b/lib/iris/tests/results/analysis/mean_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 101445.07356931586, "max": 101445.07356931586, "shape": [10], "masked": true, "mean": 101445.07356931586}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/mean_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/mean_latitude_longitude.data.0.npy
deleted file mode 100644
index 522980b4fe..0000000000
Binary files a/lib/iris/tests/results/analysis/mean_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..66443fd131
--- /dev/null
+++ b/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 101445.07356931585, "max": 101445.07356931585, "shape": [10], "masked": true, "mean": 101445.07356931585}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 2e21c2a497..0000000000
Binary files a/lib/iris/tests/results/analysis/mean_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/median_latitude.data.0.json b/lib/iris/tests/results/analysis/median_latitude.data.0.json
new file mode 100644
index 0000000000..d04da6ef95
--- /dev/null
+++ b/lib/iris/tests/results/analysis/median_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 247.17003116388435, "min": 101023.5, "max": 102126.0, "shape": [10, 720], "masked": true, "mean": 101629.08333333333}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/median_latitude.data.0.npy b/lib/iris/tests/results/analysis/median_latitude.data.0.npy
deleted file mode 100644
index 5ad4a357cf..0000000000
Binary files a/lib/iris/tests/results/analysis/median_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/median_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/median_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..2d27048e94
--- /dev/null
+++ b/lib/iris/tests/results/analysis/median_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 101658.25, "max": 101658.25, "shape": [10], "masked": true, "mean": 101658.25}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/median_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/median_latitude_longitude.data.0.npy
deleted file mode 100644
index bd726f476e..0000000000
Binary files a/lib/iris/tests/results/analysis/median_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/median_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/median_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..f257cb5a6a
--- /dev/null
+++ b/lib/iris/tests/results/analysis/median_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 101604.0, "max": 101604.0, "shape": [10], "masked": true, "mean": 101604.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/median_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/median_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 1a70039a62..0000000000
Binary files a/lib/iris/tests/results/analysis/median_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/min_latitude.data.0.json b/lib/iris/tests/results/analysis/min_latitude.data.0.json
new file mode 100644
index 0000000000..51a5656efe
--- /dev/null
+++ b/lib/iris/tests/results/analysis/min_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 812.32687602393321, "min": 98385.0, "max": 101362.0, "shape": [10, 720], "masked": true, "mean": 99766.430555555562}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/min_latitude.data.0.npy b/lib/iris/tests/results/analysis/min_latitude.data.0.npy
deleted file mode 100644
index 61d32da1b0..0000000000
Binary files a/lib/iris/tests/results/analysis/min_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/min_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/min_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..be45ae3906
--- /dev/null
+++ b/lib/iris/tests/results/analysis/min_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 98385.0, "max": 98385.0, "shape": [10], "masked": true, "mean": 98385.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/min_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/min_latitude_longitude.data.0.npy
deleted file mode 100644
index 8ae56407a3..0000000000
Binary files a/lib/iris/tests/results/analysis/min_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/min_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/min_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..be45ae3906
--- /dev/null
+++ b/lib/iris/tests/results/analysis/min_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 98385.0, "max": 98385.0, "shape": [10], "masked": true, "mean": 98385.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/min_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/min_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 8ae56407a3..0000000000
Binary files a/lib/iris/tests/results/analysis/min_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_both_circular.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_both_circular.data.0.json
new file mode 100644
index 0000000000..9a7f53d9b4
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_both_circular.data.0.json
@@ -0,0 +1 @@
+{"std": 2.5880997180938721, "min": 254.64399719238281, "max": 261.7274169921875, "shape": [4, 4], "masked": false, "mean": 258.11480712890625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_both_circular.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_both_circular.data.0.npy
deleted file mode 100644
index 4076eaa086..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_both_circular.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_circular_grid.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_circular_grid.data.0.json
new file mode 100644
index 0000000000..1496975251
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_circular_grid.data.0.json
@@ -0,0 +1 @@
+{"std": 2.5862049308282899, "min": 254.64399719238281, "max": 261.68328857421875, "shape": [4, 4], "masked": true, "mean": 258.11273193359375}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_circular_grid.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_circular_grid.data.0.npy
deleted file mode 100644
index f54d537169..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_circular_grid.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_circular_src.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_circular_src.data.0.json
new file mode 100644
index 0000000000..9a7f53d9b4
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_circular_src.data.0.json
@@ -0,0 +1 @@
+{"std": 2.5880997180938721, "min": 254.64399719238281, "max": 261.7274169921875, "shape": [4, 4], "masked": false, "mean": 258.11480712890625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_circular_src.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_circular_src.data.0.npy
deleted file mode 100644
index 4076eaa086..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_circular_src.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_circular_srcmissingmask.cml b/lib/iris/tests/results/analysis/regrid/linear_circular_srcmissingmask.cml
new file mode 100644
index 0000000000..fc218d2157
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_circular_srcmissingmask.cml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/iris/tests/results/analysis/regrid/linear_circular_srcmissingmask.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_circular_srcmissingmask.data.0.json
new file mode 100644
index 0000000000..c84a1ac854
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_circular_srcmissingmask.data.0.json
@@ -0,0 +1 @@
+{"std": 2.588099748331198, "min": 254.64399719238281, "max": 261.7274169921875, "shape": [4, 4], "masked": true, "mean": 258.11480712890625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_masked_altitude.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_masked_altitude.data.0.json
new file mode 100644
index 0000000000..36714edf9c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_masked_altitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33354389667510986, "min": 286.5152587890625, "max": 288.0738525390625, "shape": [5, 2, 4, 5], "masked": false, "mean": 287.3565673828125}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_masked_altitude.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_masked_altitude.data.0.npy
deleted file mode 100644
index ea15d32b53..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_masked_altitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_non_circular.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_non_circular.data.0.json
new file mode 100644
index 0000000000..1496975251
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_non_circular.data.0.json
@@ -0,0 +1 @@
+{"std": 2.5862049308282899, "min": 254.64399719238281, "max": 261.68328857421875, "shape": [4, 4], "masked": true, "mean": 258.11273193359375}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_non_circular.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_non_circular.data.0.npy
deleted file mode 100644
index f54d537169..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_non_circular.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_partial_overlap.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_partial_overlap.data.0.json
new file mode 100644
index 0000000000..19bcce33e2
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_partial_overlap.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33802566423192859, "min": 286.60049438476562, "max": 287.97402954101562, "shape": [5, 2, 4, 4], "masked": true, "mean": 287.31777343750002}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_partial_overlap.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_partial_overlap.data.0.npy
deleted file mode 100644
index 86c93e538a..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_partial_overlap.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_subset.data.0.json
new file mode 100644
index 0000000000..36714edf9c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_subset.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33354389667510986, "min": 286.5152587890625, "max": 288.0738525390625, "shape": [5, 2, 4, 5], "masked": false, "mean": 287.3565673828125}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_subset.data.0.npy
deleted file mode 100644
index ea15d32b53..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_subset.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset_anon.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_subset_anon.data.0.json
new file mode 100644
index 0000000000..36714edf9c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_subset_anon.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33354389667510986, "min": 286.5152587890625, "max": 288.0738525390625, "shape": [5, 2, 4, 5], "masked": false, "mean": 287.3565673828125}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset_anon.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_subset_anon.data.0.npy
deleted file mode 100644
index ea15d32b53..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_subset_anon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset_masked_1.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_subset_masked_1.data.0.json
new file mode 100644
index 0000000000..f74b89b3ec
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_subset_masked_1.data.0.json
@@ -0,0 +1 @@
+{"std": 0.32071127247937192, "min": 286.5152587890625, "max": 287.922607421875, "shape": [5, 2, 4, 5], "masked": true, "mean": 287.31103515625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset_masked_1.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_subset_masked_1.data.0.npy
deleted file mode 100644
index c6cbc66f6c..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_subset_masked_1.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset_masked_2.data.0.json b/lib/iris/tests/results/analysis/regrid/linear_subset_masked_2.data.0.json
new file mode 100644
index 0000000000..9202c611db
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/linear_subset_masked_2.data.0.json
@@ -0,0 +1 @@
+{"std": 0.30926843652344405, "min": 286.81167602539062, "max": 288.0738525390625, "shape": [5, 2, 4, 5], "masked": true, "mean": 287.44599609375001}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/linear_subset_masked_2.data.0.npy b/lib/iris/tests/results/analysis/regrid/linear_subset_masked_2.data.0.npy
deleted file mode 100644
index f9ee1d948b..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/linear_subset_masked_2.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_both_circular.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_both_circular.data.0.json
new file mode 100644
index 0000000000..484b8b268c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_both_circular.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 254.64399719238281, "max": 254.64399719238281, "shape": [4, 4], "masked": false, "mean": 254.64399719238281}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_both_circular.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_both_circular.data.0.npy
deleted file mode 100644
index fe9a1ba4db..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_both_circular.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_circular_grid.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_circular_grid.data.0.json
new file mode 100644
index 0000000000..dfccef151d
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_circular_grid.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 254.64399719238281, "max": 254.64399719238281, "shape": [4, 4], "masked": true, "mean": 254.64399719238281}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_circular_grid.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_circular_grid.data.0.npy
deleted file mode 100644
index 788eabcd5e..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_circular_grid.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_circular_src.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_circular_src.data.0.json
new file mode 100644
index 0000000000..484b8b268c
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_circular_src.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 254.64399719238281, "max": 254.64399719238281, "shape": [4, 4], "masked": false, "mean": 254.64399719238281}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_circular_src.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_circular_src.data.0.npy
deleted file mode 100644
index fe9a1ba4db..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_circular_src.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_circular_srcmissingmask.cml b/lib/iris/tests/results/analysis/regrid/nearest_circular_srcmissingmask.cml
new file mode 100644
index 0000000000..00ba3885bf
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_circular_srcmissingmask.cml
@@ -0,0 +1,72 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_circular_srcmissingmask.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_circular_srcmissingmask.data.0.json
new file mode 100644
index 0000000000..dfccef151d
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_circular_srcmissingmask.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 254.64399719238281, "max": 254.64399719238281, "shape": [4, 4], "masked": true, "mean": 254.64399719238281}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_masked_altitude.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_masked_altitude.data.0.json
new file mode 100644
index 0000000000..32fef225f0
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_masked_altitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33481752872467041, "min": 286.47329711914062, "max": 288.09292602539062, "shape": [5, 2, 4, 5], "masked": false, "mean": 287.353515625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_masked_altitude.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_masked_altitude.data.0.npy
deleted file mode 100644
index c4c568168c..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_masked_altitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_non_circular.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_non_circular.data.0.json
new file mode 100644
index 0000000000..dfccef151d
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_non_circular.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 254.64399719238281, "max": 254.64399719238281, "shape": [4, 4], "masked": true, "mean": 254.64399719238281}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_non_circular.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_non_circular.data.0.npy
deleted file mode 100644
index 0d93e3f62e..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_non_circular.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_partial_overlap.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_partial_overlap.data.0.json
new file mode 100644
index 0000000000..fd10f58692
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_partial_overlap.data.0.json
@@ -0,0 +1 @@
+{"std": 0.34504886689951209, "min": 286.47329711914062, "max": 288.02426147460938, "shape": [5, 2, 4, 4], "masked": true, "mean": 287.30825195312502}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_partial_overlap.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_partial_overlap.data.0.npy
deleted file mode 100644
index 69c3be79a2..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_partial_overlap.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_subset.data.0.json
new file mode 100644
index 0000000000..32fef225f0
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_subset.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33481752872467041, "min": 286.47329711914062, "max": 288.09292602539062, "shape": [5, 2, 4, 5], "masked": false, "mean": 287.353515625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_subset.data.0.npy
deleted file mode 100644
index c4c568168c..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_subset.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset_anon.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_subset_anon.data.0.json
new file mode 100644
index 0000000000..32fef225f0
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_subset_anon.data.0.json
@@ -0,0 +1 @@
+{"std": 0.33481752872467041, "min": 286.47329711914062, "max": 288.09292602539062, "shape": [5, 2, 4, 5], "masked": false, "mean": 287.353515625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset_anon.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_subset_anon.data.0.npy
deleted file mode 100644
index c4c568168c..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_subset_anon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_1.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_1.data.0.json
new file mode 100644
index 0000000000..c45dbec59e
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_1.data.0.json
@@ -0,0 +1 @@
+{"std": 0.32882911282299754, "min": 286.47329711914062, "max": 288.02426147460938, "shape": [5, 2, 4, 5], "masked": true, "mean": 287.33749999999998}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_1.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_1.data.0.npy
deleted file mode 100644
index c3e719426e..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_1.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_2.data.0.json b/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_2.data.0.json
new file mode 100644
index 0000000000..e9b376cdd4
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_2.data.0.json
@@ -0,0 +1 @@
+{"std": 0.3384940347877971, "min": 286.47329711914062, "max": 288.09292602539062, "shape": [5, 2, 4, 5], "masked": true, "mean": 287.3533935546875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_2.data.0.npy b/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_2.data.0.npy
deleted file mode 100644
index a922c28593..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/nearest_subset_masked_2.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/regrid/no_overlap.data.0.json b/lib/iris/tests/results/analysis/regrid/no_overlap.data.0.json
new file mode 100644
index 0000000000..addd0b83c8
--- /dev/null
+++ b/lib/iris/tests/results/analysis/regrid/no_overlap.data.0.json
@@ -0,0 +1 @@
+{"std": NaN, "min": NaN, "max": NaN, "shape": [5, 2, 4, 4], "masked": true, "mean": NaN}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/regrid/no_overlap.data.0.npy b/lib/iris/tests/results/analysis/regrid/no_overlap.data.0.npy
deleted file mode 100644
index 26dae819e6..0000000000
Binary files a/lib/iris/tests/results/analysis/regrid/no_overlap.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/rms_latitude.data.0.json b/lib/iris/tests/results/analysis/rms_latitude.data.0.json
new file mode 100644
index 0000000000..ccf6ad33f9
--- /dev/null
+++ b/lib/iris/tests/results/analysis/rms_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 304.4558865010406, "min": 100892.27635006171, "max": 101991.30432025448, "shape": [10, 720], "masked": false, "mean": 101448.55325547748}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/rms_latitude.data.0.npy b/lib/iris/tests/results/analysis/rms_latitude.data.0.npy
deleted file mode 100644
index 3c9dc955d9..0000000000
Binary files a/lib/iris/tests/results/analysis/rms_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/rms_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/rms_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..e52a5c046a
--- /dev/null
+++ b/lib/iris/tests/results/analysis/rms_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 101449.01010367858, "max": 101449.01010367858, "shape": [10], "masked": false, "mean": 101449.01010367858}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/rms_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/rms_latitude_longitude.data.0.npy
deleted file mode 100644
index 6ee521e928..0000000000
Binary files a/lib/iris/tests/results/analysis/rms_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/rms_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/rms_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..e52a5c046a
--- /dev/null
+++ b/lib/iris/tests/results/analysis/rms_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 101449.01010367858, "max": 101449.01010367858, "shape": [10], "masked": false, "mean": 101449.01010367858}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/rms_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/rms_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 3495d9d96b..0000000000
Binary files a/lib/iris/tests/results/analysis/rms_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude.data.0.json b/lib/iris/tests/results/analysis/std_dev_latitude.data.0.json
new file mode 100644
index 0000000000..429ea4dfea
--- /dev/null
+++ b/lib/iris/tests/results/analysis/std_dev_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 275.39299405545052, "min": 376.13037125253311, "max": 1345.9708206598209, "shape": [10, 720], "masked": false, "mean": 794.39235307916192}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude.data.0.npy b/lib/iris/tests/results/analysis/std_dev_latitude.data.0.npy
deleted file mode 100644
index 8246d19271..0000000000
Binary files a/lib/iris/tests/results/analysis/std_dev_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/std_dev_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..cac908a787
--- /dev/null
+++ b/lib/iris/tests/results/analysis/std_dev_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 275.5844386347452, "max": 275.5844386347452, "shape": [10], "masked": false, "mean": 275.5844386347452}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/std_dev_latitude_longitude.data.0.npy
deleted file mode 100644
index 3b20329695..0000000000
Binary files a/lib/iris/tests/results/analysis/std_dev_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..20844c6e6d
--- /dev/null
+++ b/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 893.70134844777931, "max": 893.70134844777931, "shape": [10], "masked": false, "mean": 893.70134844777931}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 0fa3864bf7..0000000000
Binary files a/lib/iris/tests/results/analysis/std_dev_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/sum_latitude.data.0.json b/lib/iris/tests/results/analysis/sum_latitude.data.0.json
new file mode 100644
index 0000000000..e6dfa6bee7
--- /dev/null
+++ b/lib/iris/tests/results/analysis/sum_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 132050.29888502066, "min": 43582468.0, "max": 44059711.0, "shape": [10, 720], "masked": false, "mean": 43824271.781944446}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/sum_latitude.data.0.npy b/lib/iris/tests/results/analysis/sum_latitude.data.0.npy
deleted file mode 100644
index 4b74a4f3ca..0000000000
Binary files a/lib/iris/tests/results/analysis/sum_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/sum_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/sum_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..7209db3059
--- /dev/null
+++ b/lib/iris/tests/results/analysis/sum_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 31553475683.0, "max": 31553475683.0, "shape": [10], "masked": false, "mean": 31553475683.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/sum_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/sum_latitude_longitude.data.0.npy
deleted file mode 100644
index 9a08dab1f8..0000000000
Binary files a/lib/iris/tests/results/analysis/sum_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..7209db3059
--- /dev/null
+++ b/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 31553475683.0, "max": 31553475683.0, "shape": [10], "masked": false, "mean": 31553475683.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index 9a08dab1f8..0000000000
Binary files a/lib/iris/tests/results/analysis/sum_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/variance_latitude.data.0.json b/lib/iris/tests/results/analysis/variance_latitude.data.0.json
new file mode 100644
index 0000000000..a2a3f796fc
--- /dev/null
+++ b/lib/iris/tests/results/analysis/variance_latitude.data.0.json
@@ -0,0 +1 @@
+{"std": 463000.43254353397, "min": 141474.0561785684, "max": 1811637.4500676715, "shape": [10, 720], "masked": false, "mean": 706900.51180547348}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/variance_latitude.data.0.npy b/lib/iris/tests/results/analysis/variance_latitude.data.0.npy
deleted file mode 100644
index 2d55210df0..0000000000
Binary files a/lib/iris/tests/results/analysis/variance_latitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/variance_latitude_longitude.data.0.json b/lib/iris/tests/results/analysis/variance_latitude_longitude.data.0.json
new file mode 100644
index 0000000000..176e8d427e
--- /dev/null
+++ b/lib/iris/tests/results/analysis/variance_latitude_longitude.data.0.json
@@ -0,0 +1 @@
+{"std": 3.0517578125e-05, "min": 214667549910.37509, "max": 214667549910.37509, "shape": [10], "masked": false, "mean": 214667549910.37506}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/variance_latitude_longitude.data.0.npy b/lib/iris/tests/results/analysis/variance_latitude_longitude.data.0.npy
deleted file mode 100644
index 4a9f2caff2..0000000000
Binary files a/lib/iris/tests/results/analysis/variance_latitude_longitude.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.data.0.json b/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.data.0.json
new file mode 100644
index 0000000000..912e415819
--- /dev/null
+++ b/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.data.0.json
@@ -0,0 +1 @@
+{"std": 1.1641532182693481e-10, "min": 798702.10021737905, "max": 798702.10021737905, "shape": [10], "masked": false, "mean": 798702.10021737893}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.data.0.npy b/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.data.0.npy
deleted file mode 100644
index b115cf6f1a..0000000000
Binary files a/lib/iris/tests/results/analysis/variance_latitude_longitude_1call.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/weighted_mean_lat.data.0.json b/lib/iris/tests/results/analysis/weighted_mean_lat.data.0.json
new file mode 100644
index 0000000000..164a524b42
--- /dev/null
+++ b/lib/iris/tests/results/analysis/weighted_mean_lat.data.0.json
@@ -0,0 +1 @@
+{"std": 0.61282587616379602, "min": 3.0, "max": 4.5, "shape": [3], "masked": true, "mean": 3.7666667302449546}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/weighted_mean_lat.data.0.npy b/lib/iris/tests/results/analysis/weighted_mean_lat.data.0.npy
deleted file mode 100644
index e756186220..0000000000
Binary files a/lib/iris/tests/results/analysis/weighted_mean_lat.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/weighted_mean_latlon.data.0.json b/lib/iris/tests/results/analysis/weighted_mean_latlon.data.0.json
new file mode 100644
index 0000000000..5bbe261527
--- /dev/null
+++ b/lib/iris/tests/results/analysis/weighted_mean_latlon.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 3.6666667461395264, "max": 3.6666667461395264, "shape": [], "masked": false, "mean": 3.6666667461395264}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/weighted_mean_latlon.data.0.npy b/lib/iris/tests/results/analysis/weighted_mean_latlon.data.0.npy
deleted file mode 100644
index b9a095a7ec..0000000000
Binary files a/lib/iris/tests/results/analysis/weighted_mean_latlon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/analysis/weighted_mean_lon.data.0.json b/lib/iris/tests/results/analysis/weighted_mean_lon.data.0.json
new file mode 100644
index 0000000000..8de8439349
--- /dev/null
+++ b/lib/iris/tests/results/analysis/weighted_mean_lon.data.0.json
@@ -0,0 +1 @@
+{"std": 2.347693920135498, "min": 1.9166666269302368, "max": 7.6666665077209473, "shape": [3], "masked": false, "mean": 4.8166666030883789}
\ No newline at end of file
diff --git a/lib/iris/tests/results/analysis/weighted_mean_lon.data.0.npy b/lib/iris/tests/results/analysis/weighted_mean_lon.data.0.npy
deleted file mode 100644
index 13519b51fe..0000000000
Binary files a/lib/iris/tests/results/analysis/weighted_mean_lon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.data.0.json
new file mode 100644
index 0000000000..ab473d237f
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20155135161352, "min": 286.57607421875002, "max": 1326.6421875000001, "shape": [6, 70], "masked": true, "mean": 368.57896210007442}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.data.0.npy
deleted file mode 100644
index aeb34aa664..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/latitude_longitude_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.data.0.json
new file mode 100644
index 0000000000..412750edee
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20154787243786, "min": 286.5760498046875, "max": 1326.642333984375, "shape": [6, 70], "masked": true, "mean": 368.57894345238094}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.data.0.npy
deleted file mode 100644
index 0f99d6627c..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/latitude_longitude_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.data.0.json
new file mode 100644
index 0000000000..ad71fdbfdb
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.070972059805802012, "min": 368.37784598214284, "max": 368.75493861607146, "shape": [6, 100], "masked": true, "mean": 368.57896214657734}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.data.0.npy
deleted file mode 100644
index 4acb36e6d7..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.data.0.json
new file mode 100644
index 0000000000..9191df68be
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.070973517507074896, "min": 368.3778076171875, "max": 368.7548828125, "shape": [6, 100], "masked": true, "mean": 368.57895833333333}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.data.0.npy
deleted file mode 100644
index a2a7c5ca10..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/latitude_model_level_number_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.data.0.json
new file mode 100644
index 0000000000..45b2b84210
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20140423648354, "min": 286.94415283203125, "max": 1326.8153483072917, "shape": [70, 100], "masked": true, "mean": 368.5789633527483}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.data.0.npy
deleted file mode 100644
index fb8204d385..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/latitude_time_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.data.0.json
new file mode 100644
index 0000000000..1aab8b15ab
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20140361283885, "min": 286.94415283203125, "max": 1326.8154296875, "shape": [70, 100], "masked": true, "mean": 368.57896428571428}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.data.0.npy
deleted file mode 100644
index 6b8c8f3f49..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/latitude_time_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.data.0.json
new file mode 100644
index 0000000000..66fb367494
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20155278295425, "min": 286.5760546875, "max": 1326.6421875000001, "shape": [6, 70], "masked": true, "mean": 368.57896330915179}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.data.0.npy
deleted file mode 100644
index deade421fe..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/longitude_latitude_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.data.0.json
new file mode 100644
index 0000000000..412750edee
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20154787243786, "min": 286.5760498046875, "max": 1326.642333984375, "shape": [6, 70], "masked": true, "mean": 368.57894345238094}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.data.0.npy
deleted file mode 100644
index 8a7246504c..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/longitude_latitude_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.data.0.json
new file mode 100644
index 0000000000..2c5695846f
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.076507800752643393, "min": 368.36489955357143, "max": 368.74302455357144, "shape": [6, 100], "masked": true, "mean": 368.57896340215774}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.data.0.npy
deleted file mode 100644
index c1df2dc58a..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.data.0.json
new file mode 100644
index 0000000000..839b833658
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.076507733018594218, "min": 368.36489868164062, "max": 368.7430419921875, "shape": [6, 100], "masked": true, "mean": 368.57895833333333}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.data.0.npy
deleted file mode 100644
index de4ab908f3..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/longitude_model_level_number_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.data.0.json
new file mode 100644
index 0000000000..62f2171d77
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20142290782221, "min": 287.06424967447919, "max": 1327.0152180989583, "shape": [70, 100], "masked": true, "mean": 368.57896332077746}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.data.0.npy
deleted file mode 100644
index b95d08eab5..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/longitude_time_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.data.0.json
new file mode 100644
index 0000000000..83adfce54a
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20142856585872, "min": 287.06423950195312, "max": 1327.0152587890625, "shape": [70, 100], "masked": true, "mean": 368.57896428571428}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.data.0.npy
deleted file mode 100644
index afa26f763c..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/longitude_time_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.data.0.json
new file mode 100644
index 0000000000..b3a6c3bc25
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.070973870961262162, "min": 368.3778125, "max": 368.7548828125, "shape": [6, 100], "masked": true, "mean": 368.57896432291665}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.data.0.npy
deleted file mode 100644
index a55d42ea73..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.data.0.json
new file mode 100644
index 0000000000..9191df68be
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.070973517507074896, "min": 368.3778076171875, "max": 368.7548828125, "shape": [6, 100], "masked": true, "mean": 368.57895833333333}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.data.0.npy
deleted file mode 100644
index 93a972e4a9..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/model_level_number_latitude_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.data.0.json
new file mode 100644
index 0000000000..e6f86468ae
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.076508496136123455, "min": 368.36492187499999, "max": 368.743046875, "shape": [6, 100], "masked": true, "mean": 368.57896223958329}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.data.0.npy
deleted file mode 100644
index e472a606f3..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.data.0.json
new file mode 100644
index 0000000000..839b833658
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.076507733018594218, "min": 368.36489868164062, "max": 368.7430419921875, "shape": [6, 100], "masked": true, "mean": 368.57895833333333}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.data.0.npy
deleted file mode 100644
index b910549a56..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/model_level_number_longitude_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.data.0.json
new file mode 100644
index 0000000000..b41a83f3d7
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.1376022048268124, "min": 368.2593994140625, "max": 369.01175944010419, "shape": [100, 100], "masked": true, "mean": 368.57896353352874}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.data.0.npy
deleted file mode 100644
index 81ca71d092..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/model_level_number_time_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.data.0.json
new file mode 100644
index 0000000000..5af0b688f9
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.13760229016549494, "min": 368.2593994140625, "max": 369.01174926757812, "shape": [100, 100], "masked": true, "mean": 368.57897500000001}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.data.0.npy
deleted file mode 100644
index 9a5e8b1ede..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/model_level_number_time_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.data.0.json
new file mode 100644
index 0000000000..a6109dbb88
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20140556610502, "min": 286.94416015625001, "max": 1326.81546875, "shape": [70, 100], "masked": true, "mean": 368.57896378906258}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.data.0.npy
deleted file mode 100644
index b102725174..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/time_latitude_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.data.0.json
new file mode 100644
index 0000000000..1aab8b15ab
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20140361283885, "min": 286.94415283203125, "max": 1326.8154296875, "shape": [70, 100], "masked": true, "mean": 368.57896428571428}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.data.0.npy
deleted file mode 100644
index 01ab0da11a..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/time_latitude_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.data.0.json
new file mode 100644
index 0000000000..fb1045cc73
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20142267719854, "min": 287.06423828125003, "max": 1327.0153124999999, "shape": [70, 100], "masked": true, "mean": 368.57896318080356}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.data.0.npy
deleted file mode 100644
index 197a221272..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/time_longitude_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.data.0.json
new file mode 100644
index 0000000000..83adfce54a
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 183.20142856585872, "min": 287.06423950195312, "max": 1327.0152587890625, "shape": [70, 100], "masked": true, "mean": 368.57896428571428}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.data.0.npy
deleted file mode 100644
index f8da8ad229..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/time_longitude_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.data.0.json
new file mode 100644
index 0000000000..edfac448f5
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.13760184846046464, "min": 368.25937499999998, "max": 369.01171875, "shape": [100, 100], "masked": true, "mean": 368.5789632645089}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.data.0.npy
deleted file mode 100644
index d87b1cb89f..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/time_model_level_number_dual_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.data.0.json b/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.data.0.json
new file mode 100644
index 0000000000..5af0b688f9
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.data.0.json
@@ -0,0 +1 @@
+{"std": 0.13760229016549494, "min": 368.2593994140625, "max": 369.01174926757812, "shape": [100, 100], "masked": true, "mean": 368.57897500000001}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.data.0.npy b/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.data.0.npy
deleted file mode 100644
index 05888551f9..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/time_model_level_number_single_stage.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.data.0.json b/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.data.0.json
new file mode 100644
index 0000000000..37b188d743
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.data.0.json
@@ -0,0 +1 @@
+{"std": 0.048989868829430488, "min": 368.46124267578125, "max": 368.68606567382812, "shape": [100], "masked": true, "mean": 368.57249999999999}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.data.0.npy b/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.data.0.npy
deleted file mode 100644
index 0754ae5809..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/triple_collapse_lat_ml_pt.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.data.0.json b/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.data.0.json
new file mode 100644
index 0000000000..d44be9ceff
--- /dev/null
+++ b/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.data.0.json
@@ -0,0 +1 @@
+{"std": 0.059104604901192966, "min": 368.43679809570312, "max": 368.67816162109375, "shape": [100], "masked": true, "mean": 368.57890624999999}
\ No newline at end of file
diff --git a/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.data.0.npy b/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.data.0.npy
deleted file mode 100644
index 0a90ca50e0..0000000000
Binary files a/lib/iris/tests/results/cube_collapsed/triple_collapse_ml_pt_lon.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/basic_orthogonal_cube.data.0.json b/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/basic_orthogonal_cube.data.0.json
new file mode 100644
index 0000000000..e9e8754bee
--- /dev/null
+++ b/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/basic_orthogonal_cube.data.0.json
@@ -0,0 +1 @@
+{"std": 6.551081657409668, "min": 0.0, "max": 21.0, "shape": [3, 3, 2], "masked": false, "mean": 12.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/basic_orthogonal_cube.data.0.npy b/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/basic_orthogonal_cube.data.0.npy
deleted file mode 100644
index 27a7645dab..0000000000
Binary files a/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/basic_orthogonal_cube.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/orthogonal_cube_1d_squashed.data.0.json b/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/orthogonal_cube_1d_squashed.data.0.json
new file mode 100644
index 0000000000..5b8ba329e1
--- /dev/null
+++ b/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/orthogonal_cube_1d_squashed.data.0.json
@@ -0,0 +1 @@
+{"std": 3.3040380477905273, "min": 0.0, "max": 9.0, "shape": [3, 2], "masked": false, "mean": 4.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/orthogonal_cube_1d_squashed.data.0.npy b/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/orthogonal_cube_1d_squashed.data.0.npy
deleted file mode 100644
index 43a3d28cf3..0000000000
Binary files a/lib/iris/tests/results/experimental/analysis/interpolate/LinearInterpolator/orthogonal_cube_1d_squashed.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd.data.0.json b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd.data.0.json
new file mode 100644
index 0000000000..6778a301c3
--- /dev/null
+++ b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd.data.0.json
@@ -0,0 +1 @@
+{"std": 3.4520525932312012, "min": 6.0, "max": 17.0, "shape": [3, 4], "masked": false, "mean": 11.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd.data.0.npy b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd.data.0.npy
deleted file mode 100644
index 6a2ccb6b6d..0000000000
Binary files a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_2_coords.data.0.json b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_2_coords.data.0.json
new file mode 100644
index 0000000000..b85c1c8353
--- /dev/null
+++ b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_2_coords.data.0.json
@@ -0,0 +1 @@
+{"std": 6.0, "min": 7.5, "max": 19.5, "shape": [2], "masked": false, "mean": 13.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_2_coords.data.0.npy b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_2_coords.data.0.npy
deleted file mode 100644
index 4516f68d76..0000000000
Binary files a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_2_coords.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_with_extrapolation.data.0.json b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_with_extrapolation.data.0.json
new file mode 100644
index 0000000000..1c18659523
--- /dev/null
+++ b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_with_extrapolation.data.0.json
@@ -0,0 +1 @@
+{"std": 3.4520523548126221, "min": -5.1000003814697266, "max": 5.899998664855957, "shape": [3, 4], "masked": false, "mean": 0.39999952912330627}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_with_extrapolation.data.0.npy b/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_with_extrapolation.data.0.npy
deleted file mode 100644
index e58f7f2f2b..0000000000
Binary files a/lib/iris/tests/results/experimental/analysis/interpolate/linear_nd_with_extrapolation.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lat_cross_section.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lat_cross_section.data.0.json
new file mode 100644
index 0000000000..c99b0ef25d
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lat_cross_section.data.0.json
@@ -0,0 +1 @@
+{"std": 0.049194271888948204, "min": 287.83400456072997, "max": 288.09036649547346, "shape": [5, 18], "masked": false, "mean": 288.00649837715025}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lat_cross_section.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lat_cross_section.data.0.npy
deleted file mode 100644
index 07af002dea..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lat_cross_section.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lon_cross_section.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lon_cross_section.data.0.json
new file mode 100644
index 0000000000..29d6aa3488
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lon_cross_section.data.0.json
@@ -0,0 +1 @@
+{"std": 0.053120598663116025, "min": 287.90810573168818, "max": 288.14679568802029, "shape": [5, 12], "masked": false, "mean": 288.02641852126851}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lon_cross_section.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lon_cross_section.data.0.npy
deleted file mode 100644
index e512bd9332..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/const_lon_cross_section.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/higher.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/higher.data.0.json
new file mode 100644
index 0000000000..ca78693c58
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/higher.data.0.json
@@ -0,0 +1 @@
+{"std": 3.3421254401075182, "min": 0.0, "max": 11.0, "shape": [10, 14], "masked": false, "mean": 5.4999959381734458}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/higher.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/higher.data.0.npy
deleted file mode 100644
index 28ac6fc5d3..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/higher.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/hybridheight.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/hybridheight.data.0.json
new file mode 100644
index 0000000000..732977b903
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/hybridheight.data.0.json
@@ -0,0 +1 @@
+{"std": 0.10611990310218537, "min": 287.59569757163996, "max": 288.16508077725081, "shape": [2, 5, 16, 21], "masked": false, "mean": 287.91804930402083}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/hybridheight.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/hybridheight.data.0.npy
deleted file mode 100644
index 2a7043b2a8..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/hybridheight.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/latlonreduced.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/latlonreduced.data.0.json
new file mode 100644
index 0000000000..afc254dc97
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/latlonreduced.data.0.json
@@ -0,0 +1 @@
+{"std": 3.1622776601683786, "min": 2.5, "max": 10.499999999999998, "shape": [2, 2], "masked": false, "mean": 6.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/latlonreduced.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/latlonreduced.data.0.npy
deleted file mode 100644
index c70ff258cf..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/latlonreduced.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lonhalved.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lonhalved.data.0.json
new file mode 100644
index 0000000000..902c6b1ccc
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lonhalved.data.0.json
@@ -0,0 +1 @@
+{"std": 3.4156391123995582, "min": 0.50001583411168193, "max": 10.499984163856872, "shape": [3, 2], "masked": false, "mean": 5.4999999993228519}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lonhalved.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lonhalved.data.0.npy
deleted file mode 100644
index f37374a16e..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lonhalved.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lower.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lower.data.0.json
new file mode 100644
index 0000000000..223c1fa48b
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lower.data.0.json
@@ -0,0 +1 @@
+{"std": 2.8551710936291563, "min": 1.5833798185348189, "max": 9.4164170613250846, "shape": [2, 3], "masked": false, "mean": 5.4998984399299529}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lower.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lower.data.0.npy
deleted file mode 100644
index 6d5ad92beb..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/lower.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/simple.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/simple.data.0.json
new file mode 100644
index 0000000000..59542e9e83
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/simple.data.0.json
@@ -0,0 +1 @@
+{"std": 3.4520525295346629, "min": 0.0, "max": 11.0, "shape": [3, 4], "masked": false, "mean": 5.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/simple.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/simple.data.0.npy
deleted file mode 100644
index ea8827ec09..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/simple.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/trasposed.data.0.json b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/trasposed.data.0.json
new file mode 100644
index 0000000000..0525283f0a
--- /dev/null
+++ b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/trasposed.data.0.json
@@ -0,0 +1 @@
+{"std": 1.0, "min": 4.499593812507495, "max": 6.499593812507495, "shape": [2], "masked": false, "mean": 5.499593812507495}
\ No newline at end of file
diff --git a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/trasposed.data.0.npy b/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/trasposed.data.0.npy
deleted file mode 100644
index 1be15f3f01..0000000000
Binary files a/lib/iris/tests/results/experimental/regrid/regrid_area_weighted_rectilinear_src_and_grid/trasposed.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/integration/grib2/TestDRT3/grid_complex_spatial_differencing.data.0.json b/lib/iris/tests/results/integration/grib2/TestDRT3/grid_complex_spatial_differencing.data.0.json
new file mode 100644
index 0000000000..f42d355d31
--- /dev/null
+++ b/lib/iris/tests/results/integration/grib2/TestDRT3/grid_complex_spatial_differencing.data.0.json
@@ -0,0 +1 @@
+{"std": 7.798695691713748, "min": -34.43, "max": 33.009999999999998, "shape": [73, 144], "masked": true, "mean": 2.3147813807531383}
\ No newline at end of file
diff --git a/lib/iris/tests/results/integration/grib2/TestDRT3/grid_complex_spatial_differencing.data.0.npy b/lib/iris/tests/results/integration/grib2/TestDRT3/grid_complex_spatial_differencing.data.0.npy
deleted file mode 100644
index a378f79a21..0000000000
Binary files a/lib/iris/tests/results/integration/grib2/TestDRT3/grid_complex_spatial_differencing.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/integration/grib2/TestGDT30/lambert.data.0.json b/lib/iris/tests/results/integration/grib2/TestGDT30/lambert.data.0.json
new file mode 100644
index 0000000000..99d58c5e34
--- /dev/null
+++ b/lib/iris/tests/results/integration/grib2/TestGDT30/lambert.data.0.json
@@ -0,0 +1 @@
+{"std": 5.3916288115779398, "min": 265.550048828125, "max": 300.862548828125, "shape": [799, 1199], "masked": false, "mean": 287.6306666328037}
\ No newline at end of file
diff --git a/lib/iris/tests/results/integration/grib2/TestGDT30/lambert.data.0.npy b/lib/iris/tests/results/integration/grib2/TestGDT30/lambert.data.0.npy
deleted file mode 100644
index 29d5c9f5ef..0000000000
Binary files a/lib/iris/tests/results/integration/grib2/TestGDT30/lambert.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/integration/grib2/TestGDT40/reduced.data.0.json b/lib/iris/tests/results/integration/grib2/TestGDT40/reduced.data.0.json
new file mode 100644
index 0000000000..4cd44b531e
--- /dev/null
+++ b/lib/iris/tests/results/integration/grib2/TestGDT40/reduced.data.0.json
@@ -0,0 +1 @@
+{"std": 6295.5250434859099, "min": -6419.0146484375, "max": 55403.9853515625, "shape": [13280], "masked": false, "mean": 2446.3044780685241}
\ No newline at end of file
diff --git a/lib/iris/tests/results/integration/grib2/TestGDT40/reduced.data.0.npy b/lib/iris/tests/results/integration/grib2/TestGDT40/reduced.data.0.npy
deleted file mode 100644
index d65911aabf..0000000000
Binary files a/lib/iris/tests/results/integration/grib2/TestGDT40/reduced.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/integration/grib2/TestGDT40/regular.data.0.json b/lib/iris/tests/results/integration/grib2/TestGDT40/regular.data.0.json
new file mode 100644
index 0000000000..9595f90e89
--- /dev/null
+++ b/lib/iris/tests/results/integration/grib2/TestGDT40/regular.data.0.json
@@ -0,0 +1 @@
+{"std": 290.49181302067751, "min": 4388.16162109375, "max": 5576.53662109375, "shape": [96, 192], "masked": false, "mean": 5210.564598931207}
\ No newline at end of file
diff --git a/lib/iris/tests/results/integration/grib2/TestGDT40/regular.data.0.npy b/lib/iris/tests/results/integration/grib2/TestGDT40/regular.data.0.npy
deleted file mode 100644
index 152aa39cc4..0000000000
Binary files a/lib/iris/tests/results/integration/grib2/TestGDT40/regular.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/integration/grib2/TestImport/gdt1.data.0.json b/lib/iris/tests/results/integration/grib2/TestImport/gdt1.data.0.json
new file mode 100644
index 0000000000..2b416f6a93
--- /dev/null
+++ b/lib/iris/tests/results/integration/grib2/TestImport/gdt1.data.0.json
@@ -0,0 +1 @@
+{"std": 6.1629553729365423, "min": 266.625, "max": 302.25, "shape": [360, 600], "masked": false, "mean": 284.43164236111113}
\ No newline at end of file
diff --git a/lib/iris/tests/results/integration/grib2/TestImport/gdt1.data.0.npy b/lib/iris/tests/results/integration/grib2/TestImport/gdt1.data.0.npy
deleted file mode 100644
index 3031475c78..0000000000
Binary files a/lib/iris/tests/results/integration/grib2/TestImport/gdt1.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/integration/grib2/TestImport/gdt90_with_bitmap.data.0.json b/lib/iris/tests/results/integration/grib2/TestImport/gdt90_with_bitmap.data.0.json
new file mode 100644
index 0000000000..08c3cb82cb
--- /dev/null
+++ b/lib/iris/tests/results/integration/grib2/TestImport/gdt90_with_bitmap.data.0.json
@@ -0,0 +1 @@
+{"std": 13.780125280995835, "min": 208.90541992187502, "max": 287.25541992187499, "shape": [227, 390], "masked": true, "mean": 266.3984425053925}
\ No newline at end of file
diff --git a/lib/iris/tests/results/integration/grib2/TestImport/gdt90_with_bitmap.data.0.npy b/lib/iris/tests/results/integration/grib2/TestImport/gdt90_with_bitmap.data.0.npy
deleted file mode 100644
index a59dcf6562..0000000000
Binary files a/lib/iris/tests/results/integration/grib2/TestImport/gdt90_with_bitmap.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.0.json b/lib/iris/tests/results/name/NAMEIII_field.data.0.json
new file mode 100644
index 0000000000..883332a4d5
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_field.data.0.json
@@ -0,0 +1 @@
+{"std": 9.2157414144367067e-08, "min": 0.0, "max": 4.62122034150525e-06, "shape": [200, 200], "masked": false, "mean": 4.639838735442936e-09}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.0.npy b/lib/iris/tests/results/name/NAMEIII_field.data.0.npy
deleted file mode 100644
index c950864dec..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_field.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.1.json b/lib/iris/tests/results/name/NAMEIII_field.data.1.json
new file mode 100644
index 0000000000..f08f477bde
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_field.data.1.json
@@ -0,0 +1 @@
+{"std": 2.5599286579414127e-11, "min": 0.0, "max": 1.283672279583925e-09, "shape": [200, 200], "masked": false, "mean": 1.2888440314995364e-12}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.1.npy b/lib/iris/tests/results/name/NAMEIII_field.data.1.npy
deleted file mode 100644
index be1510693f..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_field.data.1.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.2.json b/lib/iris/tests/results/name/NAMEIII_field.data.2.json
new file mode 100644
index 0000000000..62bb264316
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_field.data.2.json
@@ -0,0 +1 @@
+{"std": 2.9475852314497786e-10, "min": 0.0, "max": 1.5096331296149401e-08, "shape": [200, 200], "masked": false, "mean": 1.4808954409972763e-11}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.2.npy b/lib/iris/tests/results/name/NAMEIII_field.data.2.npy
deleted file mode 100644
index 71d9f06400..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_field.data.2.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.3.json b/lib/iris/tests/results/name/NAMEIII_field.data.3.json
new file mode 100644
index 0000000000..aec65f4682
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_field.data.3.json
@@ -0,0 +1 @@
+{"std": 1.8573325100135207e-09, "min": 0.0, "max": 1.231626072240033e-07, "shape": [200, 200], "masked": false, "mean": 8.4571800951227516e-11}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.3.npy b/lib/iris/tests/results/name/NAMEIII_field.data.3.npy
deleted file mode 100644
index 212e34c3cc..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_field.data.3.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.4.json b/lib/iris/tests/results/name/NAMEIII_field.data.4.json
new file mode 100644
index 0000000000..01816dee83
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_field.data.4.json
@@ -0,0 +1 @@
+{"std": 2.1372636993532979e-09, "min": 0.0, "max": 1.3791643027616374e-07, "shape": [200, 200], "masked": false, "mean": 9.9380746687582899e-11}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_field.data.4.npy b/lib/iris/tests/results/name/NAMEIII_field.data.4.npy
deleted file mode 100644
index 895525b1ca..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_field.data.4.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.0.json b/lib/iris/tests/results/name/NAMEIII_timeseries.data.0.json
new file mode 100644
index 0000000000..c27b4d01e2
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_timeseries.data.0.json
@@ -0,0 +1 @@
+{"std": 1.0903463650057284e-13, "min": 0.0, "max": 4.0756873000000001e-13, "shape": [72], "masked": false, "mean": 1.0429130496540107e-13}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.0.npy b/lib/iris/tests/results/name/NAMEIII_timeseries.data.0.npy
deleted file mode 100644
index 02158cad2b..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_timeseries.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.1.json b/lib/iris/tests/results/name/NAMEIII_timeseries.data.1.json
new file mode 100644
index 0000000000..a716c1476f
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_timeseries.data.1.json
@@ -0,0 +1 @@
+{"std": 3.9252465982468551e-10, "min": 0.0, "max": 1.4672473e-09, "shape": [72], "masked": false, "mean": 3.7544867036405361e-10}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.1.npy b/lib/iris/tests/results/name/NAMEIII_timeseries.data.1.npy
deleted file mode 100644
index b50bd0acb2..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_timeseries.data.1.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.2.json b/lib/iris/tests/results/name/NAMEIII_timeseries.data.2.json
new file mode 100644
index 0000000000..5063a2bbbe
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_timeseries.data.2.json
@@ -0,0 +1 @@
+{"std": 5.2873227247937624e-17, "min": 0.0, "max": 1.948949e-16, "shape": [72], "masked": false, "mean": 5.7200061676526515e-17}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.2.npy b/lib/iris/tests/results/name/NAMEIII_timeseries.data.2.npy
deleted file mode 100644
index 73260ef02c..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_timeseries.data.2.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.3.json b/lib/iris/tests/results/name/NAMEIII_timeseries.data.3.json
new file mode 100644
index 0000000000..4de7113959
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_timeseries.data.3.json
@@ -0,0 +1 @@
+{"std": 3.2318527050866585e-15, "min": 0.0, "max": 1.7424067e-14, "shape": [72], "masked": false, "mean": 1.2610151829633925e-15}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.3.npy b/lib/iris/tests/results/name/NAMEIII_timeseries.data.3.npy
deleted file mode 100644
index cb840faccc..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_timeseries.data.3.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.4.json b/lib/iris/tests/results/name/NAMEIII_timeseries.data.4.json
new file mode 100644
index 0000000000..9e1f769617
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_timeseries.data.4.json
@@ -0,0 +1 @@
+{"std": 3.2470735674477217e-15, "min": 0.0, "max": 1.7555705e-14, "shape": [72], "masked": false, "mean": 1.3182152734315856e-15}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_timeseries.data.4.npy b/lib/iris/tests/results/name/NAMEIII_timeseries.data.4.npy
deleted file mode 100644
index f06e1e768f..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_timeseries.data.4.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.0.json b/lib/iris/tests/results/name/NAMEIII_version2.data.0.json
new file mode 100644
index 0000000000..ef507ff2db
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_version2.data.0.json
@@ -0,0 +1 @@
+{"std": 1.7932158868916304e-08, "min": 0.0, "max": 1.0494331803556634e-07, "shape": [24, 10], "masked": false, "mean": 4.7153978499636651e-09}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.0.npy b/lib/iris/tests/results/name/NAMEIII_version2.data.0.npy
deleted file mode 100644
index e60424b0a7..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_version2.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.1.json b/lib/iris/tests/results/name/NAMEIII_version2.data.1.json
new file mode 100644
index 0000000000..9d042e090d
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_version2.data.1.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 0.0, "max": 0.0, "shape": [24, 10], "masked": false, "mean": 0.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.1.npy b/lib/iris/tests/results/name/NAMEIII_version2.data.1.npy
deleted file mode 100644
index c3202622ae..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_version2.data.1.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.2.json b/lib/iris/tests/results/name/NAMEIII_version2.data.2.json
new file mode 100644
index 0000000000..f2be43debd
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_version2.data.2.json
@@ -0,0 +1 @@
+{"std": 3.3590910608616298e-10, "min": 0.0, "max": 1.910191560483554e-09, "shape": [24, 10], "masked": false, "mean": 1.5448627099790002e-10}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.2.npy b/lib/iris/tests/results/name/NAMEIII_version2.data.2.npy
deleted file mode 100644
index 4fc71e43e9..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_version2.data.2.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.3.json b/lib/iris/tests/results/name/NAMEIII_version2.data.3.json
new file mode 100644
index 0000000000..9d042e090d
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEIII_version2.data.3.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 0.0, "max": 0.0, "shape": [24, 10], "masked": false, "mean": 0.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEIII_version2.data.3.npy b/lib/iris/tests/results/name/NAMEIII_version2.data.3.npy
deleted file mode 100644
index c3202622ae..0000000000
Binary files a/lib/iris/tests/results/name/NAMEIII_version2.data.3.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.0.json b/lib/iris/tests/results/name/NAMEII_field.data.0.json
new file mode 100644
index 0000000000..04dfa72151
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEII_field.data.0.json
@@ -0,0 +1 @@
+{"std": 2.1295469831983382e-09, "min": 0.0, "max": 4.8132168473102865e-08, "shape": [200, 200], "masked": false, "mean": 2.1555640605797066e-10}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.0.npy b/lib/iris/tests/results/name/NAMEII_field.data.0.npy
deleted file mode 100644
index 7082115bdf..0000000000
Binary files a/lib/iris/tests/results/name/NAMEII_field.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.1.json b/lib/iris/tests/results/name/NAMEII_field.data.1.json
new file mode 100644
index 0000000000..5aa4b4ccc5
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEII_field.data.1.json
@@ -0,0 +1 @@
+{"std": 2.2493359210784547e-05, "min": 0.0, "max": 0.00048885477008298039, "shape": [200, 200], "masked": false, "mean": 2.3138848064263584e-06}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.1.npy b/lib/iris/tests/results/name/NAMEII_field.data.1.npy
deleted file mode 100644
index 2fba787a8a..0000000000
Binary files a/lib/iris/tests/results/name/NAMEII_field.data.1.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.2.json b/lib/iris/tests/results/name/NAMEII_field.data.2.json
new file mode 100644
index 0000000000..d04d414178
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEII_field.data.2.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 0.0, "max": 0.0, "shape": [200, 200], "masked": false, "mean": 0.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.2.npy b/lib/iris/tests/results/name/NAMEII_field.data.2.npy
deleted file mode 100644
index 8d96945912..0000000000
Binary files a/lib/iris/tests/results/name/NAMEII_field.data.2.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.3.json b/lib/iris/tests/results/name/NAMEII_field.data.3.json
new file mode 100644
index 0000000000..03a03764d6
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEII_field.data.3.json
@@ -0,0 +1 @@
+{"std": 1.1607482264253122e-07, "min": 0.0, "max": 2.5288968572567683e-06, "shape": [200, 200], "masked": false, "mean": 1.1793673593274434e-08}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.3.npy b/lib/iris/tests/results/name/NAMEII_field.data.3.npy
deleted file mode 100644
index 16373092db..0000000000
Binary files a/lib/iris/tests/results/name/NAMEII_field.data.3.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.4.json b/lib/iris/tests/results/name/NAMEII_field.data.4.json
new file mode 100644
index 0000000000..03a03764d6
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEII_field.data.4.json
@@ -0,0 +1 @@
+{"std": 1.1607482264253122e-07, "min": 0.0, "max": 2.5288968572567683e-06, "shape": [200, 200], "masked": false, "mean": 1.1793673593274434e-08}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEII_field.data.4.npy b/lib/iris/tests/results/name/NAMEII_field.data.4.npy
deleted file mode 100644
index 16373092db..0000000000
Binary files a/lib/iris/tests/results/name/NAMEII_field.data.4.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEII_timeseries.data.0.json b/lib/iris/tests/results/name/NAMEII_timeseries.data.0.json
new file mode 100644
index 0000000000..5c23310a7b
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEII_timeseries.data.0.json
@@ -0,0 +1 @@
+{"std": 0.00033021471021460599, "min": 0.0, "max": 0.0015961617, "shape": [132], "masked": false, "mean": 0.00019860586272835146}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEII_timeseries.data.0.npy b/lib/iris/tests/results/name/NAMEII_timeseries.data.0.npy
deleted file mode 100644
index 20972b6393..0000000000
Binary files a/lib/iris/tests/results/name/NAMEII_timeseries.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/name/NAMEII_timeseries.data.1.json b/lib/iris/tests/results/name/NAMEII_timeseries.data.1.json
new file mode 100644
index 0000000000..936e74deb3
--- /dev/null
+++ b/lib/iris/tests/results/name/NAMEII_timeseries.data.1.json
@@ -0,0 +1 @@
+{"std": 0.00017462574781585265, "min": 0.0, "max": 0.00099772017000000009, "shape": [132], "masked": false, "mean": 9.5217456948642194e-05}
\ No newline at end of file
diff --git a/lib/iris/tests/results/name/NAMEII_timeseries.data.1.npy b/lib/iris/tests/results/name/NAMEII_timeseries.data.1.npy
deleted file mode 100644
index 54ef0eee77..0000000000
Binary files a/lib/iris/tests/results/name/NAMEII_timeseries.data.1.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_0d.data.0.json b/lib/iris/tests/results/regrid/airpress_on_theta_0d.data.0.json
new file mode 100644
index 0000000000..bb55e1e464
--- /dev/null
+++ b/lib/iris/tests/results/regrid/airpress_on_theta_0d.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 102192.140625, "max": 102192.140625, "shape": [], "masked": false, "mean": 102192.140625}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_0d.data.0.npy b/lib/iris/tests/results/regrid/airpress_on_theta_0d.data.0.npy
deleted file mode 100644
index 65c50e6291..0000000000
Binary files a/lib/iris/tests/results/regrid/airpress_on_theta_0d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_1d.data.0.json b/lib/iris/tests/results/regrid/airpress_on_theta_1d.data.0.json
new file mode 100644
index 0000000000..40af5a5f32
--- /dev/null
+++ b/lib/iris/tests/results/regrid/airpress_on_theta_1d.data.0.json
@@ -0,0 +1 @@
+{"std": 185.38343811035156, "min": 99609.65625, "max": 100038.796875, "shape": [3], "masked": false, "mean": 99781.375}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_1d.data.0.npy b/lib/iris/tests/results/regrid/airpress_on_theta_1d.data.0.npy
deleted file mode 100644
index 6a43c17532..0000000000
Binary files a/lib/iris/tests/results/regrid/airpress_on_theta_1d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_2d.data.0.json b/lib/iris/tests/results/regrid/airpress_on_theta_2d.data.0.json
new file mode 100644
index 0000000000..5b4f8a1724
--- /dev/null
+++ b/lib/iris/tests/results/regrid/airpress_on_theta_2d.data.0.json
@@ -0,0 +1 @@
+{"std": 1048.704345703125, "min": 98272.953125, "max": 101113.84375, "shape": [2, 3], "masked": false, "mean": 99580.7421875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_2d.data.0.npy b/lib/iris/tests/results/regrid/airpress_on_theta_2d.data.0.npy
deleted file mode 100644
index 4e97ddb5fd..0000000000
Binary files a/lib/iris/tests/results/regrid/airpress_on_theta_2d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_3d.data.0.json b/lib/iris/tests/results/regrid/airpress_on_theta_3d.data.0.json
new file mode 100644
index 0000000000..59f6885bf3
--- /dev/null
+++ b/lib/iris/tests/results/regrid/airpress_on_theta_3d.data.0.json
@@ -0,0 +1 @@
+{"std": 1126.344970703125, "min": 97080.71875, "max": 101113.84375, "shape": [5, 2, 3], "masked": false, "mean": 99043.671875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/airpress_on_theta_3d.data.0.npy b/lib/iris/tests/results/regrid/airpress_on_theta_3d.data.0.npy
deleted file mode 100644
index 4458cf2bf4..0000000000
Binary files a/lib/iris/tests/results/regrid/airpress_on_theta_3d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/bilinear_larger.data.0.json b/lib/iris/tests/results/regrid/bilinear_larger.data.0.json
new file mode 100644
index 0000000000..ed0557ad4f
--- /dev/null
+++ b/lib/iris/tests/results/regrid/bilinear_larger.data.0.json
@@ -0,0 +1 @@
+{"std": 4.6904158592224121, "min": -2.5, "max": 13.5, "shape": [4, 5], "masked": false, "mean": 5.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/bilinear_larger.data.0.npy b/lib/iris/tests/results/regrid/bilinear_larger.data.0.npy
deleted file mode 100644
index fc2e56a782..0000000000
Binary files a/lib/iris/tests/results/regrid/bilinear_larger.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_left.data.0.json b/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_left.data.0.json
new file mode 100644
index 0000000000..ec738b52bd
--- /dev/null
+++ b/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_left.data.0.json
@@ -0,0 +1 @@
+{"std": 4.6518816947937012, "min": -2.5, "max": 13.0, "shape": [4, 5], "masked": false, "mean": 5.0999999046325684}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_left.data.0.npy b/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_left.data.0.npy
deleted file mode 100644
index 9b43cb98e8..0000000000
Binary files a/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_left.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_right.data.0.json b/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_right.data.0.json
new file mode 100644
index 0000000000..ca948c42df
--- /dev/null
+++ b/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_right.data.0.json
@@ -0,0 +1 @@
+{"std": 4.6518816947937012, "min": -2.0, "max": 13.5, "shape": [4, 5], "masked": false, "mean": 5.9000000953674316}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_right.data.0.npy b/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_right.data.0.npy
deleted file mode 100644
index 65e3a181d4..0000000000
Binary files a/lib/iris/tests/results/regrid/bilinear_larger_lon_extrapolate_right.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/bilinear_smaller.data.0.json b/lib/iris/tests/results/regrid/bilinear_smaller.data.0.json
new file mode 100644
index 0000000000..e3adacb147
--- /dev/null
+++ b/lib/iris/tests/results/regrid/bilinear_smaller.data.0.json
@@ -0,0 +1 @@
+{"std": 2.1602468490600586, "min": 2.5, "max": 8.5, "shape": [2, 3], "masked": false, "mean": 5.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/bilinear_smaller.data.0.npy b/lib/iris/tests/results/regrid/bilinear_smaller.data.0.npy
deleted file mode 100644
index 8d2eea8c73..0000000000
Binary files a/lib/iris/tests/results/regrid/bilinear_smaller.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_left.data.0.json b/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_left.data.0.json
new file mode 100644
index 0000000000..b60594f0a5
--- /dev/null
+++ b/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_left.data.0.json
@@ -0,0 +1 @@
+{"std": 2.1602468490600586, "min": 2.0, "max": 8.0, "shape": [2, 3], "masked": false, "mean": 5.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_left.data.0.npy b/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_left.data.0.npy
deleted file mode 100644
index a105d6bcb0..0000000000
Binary files a/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_left.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_right.data.0.json b/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_right.data.0.json
new file mode 100644
index 0000000000..74786e568a
--- /dev/null
+++ b/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_right.data.0.json
@@ -0,0 +1 @@
+{"std": 2.1602468490600586, "min": 3.0, "max": 9.0, "shape": [2, 3], "masked": false, "mean": 6.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_right.data.0.npy b/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_right.data.0.npy
deleted file mode 100644
index fe9a91636b..0000000000
Binary files a/lib/iris/tests/results/regrid/bilinear_smaller_lon_align_right.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/low_med_high.data.0.json b/lib/iris/tests/results/regrid/low_med_high.data.0.json
new file mode 100644
index 0000000000..d64741ce40
--- /dev/null
+++ b/lib/iris/tests/results/regrid/low_med_high.data.0.json
@@ -0,0 +1 @@
+{"std": 3.7925365302569376, "min": 0.0, "max": 11.0, "shape": [5, 6], "masked": false, "mean": 5.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/low_med_high.data.0.npy b/lib/iris/tests/results/regrid/low_med_high.data.0.npy
deleted file mode 100644
index aec9817eeb..0000000000
Binary files a/lib/iris/tests/results/regrid/low_med_high.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/low_med_high.data.1.json b/lib/iris/tests/results/regrid/low_med_high.data.1.json
new file mode 100644
index 0000000000..fb58052aab
--- /dev/null
+++ b/lib/iris/tests/results/regrid/low_med_high.data.1.json
@@ -0,0 +1 @@
+{"std": 6.0184900284225957, "min": 0.0, "max": 19.0, "shape": [5, 6], "masked": false, "mean": 8.3333333333333339}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/low_med_high.data.1.npy b/lib/iris/tests/results/regrid/low_med_high.data.1.npy
deleted file mode 100644
index e427fbff36..0000000000
Binary files a/lib/iris/tests/results/regrid/low_med_high.data.1.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/low_med_high.data.2.json b/lib/iris/tests/results/regrid/low_med_high.data.2.json
new file mode 100644
index 0000000000..ac1c1a2b8c
--- /dev/null
+++ b/lib/iris/tests/results/regrid/low_med_high.data.2.json
@@ -0,0 +1 @@
+{"std": 8.6554414483991895, "min": 0.0, "max": 29.0, "shape": [5, 6], "masked": false, "mean": 14.5}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/low_med_high.data.2.npy b/lib/iris/tests/results/regrid/low_med_high.data.2.npy
deleted file mode 100644
index e14d51a630..0000000000
Binary files a/lib/iris/tests/results/regrid/low_med_high.data.2.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_0d.data.0.json b/lib/iris/tests/results/regrid/theta_on_airpress_0d.data.0.json
new file mode 100644
index 0000000000..292ae75826
--- /dev/null
+++ b/lib/iris/tests/results/regrid/theta_on_airpress_0d.data.0.json
@@ -0,0 +1 @@
+{"std": 0.0, "min": 282.12796020507812, "max": 282.12796020507812, "shape": [], "masked": false, "mean": 282.12796020507812}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_0d.data.0.npy b/lib/iris/tests/results/regrid/theta_on_airpress_0d.data.0.npy
deleted file mode 100644
index f03d94aa6c..0000000000
Binary files a/lib/iris/tests/results/regrid/theta_on_airpress_0d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_1d.data.0.json b/lib/iris/tests/results/regrid/theta_on_airpress_1d.data.0.json
new file mode 100644
index 0000000000..0ad78fb933
--- /dev/null
+++ b/lib/iris/tests/results/regrid/theta_on_airpress_1d.data.0.json
@@ -0,0 +1 @@
+{"std": 0.20830129086971283, "min": 282.77932739257812, "max": 283.23013305664062, "shape": [4], "masked": false, "mean": 283.0235595703125}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_1d.data.0.npy b/lib/iris/tests/results/regrid/theta_on_airpress_1d.data.0.npy
deleted file mode 100644
index d38bec2bb4..0000000000
Binary files a/lib/iris/tests/results/regrid/theta_on_airpress_1d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_2d.data.0.json b/lib/iris/tests/results/regrid/theta_on_airpress_2d.data.0.json
new file mode 100644
index 0000000000..1e19a7c045
--- /dev/null
+++ b/lib/iris/tests/results/regrid/theta_on_airpress_2d.data.0.json
@@ -0,0 +1 @@
+{"std": 0.89102786779403687, "min": 281.37478637695312, "max": 284.1317138671875, "shape": [4, 4], "masked": false, "mean": 282.7205810546875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_2d.data.0.npy b/lib/iris/tests/results/regrid/theta_on_airpress_2d.data.0.npy
deleted file mode 100644
index c8d6757e78..0000000000
Binary files a/lib/iris/tests/results/regrid/theta_on_airpress_2d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_3d.data.0.json b/lib/iris/tests/results/regrid/theta_on_airpress_3d.data.0.json
new file mode 100644
index 0000000000..62fbe8491a
--- /dev/null
+++ b/lib/iris/tests/results/regrid/theta_on_airpress_3d.data.0.json
@@ -0,0 +1 @@
+{"std": 1.0716584920883179, "min": 281.37478637695312, "max": 285.50057983398438, "shape": [5, 4, 4], "masked": false, "mean": 283.49774169921875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/regrid/theta_on_airpress_3d.data.0.npy b/lib/iris/tests/results/regrid/theta_on_airpress_3d.data.0.npy
deleted file mode 100644
index 958f90b662..0000000000
Binary files a/lib/iris/tests/results/regrid/theta_on_airpress_3d.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/unit/analysis/cartography/project/TestAll/cube.data.0.json b/lib/iris/tests/results/unit/analysis/cartography/project/TestAll/cube.data.0.json
new file mode 100644
index 0000000000..d340b7856c
--- /dev/null
+++ b/lib/iris/tests/results/unit/analysis/cartography/project/TestAll/cube.data.0.json
@@ -0,0 +1 @@
+{"std": 0.22496461010978716, "min": 287.27520751953125, "max": 288.09292602539062, "shape": [2, 3, 10, 10], "masked": true, "mean": 287.67258522727275}
\ No newline at end of file
diff --git a/lib/iris/tests/results/unit/analysis/cartography/project/TestAll/cube.data.0.npy b/lib/iris/tests/results/unit/analysis/cartography/project/TestAll/cube.data.0.npy
deleted file mode 100644
index d032ab2f64..0000000000
Binary files a/lib/iris/tests/results/unit/analysis/cartography/project/TestAll/cube.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata.data.0.json b/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata.data.0.json
new file mode 100644
index 0000000000..124c32d225
--- /dev/null
+++ b/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata.data.0.json
@@ -0,0 +1 @@
+{"std": 1242.753662109375, "min": 170.0, "max": 4150.0, "shape": [4, 3, 21], "masked": false, "mean": 2160.0}
\ No newline at end of file
diff --git a/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata.data.0.npy b/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata.data.0.npy
deleted file mode 100644
index 6ba26de74c..0000000000
Binary files a/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata_wrapped.data.0.json b/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata_wrapped.data.0.json
new file mode 100644
index 0000000000..2f4603efd2
--- /dev/null
+++ b/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata_wrapped.data.0.json
@@ -0,0 +1 @@
+{"std": 1254.9412841796875, "min": 0.0, "max": 4319.0, "shape": [4, 3, 21], "masked": false, "mean": 2151.428466796875}
\ No newline at end of file
diff --git a/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata_wrapped.data.0.npy b/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata_wrapped.data.0.npy
deleted file mode 100644
index a5484a97a1..0000000000
Binary files a/lib/iris/tests/results/unit/cube/Cube/intersection__Metadata/metadata_wrapped.data.0.npy and /dev/null differ
diff --git a/lib/iris/tests/runner/_runner.py b/lib/iris/tests/runner/_runner.py
index 3f049963ec..2aa643b29b 100644
--- a/lib/iris/tests/runner/_runner.py
+++ b/lib/iris/tests/runner/_runner.py
@@ -163,7 +163,7 @@ def run(self):
args = ['', None, '--processes=%s' % n_processors,
'--verbosity=2', regexp_pat,
- '--process-timeout=600']
+ '--process-timeout=180']
try:
import gribapi
except ImportError:
diff --git a/lib/iris/tests/stock.py b/lib/iris/tests/stock.py
index cd5c1bb3c2..df63472690 100644
--- a/lib/iris/tests/stock.py
+++ b/lib/iris/tests/stock.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2010 - 2015, Met Office
+# (C) British Crown Copyright 2010 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -471,8 +471,9 @@ def realistic_4d():
# >>> arrays.append(theta.data)
# >>> arrays.append(theta.coord('sigma').coord_system.orography.data)
# >>> np.savez('stock_arrays.npz', *arrays)
-
- data_path = os.path.join(os.path.dirname(__file__), 'stock_arrays.npz')
+ data_path = tests.get_data_path(('stock', 'stock_arrays.npz'))
+ if not os.path.isfile(data_path):
+ raise IOError('Test data is not available at {}.'.format(data_path))
r = np.load(data_path)
# sort the arrays based on the order they were originally given. The names given are of the form 'arr_1' or 'arr_10'
_, arrays = zip(*sorted(six.iteritems(r), key=lambda item: int(item[0][4:])))
@@ -526,7 +527,9 @@ def realistic_4d_no_derived():
def realistic_4d_w_missing_data():
- data_path = os.path.join(os.path.dirname(__file__), 'stock_mdi_arrays.npz')
+ data_path = tests.get_data_path(('stock', 'stock_mdi_arrays.npz'))
+ if not os.path.isfile(data_path):
+ raise IOError('Test data is not available at {}.'.format(data_path))
data_archive = np.load(data_path)
data = ma.masked_array(data_archive['arr_0'], mask=data_archive['arr_1'])
diff --git a/lib/iris/tests/stock_arrays.npz b/lib/iris/tests/stock_arrays.npz
deleted file mode 100644
index 76fa668266..0000000000
Binary files a/lib/iris/tests/stock_arrays.npz and /dev/null differ
diff --git a/lib/iris/tests/test_analysis.py b/lib/iris/tests/test_analysis.py
index fe13dd4214..ebc5cea557 100644
--- a/lib/iris/tests/test_analysis.py
+++ b/lib/iris/tests/test_analysis.py
@@ -212,30 +212,30 @@ def _common(self, name, aggregate, original_name='original_common.cml', *args, *
self.assertCML(self.cube, ('analysis', original_name))
def test_mean(self):
- self._common('mean', iris.analysis.MEAN, decimal=1)
+ self._common('mean', iris.analysis.MEAN, rtol=1e-05)
def test_std_dev(self):
# as the numbers are so high, trim off some trailing digits & compare to 0dp
- self._common('std_dev', iris.analysis.STD_DEV, decimal=1)
+ self._common('std_dev', iris.analysis.STD_DEV, rtol=1e-05)
def test_hmean(self):
# harmonic mean requires data > 0
self.cube.data *= self.cube.data
- self._common('hmean', iris.analysis.HMEAN, 'original_hmean.cml', decimal=1)
+ self._common('hmean', iris.analysis.HMEAN, 'original_hmean.cml', rtol=1e-05)
def test_gmean(self):
- self._common('gmean', iris.analysis.GMEAN, decimal=1)
+ self._common('gmean', iris.analysis.GMEAN, rtol=1e-05)
def test_variance(self):
# as the numbers are so high, trim off some trailing digits & compare to 0dp
- self._common('variance', iris.analysis.VARIANCE, decimal=1)
+ self._common('variance', iris.analysis.VARIANCE, rtol=1e-05)
def test_median(self):
self._common('median', iris.analysis.MEDIAN)
def test_sum(self):
# as the numbers are so high, trim off some trailing digits & compare to 0dp
- self._common('sum', iris.analysis.SUM, decimal=1)
+ self._common('sum', iris.analysis.SUM, rtol=1e-05)
def test_max(self):
self._common('max', iris.analysis.MAX)
@@ -656,6 +656,7 @@ def test_area_weights(self):
self.assertCML(small_cube, ('analysis', 'areaweights_original.cml'),
checksum=False)
+@tests.skip_data
class TestAreaWeightGeneration(tests.IrisTest):
def setUp(self):
self.cube = iris.tests.stock.realistic_4d()
diff --git a/lib/iris/tests/test_analysis_calculus.py b/lib/iris/tests/test_analysis_calculus.py
index 4464f135f8..39b506e79b 100644
--- a/lib/iris/tests/test_analysis_calculus.py
+++ b/lib/iris/tests/test_analysis_calculus.py
@@ -37,6 +37,7 @@
class TestCubeDelta(tests.IrisTest):
+ @tests.skip_data
def test_invalid(self):
cube = iris.tests.stock.realistic_4d()
with self.assertRaises(iris.exceptions.CoordinateMultiDimError):
diff --git a/lib/iris/tests/test_cdm.py b/lib/iris/tests/test_cdm.py
index 15e5a7948f..2c09cff948 100644
--- a/lib/iris/tests/test_cdm.py
+++ b/lib/iris/tests/test_cdm.py
@@ -41,6 +41,7 @@
import iris.coords
import iris.cube
import iris.fileformats
+import iris.fileformats.dot
import iris.tests.pp as pp
import iris.tests.stock
@@ -214,6 +215,7 @@ def test_immutable_auxcoord_dims(self):
dims[0] = 1
+@tests.skip_data
class TestStockCubeStringRepresentations(tests.IrisTest):
def setUp(self):
self.cube = iris.tests.stock.realistic_4d()
@@ -276,10 +278,12 @@ def test_dot_simple_pp(self):
del cube.attributes['my_attribute']
# TODO hybrid height and dot output - relatitionship links
+ @tests.skip_data
def test_dot_4d(self):
cube = iris.tests.stock.realistic_4d()
self.check_dot(cube, ('file_load', '4d_pp.dot'))
+ @tests.skip_data
def test_missing_coords(self):
cube = iris.tests.stock.realistic_4d()
cube.remove_coord('time')
@@ -289,6 +293,7 @@ def test_missing_coords(self):
self.assertString(str(cube),
('cdm', 'str_repr', 'missing_coords_cube.str.txt'))
+ @tests.skip_data
def test_cubelist_string(self):
cube_list = iris.cube.CubeList([iris.tests.stock.realistic_4d(),
iris.tests.stock.global_pp()])
@@ -1038,39 +1043,66 @@ def test_multi_d(self):
self.assertCML(cube, ('cube_collapsed', 'original.cml'))
- # Compare 2-stage collapsing with a single stage collapse over 2 Coords.
- self.collapse_test_common(cube, 'grid_latitude', 'grid_longitude', decimal=1)
- self.collapse_test_common(cube, 'grid_longitude', 'grid_latitude', decimal=1)
+ # Compare 2-stage collapsing with a single stage collapse
+ # over 2 Coords.
+ self.collapse_test_common(cube, 'grid_latitude', 'grid_longitude',
+ rtol=1e-05)
+ self.collapse_test_common(cube, 'grid_longitude', 'grid_latitude',
+ rtol=1e-05)
- self.collapse_test_common(cube, 'time', 'grid_latitude', decimal=1)
- self.collapse_test_common(cube, 'grid_latitude', 'time', decimal=1)
+ self.collapse_test_common(cube, 'time', 'grid_latitude', rtol=1e-05)
+ self.collapse_test_common(cube, 'grid_latitude', 'time', rtol=1e-05)
- self.collapse_test_common(cube, 'time', 'grid_longitude', decimal=1)
- self.collapse_test_common(cube, 'grid_longitude', 'time', decimal=1)
+ self.collapse_test_common(cube, 'time', 'grid_longitude', rtol=1e-05)
+ self.collapse_test_common(cube, 'grid_longitude', 'time', rtol=1e-05)
- self.collapse_test_common(cube, 'grid_latitude', 'model_level_number', decimal=1)
- self.collapse_test_common(cube, 'model_level_number', 'grid_latitude', decimal=1)
+ self.collapse_test_common(cube, 'grid_latitude', 'model_level_number',
+ rtol=5e-04)
+ self.collapse_test_common(cube, 'model_level_number', 'grid_latitude',
+ rtol=5e-04)
- self.collapse_test_common(cube, 'grid_longitude', 'model_level_number', decimal=1)
- self.collapse_test_common(cube, 'model_level_number', 'grid_longitude', decimal=1)
+ self.collapse_test_common(cube, 'grid_longitude', 'model_level_number',
+ rtol=5e-04)
+ self.collapse_test_common(cube, 'model_level_number', 'grid_longitude',
+ rtol=5e-04)
- self.collapse_test_common(cube, 'time', 'model_level_number', decimal=1)
- self.collapse_test_common(cube, 'model_level_number', 'time', decimal=1)
+ self.collapse_test_common(cube, 'time', 'model_level_number',
+ rtol=5e-04)
+ self.collapse_test_common(cube, 'model_level_number', 'time',
+ rtol=5e-04)
- self.collapse_test_common(cube, 'model_level_number', 'time', decimal=1)
- self.collapse_test_common(cube, 'time', 'model_level_number', decimal=1)
+ self.collapse_test_common(cube, 'model_level_number', 'time',
+ rtol=5e-04)
+ self.collapse_test_common(cube, 'time', 'model_level_number',
+ rtol=5e-04)
# Collapse 3 things at once.
- triple_collapse = cube.collapsed(['model_level_number', 'time', 'grid_longitude'], iris.analysis.MEAN)
- self.assertCMLApproxData(triple_collapse, ('cube_collapsed', 'triple_collapse_ml_pt_lon.cml'), decimal=1)
-
- triple_collapse = cube.collapsed(['grid_latitude', 'model_level_number', 'time'], iris.analysis.MEAN)
- self.assertCMLApproxData(triple_collapse, ('cube_collapsed', 'triple_collapse_lat_ml_pt.cml'), decimal=1)
+ triple_collapse = cube.collapsed(['model_level_number',
+ 'time', 'grid_longitude'],
+ iris.analysis.MEAN)
+ self.assertCMLApproxData(triple_collapse, ('cube_collapsed',
+ ('triple_collapse_ml_pt_'
+ 'lon.cml')),
+ rtol=5e-04)
+
+ triple_collapse = cube.collapsed(['grid_latitude',
+ 'model_level_number', 'time'],
+ iris.analysis.MEAN)
+ self.assertCMLApproxData(triple_collapse, ('cube_collapsed',
+ ('triple_collapse_lat_ml'
+ '_pt.cml')),
+ rtol=0.05)
+ # KNOWN PROBLEM: the previous 'rtol' is very large.
+ # Numpy 1.10 and 1.11 give significantly different results here.
+ # This may relate to known problems with summing over large arrays,
+ # which were largely fixed in numpy 1.9 but still occur in some cases,
+ # as-of numpy 1.11.
# Ensure no side effects
self.assertCML(cube, ('cube_collapsed', 'original.cml'))
-
-
+
+
+@tests.skip_data
class TestTrimAttributes(tests.IrisTest):
def test_non_string_attributes(self):
cube = iris.tests.stock.realistic_4d()
@@ -1155,6 +1187,7 @@ def test_save_and_merge(self):
self.assertEqual(merged_cube.data.fill_value, 123456)
+@tests.skip_data
class TestConversionToCoordList(tests.IrisTest):
def test_coord_conversion(self):
cube = iris.tests.stock.realistic_4d()
diff --git a/lib/iris/tests/test_constraints.py b/lib/iris/tests/test_constraints.py
index 6977a29d48..e3de548265 100644
--- a/lib/iris/tests/test_constraints.py
+++ b/lib/iris/tests/test_constraints.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2010 - 2015, Met Office
+# (C) British Crown Copyright 2010 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -43,8 +43,11 @@ def workaround_pending_1262(cubes):
cubes[i] = cube[::-1]
+@tests.skip_data
class TestSimple(tests.IrisTest):
- slices = iris.cube.CubeList(stock.realistic_4d().slices(['grid_latitude', 'grid_longitude']))
+ def setUp(self):
+ names = ['grid_latitude', 'grid_longitude']
+ self.slices = iris.cube.CubeList(stock.realistic_4d().slices(names))
def test_constraints(self):
constraint = iris.Constraint(model_level_number=10)
diff --git a/lib/iris/tests/test_coord_api.py b/lib/iris/tests/test_coord_api.py
index 08bff9b56d..5e2811d6ad 100644
--- a/lib/iris/tests/test_coord_api.py
+++ b/lib/iris/tests/test_coord_api.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2010 - 2015, Met Office
+# (C) British Crown Copyright 2010 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -106,6 +106,7 @@ def test_lazy_shared_data(self):
self._check_shared_data(self.coord)
+@tests.skip_data
class TestCoordSlicing(unittest.TestCase):
def setUp(self):
cube = iris.tests.stock.realistic_4d()
@@ -207,6 +208,7 @@ def test_no_intersection_on_unit(self):
self.a.units = 'kilometer'
self.assertRaises(ValueError, self.a.intersect, self.b)
+ @tests.skip_data
def test_commutative(self):
cube = iris.tests.stock.realistic_4d()
coord = cube.coord('grid_longitude')
@@ -232,6 +234,7 @@ def test_complex(self):
self.assertXMLElement(coord, ('coord_api', 'complex.xml'))
+@tests.skip_data
class TestCoord_ReprStr_nontime(tests.IrisTest):
def setUp(self):
self.lat = iris.tests.stock.realistic_4d().coord('grid_latitude')[:10]
@@ -253,6 +256,7 @@ def test_AuxCoord_str(self):
('coord_api', 'str_repr', 'aux_nontime_str.txt'))
+@tests.skip_data
class TestCoord_ReprStr_time(tests.IrisTest):
def setUp(self):
self.time = iris.tests.stock.realistic_4d().coord('time')
@@ -596,6 +600,7 @@ def test_nd_bounds(self):
self.assertCML(pcube, ("coord_api", "nd_bounds.cml"))
+@tests.skip_data
class TestGetterSetter(tests.IrisTest):
def test_get_set_points_and_bounds(self):
cube = iris.tests.stock.realistic_4d()
diff --git a/lib/iris/tests/test_cube_to_pp.py b/lib/iris/tests/test_cube_to_pp.py
index 6c222cd300..dab7298570 100644
--- a/lib/iris/tests/test_cube_to_pp.py
+++ b/lib/iris/tests/test_cube_to_pp.py
@@ -297,7 +297,8 @@ def test_pp_save_rules(self):
self.assertEqual(self.lbproc_from_pp(temp_filename), lbproc)
os.remove(temp_filename)
-
+
+ @tests.skip_data
def test_lbvc(self):
cube = stock.realistic_4d_no_derived()[0, :4, ...]
diff --git a/lib/iris/tests/test_hybrid.py b/lib/iris/tests/test_hybrid.py
index eeef1c394d..8e87512796 100644
--- a/lib/iris/tests/test_hybrid.py
+++ b/lib/iris/tests/test_hybrid.py
@@ -37,6 +37,7 @@
@tests.skip_plot
+@tests.skip_data
class TestRealistic4d(tests.GraphicsTest):
def setUp(self):
super(TestRealistic4d, self).setUp()
@@ -160,6 +161,7 @@ def test_bounded_orography(self):
bounds = altitude.bounds
+@tests.skip_data
class TestHybridPressure(tests.IrisTest):
def setUp(self):
# Convert the hybrid-height into hybrid-pressure...
diff --git a/lib/iris/tests/test_iterate.py b/lib/iris/tests/test_iterate.py
index 2a53cbc946..6fd601ae19 100644
--- a/lib/iris/tests/test_iterate.py
+++ b/lib/iris/tests/test_iterate.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2010 - 2015, Met Office
+# (C) British Crown Copyright 2010 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -40,6 +40,7 @@
from functools import reduce
+@tests.skip_data
class TestIterateFunctions(tests.IrisTest):
def setUp(self):
diff --git a/lib/iris/tests/test_mapping.py b/lib/iris/tests/test_mapping.py
index 665a3097f4..75a8690937 100644
--- a/lib/iris/tests/test_mapping.py
+++ b/lib/iris/tests/test_mapping.py
@@ -47,8 +47,11 @@
@tests.skip_plot
+@tests.skip_data
class TestBasic(tests.GraphicsTest):
- cube = iris.tests.stock.realistic_4d()
+ def setUp(self):
+ super(TestBasic, self).setUp()
+ self.cube = iris.tests.stock.realistic_4d()
def test_contourf(self):
cube = self.cube[0, 0]
diff --git a/lib/iris/tests/test_netcdf.py b/lib/iris/tests/test_netcdf.py
index b9d5ed905a..6463122409 100644
--- a/lib/iris/tests/test_netcdf.py
+++ b/lib/iris/tests/test_netcdf.py
@@ -300,6 +300,7 @@ def test_bad_permissions(self):
os.rmdir(dir_name)
+@tests.skip_data
class TestSave(tests.IrisTest):
def test_hybrid(self):
cube = stock.realistic_4d()
diff --git a/lib/iris/tests/test_plot.py b/lib/iris/tests/test_plot.py
index 63b50eef93..2b9f38688f 100644
--- a/lib/iris/tests/test_plot.py
+++ b/lib/iris/tests/test_plot.py
@@ -42,6 +42,7 @@
import iris.symbols
+@tests.skip_data
def simple_cube():
cube = iris.tests.stock.realistic_4d()
cube = cube[:, 0, 0, :]
@@ -102,6 +103,7 @@ def test_missing_cs(self):
@tests.skip_plot
+@tests.skip_data
class TestHybridHeight(tests.GraphicsTest):
def setUp(self):
super(TestHybridHeight, self).setUp()
@@ -151,6 +153,7 @@ def test_orography(self):
@tests.skip_plot
+@tests.skip_data
class Test1dPlotMultiArgs(tests.GraphicsTest):
# tests for iris.plot using multi-argument calling convention
@@ -367,6 +370,7 @@ def inner(*args, **kwargs):
@cache
+@tests.skip_data
def _load_4d_testcube():
# Load example 4d data (TZYX).
test_cube = iris.tests.stock.realistic_4d()
diff --git a/lib/iris/tests/test_trajectory.py b/lib/iris/tests/test_trajectory.py
index f64de6baed..11e8f09923 100644
--- a/lib/iris/tests/test_trajectory.py
+++ b/lib/iris/tests/test_trajectory.py
@@ -29,6 +29,7 @@
import iris.tests.stock
+@tests.skip_data
class TestSimple(tests.IrisTest):
def test_invalid_coord(self):
cube = iris.tests.stock.realistic_4d()
diff --git a/lib/iris/tests/test_util.py b/lib/iris/tests/test_util.py
index bc77d0d7b8..5ffa33d30b 100644
--- a/lib/iris/tests/test_util.py
+++ b/lib/iris/tests/test_util.py
@@ -184,6 +184,7 @@ def test_trim_string_with_no_spaces(self):
'expected value is %s' % (len(result), expected_length))
+@tests.skip_data
class TestDescribeDiff(iris.tests.IrisTest):
def test_identical(self):
test_cube_a = stock.realistic_4d()
@@ -262,6 +263,7 @@ def test_output_file(self):
'incompatible_cubes.str.txt')
+@tests.skip_data
class TestAsCompatibleShape(tests.IrisTest):
def test_slice(self):
cube = tests.stock.realistic_4d()
diff --git a/lib/iris/tests/unit/analysis/cartography/test_project.py b/lib/iris/tests/unit/analysis/cartography/test_project.py
index 5e4ef047dd..4adf824107 100644
--- a/lib/iris/tests/unit/analysis/cartography/test_project.py
+++ b/lib/iris/tests/unit/analysis/cartography/test_project.py
@@ -70,28 +70,33 @@ def test_is_iris_coord_system(self):
self.assertIsNot(res.coord('projection_x_coordinate').coord_system,
self.tcs)
+ @tests.skip_data
def test_bad_resolution_negative(self):
cube = low_res_4d()
with self.assertRaises(ValueError):
project(cube, ROBINSON, nx=-200, ny=200)
+ @tests.skip_data
def test_bad_resolution_non_numeric(self):
cube = low_res_4d()
with self.assertRaises(ValueError):
project(cube, ROBINSON, nx=200, ny='abc')
+ @tests.skip_data
def test_missing_lat(self):
cube = low_res_4d()
cube.remove_coord('grid_latitude')
with self.assertRaises(ValueError):
project(cube, ROBINSON)
+ @tests.skip_data
def test_missing_lon(self):
cube = low_res_4d()
cube.remove_coord('grid_longitude')
with self.assertRaises(ValueError):
project(cube, ROBINSON)
+ @tests.skip_data
def test_missing_latlon(self):
cube = low_res_4d()
cube.remove_coord('grid_longitude')
@@ -99,40 +104,47 @@ def test_missing_latlon(self):
with self.assertRaises(ValueError):
project(cube, ROBINSON)
+ @tests.skip_data
def test_default_resolution(self):
cube = low_res_4d()
new_cube, extent = project(cube, ROBINSON)
self.assertEqual(new_cube.shape, cube.shape)
+ @tests.skip_data
def test_explicit_resolution(self):
cube = low_res_4d()
nx, ny = 5, 4
new_cube, extent = project(cube, ROBINSON, nx=nx, ny=ny)
self.assertEqual(new_cube.shape, cube.shape[:2] + (ny, nx))
+ @tests.skip_data
def test_explicit_resolution_single_point(self):
cube = low_res_4d()
nx, ny = 1, 1
new_cube, extent = project(cube, ROBINSON, nx=nx, ny=ny)
self.assertEqual(new_cube.shape, cube.shape[:2] + (ny, nx))
+ @tests.skip_data
def test_mismatched_coord_systems(self):
cube = low_res_4d()
cube.coord('grid_longitude').coord_system = None
with self.assertRaises(ValueError):
project(cube, ROBINSON)
+ @tests.skip_data
def test_extent(self):
cube = low_res_4d()
_, extent = project(cube, ROBINSON)
self.assertEqual(extent, [-17005833.33052523, 17005833.33052523,
-8625155.12857459, 8625155.12857459])
+ @tests.skip_data
def test_cube(self):
cube = low_res_4d()
new_cube, _ = project(cube, ROBINSON)
self.assertCMLApproxData(new_cube)
+ @tests.skip_data
def test_no_coord_system(self):
cube = low_res_4d()
cube.coord('grid_longitude').coord_system = None
diff --git a/lib/iris/tests/unit/analysis/interpolate/test_linear.py b/lib/iris/tests/unit/analysis/interpolate/test_linear.py
index 22c9523de5..7ea69ded34 100644
--- a/lib/iris/tests/unit/analysis/interpolate/test_linear.py
+++ b/lib/iris/tests/unit/analysis/interpolate/test_linear.py
@@ -64,6 +64,7 @@ def test_sample_point_iterable(self):
self._assert_expected_call(sample_points, sample_points_call)
+@tests.skip_data
class Test_masks(tests.IrisTest):
def test_mask_retention(self):
cube = stock.realistic_4d_w_missing_data()
diff --git a/lib/iris/tests/unit/analysis/interpolation/test_get_xy_dim_coords.py b/lib/iris/tests/unit/analysis/interpolation/test_get_xy_dim_coords.py
index d4fc866714..457bd207f1 100644
--- a/lib/iris/tests/unit/analysis/interpolation/test_get_xy_dim_coords.py
+++ b/lib/iris/tests/unit/analysis/interpolation/test_get_xy_dim_coords.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2013 - 2015, Met Office
+# (C) British Crown Copyright 2013 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -38,6 +38,7 @@
class TestGetXYCoords(tests.IrisTest):
+ @tests.skip_data
def test_grid_lat_lon(self):
cube = iris.tests.stock.realistic_4d()
x, y = get_xy_dim_coords(cube)
@@ -58,18 +59,21 @@ def test_projection_coords(self):
self.assertIs(x, cube.coord('projection_x_coordinate'))
self.assertIs(y, cube.coord('projection_y_coordinate'))
+ @tests.skip_data
def test_missing_x_coord(self):
cube = iris.tests.stock.realistic_4d()
cube.remove_coord('grid_longitude')
with self.assertRaises(ValueError):
get_xy_dim_coords(cube)
+ @tests.skip_data
def test_missing_y_coord(self):
cube = iris.tests.stock.realistic_4d()
cube.remove_coord('grid_latitude')
with self.assertRaises(ValueError):
get_xy_dim_coords(cube)
+ @tests.skip_data
def test_multiple_coords(self):
cube = iris.tests.stock.realistic_4d()
cs = iris.coord_systems.GeogCS(6371229)
diff --git a/lib/iris/tests/unit/analysis/maths/test_add.py b/lib/iris/tests/unit/analysis/maths/test_add.py
index af2c7eb330..24569c2bfd 100644
--- a/lib/iris/tests/unit/analysis/maths/test_add.py
+++ b/lib/iris/tests/unit/analysis/maths/test_add.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2014 - 2015, Met Office
+# (C) British Crown Copyright 2014 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -30,6 +30,7 @@
CubeArithmeticBroadcastingTestMixin, CubeArithmeticMaskingTestMixin
+@tests.skip_data
class TestBroadcasting(tests.IrisTest, CubeArithmeticBroadcastingTestMixin):
@property
def data_op(self):
diff --git a/lib/iris/tests/unit/analysis/maths/test_divide.py b/lib/iris/tests/unit/analysis/maths/test_divide.py
index 7ada2cfc37..d577133af3 100644
--- a/lib/iris/tests/unit/analysis/maths/test_divide.py
+++ b/lib/iris/tests/unit/analysis/maths/test_divide.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2014 - 2015, Met Office
+# (C) British Crown Copyright 2014 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -32,6 +32,7 @@
CubeArithmeticBroadcastingTestMixin, CubeArithmeticMaskingTestMixin
+@tests.skip_data
class TestBroadcasting(tests.IrisTest, CubeArithmeticBroadcastingTestMixin):
@property
def data_op(self):
diff --git a/lib/iris/tests/unit/analysis/maths/test_multiply.py b/lib/iris/tests/unit/analysis/maths/test_multiply.py
index 5dbd089a09..8056796d72 100644
--- a/lib/iris/tests/unit/analysis/maths/test_multiply.py
+++ b/lib/iris/tests/unit/analysis/maths/test_multiply.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2014 - 2015, Met Office
+# (C) British Crown Copyright 2014 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -30,6 +30,7 @@
CubeArithmeticBroadcastingTestMixin, CubeArithmeticMaskingTestMixin
+@tests.skip_data
class TestBroadcasting(tests.IrisTest, CubeArithmeticBroadcastingTestMixin):
@property
def data_op(self):
diff --git a/lib/iris/tests/unit/analysis/maths/test_subtract.py b/lib/iris/tests/unit/analysis/maths/test_subtract.py
index 0b4e4a8568..95464c9af2 100644
--- a/lib/iris/tests/unit/analysis/maths/test_subtract.py
+++ b/lib/iris/tests/unit/analysis/maths/test_subtract.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2014 - 2015, Met Office
+# (C) British Crown Copyright 2014 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -30,6 +30,7 @@
CubeArithmeticBroadcastingTestMixin, CubeArithmeticMaskingTestMixin
+@tests.skip_data
class TestBroadcasting(tests.IrisTest, CubeArithmeticBroadcastingTestMixin):
@property
def data_op(self):
diff --git a/lib/iris/tests/unit/analysis/regrid/test_RectilinearRegridder.py b/lib/iris/tests/unit/analysis/regrid/test_RectilinearRegridder.py
index a307603bad..501d55bc08 100644
--- a/lib/iris/tests/unit/analysis/regrid/test_RectilinearRegridder.py
+++ b/lib/iris/tests/unit/analysis/regrid/test_RectilinearRegridder.py
@@ -1188,6 +1188,7 @@ def test_grid_subset_missing_data_aux(self):
self.assertCMLApproxData(result, cml)
+@tests.skip_data
class Test___call____NOP(tests.IrisTest):
def setUp(self):
# The destination grid points are exactly the same as the
@@ -1238,14 +1239,15 @@ def test_non_circular(self):
cml = RESULT_DIR + ('{}_non_circular.cml'.format(method),)
self.assertCMLApproxData(result, cml)
- def _check_circular_results(self, src_cube):
+ def _check_circular_results(self, src_cube, missingmask=''):
results = []
for method in self.methods:
regridder = Regridder(src_cube, self.grid, method, self.mode)
result = regridder(src_cube)
results.append(result)
self.assertFalse(result.coord('longitude').circular)
- cml = RESULT_DIR + ('{}_circular_src.cml'.format(method),)
+ cml = RESULT_DIR + ('{}_circular_src{}.cml'.format(method,
+ missingmask),)
self.assertCMLApproxData(result, cml)
return results
@@ -1262,7 +1264,7 @@ def test_circular_src__masked_missingmask(self):
src.coord('longitude').circular = True
src.data = np.ma.MaskedArray(src.data)
self.assertEqual(src.data.mask, False)
- method_results = self._check_circular_results(src)
+ method_results = self._check_circular_results(src, 'missingmask')
for method_result in method_results:
self.assertIsInstance(method_result.data.mask, np.ndarray)
self.assertTrue(np.all(method_result.data.mask == np.array(False)))
diff --git a/lib/iris/tests/unit/cube/test_Cube.py b/lib/iris/tests/unit/cube/test_Cube.py
index 4b51bc53b0..eefbac6ad4 100644
--- a/lib/iris/tests/unit/cube/test_Cube.py
+++ b/lib/iris/tests/unit/cube/test_Cube.py
@@ -409,6 +409,7 @@ def test_kwargs(self):
self.assertMaskedArrayEqual(expected_result, res_cube.data)
+@tests.skip_data
class Test_slices_over(tests.IrisTest):
def setUp(self):
self.cube = stock.realistic_4d()
diff --git a/lib/iris/tests/unit/cube/test_CubeList.py b/lib/iris/tests/unit/cube/test_CubeList.py
index 16ad9815c6..260da07c33 100644
--- a/lib/iris/tests/unit/cube/test_CubeList.py
+++ b/lib/iris/tests/unit/cube/test_CubeList.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2014 - 2015, Met Office
+# (C) British Crown Copyright 2014 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -22,6 +22,7 @@
# Import iris.tests first so that some things can be initialised before
# importing anything else.
import iris.tests as tests
+import iris.tests.stock
from cf_units import Unit
import numpy as np
@@ -30,6 +31,7 @@
from iris.coords import AuxCoord, DimCoord
import iris.coord_systems
import iris.exceptions
+from iris.fileformats.pp import STASH
class Test_concatenate_cube(tests.IrisTest):
@@ -276,5 +278,28 @@ def test_scalar_cube_data_constraint(self):
self.assertEqual(res, expected)
+class TestPrint(tests.IrisTest):
+ def setUp(self):
+ self.cubes = CubeList([iris.tests.stock.lat_lon_cube()])
+
+ def test_summary(self):
+ expected = ('0: unknown / (unknown) '
+ ' (latitude: 3; longitude: 4)')
+ self.assertEqual(str(self.cubes), expected)
+
+ def test_summary_name_unit(self):
+ self.cubes[0].long_name = 'aname'
+ self.cubes[0].units = '1'
+ expected = ('0: aname / (1) '
+ ' (latitude: 3; longitude: 4)')
+ self.assertEqual(str(self.cubes), expected)
+
+ def test_summary_stash(self):
+ self.cubes[0].attributes['STASH'] = STASH.from_msi('m01s00i004')
+ expected = ('0: m01s00i004 '
+ ' (latitude: 3; longitude: 4)')
+ self.assertEqual(str(self.cubes), expected)
+
+
if __name__ == "__main__":
tests.main()
diff --git a/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py b/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py
index 16a63f4d6a..addacbdbf6 100644
--- a/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py
+++ b/lib/iris/tests/unit/experimental/regrid/test_regrid_area_weighted_rectilinear_src_and_grid.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2014 - 2015, Met Office
+# (C) British Crown Copyright 2014 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -150,5 +150,37 @@ def test_scalar_with_overlap_above_mdtol(self):
self.assertEqual(ma.count_masked(res.data), 1)
+class TestWrapAround(tests.IrisTest):
+ def test_float_tolerant_equality(self):
+ # Ensure that floating point numbers are treated appropriately when
+ # introducing precision difference from wrap_around.
+ source = Cube([[1]])
+ cs = GeogCS(6371229)
+
+ bounds = np.array([[-91, 0]], dtype='float')
+ points = bounds.mean(axis=1)
+ lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude',
+ units='degrees', coord_system=cs)
+ source.add_aux_coord(lon_coord, 1)
+
+ bounds = np.array([[-90, 90]], dtype='float')
+ points = bounds.mean(axis=1)
+ lat_coord = DimCoord(points, bounds=bounds, standard_name='latitude',
+ units='degrees', coord_system=cs)
+ source.add_aux_coord(lat_coord, 0)
+
+ grid = Cube([[0]])
+ bounds = np.array([[270, 360]], dtype='float')
+ points = bounds.mean(axis=1)
+ lon_coord = DimCoord(points, bounds=bounds, standard_name='longitude',
+ units='degrees', coord_system=cs)
+ grid.add_aux_coord(lon_coord, 1)
+ grid.add_aux_coord(lat_coord, 0)
+
+ res = regrid(source, grid)
+ # The result should be equal to the source data and NOT be masked.
+ self.assertArrayEqual(res.data, np.array([1.0]))
+
+
if __name__ == '__main__':
tests.main()
diff --git a/lib/iris/tests/unit/fileformats/dot/test__dot_path.py b/lib/iris/tests/unit/fileformats/dot/test__dot_path.py
index a402d50caf..55c45438a6 100644
--- a/lib/iris/tests/unit/fileformats/dot/test__dot_path.py
+++ b/lib/iris/tests/unit/fileformats/dot/test__dot_path.py
@@ -28,7 +28,7 @@
import mock
-from iris.fileformats.dot import _dot_path
+from iris.fileformats.dot import _dot_path, _DOT_EXECUTABLE_PATH
class Test(tests.IrisTest):
@@ -37,6 +37,11 @@ def setUp(self):
# reset the caching status to allow us to see what happens
# under different circumstances.
self.patch('iris.fileformats.dot._DOT_CHECKED', new=False)
+ # Also patch the private path variable to the existing value (i.e. no
+ # change), and restore it after each test: As these tests modify it,
+ # that can potentially break subsequent 'normal' behaviour.
+ self.patch('iris.fileformats.dot._DOT_EXECUTABLE_PATH',
+ _DOT_EXECUTABLE_PATH)
def test_valid_absolute_path(self):
# Override the configuration value for System.dot_path
diff --git a/lib/iris/tests/unit/fileformats/test_rules.py b/lib/iris/tests/unit/fileformats/test_rules.py
index b815b0fece..3aa73f05b0 100644
--- a/lib/iris/tests/unit/fileformats/test_rules.py
+++ b/lib/iris/tests/unit/fileformats/test_rules.py
@@ -78,6 +78,7 @@ def transform(cube):
dest.long_name = src.long_name
self.assertEqual(dest, src)
+ @tests.skip_data
def test_multiple_cubes_no_transform(self):
target = ConcreteReferenceTarget('foo')
src = stock.realistic_4d()
@@ -87,6 +88,7 @@ def test_multiple_cubes_no_transform(self):
self.assertIsNot(dest, src)
self.assertEqual(dest, src)
+ @tests.skip_data
def test_multiple_cubes_with_transform(self):
def transform(cube):
return {'long_name': 'wibble'}
@@ -152,6 +154,7 @@ def converter(field):
self.assertTrue(hasattr(aux_factory, 'fake_args'))
self.assertEqual(aux_factory.fake_args, ({'name': 'foo'},))
+ @tests.skip_data
def test_cross_reference(self):
# Test the creation process for a factory definition which uses
# a cross-reference.
diff --git a/lib/iris/tests/unit/util/test_demote_dim_coord_to_aux_coord.py b/lib/iris/tests/unit/util/test_demote_dim_coord_to_aux_coord.py
index 02e06c3aa7..a840b5c419 100644
--- a/lib/iris/tests/unit/util/test_demote_dim_coord_to_aux_coord.py
+++ b/lib/iris/tests/unit/util/test_demote_dim_coord_to_aux_coord.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2010 - 2015, Met Office
+# (C) British Crown Copyright 2010 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -38,6 +38,7 @@ def test_argument_is_basestring(self):
self.assertEqual(cube_b.dim_coords,
(cube_a.coord('latitude'), cube_a.coord('longitude')))
+ @tests.skip_data
def test_argument_is_coord_instance(self):
cube_a = stock.realistic_4d()
cube_b = cube_a.copy()
diff --git a/lib/iris/tests/unit/util/test_promote_aux_coord_to_dim_coord.py b/lib/iris/tests/unit/util/test_promote_aux_coord_to_dim_coord.py
index 7b72bbf6a9..d66dc792c5 100644
--- a/lib/iris/tests/unit/util/test_promote_aux_coord_to_dim_coord.py
+++ b/lib/iris/tests/unit/util/test_promote_aux_coord_to_dim_coord.py
@@ -1,4 +1,4 @@
-# (C) British Crown Copyright 2010 - 2015, Met Office
+# (C) British Crown Copyright 2010 - 2016, Met Office
#
# This file is part of Iris.
#
@@ -44,6 +44,7 @@ def test_old_dim_coord_is_now_aux_coord(self):
promote_aux_coord_to_dim_coord(cube_b, 'model_level_number')
self.assertTrue(cube_a.coord('level_height') in cube_b.aux_coords)
+ @tests.skip_data
def test_argument_is_coord_instance(self):
cube_a = stock.realistic_4d()
cube_b = cube_a.copy()
@@ -53,6 +54,7 @@ def test_argument_is_coord_instance(self):
cube_a.coord('grid_latitude'),
cube_a.coord('grid_longitude')))
+ @tests.skip_data
def test_dimension_is_anonymous(self):
cube_a = stock.realistic_4d()
cube_b = cube_a.copy()
diff --git a/minimal-conda-requirements.txt b/minimal-conda-requirements.txt
index 7f89000ce6..cf24427885 100644
--- a/minimal-conda-requirements.txt
+++ b/minimal-conda-requirements.txt
@@ -20,6 +20,7 @@ nose
pep8
sphinx
filelock
+imagehash
# Optional iris dependencies
mo_pack