forked from openproblems-bio/openproblems
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnormalize.py
43 lines (31 loc) · 932 Bytes
/
normalize.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
import scanpy as sc
import scprep
from . import decorators
@decorators.normalizer
def log_scran_pooling(adata):
"""
This function scran-normalizes the data
"""
import scIB.preprocessing
scprep.run.install_bioconductor("scran")
# Normalize via scran-pooling with own clustering at res=0.5
scIB.preprocessing.normalize(adata)
# Make lightweight
del adata.raw
def _cpm(adata):
adata.layers["counts"] = adata.X.copy()
sc.pp.normalize_total(adata, target_sum=1e6, key_added="size_factors")
@decorators.normalizer
def cpm(adata):
"""Normalize data to counts per million"""
_cpm(adata)
@decorators.normalizer
def log_cpm(adata):
"""Normalize data to log counts per million"""
_cpm(adata)
sc.pp.log1p(adata)
@decorators.normalizer
def sqrt_cpm(adata):
"""Normalize data to log counts per million"""
_cpm(adata)
adata.X = scprep.transform.sqrt(adata.X)