Skip to content

Xarray/Dask Exception in cmip6_precip_analysis #7

@jhamman

Description

@jhamman

Xarray/dask are throwing a new error in this the cmip6_precip_analysis notebook.

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-13-89aa342a55bc> in <module>
      3     da = da.chunk({'lat': 1, 'lon': None, 'time': None})
      4     return xr_histogram(da, bins, ['lon', 'time'], density=False)
----> 5 pr_3hr_hist = ds.pr.groupby('time.year').apply(func)
      6 pr_3hr_hist

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/groupby.py in apply(self, func, shortcut, args, **kwargs)
    572         applied = (maybe_wrap_array(arr, func(arr, *args, **kwargs))
    573                    for arr in grouped)
--> 574         return self._combine(applied, shortcut=shortcut)
    575 
    576     def _combine(self, applied, restore_coord_dims=False, shortcut=False):

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/groupby.py in _combine(self, applied, restore_coord_dims, shortcut)
    576     def _combine(self, applied, restore_coord_dims=False, shortcut=False):
    577         """Recombine the applied objects like the original."""
--> 578         applied_example, applied = peek_at(applied)
    579         coord, dim, positions = self._infer_concat_args(applied_example)
    580         if shortcut:

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/utils.py in peek_at(iterable)
    152     """
    153     gen = iter(iterable)
--> 154     peek = next(gen)
    155     return peek, itertools.chain([peek], gen)
    156 

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/groupby.py in <genexpr>(.0)
    571             grouped = self._iter_grouped()
    572         applied = (maybe_wrap_array(arr, func(arr, *args, **kwargs))
--> 573                    for arr in grouped)
    574         return self._combine(applied, shortcut=shortcut)
    575 

<ipython-input-13-89aa342a55bc> in func(da)
      2 def func(da):
      3     da = da.chunk({'lat': 1, 'lon': None, 'time': None})
----> 4     return xr_histogram(da, bins, ['lon', 'time'], density=False)
      5 pr_3hr_hist = ds.pr.groupby('time.year').apply(func)
      6 pr_3hr_hist

<ipython-input-12-9c2fe48cd1a0> in xr_histogram(data, bins, dims, **kwargs)
     10                          output_dtypes=['f8'],
     11                          output_sizes={output_dim_name: len(bins_c)},
---> 12                          vectorize=True, dask='parallelized')
     13     res[output_dim_name] = output_dim_name, bins_c
     14     res[output_dim_name].attrs.update(data.attrs)

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/computation.py in apply_ufunc(func, input_core_dims, output_core_dims, exclude_dims, vectorize, join, dataset_join, dataset_fill_value, keep_attrs, kwargs, dask, output_dtypes, output_sizes, *args)
    967                                      join=join,
    968                                      exclude_dims=exclude_dims,
--> 969                                      keep_attrs=keep_attrs)
    970     elif any(isinstance(a, Variable) for a in args):
    971         return variables_vfunc(*args)

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/computation.py in apply_dataarray_vfunc(func, signature, join, exclude_dims, keep_attrs, *args)
    215 
    216     data_vars = [getattr(a, 'variable', a) for a in args]
--> 217     result_var = func(*data_vars)
    218 
    219     if signature.num_outputs > 1:

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/computation.py in apply_variable_ufunc(func, signature, exclude_dims, dask, output_dtypes, output_sizes, keep_attrs, *args)
    562             raise ValueError('unknown setting for dask array handling in '
    563                              'apply_ufunc: {}'.format(dask))
--> 564     result_data = func(*input_data)
    565 
    566     if signature.num_outputs == 1:

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/computation.py in func(*arrays)
    556                 return _apply_blockwise(
    557                     numpy_func, arrays, input_dims, output_dims,
--> 558                     signature, output_dtypes, output_sizes)
    559         elif dask == 'allowed':
    560             pass

/srv/conda/envs/notebook/lib/python3.7/site-packages/xarray/core/computation.py in _apply_blockwise(func, args, input_dims, output_dims, signature, output_dtypes, output_sizes)
    658 
    659     return blockwise(func, out_ind, *blockwise_args, dtype=dtype,
--> 660                      concatenate=True, new_axes=output_sizes)
    661 
    662 

/srv/conda/envs/notebook/lib/python3.7/site-packages/dask/array/blockwise.py in blockwise(func, out_ind, name, token, dtype, adjust_chunks, new_axes, align_arrays, concatenate, meta, *args, **kwargs)
    231         from .utils import compute_meta
    232 
--> 233         meta = compute_meta(func, dtype, *args[::2], **kwargs)
    234     if meta is not None:
    235         return Array(graph, out, chunks, meta=meta)

/srv/conda/envs/notebook/lib/python3.7/site-packages/dask/array/utils.py in compute_meta(func, _dtype, *args, **kwargs)
    118         # with np.vectorize, such as dask.array.routines._isnonzero_vec().
    119         if isinstance(func, np.vectorize):
--> 120             meta = func(*args_meta)
    121         else:
    122             try:

/srv/conda/envs/notebook/lib/python3.7/site-packages/numpy/lib/function_base.py in __call__(self, *args, **kwargs)
   2089             vargs.extend([kwargs[_n] for _n in names])
   2090 
-> 2091         return self._vectorize_call(func=func, args=vargs)
   2092 
   2093     def _get_ufunc_and_otypes(self, func, args):

/srv/conda/envs/notebook/lib/python3.7/site-packages/numpy/lib/function_base.py in _vectorize_call(self, func, args)
   2155         """Vectorized call to `func` over positional `args`."""
   2156         if self.signature is not None:
-> 2157             res = self._vectorize_call_with_signature(func, args)
   2158         elif not args:
   2159             res = func()

/srv/conda/envs/notebook/lib/python3.7/site-packages/numpy/lib/function_base.py in _vectorize_call_with_signature(self, func, args)
   2229                             for dims in output_core_dims
   2230                             for dim in dims):
-> 2231                 raise ValueError('cannot call `vectorize` with a signature '
   2232                                  'including new output dimensions on size 0 '
   2233                                  'inputs')

ValueError: cannot call `vectorize` with a signature including new output dimensions on size 0 inputs

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions