0
$\begingroup$

I am running into an error when I tried to run the following lines of code, the error at line 3:

1 from rpy2.robjects.packages import importr
2 base = importr('base')
3 base.source("http://www.bioconductor.org/biocLite.R")
4 biocinstaller = importr("BiocInstaller")
5 biocinstaller.biocLite("seqLogo")

rpy2.rinterface_lib.embedded.RRuntimeError: Error: With R version 3.5 or greater, install Bioconductor packages using BiocManager; see https://bioconductor.org/install

How can I use BiocManager installer instead of biocLite and reflect that on my code? I couldn't find any documentation or source that talk about this error from within Python.

Thank you in advance

$\endgroup$
2
  • $\begingroup$ you need upgrade your R base version. $\endgroup$
    – zorbax
    Aug 28 '20 at 10:44
  • $\begingroup$ Definitely recommend installation via Conda as @zorbax points out. This normal stuff for installing rpy2 As a word of warning further errors with rpy2 are also normal and as a general rule of thumb rpy2 is a nightmare. For R's ggplot2 via rpy2 is outdated and will not import the full funcationality of the ggplot2 into Python3. This is irregular given have important ggplot2 is as a graphing package. After my experience I would use subprocessing into R rather than deal with rpy2 again $\endgroup$
    – M__
    Aug 28 '20 at 12:59
2
$\begingroup$

You're using an outdated version of R. You can use the R 4.0 from conda-forge channel, just create an environment with r-base and then install rpy2, the latest version compatible with R 4.0 is available through pip

conda create -n rpy2 -c conda-forge r-base
conda activate rpy2
pip install rpy2

Now you can use rpy2 with R 4.0 in your python code.

import rpy2.robjects as robjects
robjects.r('install.packages("BiocManager", '
           'repos="http://cran.r-project.org")')
robjects.r('BiocManager::install("seqLogo")')
robjects.r('library(seqLogo)')

Remember deactivate your env with conda deactivate.

$\endgroup$
2
  • $\begingroup$ Thank you so much this work! but when I do the same thing for "GenomicAlignments" package I get error: raise embedded.RRuntimeError(_rinterface._geterrmessage()) rpy2.rinterface_lib.embedded.RRuntimeError: Error in (new("nonstandardGenericFunction", .Data = function (expr, envir = parent.frame(), : object 'GenomicAlignments' not found $\endgroup$
    – aBiologist
    Aug 28 '20 at 19:00
  • $\begingroup$ I can't replicate you error. I did robjects.r('BiocManager::install("GenomicAlignments")') and then robjects.r('library(GenomicAlignments)') and it works. $\endgroup$
    – zorbax
    Aug 30 '20 at 23:04

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.