from __future__ import absolute_import import numpy as np import xarray as xr import datashader as ds import pytest xda = xr.DataArray(data=np.array(([1.] * 10 + [10] * 10)), dims=('record'), coords={'x': xr.DataArray(np.array(([0.] * 10 + [1] * 10)), dims=('record')), 'y': xr.DataArray(np.array(([0.] * 5 + [1] * 5 + [0] * 5 + [1] * 5)), dims=('record')), 'i32': xr.DataArray(np.arange(20, dtype='i4'), dims=('record')), 'i64': xr.DataArray(np.arange(20, dtype='i8'), dims=('record')), 'f32': xr.DataArray(np.arange(20, dtype='f4'), dims=('record')), 'f64': xr.DataArray(np.arange(20, dtype='f8'), dims=('record')), }) xda.f32[2] = np.nan xda.f64[2] = np.nan xds = xda.to_dataset(name='value').reset_coords(names=['i32', 'i64']) xdda = xda.chunk(chunks=5) xdds = xds.chunk(chunks=5) c = ds.Canvas(plot_width=2, plot_height=2, x_range=(0, 1), y_range=(0, 1)) axis = ds.core.LinearAxis() lincoords = axis.compute_index(axis.compute_scale_and_translate((0, 1), 2), 2) coords = [lincoords, lincoords] dims = ['y', 'x'] def assert_eq(agg, b): assert agg.equals(b) @pytest.mark.parametrize("source", [ (xda), (xdda), (xds), (xdds), ]) def test_count(source): out = xr.DataArray(np.array([[5, 5], [5, 5]], dtype='i4'), coords=coords, dims=dims) assert_eq(c.points(source, 'x', 'y', ds.count('i32')), out) assert_eq(c.points(source, 'x', 'y', ds.count('i64')), out) assert_eq(c.points(source, 'x', 'y', ds.count()), out) assert_eq(c.points(source, 'x', 'y', ds.count('value')), out) out = xr.DataArray(np.array([[4, 5], [5, 5]], dtype='i4'), coords=coords, dims=dims) assert_eq(c.points(source, 'x', 'y', ds.count('f32')), out) assert_eq(c.points(source, 'x', 'y', ds.count('f64')), out)