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))