AttributeError: module 'scater' has no attribute 'normalize' I am using rpy2 to run normalization using scran package. After calling computeSumFactors I want to do the actual normalization calling normalize() function from scater package:

def normalize(counts):
utils = importr('utils')
utils.chooseCRANmirror(ind=1) 

packnames = ('Matrix', 'limSolve')
names_to_install = [x for x in packnames if not isinstalled(x)]
if len(names_to_install) &gt; 0:
    utils.install_packages(StrVector(names_to_install))

base = importr('base')
base.source('http://www.bioconductor.org/biocLite.R')
biocInstaller = importr('BiocInstaller')

biocInstaller.biocLite('SingleCellExperiment', suppressUpdates=True)
biocInstaller.biocLite('scran', suppressUpdates=True)
biocInstaller.biocLite('scater', suppressUpdates=True)

sceLib = importr("SingleCellExperiment")
scranLib = importr("scran")
scaterLib = importr("scater")
named_list = robjects.r.list(counts=counts)
sce = sceLib.SingleCellExperiment(named_list)

try:
    clusters = scranLib.quickCluster(sce)
    sce = scaterLib.computeSumFactors(sce, cluster=clusters, positive=True)
except rpy2.rinterface.RRuntimeError:
    print("fewer cells than the minimum cluster size, so no quickCluster is run")
    sce = scranLib.computeSumFactors(sce, positive=True)

----&gt; sce = scaterLib.normalize(sce, logExprsOffset=1)


Everything runs fine except the last line which gives the error:


  AttributeError: module 'scater' has no attribute 'normalize'


This is strange since that is what I am supposed to do actually according to docs.

I suspect that maybe I am loading a wrong scran version? I do not know though neither how to check the version number, nor how to install a specific one. Any suggestions would be greatly appreciated.

I tried the following:

sce = scaterLib.normalizeSCE(sce, log_exprs_offset=1)


And it is working. I am afraid though that it is a wrong way to go.

I tried to get the normalized matrix but it retrieved the initial raw counts one:

sce = scaterLib.normalizeSCE(sce, log_exprs_offset=1)
mtx_norm_r = robjects.r.assay(sce)
mtx_norm = np.array(mtx_norm_r)


So, something is definitely wrong here. Either I am retrieving the normalized matrix in the wrong way or the normalization was not run correctly. I tried the following method for retrieval but no luck:

mtx_norm_r = sceLib.normcounts(sce) 



  RRuntimeError: Error in assay(object, i = exprs_values) : 
    'assay(, i="character", ...)' invalid subscript 'i'
  'normcounts' not in names(assays())


I found a way to get the version numbers using getNamespaceVersion() function:

robjects.r.getNamespaceVersion('scater')


The versions are:

scater - 1.8.4
scran - 1.8.4
SingleCellExperiment - 1.2.0


They are the newest as I understand.
I was able to get to the normalized values using logcounts function in the following way:

mtx_norm_r = sceLib.logcounts(sce)
mtx_norm = np.array(mtx_norm_r)


Since I used log_exprs_offset=1 the field that I needed to use is logcounts, otherwise it should be normcounts which I found here.