From 2d346b23eab7d70a4a6b86f1d8d226b7b728ae55 Mon Sep 17 00:00:00 2001
From: Philipp Rudiger
Date: Wed, 20 Dec 2017 16:50:29 +0000
Subject: [PATCH] Added strict validation for Image sampling
---
holoviews/element/raster.py | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/holoviews/element/raster.py b/holoviews/element/raster.py
index 1ad0c892fd..735a78927a 100644
--- a/holoviews/element/raster.py
+++ b/holoviews/element/raster.py
@@ -1,4 +1,6 @@
+import sys
from operator import itemgetter
+
import numpy as np
import colorsys
import param
@@ -260,6 +262,19 @@ def __init__(self, data, kdims=None, vdims=None, bounds=None, extents=None,
raise ValueError("Input array has shape %r but %d value dimensions defined"
% (self.shape, len(self.vdims)))
+ xvals = np.unique(np.diff(self.dimension_values(0, expanded=False)))
+ if len(xvals) > 1 and np.abs(xvals.min()-xvals.max()) > sys.float_info.epsilon*10:
+ raise ValueError("%s dimension %s is not evenly sampled, "
+ "please use the QuadMesh element for "
+ "unevenly or irregularly sampled data." %
+ (type(self).__name__, self.get_dimension(0)))
+ yvals = np.unique(np.diff(self.dimension_values(1, expanded=False)))
+ if len(yvals) > 1 and np.abs(yvals.min()-yvals.max()) > sys.float_info.epsilon*10:
+ raise ValueError("%s dimension %s is not evenly sampled, "
+ "please use the QuadMesh element for "
+ "unevenly or irregularly sampled data." %
+ (type(self).__name__, self.get_dimension(1)))
+
def __setstate__(self, state):
"""