Skip to content

Commit 27f3422

Browse files
authored
Coerce reduced dimensions to numpy arrays when converting to anndata (#57)
1 parent a1739f9 commit 27f3422

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/singlecellexperiment/SingleCellExperiment.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1050,8 +1050,30 @@ def to_anndata(self, include_alternative_experiments: bool = False):
10501050
"""
10511051
obj = super().to_anndata()
10521052

1053+
from delayedarray import (
1054+
DelayedArray,
1055+
is_sparse,
1056+
to_dense_array,
1057+
to_scipy_sparse_matrix,
1058+
)
1059+
10531060
if self.reduced_dims is not None:
1054-
obj.obsm = self.reduced_dims
1061+
mat = self._reduced_dims
1062+
if isinstance(mat, DelayedArray) or issubclass(type(mat), DelayedArray):
1063+
if is_sparse(mat):
1064+
warn(
1065+
"Converting delayedarray into sparse, may require more memory",
1066+
RuntimeWarning,
1067+
)
1068+
1069+
mat = to_scipy_sparse_matrix(mat)
1070+
else:
1071+
warn(
1072+
"Converting delayedarray into dense, may require more memory",
1073+
RuntimeWarning,
1074+
)
1075+
mat = to_dense_array(mat)
1076+
obj.obsm = mat
10551077

10561078
if self.row_pairs is not None:
10571079
obj.varp = self.row_pairs

0 commit comments

Comments
 (0)