def test_mae_accessor_outer_array(ds_dask): ds = ds_dask.load() b = ds['b'] ds = ds.drop('b') dim = 'lat' actual = mae(ds['a'], b, dim) expected = ds.xs.mae('a', b, dim) assert_allclose(actual, expected)
def test_mae_r_xr_dask(a_dask, b_dask, dim): actual = mae(a_dask, b_dask, dim) dim, axis = _preprocess(dim) _a_dask = a_dask.values _b_dask = b_dask.values axis = tuple(a_dask.dims.index(d) for d in dim) res = _mae(_a_dask, _b_dask, axis) expected = actual.copy() expected.values = res assert_allclose(actual, expected)
def test_mae_r_xr(a, b, dim): actual = mae(a, b, dim) dim, axis = _preprocess(dim) _a = a.values _b = b.values axis = tuple(a.dims.index(d) for d in dim) res = _mae(_a, _b, axis) expected = actual.copy() expected.values = res assert_allclose(actual, expected)
def test_mae_r_xr(a, b, dim, weight, weights_ones, weights_latitude): # Generates subsetted weights to pass in as arg to main function and for the numpy testing. weights_arg, weights_np = adjust_weights(weight, dim, weights_ones, weights_latitude) actual = mae(a, b, dim, weights=weights_arg) assert actual.chunks is None dim, axis = _preprocess_dims(dim) _a = a _b = b _weights_np = _preprocess_weights(_a, dim, dim, weights_np) axis = tuple(a.dims.index(d) for d in dim) res = _mae(_a.values, _b.values, _weights_np.values, axis) expected = actual.copy() expected.values = res assert_allclose(actual, expected)
def test_mae_same_as_sklearn(a, b): """Tests that mean absolute error is same as computed from sklearn.""" xs_mae = mae(a, b, 'time') sklearn_mae = mean_absolute_error(a, b) assert np.allclose(xs_mae, sklearn_mae)