text: user2005: 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) > 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)
  
  ----> 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.
  
  user2005: 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.
  
original_text: 2005: <p>I am using <code>rpy2</code> to run normalization using <code>scran</code> package. After calling <code>computeSumFactors</code> I want to do the actual normalization calling <code>normalize()</code> function from <code>scater</code> package:</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>Everything runs fine except the last line which gives the error:</p>
  
  <blockquote>
    <p>AttributeError: module 'scater' has no attribute 'normalize'</p>
  </blockquote>
  
  <p>This is strange since that is what I am supposed to do actually according to <a href="https://bioconductor.org/packages/3.7/bioc/vignettes/scran/inst/doc/scran.html" rel="nofollow noreferrer">docs</a>.</p>
  
  <p>I suspect that maybe I am loading a wrong <code>scran</code> 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.</p>
  
  <p>I tried the following:</p>
  
  <pre><code>sce = scaterLib.normalizeSCE(sce, log_exprs_offset=1)
  </code></pre>
  
  <p>And it is working. I am afraid though that it is a wrong way to go.</p>
  
  <p>I tried to get the normalized matrix but it retrieved the initial raw counts one:</p>
  
  <pre><code>sce = scaterLib.normalizeSCE(sce, log_exprs_offset=1)
  mtx_norm_r = robjects.r.assay(sce)
  mtx_norm = np.array(mtx_norm_r)
  </code></pre>
  
  <p>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:</p>
  
  <pre><code>mtx_norm_r = sceLib.normcounts(sce) 
  </code></pre>
  
  <blockquote>
    <p>RRuntimeError: Error in assay(object, i = exprs_values) : 
      'assay(, i="character", ...)' invalid subscript 'i'
    'normcounts' not in names(assays())</p>
  </blockquote>
  
  <p>I found a way to get the version numbers using <code>getNamespaceVersion()</code> function:</p>
  
  <pre><code>robjects.r.getNamespaceVersion('scater')
  </code></pre>
  
  <p>The versions are:</p>
  
  <pre><code>scater - 1.8.4
  scran - 1.8.4
  SingleCellExperiment - 1.2.0
  </code></pre>
  
  <p>They are the newest as I understand.</p>
   2005: <p>I was able to get to the normalized values using <code>logcounts</code> function in the following way:</p>
  
  <pre><code>mtx_norm_r = sceLib.logcounts(sce)
  mtx_norm = np.array(mtx_norm_r)
  </code></pre>
  
  <p>Since I used <code>log_exprs_offset=1</code> the field that I needed to use is <code>logcounts</code>, otherwise it should be <code>normcounts</code> which I found <a href="https://rdrr.io/bioc/scater/man/normalize.html" rel="nofollow noreferrer">here</a>.</p>
  