Skip to content

Commit 7f5ffa5

Browse files
committed
raise value when sliced with two non-slice indices
1 parent d84f4de commit 7f5ffa5

File tree

1 file changed

+19
-10
lines changed

1 file changed

+19
-10
lines changed

anndata/base.py

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,16 +1096,25 @@ def _set_backed(self, attr, value):
10961096
del self.file[attr]
10971097
self.file._file.create_dataset(attr, data=value)
10981098

1099-
def _normalize_indices(self, packed_index):
1100-
# deal with slicing with pd.Series
1101-
if isinstance(packed_index, pd.Series):
1102-
packed_index = packed_index.values
1103-
if isinstance(packed_index, tuple) and len(packed_index) == 2:
1104-
if isinstance(packed_index[1], pd.Series):
1105-
packed_index = packed_index[0], packed_index[1].values
1106-
if isinstance(packed_index[0], pd.Series):
1107-
packed_index = packed_index[0].values, packed_index[1]
1108-
obs, var = super(AnnData, self)._unpack_index(packed_index)
1099+
def _normalize_indices(self, index):
1100+
# deal with pd.Series
1101+
if isinstance(index, pd.Series):
1102+
index = index.values
1103+
if isinstance(index, tuple):
1104+
if len(index) != 2:
1105+
raise ValueError(
1106+
'AnnData can only be sliced in rows and columns.')
1107+
# deal with pd.Series
1108+
if isinstance(index[1], pd.Series):
1109+
index = index[0], index[1].values
1110+
if isinstance(index[0], pd.Series):
1111+
index = index[0].values, index[1]
1112+
# one of the two has to be a slice
1113+
if not (isinstance(index[0], slice) or isinstance(index[1], slice)):
1114+
raise ValueError(
1115+
'Slicing with two indices at the same time is not yet implemented. '
1116+
'As a workaround, do row and column slicing succesively.')
1117+
obs, var = super(AnnData, self)._unpack_index(index)
11091118
obs = _normalize_index(obs, self.obs_names)
11101119
var = _normalize_index(var, self.var_names)
11111120
return obs, var

0 commit comments

Comments
 (0)