Does a specific bioconductor version constrain versions of non-bioconductor packages?
Entering edit mode
Yannick Wurm ▴ 40
Last seen 2.3 years ago
United Kingdom


in the "setup" script for my project (actually a Dockerfile), I have

apt-get -y install r-base=3.6.3-1bionic
Rscript -e 'install.packages("BiocManager")'
Rscript -e 'BiocManager::install(c("DT", "shiny", "vcfR", "htmlTable", "ggplot2", "tidyverse", "reshape", "dplyr", "jsonlite", "xml2", "biomaRt"), ask = FALSE, version = "3.10")'

I understand that a specific Bioconductor release version should imply that a specific version of each bioconductor is installed. What happens to base R packages? Are these similarly constrained? Or running this installation script now and in 6 months result in differnet package versions being installed?

Thanks! Yannick

reproducibility versions installing base-r • 818 views
Entering edit mode
Mike Smith ★ 6.5k
Last seen 4 hours ago
EMBL Heidelberg

It's the latter. You'll get the latest available version of CRAN packages, regardless of the Bioconductor version. There might be constraints if the latest version in 6 months time requires a newer version of R, but otherwise assume you'll get whatever is most recent CRAN at the time.

This is actually true even for Bioconductor packages, in that bug fixes etc can be introduced to the release version, so you might end up with something slightly different, but the intention is for those to be non-breaking changes. So code should continue to work, but you might get different results.

If you really want reproducibility you probably need to build the container image now, and then use that in the future. It's also possible to install archive source tarballs for packages on both Biocondcutor and CRAN, but that would get really hard to maintain.

Entering edit mode

Thanks very much @mike for the detailed reply. I don't like the idea of seeing different results :)

In light of this, I've been trying to use packrat - but that seems to struggle with bioconductor... A workaround could be to specify the URLs and do install.packages("http://xxxwhatever.tar.gz") for each package within the Dockerfile - but this is a bit unpleasant as it needs to be done in the correct order...



Login before adding your answer.

Traffic: 486 users visited in the last hour
Help About
Access RSS

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6