Skip to content

Index error while running the first temporal update step in MiniAn #285

@AlbertFok

Description

@AlbertFok

Hi,

My error log looks like this:

IndexError                                Traceback (most recent call last)
File <timed exec>:1

File ~\minian\minian\cnmf.py:858, in update_temporal(A, C, b, f, Y, YrA, noise_freq, p, add_lag, jac_thres, sparse_penal, bseg, med_wd, zero_thres, max_iters, use_smooth, normalize, warm_start, post_scal, scs_fallback, concurrent_update)
    856     YrA = compute_trace(Y, A, b, C, f).persist()
    857 Ymask = (YrA > 0).any("frame").compute()
--> 858 A, C, YrA = A.sel(unit_id=Ymask), C.sel(unit_id=Ymask), YrA.sel(unit_id=Ymask)
    859 print("grouping overlaping units")
    860 A_sps = (A.data.map_blocks(sparse.COO) > 0).compute().astype(np.float32)

File ~\.conda\envs\minian\lib\site-packages\xarray\core\dataarray.py:1202, in DataArray.sel(self, indexers, method, tolerance, drop, **indexers_kwargs)
   1121 def sel(
   1122     self,
   1123     indexers: Mapping[Hashable, Any] = None,
   (...)
   1127     **indexers_kwargs: Any,
   1128 ) -> "DataArray":
   1129     """Return a new DataArray whose data is given by selecting index
   1130     labels along the specified dimension(s).
   1131 
   (...)
   1200 
   1201     """
-> 1202     ds = self._to_temp_dataset().sel(
   1203         indexers=indexers,
   1204         drop=drop,
   1205         method=method,
   1206         tolerance=tolerance,
   1207         **indexers_kwargs,
   1208     )
   1209     return self._from_temp_dataset(ds)

File ~\.conda\envs\minian\lib\site-packages\xarray\core\dataset.py:2185, in Dataset.sel(self, indexers, method, tolerance, drop, **indexers_kwargs)
   2181 indexers = either_dict_or_kwargs(indexers, indexers_kwargs, "sel")
   2182 pos_indexers, new_indexes = remap_label_indexers(
   2183     self, indexers=indexers, method=method, tolerance=tolerance
   2184 )
-> 2185 result = self.isel(indexers=pos_indexers, drop=drop)
   2186 return result._overwrite_indexes(new_indexes)

File ~\.conda\envs\minian\lib\site-packages\xarray\core\dataset.py:2032, in Dataset.isel(self, indexers, drop, missing_dims, **indexers_kwargs)
   2030 indexers = either_dict_or_kwargs(indexers, indexers_kwargs, "isel")
   2031 if any(is_fancy_indexer(idx) for idx in indexers.values()):
-> 2032     return self._isel_fancy(indexers, drop=drop, missing_dims=missing_dims)
   2034 # Much faster algorithm for when all indexers are ints, slices, one-dimensional
   2035 # lists, or zero or one-dimensional np.ndarray's
   2036 indexers = drop_dims_from_indexers(indexers, self.dims, missing_dims)

File ~\.conda\envs\minian\lib\site-packages\xarray\core\dataset.py:2090, in Dataset._isel_fancy(self, indexers, drop, missing_dims)
   2087     continue  # drop this variable
   2089 if name in self.indexes:
-> 2090     new_var, new_index = isel_variable_and_index(
   2091         name, var, self.indexes[name], var_indexers
   2092     )
   2093     if new_index is not None:
   2094         indexes[name] = new_index

File ~\.conda\envs\minian\lib\site-packages\xarray\core\indexes.py:106, in isel_variable_and_index(name, variable, index, indexers)
    101 if len(variable.dims) > 1:
    102     raise NotImplementedError(
    103         "indexing multi-dimensional variable with indexes is not supported yet"
    104     )
--> 106 new_variable = variable.isel(indexers)
    108 if new_variable.dims != (name,):
    109     # can't preserve a index if result has new dimensions
    110     return new_variable, None

File ~\.conda\envs\minian\lib\site-packages\xarray\core\variable.py:1120, in Variable.isel(self, indexers, missing_dims, **indexers_kwargs)
   1117 indexers = drop_dims_from_indexers(indexers, self.dims, missing_dims)
   1119 key = tuple(indexers.get(dim, slice(None)) for dim in self.dims)
-> 1120 return self[key]

File ~\.conda\envs\minian\lib\site-packages\xarray\core\variable.py:768, in Variable.__getitem__(self, key)
    755 def __getitem__(self: VariableType, key) -> VariableType:
    756     """Return a new Variable object whose contents are consistent with
    757     getting the provided key from the underlying data.
    758 
   (...)
    766     array `x.values` directly.
    767     """
--> 768     dims, indexer, new_order = self._broadcast_indexes(key)
    769     data = as_indexable(self._data)[indexer]
    770     if new_order:

File ~\.conda\envs\minian\lib\site-packages\xarray\core\variable.py:609, in Variable._broadcast_indexes(self, key)
    606 if all(isinstance(k, BASIC_INDEXING_TYPES) for k in key):
    607     return self._broadcast_indexes_basic(key)
--> 609 self._validate_indexers(key)
    610 # Detect it can be mapped as an outer indexer
    611 # If all key is unlabeled, or
    612 # key can be mapped as an OuterIndexer.
    613 if all(not isinstance(k, Variable) for k in key):

File ~\.conda\envs\minian\lib\site-packages\xarray\core\variable.py:652, in Variable._validate_indexers(self, key)
    650 if k.dtype.kind == "b":
    651     if self.shape[self.get_axis_num(dim)] != len(k):
--> 652         raise IndexError(
    653             "Boolean array size {:d} is used to index array "
    654             "with shape {:s}.".format(len(k), str(self.shape))
    655         )
    656     if k.ndim > 1:
    657         raise IndexError(
    658             "{}-dimensional boolean indexing is "
    659             "not supported. ".format(k.ndim)
    660         )

IndexError: Boolean array size 10 is used to index array with shape (820,).

I don't know what it means or how to fix it. I greatly appreciate your help.

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