From b067da238674de4c6a0f102e04544dcd163f03db Mon Sep 17 00:00:00 2001
From: Philipp Rudiger
Date: Wed, 27 Apr 2016 18:26:46 +0100
Subject: [PATCH] Iris interface groupby now uses fuzzy matching of floats
---
holoviews/core/data/iris.py | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/holoviews/core/data/iris.py b/holoviews/core/data/iris.py
index d9e277c65e..535069dda9 100644
--- a/holoviews/core/data/iris.py
+++ b/holoviews/core/data/iris.py
@@ -2,6 +2,7 @@
import datetime
from itertools import product
+from functools import partial
import unittest
import iris
@@ -54,6 +55,12 @@ def sort_coords(coord):
return (order.get(axis, 0), coord and coord.name())
+def isclose(cell, value=0, precision=1e-5):
+ """
+ Matches two float values with a specific precision
+ """
+ return value-precision < cell < value+precision
+
class CubeInterface(GridInterface):
"""
@@ -166,7 +173,10 @@ def groupby(cls, dataset, dims, container_type=HoloMap, group_type=None, **kwarg
if dynamic:
def load_subset(*args):
+ args = (partial(isclose, value=arg) if isinstance(arg, float) else arg
+ for arg in args)
constraint = iris.Constraint(**dict(zip(constraints, args)))
+ extracted = dataset.data.extract(constraint)
return dataset.clone(dataset.data.extract(constraint),
new_type=group_type,
**dict(kwargs, kdims=slice_dims))