File: C:/Users/fred/anaconda3/Lib/site-packages/datashader/data_libraries/xarray.py
from __future__ import annotations
from datashader.glyphs.line import LinesXarrayCommonX
from datashader.glyphs.quadmesh import _QuadMeshLike
from datashader.data_libraries.pandas import default
from datashader.core import bypixel
import xarray as xr
from datashader.utils import Dispatcher
try:
import cupy
except Exception:
cupy = None
glyph_dispatch = Dispatcher()
@bypixel.pipeline.register(xr.Dataset)
def xarray_pipeline(xr_ds, schema, canvas, glyph, summary, *, antialias=False):
cuda = False
if cupy:
if isinstance(glyph, LinesXarrayCommonX):
cuda = isinstance(xr_ds[glyph.y].data, cupy.ndarray)
else:
cuda = isinstance(xr_ds[glyph.name].data, cupy.ndarray)
if not xr_ds.chunks:
return glyph_dispatch(
glyph, xr_ds, schema, canvas, summary, antialias=antialias, cuda=cuda)
else:
from datashader.data_libraries.dask_xarray import dask_xarray_pipeline
return dask_xarray_pipeline(
glyph, xr_ds, schema, canvas, summary, antialias=antialias, cuda=cuda)
# Default to default pandas implementation
glyph_dispatch.register(_QuadMeshLike)(default)
glyph_dispatch.register(LinesXarrayCommonX)(default)