From 4571b91c6c487dabb92d867d1d087466990ecbb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=B8xbro=20Hansen?= Date: Mon, 26 Feb 2024 17:21:41 +0100 Subject: [PATCH 1/4] make irregaluar if non-dimensional coordinate --- holoviews/core/data/grid.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/holoviews/core/data/grid.py b/holoviews/core/data/grid.py index 617f07ad12..c74c0e2381 100644 --- a/holoviews/core/data/grid.py +++ b/holoviews/core/data/grid.py @@ -170,7 +170,7 @@ def concat_dim(cls, datasets, dim, vdims): @classmethod def irregular(cls, dataset, dim): - return dataset.data[dimension_name(dim)].ndim > 1 + return dataset.data[dimension_name(dim)].ndim > 1 or dimension_name(dim) not in dataset.data.dims @classmethod From ec21d7a3a09476ad43e5e4ac53bd72ce63b86fc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=B8xbro=20Hansen?= Date: Tue, 27 Feb 2024 08:46:24 +0100 Subject: [PATCH 2/4] Add check for dims in data --- holoviews/core/data/grid.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/holoviews/core/data/grid.py b/holoviews/core/data/grid.py index c74c0e2381..388a51338e 100644 --- a/holoviews/core/data/grid.py +++ b/holoviews/core/data/grid.py @@ -170,7 +170,9 @@ def concat_dim(cls, datasets, dim, vdims): @classmethod def irregular(cls, dataset, dim): - return dataset.data[dimension_name(dim)].ndim > 1 or dimension_name(dim) not in dataset.data.dims + if dataset.data[dimension_name(dim)].ndim > 1: + return True + return hasattr(dataset.data, 'dims') and dimension_name(dim) not in dataset.data.dims @classmethod From 5f59140d659443af768e43e520f79095dd1a4693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=B8xbro=20Hansen?= Date: Tue, 27 Feb 2024 09:10:44 +0100 Subject: [PATCH 3/4] Only check in values --- holoviews/core/data/grid.py | 5 +---- holoviews/core/data/xarray.py | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/holoviews/core/data/grid.py b/holoviews/core/data/grid.py index 388a51338e..fd5b912e79 100644 --- a/holoviews/core/data/grid.py +++ b/holoviews/core/data/grid.py @@ -170,10 +170,7 @@ def concat_dim(cls, datasets, dim, vdims): @classmethod def irregular(cls, dataset, dim): - if dataset.data[dimension_name(dim)].ndim > 1: - return True - return hasattr(dataset.data, 'dims') and dimension_name(dim) not in dataset.data.dims - + return dataset.data[dimension_name(dim)].ndim > 1 @classmethod def isscalar(cls, dataset, dim): diff --git a/holoviews/core/data/xarray.py b/holoviews/core/data/xarray.py index c1cad1a16e..116ce9a4f7 100644 --- a/holoviews/core/data/xarray.py +++ b/holoviews/core/data/xarray.py @@ -410,7 +410,8 @@ def values(cls, dataset, dim, expanded=True, flat=True, compute=True, keep_index data = data.data irregular = cls.irregular(dataset, dim) if dim in dataset.kdims else False irregular_kdims = [d for d in dataset.kdims if cls.irregular(dataset, d)] - if irregular_kdims: + non_dimensinal_dim = hasattr(dataset.data, 'dims') and dimension_name(dim) not in dataset.data.dims + if irregular_kdims or non_dimensinal_dim: virtual_coords = list(dataset.data[irregular_kdims[0].name].coords.dims) else: virtual_coords = [] From 4e7b3f735382477e2f3f9e85651b7b136b8f5fc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20H=C3=B8xbro=20Hansen?= Date: Tue, 27 Feb 2024 10:15:01 +0100 Subject: [PATCH 4/4] Move irregular to xarray interface --- holoviews/core/data/grid.py | 1 + holoviews/core/data/xarray.py | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/holoviews/core/data/grid.py b/holoviews/core/data/grid.py index fd5b912e79..617f07ad12 100644 --- a/holoviews/core/data/grid.py +++ b/holoviews/core/data/grid.py @@ -172,6 +172,7 @@ def concat_dim(cls, datasets, dim, vdims): def irregular(cls, dataset, dim): return dataset.data[dimension_name(dim)].ndim > 1 + @classmethod def isscalar(cls, dataset, dim): values = cls.values(dataset, dim, expanded=False) diff --git a/holoviews/core/data/xarray.py b/holoviews/core/data/xarray.py index 116ce9a4f7..a1828e1d41 100644 --- a/holoviews/core/data/xarray.py +++ b/holoviews/core/data/xarray.py @@ -276,6 +276,13 @@ def validate(cls, dataset, vdims=True): "non-matching array dimensions:\n\n%s" % ('\n'.join(nonmatching)), cls) + @classmethod + def irregular(cls, dataset, dim): + if dataset.data[dimension_name(dim)].ndim > 1: + return True + dim_name = dimension_name(dim) + return dim_name not in dataset.data.dims and dim_name in dataset.data.coords + @classmethod def compute(cls, dataset): return dataset.clone(dataset.data.compute()) @@ -410,8 +417,7 @@ def values(cls, dataset, dim, expanded=True, flat=True, compute=True, keep_index data = data.data irregular = cls.irregular(dataset, dim) if dim in dataset.kdims else False irregular_kdims = [d for d in dataset.kdims if cls.irregular(dataset, d)] - non_dimensinal_dim = hasattr(dataset.data, 'dims') and dimension_name(dim) not in dataset.data.dims - if irregular_kdims or non_dimensinal_dim: + if irregular_kdims: virtual_coords = list(dataset.data[irregular_kdims[0].name].coords.dims) else: virtual_coords = []