-
Notifications
You must be signed in to change notification settings - Fork 341
/
_minification.py
43 lines (38 loc) · 1.22 KB
/
_minification.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
from anndata import AnnData
from scipy.sparse import csr_matrix
from scvi._types import MinifiedDataType
from scvi.data._constants import (
_ADATA_MINIFY_TYPE_UNS_KEY,
_SCVI_UUID_KEY,
ADATA_MINIFY_TYPE,
)
def get_minified_adata_scrna(
adata: AnnData,
minified_data_type: MinifiedDataType,
) -> AnnData:
"""Returns a minified adata that works for most scrna models (such as SCVI, SCANVI).
Parameters
----------
adata
Original adata, of which we to create a minified version.
minified_data_type
How to minify the data.
"""
if minified_data_type != ADATA_MINIFY_TYPE.LATENT_POSTERIOR:
raise NotImplementedError(f"Unknown MinifiedDataType: {minified_data_type}")
all_zeros = csr_matrix(adata.X.shape)
layers = {layer: all_zeros.copy() for layer in adata.layers}
bdata = AnnData(
X=all_zeros,
layers=layers,
uns=adata.uns.copy(),
obs=adata.obs,
var=adata.var,
varm=adata.varm,
obsm=adata.obsm,
obsp=adata.obsp,
)
# Remove scvi uuid key to make bdata fresh w.r.t. the model's manager
del bdata.uns[_SCVI_UUID_KEY]
bdata.uns[_ADATA_MINIFY_TYPE_UNS_KEY] = minified_data_type
return bdata