Open
Description
## AdministrativeRegionAnalysis
Produces the following error when trying to run the true vs. predicted for regions
Error Trace:
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
~/miniconda3/envs/crop/lib/python3.7/site-packages/numpy/lib/shape_base.py in apply_along_axis(func1d, axis, arr, *args, **kwargs)
376 try:
--> 377 ind0 = next(inds)
378 except StopIteration:
StopIteration:
During handling of the above exception, another exception occurred:
ValueError Traceback (most recent call last)
<ipython-input-82-fb568627f573> in <module>
13
14 admin_analyzer = AdministrativeRegionAnalysis(data_dir)
---> 15 admin_analyzer.analyze()
~/github/ml_drought/src/analysis/region_analysis/administrative_region_analysis.py in analyze(self, compute_global_errors, compute_regional_errors, save_all_df)
122
123 for region_data_path in self.region_data_paths:
--> 124 df = self._analyze_single(region_data_path)
125 all_regions_dfs.append(df)
126
~/github/ml_drought/src/analysis/region_analysis/administrative_region_analysis.py in _analyze_single(self, region_data_path)
109 return self._base_analyze_single(
110 admin_level_name=admin_level_name, region_da=region_da,
--> 111 region_lookup=region_lookup, region_group_name=region_group_name,
112 )
113
~/github/ml_drought/src/analysis/region_analysis/base.py in _base_analyze_single(self, admin_level_name, region_da, region_lookup, region_group_name, landcover_das)
322 ) = self.compute_mean_statistics( # type: ignore
323 region_da=region_da, true_da=true_da, pred_da=pred_da,
--> 324 region_lookup=region_lookup, datetime=dt
325 )
326 else:
~/github/ml_drought/src/analysis/region_analysis/administrative_region_analysis.py in compute_mean_statistics(self, region_da, region_lookup, pred_da, true_da, datetime)
78 region_names.append(region_lookup[valid_region_id])
79 predicted_mean_value.append(
---> 80 pred_da.where(region_da == valid_region_id).mean().values
81 )
82 true_mean_value.append(
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/common.py in where(self, cond, other, drop)
933 cond = cond.isel(**indexers)
934
--> 935 return ops.where_method(self, cond, other)
936
937 def close(self: Any) -> None:
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/ops.py in where_method(self, cond, other)
170 dataset_join=join,
171 dask='allowed',
--> 172 keep_attrs=True)
173
174
~/miniconda3/envs/crop/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)
966 join=join,
967 exclude_dims=exclude_dims,
--> 968 keep_attrs=keep_attrs)
969 elif any(isinstance(a, Variable) for a in args):
970 return variables_vfunc(*args)
~/miniconda3/envs/crop/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:
~/miniconda3/envs/crop/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)
539 if isinstance(arg, Variable)
540 else arg
--> 541 for arg, core_dims in zip(args, signature.input_core_dims)]
542
543 if any(isinstance(array, dask_array_type) for array in input_data):
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/computation.py in <listcomp>(.0)
539 if isinstance(arg, Variable)
540 else arg
--> 541 for arg, core_dims in zip(args, signature.input_core_dims)]
542
543 if any(isinstance(array, dask_array_type) for array in input_data):
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/computation.py in broadcast_compat_data(variable, broadcast_dims, core_dims)
470 def broadcast_compat_data(variable, broadcast_dims, core_dims):
471 # type: (Variable, tuple, tuple) -> Any
--> 472 data = variable.data
473
474 old_dims = variable.dims
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/variable.py in data(self)
292 return self._data
293 else:
--> 294 return self.values
295
296 @data.setter
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/variable.py in values(self)
387 def values(self):
388 """The variable's data as a numpy.ndarray"""
--> 389 return _as_array_or_item(self._data)
390
391 @values.setter
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/variable.py in _as_array_or_item(data)
208 TODO: remove this (replace with np.asarray) once these issues are fixed
209 """
--> 210 data = np.asarray(data)
211 if data.ndim == 0:
212 if data.dtype.kind == 'M':
~/miniconda3/envs/crop/lib/python3.7/site-packages/numpy/core/numeric.py in asarray(a, dtype, order)
536
537 """
--> 538 return array(a, dtype, copy=False, order=order)
539
540
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/indexing.py in __array__(self, dtype)
630
631 def __array__(self, dtype=None):
--> 632 self._ensure_cached()
633 return np.asarray(self.array, dtype=dtype)
634
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/indexing.py in _ensure_cached(self)
627 def _ensure_cached(self):
628 if not isinstance(self.array, NumpyIndexingAdapter):
--> 629 self.array = NumpyIndexingAdapter(np.asarray(self.array))
630
631 def __array__(self, dtype=None):
~/miniconda3/envs/crop/lib/python3.7/site-packages/numpy/core/numeric.py in asarray(a, dtype, order)
536
537 """
--> 538 return array(a, dtype, copy=False, order=order)
539
540
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/indexing.py in __array__(self, dtype)
608
609 def __array__(self, dtype=None):
--> 610 return np.asarray(self.array, dtype=dtype)
611
612 def __getitem__(self, key):
~/miniconda3/envs/crop/lib/python3.7/site-packages/numpy/core/numeric.py in asarray(a, dtype, order)
536
537 """
--> 538 return array(a, dtype, copy=False, order=order)
539
540
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/indexing.py in __array__(self, dtype)
514 def __array__(self, dtype=None):
515 array = as_indexable(self.array)
--> 516 return np.asarray(array[self.key], dtype=None)
517
518 def transpose(self, order):
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/backends/netCDF4_.py in __getitem__(self, key)
62 return indexing.explicit_indexing_adapter(
63 key, self.shape, indexing.IndexingSupport.OUTER,
---> 64 self._getitem)
65
66 def _getitem(self, key):
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/core/indexing.py in explicit_indexing_adapter(key, shape, indexing_support, raw_indexing_method)
782 """
783 raw_key, numpy_indices = decompose_indexer(key, shape, indexing_support)
--> 784 result = raw_indexing_method(raw_key.tuple)
785 if numpy_indices.tuple:
786 # index the loaded np.ndarray
~/miniconda3/envs/crop/lib/python3.7/site-packages/xarray/backends/netCDF4_.py in _getitem(self, key)
73 with self.datastore.lock:
74 original_array = self.get_array(needs_lock=False)
---> 75 array = getitem(original_array, key)
76 except IndexError:
77 # Catch IndexError in netCDF4 and return a more informative
netCDF4/_netCDF4.pyx in netCDF4._netCDF4.Variable.__getitem__()
~/miniconda3/envs/crop/lib/python3.7/site-packages/netCDF4/utils.py in _StartCountStride(elem, shape, dimensions, grp, datashape, put, use_get_vars)
435 # ITERABLE #
436 elif np.iterable(e) and np.array(e).dtype.kind in 'i': # Sequence of integers
--> 437 start[...,i] = np.apply_along_axis(lambda x: e*x, i, np.ones(sdim[:-1]))
438 indices[...,i] = np.apply_along_axis(lambda x: np.arange(sdim[i])*x, i, np.ones(sdim[:-1], int))
439
~/miniconda3/envs/crop/lib/python3.7/site-packages/numpy/lib/shape_base.py in apply_along_axis(func1d, axis, arr, *args, **kwargs)
377 ind0 = next(inds)
378 except StopIteration:
--> 379 raise ValueError('Cannot apply_along_axis when any iteration dimensions are 0')
380 res = asanyarray(func1d(inarr_view[ind0], *args, **kwargs))
381
ValueError: Cannot apply_along_axis when any iteration dimensions are 0
Activity