def create_predicate(self):
        dim_names = ['lon', 'lat', 'alt', 'time']
        min_dim = [self.params['min_' + dname] for dname in dim_names]
        max_dim = [self.params['max_' + dname] for dname in dim_names]
        if all(x is None for x in chain(min_dim, max_dim)):
            return lambda _: True

        def in_bbox(coords):
            '''Checks each dimension.

            Require values when filter is active in any of the
            dimensions.
            '''
            for d in range(4):
                if min_dim[d] is not None:
                    if coords[d] is None or coords[d] < min_dim[d]:
                        return False
                if max_dim[d] is not None:
                    if coords[d] is None or max_dim[d] > coords[d]:
                        return False
            return True

        def pred((cid, fc)):
            feature = fc.get(self.geotime_feature_name, {})
            return any(any(imap(in_bbox, coords))
                       for _, coords in feature.iteritems())

        return pred
dataset/ETHPy150Open dossier/dossier.web/dossier/web/filters.py/geotime.create_predicate/swapped operands of `>`