From 47b83819230f68e0a2c6b3c7cbaa47ac2c995715 Mon Sep 17 00:00:00 2001 From: schochastics Date: Fri, 24 Feb 2023 14:02:56 +0100 Subject: [PATCH 1/4] added as_pkgrefs.renv_lockfile (#55) --- NAMESPACE | 1 + R/as_pkgrefs.R | 45 +++++++++++++++++++++++++++++++++++++++++++++ R/resolve.R | 6 +++++- man/as_pkgrefs.Rd | 3 +++ man/resolve.Rd | 2 +- 5 files changed, 55 insertions(+), 2 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 6de5b21..1781d6a 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -1,6 +1,7 @@ # Generated by roxygen2: do not edit by hand S3method(as_pkgrefs,default) +S3method(as_pkgrefs,renv_lockfile) S3method(as_pkgrefs,sessionInfo) S3method(convert_edgelist,default) S3method(convert_edgelist,rang) diff --git a/R/as_pkgrefs.R b/R/as_pkgrefs.R index 93b4b8d..2b3d76a 100644 --- a/R/as_pkgrefs.R +++ b/R/as_pkgrefs.R @@ -25,6 +25,9 @@ as_pkgrefs.default <- function(x, ...) { if (is.numeric(x) || is.logical(x) || is.integer(x)) { stop("Don't know how to convert this to package references.", call. = FALSE) } + if(.detect_renv_lockfile(x)){ + return(as_pkgrefs(.parse_renv_lockfile(x))) + } return(.normalize_pkgs(x)) } @@ -34,6 +37,27 @@ as_pkgrefs.sessionInfo <- function(x, ...) { vapply(X = x$otherPkgs, FUN = .extract_pkgref_packageDescription, FUN.VALUE = character(1), USE.NAMES = FALSE) } +#' @rdname as_pkgrefs +#' @export +as_pkgrefs.renv_lockfile <- function(x, ...){ + sources <- vapply(lockfile[["Packages"]],`[[`,character(1),"Source",USE.NAMES = FALSE) + pkgs <- c() + if("Repository"%in%sources){ + pkgs <- c(pkgs, paste0("cran::",vapply(lockfile[["Packages"]][sources=="Repository"],`[[`,character(1),"Package",USE.NAMES = FALSE))) + } + if("Bioconductor"%in%sources){ + pkgs <- c(pkgs,paste0("bioc::",vapply(lockfile[["Packages"]][sources=="Bioconductor"],`[[`,character(1),"Package",USE.NAMES = FALSE))) + } + if("GitHub"%in%sources){ + pkgs <- c(pkgs, + paste0("github::", + vapply(lockfile[["Packages"]][sources=="GitHub"],`[[`,character(1), "RemoteUsername", USE.NAMES = FALSE),"/", + vapply(lockfile[["Packages"]][sources=="GitHub"],`[[`,character(1), "Package", USE.NAMES = FALSE)) + ) + } + pkgs +} + .extract_pkgref_packageDescription <- function(packageDescription) { handle <- packageDescription[['Package']] if ("GithubRepo" %in% names(packageDescription)) { @@ -52,3 +76,24 @@ as_pkgrefs.sessionInfo <- function(x, ...) { return(paste0("cran::", handle)) ## } } + +.detect_renv_lockfile <- function(path){ + # assuming all renv lockfiles are called renv.lock and path is only length 1 + if(length(path)!=1){ + return(FALSE) + } + if(isFALSE(file.exists(path))){ + return(FALSE) + } + if(grepl("renv.lock$",path)){ + return(TRUE) + } else{ + return(FALSE) + } +} + +.parse_renv_lockfile <- function(path){ + lockfile <- jsonlite::fromJSON(f, simplifyVector = FALSE) + class(lockfile) <- "renv_lockfile" + lockfile +} \ No newline at end of file diff --git a/R/resolve.R b/R/resolve.R index 23bc0a0..cac8118 100644 --- a/R/resolve.R +++ b/R/resolve.R @@ -199,7 +199,7 @@ #' #' This function recursively queries dependencies of R packages at a specific snapshot time. The dependency graph can then be used to recreate the computational environment. The data on dependencies are provided by R-hub. #' -#' @param pkgs `pkgs` can be 1) a character vector of R packages to resolve, or 2) a data structure that [as_pkgrefs()] can convert to a character vector of package references. For 1) `pkgs` can be either in shorthands, e.g. "rtoot", "ropensci/readODS", or in package references, e.g. "cran::rtoot", "github::ropensci/readODS". Please refer to the [Package References documentation](https://r-lib.github.io/pkgdepends/reference/pkg_refs.html) of `pak` for details. Currently, this package supports only cran and github packages. For 2) [as_pkgrefs()] support the output of [sessionInfo()]. +#' @param pkgs `pkgs` can be 1) a character vector of R packages to resolve, 2) a path to a [`renv` lockfile](https://rstudio.github.io/renv/articles/lockfile.html), or 3) a data structure that [as_pkgrefs()] can convert to a character vector of package references. For 1) `pkgs` can be either in shorthands, e.g. "rtoot", "ropensci/readODS", or in package references, e.g. "cran::rtoot", "github::ropensci/readODS". Please refer to the [Package References documentation](https://r-lib.github.io/pkgdepends/reference/pkg_refs.html) of `pak` for details. Currently, this package supports only cran and github packages. For 2) [as_pkgrefs()] support the output of [sessionInfo()]. #' @param snapshot_date Snapshot date, if not specified, assume to be a month ago #' @param no_enhances logical, whether to ignore packages in the "Enhances" field #' @param no_suggests logical, whether to ignore packages in the "Suggests" field @@ -248,6 +248,7 @@ resolve <- function(pkgs, snapshot_date, no_enhances = TRUE, no_suggests = TRUE, if (snapshot_date >= anytime::anytime(Sys.Date())) { stop("We don't know the future.", call. = FALSE) } + if (class(pkgs) %in% c("sessionInfo")) { pkgrefs <- as_pkgrefs(pkgs) if(any(grepl("^bioc::",pkgrefs))){ @@ -256,6 +257,9 @@ resolve <- function(pkgs, snapshot_date, no_enhances = TRUE, no_suggests = TRUE, bioc_version <- NULL } } else { + if(.detect_renv_lockfile(pkgs)){ + pkgs <- as_pkgrefs(pkgs) + } if(any(grepl("^bioc::",pkgs))){ query_bioc <- TRUE } diff --git a/man/as_pkgrefs.Rd b/man/as_pkgrefs.Rd index 1fd7751..b605ec3 100644 --- a/man/as_pkgrefs.Rd +++ b/man/as_pkgrefs.Rd @@ -4,6 +4,7 @@ \alias{as_pkgrefs} \alias{as_pkgrefs.default} \alias{as_pkgrefs.sessionInfo} +\alias{as_pkgrefs.renv_lockfile} \title{Convert Data Structures into Package References} \usage{ as_pkgrefs(x, ...) @@ -11,6 +12,8 @@ as_pkgrefs(x, ...) \method{as_pkgrefs}{default}(x, ...) \method{as_pkgrefs}{sessionInfo}(x, ...) + +\method{as_pkgrefs}{renv_lockfile}(x, ...) } \arguments{ \item{x, }{currently supported data structure(s) are: output from \code{\link[=sessionInfo]{sessionInfo()}}, a character vector of package names} diff --git a/man/resolve.Rd b/man/resolve.Rd index deb546c..8d26ab1 100644 --- a/man/resolve.Rd +++ b/man/resolve.Rd @@ -16,7 +16,7 @@ resolve( ) } \arguments{ -\item{pkgs}{\code{pkgs} can be 1) a character vector of R packages to resolve, or 2) a data structure that \code{\link[=as_pkgrefs]{as_pkgrefs()}} can convert to a character vector of package references. For 1) \code{pkgs} can be either in shorthands, e.g. "rtoot", "ropensci/readODS", or in package references, e.g. "cran::rtoot", "github::ropensci/readODS". Please refer to the \href{https://r-lib.github.io/pkgdepends/reference/pkg_refs.html}{Package References documentation} of \code{pak} for details. Currently, this package supports only cran and github packages. For 2) \code{\link[=as_pkgrefs]{as_pkgrefs()}} support the output of \code{\link[=sessionInfo]{sessionInfo()}}.} +\item{pkgs}{\code{pkgs} can be 1) a character vector of R packages to resolve, 2) a path to a \href{https://rstudio.github.io/renv/articles/lockfile.html}{\code{renv} lockfile}, or 3) a data structure that \code{\link[=as_pkgrefs]{as_pkgrefs()}} can convert to a character vector of package references. For 1) \code{pkgs} can be either in shorthands, e.g. "rtoot", "ropensci/readODS", or in package references, e.g. "cran::rtoot", "github::ropensci/readODS". Please refer to the \href{https://r-lib.github.io/pkgdepends/reference/pkg_refs.html}{Package References documentation} of \code{pak} for details. Currently, this package supports only cran and github packages. For 2) \code{\link[=as_pkgrefs]{as_pkgrefs()}} support the output of \code{\link[=sessionInfo]{sessionInfo()}}.} \item{snapshot_date}{Snapshot date, if not specified, assume to be a month ago} From 9474bf6f6c5516317fecdf05c7c57c7acbc2d5c5 Mon Sep 17 00:00:00 2001 From: schochastics Date: Sun, 26 Feb 2023 07:51:08 +0100 Subject: [PATCH 2/4] refactor renv lockfile parsing --- NAMESPACE | 1 - R/as_pkgrefs.R | 14 ++++++++------ man/as_pkgrefs.Rd | 3 --- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index f733f19..205ca6f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -2,7 +2,6 @@ S3method(as_pkgrefs,character) S3method(as_pkgrefs,default) -S3method(as_pkgrefs,renv_lockfile) S3method(as_pkgrefs,sessionInfo) S3method(convert_edgelist,default) S3method(convert_edgelist,rang) diff --git a/R/as_pkgrefs.R b/R/as_pkgrefs.R index 0aae8c2..a2c732c 100644 --- a/R/as_pkgrefs.R +++ b/R/as_pkgrefs.R @@ -35,6 +35,9 @@ as_pkgrefs.default <- function(x, ...) { #' @rdname as_pkgrefs #' @export as_pkgrefs.character <- function(x, bioc_version = NULL, ...) { + if(.detect_renv_lockfile(x)){ + return(.extract_pkgref_renv_lockfile(path = x)) + } return(.normalize_pkgs(pkgs = x, bioc_version = bioc_version)) } @@ -44,9 +47,8 @@ as_pkgrefs.sessionInfo <- function(x, ...) { vapply(X = x$otherPkgs, FUN = .extract_pkgref_packageDescription, FUN.VALUE = character(1), USE.NAMES = FALSE) } -#' @rdname as_pkgrefs -#' @export -as_pkgrefs.renv_lockfile <- function(x, ...){ +.extract_pkgref_renv_lockfile <- function(path){ + lockfile <- .parse_renv_lockfile(path) sources <- vapply(lockfile[["Packages"]],`[[`,character(1),"Source",USE.NAMES = FALSE) pkgs <- c() if("Repository"%in%sources){ @@ -62,7 +64,7 @@ as_pkgrefs.renv_lockfile <- function(x, ...){ vapply(lockfile[["Packages"]][sources=="GitHub"],`[[`,character(1), "Package", USE.NAMES = FALSE)) ) } - pkgs + return(pkgs) } .extract_pkgref_packageDescription <- function(packageDescription) { @@ -100,7 +102,7 @@ as_pkgrefs.renv_lockfile <- function(x, ...){ } .parse_renv_lockfile <- function(path){ - lockfile <- jsonlite::fromJSON(f, simplifyVector = FALSE) - class(lockfile) <- "renv_lockfile" + lockfile <- jsonlite::fromJSON(path, simplifyVector = FALSE) + # class(lockfile) <- "renv_lockfile" lockfile } \ No newline at end of file diff --git a/man/as_pkgrefs.Rd b/man/as_pkgrefs.Rd index 433539c..327c57c 100644 --- a/man/as_pkgrefs.Rd +++ b/man/as_pkgrefs.Rd @@ -5,7 +5,6 @@ \alias{as_pkgrefs.default} \alias{as_pkgrefs.character} \alias{as_pkgrefs.sessionInfo} -\alias{as_pkgrefs.renv_lockfile} \title{Convert Data Structures into Package References} \usage{ as_pkgrefs(x, ...) @@ -15,8 +14,6 @@ as_pkgrefs(x, ...) \method{as_pkgrefs}{character}(x, bioc_version = NULL, ...) \method{as_pkgrefs}{sessionInfo}(x, ...) - -\method{as_pkgrefs}{renv_lockfile}(x, ...) } \arguments{ \item{x, }{currently supported data structure(s) are: output from \code{\link[=sessionInfo]{sessionInfo()}}, a character vector of package names} From 0448b1fe9976267ec8ef782cc95b29878f7bbeb2 Mon Sep 17 00:00:00 2001 From: schochastics Date: Sun, 26 Feb 2023 11:13:26 +0100 Subject: [PATCH 3/4] added test --- .Rbuildignore | 3 ++ R/as_pkgrefs.R | 8 +++--- tests/.renvignore | 1 + tests/testdata/renv.lock | 56 ++++++++++++++++++++++++++++++++++++ tests/testthat/test_pkgref.R | 5 ++++ 5 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 tests/.renvignore create mode 100644 tests/testdata/renv.lock diff --git a/.Rbuildignore b/.Rbuildignore index 303594c..9bd7c8d 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -7,3 +7,6 @@ ^CRAN-SUBMISSION$ ^.editorconfig$ ^.codecov.yml$ +^.*\.Rproj$ +^\.Rproj\.user$ +tests/.renvignore diff --git a/R/as_pkgrefs.R b/R/as_pkgrefs.R index a2c732c..4feddd0 100644 --- a/R/as_pkgrefs.R +++ b/R/as_pkgrefs.R @@ -36,7 +36,7 @@ as_pkgrefs.default <- function(x, ...) { #' @export as_pkgrefs.character <- function(x, bioc_version = NULL, ...) { if(.detect_renv_lockfile(x)){ - return(.extract_pkgref_renv_lockfile(path = x)) + return(.extract_pkgref_renv_lockfile(path = x)) } return(.normalize_pkgs(pkgs = x, bioc_version = bioc_version)) } @@ -102,7 +102,7 @@ as_pkgrefs.sessionInfo <- function(x, ...) { } .parse_renv_lockfile <- function(path){ - lockfile <- jsonlite::fromJSON(path, simplifyVector = FALSE) - # class(lockfile) <- "renv_lockfile" - lockfile + lockfile <- jsonlite::fromJSON(path, simplifyVector = FALSE) + # class(lockfile) <- "renv_lockfile" + lockfile } \ No newline at end of file diff --git a/tests/.renvignore b/tests/.renvignore new file mode 100644 index 0000000..d383c56 --- /dev/null +++ b/tests/.renvignore @@ -0,0 +1 @@ +testdata diff --git a/tests/testdata/renv.lock b/tests/testdata/renv.lock new file mode 100644 index 0000000..1f63c0c --- /dev/null +++ b/tests/testdata/renv.lock @@ -0,0 +1,56 @@ +{ + "R": { + "Version": "4.2.2", + "Repositories": [ + { + "Name": "CRAN", + "URL": "https://cloud.r-project.org" + } + ] + }, + "Packages": { + "BiocGenerics": { + "Package": "BiocGenerics", + "Version": "0.44.0", + "Source": "Bioconductor", + "git_url": "https://git.bioconductor.org/packages/BiocGenerics", + "git_branch": "RELEASE_3_16", + "git_last_commit": "d7cd9c1", + "git_last_commit_date": "2022-11-01", + "Hash": "0de19224c2cd94f48fbc0d0bc663ce3b", + "Requirements": [] + }, + "levelnet": { + "Package": "levelnet", + "Version": "0.5.0", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "levelnet", + "RemoteUsername": "schochastics", + "RemoteRef": "HEAD", + "RemoteSha": "775cf5e91b83cb73fe35e378ed1d7facb1d741eb", + "Hash": "29eed562ec1c9bb7e31ce87e321b9252", + "Requirements": [ + "Matrix", + "Rcpp", + "igraph" + ] + }, + "rtoot": { + "Package": "rtoot", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "06eb72de42a3f8fcb252badc58f92b2b", + "Requirements": [ + "clipr", + "curl", + "dplyr", + "httr", + "jsonlite", + "tibble" + ] + } + } +} diff --git a/tests/testthat/test_pkgref.R b/tests/testthat/test_pkgref.R index d157119..c100da0 100644 --- a/tests/testthat/test_pkgref.R +++ b/tests/testthat/test_pkgref.R @@ -91,3 +91,8 @@ test_that("as_pkgrefs_packageDescription", { ## expect_equal(res, c("github::chainsawriot/grafzahl", "cran::rtoot", "local::/home/chainsawriot/dev/rang", "cran::testthat") expect_equal(res, c("github::chainsawriot/grafzahl", "cran::rtoot", "cran::rang", "cran::testthat")) }) + +test_that("as_pkgrefs renv_lockfile", { + res <- as_pkgrefs("../testdata/renv.lock") + expect_equal(res, c("cran::rtoot", "bioc::BiocGenerics", "github::schochastics/levelnet")) +}) \ No newline at end of file From 207521b69556fa0e262b0bb4c003a460eabf188f Mon Sep 17 00:00:00 2001 From: schochastics Date: Sun, 26 Feb 2023 16:03:31 +0100 Subject: [PATCH 4/4] revised according to review --- R/as_pkgrefs.R | 9 +- tests/testdata/bioc_renv.RDS | Bin 0 -> 1998 bytes tests/testdata/fake_renv.lock | 0 tests/testdata/renv.lock | 2166 ++++++++++++++++++++++++++++++++- tests/testthat/test_pkgref.R | 10 +- tests/testthat/test_resolve.R | 6 + 6 files changed, 2147 insertions(+), 44 deletions(-) create mode 100644 tests/testdata/bioc_renv.RDS create mode 100644 tests/testdata/fake_renv.lock diff --git a/R/as_pkgrefs.R b/R/as_pkgrefs.R index 4feddd0..9611df2 100644 --- a/R/as_pkgrefs.R +++ b/R/as_pkgrefs.R @@ -36,7 +36,7 @@ as_pkgrefs.default <- function(x, ...) { #' @export as_pkgrefs.character <- function(x, bioc_version = NULL, ...) { if(.detect_renv_lockfile(x)){ - return(.extract_pkgref_renv_lockfile(path = x)) + return(.extract_pkgrefs_renv_lockfile(path = x)) } return(.normalize_pkgs(pkgs = x, bioc_version = bioc_version)) } @@ -47,7 +47,7 @@ as_pkgrefs.sessionInfo <- function(x, ...) { vapply(X = x$otherPkgs, FUN = .extract_pkgref_packageDescription, FUN.VALUE = character(1), USE.NAMES = FALSE) } -.extract_pkgref_renv_lockfile <- function(path){ +.extract_pkgrefs_renv_lockfile <- function(path){ lockfile <- .parse_renv_lockfile(path) sources <- vapply(lockfile[["Packages"]],`[[`,character(1),"Source",USE.NAMES = FALSE) pkgs <- c() @@ -94,11 +94,10 @@ as_pkgrefs.sessionInfo <- function(x, ...) { if(isFALSE(file.exists(path))){ return(FALSE) } - if(grepl("renv.lock$",path)){ - return(TRUE) - } else{ + if (isFALSE(basename(path) == "renv.lock")) { return(FALSE) } + TRUE } .parse_renv_lockfile <- function(path){ diff --git a/tests/testdata/bioc_renv.RDS b/tests/testdata/bioc_renv.RDS new file mode 100644 index 0000000000000000000000000000000000000000..7d025ef493a228eeda90e97e80985ccef791f68f GIT binary patch literal 1998 zcmV;<2Ql~`iwFP!0000019ezga~!u3-uS4Bj?k2;ic_gPrSd8!l4-@IHvtmN&GJizhRoS;NrrAVPSr89f6|=yf!unwJ7hK ze<+W=dG{^?e;R-*aVe)$#{>9ZaC)hX39Ax+3(V;Ywg(^ahXa0dzFbD+aYR^fVi&RR zbL_MWLi*3G+?X21m8k#XWhrTKJ{l0uE-sBU?!v)#bkU=<(m6?v|8lt~?O!ba_f`Zb zeYsd#;K4C+m|Gi>?qzpou_)uih>HPfSDfy)&%?@5{7U ztSrBHd%omB5}Sk9P=;a&onxWAdBA?DZqdxrA4|)ehnq5MKHj`7#jr}~x;)7I+Okp4 z;{GEHHAAv-j^ycXGhHm~LsNb2)kbD1)wb zAd;n^CxxZT$j*mRLUa>1H7jF<2!zZ9NyYv(ddoOaTq&a!b88~a=(}!|mXtTnS!n{@ zy3N33fVIz`lPEa0H=1bcjQ4@bH8E>qh^S|caX1aElH?WDm6dx(Fp#w%j;g`)Qteta zjj3+QQRDzmQn5BSm!)xaCNn{IPPZil&;RxB=VhFsZA*`0;t1;nNfOvF*|CxRq8_lb zB!?TOy(kT6nA-r!oQCqOlGF}iI%7j&aX2a1Nu39uuttVPmfk}zp2J0ROsUab>onlPnx z64Dz;h`v|*^=_)LM-!ZB^dO<+-L;>2pKZ=X(GM%O84GQK>gFeM+X{AA&B!*K>dUynrGICx^-=~y399q-#ahE0h20FMtH*Qs^!EaB@}r| zN@(%xbr}uB?#N?RVwWo!?YyUjjQk#FFkv*+X^(Y@fSaI^*h}e}*Ued}ww6?FEs?iL zHP#veMJQ<*3)*`^tUb7sK20#OIl$f+yE)W(Um9&$;H#~ny^XE%%5apxwaZc_-B2n1 znKELt9x$C>0n4gvG~VKk}K@f(uj*u~O5+)u+)^qa>a4oICxEMO3oaX=Ta zuhG7lSS(uQp;e#*kii)_u>aUlrl4<1HT_Cx!VO*oWr*fjN{QwY3mzdwug#XIY&yq_ zX)dWjXvW+5L0^l*Ug%>G(UTHA&1%6@vXp-bN=DflEWIC~Zlxk#!wayeP|#s_AwCC^ z*XldB5mS2*v)k`U;IRYnh8*q5JNu%Mc8Y51NgpMw9*OaIf`)*XxzXb|PkEBu0izzq z7aQZ(P3#{9<;0jah3031Z0YR0!L%dAa3iow5hT?kn0+UU7i^iVNeXV6Bg$<>Sdk3e zHJv7il4J(j4mb@lrI&D7e;*nWvRMAFgDaaFVSGzUaSI zjSb?kbTxnTQ?6um_;s=O=>QHY6Til_1$a?+Ocr07kK$TC=1sFpl)OCq4d2}qg}+7^ z{fsfiu5NNfsoSt)L5_6_>zw!m^_Px)9K@BXu_5Q6RITdEH%Pj<>OX}jM((YO4|Eai zKMmF+Q#=|#!y8ji?f3(OrU3LF05}si(wi=!D g42REu4)b63vj6_&y~=2VQ{j)l1JqPrcfc6{0KtdbasU7T literal 0 HcmV?d00001 diff --git a/tests/testdata/fake_renv.lock b/tests/testdata/fake_renv.lock new file mode 100644 index 0000000..e69de29 diff --git a/tests/testdata/renv.lock b/tests/testdata/renv.lock index 1f63c0c..7e03300 100644 --- a/tests/testdata/renv.lock +++ b/tests/testdata/renv.lock @@ -1,56 +1,2148 @@ { "R": { - "Version": "4.2.2", + "Version": "4.0.2", "Repositories": [ { "Name": "CRAN", - "URL": "https://cloud.r-project.org" + "URL": "https://packagemanager.rstudio.com/cran/2020-10-07" } ] }, + "Bioconductor": { + "Version": "3.12" + }, "Packages": { + "AnnotationDbi": { + "Package": "AnnotationDbi", + "Version": "1.52.0", + "Source": "Bioconductor", + "Hash": "ca5106b296b3aa6af713ce197be547c1" + }, + "AnnotationHub": { + "Package": "AnnotationHub", + "Version": "2.22.0", + "Source": "Bioconductor", + "Hash": "6ece9b0d9e1179541d3c388ab4ac2065" + }, + "BH": { + "Package": "BH", + "Version": "1.75.0-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e4c04affc2cac20c8fec18385cd14691" + }, + "Biobase": { + "Package": "Biobase", + "Version": "2.50.0", + "Source": "Bioconductor", + "Hash": "f49586e579b712b7e55253aba0c9bc21" + }, + "BiocFileCache": { + "Package": "BiocFileCache", + "Version": "1.14.0", + "Source": "Bioconductor", + "Hash": "1b129af4e6ee37b16d4d424aebed81f7" + }, "BiocGenerics": { "Package": "BiocGenerics", - "Version": "0.44.0", + "Version": "0.36.0", "Source": "Bioconductor", - "git_url": "https://git.bioconductor.org/packages/BiocGenerics", - "git_branch": "RELEASE_3_16", - "git_last_commit": "d7cd9c1", - "git_last_commit_date": "2022-11-01", - "Hash": "0de19224c2cd94f48fbc0d0bc663ce3b", - "Requirements": [] + "Hash": "1fe8a6250d04cfb040ebec87447770ba" }, - "levelnet": { - "Package": "levelnet", - "Version": "0.5.0", - "Source": "GitHub", - "RemoteType": "github", - "RemoteHost": "api.github.com", - "RemoteRepo": "levelnet", - "RemoteUsername": "schochastics", - "RemoteRef": "HEAD", - "RemoteSha": "775cf5e91b83cb73fe35e378ed1d7facb1d741eb", - "Hash": "29eed562ec1c9bb7e31ce87e321b9252", - "Requirements": [ - "Matrix", - "Rcpp", - "igraph" - ] - }, - "rtoot": { - "Package": "rtoot", + "BiocManager": { + "Package": "BiocManager", + "Version": "1.30.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "db75371846625725e221470b310da1d5" + }, + "BiocNeighbors": { + "Package": "BiocNeighbors", + "Version": "1.8.2", + "Source": "Bioconductor", + "Hash": "8a3634be325ede4f00afa7587eac479a" + }, + "BiocParallel": { + "Package": "BiocParallel", + "Version": "1.24.1", + "Source": "Bioconductor", + "Hash": "338a72852f019b3b51ae87dc82391eb3" + }, + "BiocSingular": { + "Package": "BiocSingular", + "Version": "1.6.0", + "Source": "Bioconductor", + "Hash": "b7d1aa70f71252a7f9d3a927d43846cd" + }, + "BiocVersion": { + "Package": "BiocVersion", + "Version": "3.12.0", + "Source": "Bioconductor", + "Hash": "ee4d027afb8f52fec1f46b9f0a8660e9" + }, + "CytoTRACE": { + "Package": "CytoTRACE", + "Version": "0.3.3", + "Source": "unknown", + "Hash": "ff190e380f7264681807baec5bc2029c" + }, + "DBI": { + "Package": "DBI", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "030aaec5bc6553f35347cbb1e70b1a17" + }, + "DEoptimR": { + "Package": "DEoptimR", + "Version": "1.0-8", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "4fdd17df6c1b897cb59bdd9cf6621a43" + }, + "DT": { + "Package": "DT", + "Version": "0.17", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "56b33b77f4cffd78ff96b8e5a69eabb0" + }, + "DelayedArray": { + "Package": "DelayedArray", + "Version": "0.16.1", + "Source": "Bioconductor", + "Hash": "98a62a8040f67b43dad034e58f288d51" + }, + "DelayedMatrixStats": { + "Package": "DelayedMatrixStats", + "Version": "1.12.3", + "Source": "Bioconductor", + "Hash": "1a9c016231c53483de05bec235ff8bfd" + }, + "ExperimentHub": { + "Package": "ExperimentHub", + "Version": "1.16.0", + "Source": "Bioconductor", + "Hash": "661c05ba07a43937d58fa12c6c1df197" + }, + "FNN": { + "Package": "FNN", + "Version": "1.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b56998fff55e4a4b4860ad6e8c67e0f9" + }, + "GenomeInfoDb": { + "Package": "GenomeInfoDb", + "Version": "1.26.2", + "Source": "Bioconductor", + "Hash": "6082689b1694d67738f55795ec407d5b" + }, + "GenomeInfoDbData": { + "Package": "GenomeInfoDbData", + "Version": "1.2.4", + "Source": "Bioconductor", + "Hash": "8e9c39ceac5f1d98d3267541853fca31" + }, + "GenomicRanges": { + "Package": "GenomicRanges", + "Version": "1.42.0", + "Source": "Bioconductor", + "Hash": "2826edf1a5ff7d6ce991ec5ed918ec5f" + }, + "HDF5Array": { + "Package": "HDF5Array", + "Version": "1.18.1", + "Source": "Bioconductor", + "Hash": "07fd74c160b1265137c0cdd815dc42b5" + }, + "HiClimR": { + "Package": "HiClimR", + "Version": "2.1.6", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "15d39d4b3b62d4f451d71347a4909765" + }, + "IRanges": { + "Package": "IRanges", + "Version": "2.24.1", + "Source": "Bioconductor", + "Hash": "21b3bc3dfb55cb9501c5f3413b35388c" + }, + "KernSmooth": { + "Package": "KernSmooth", + "Version": "2.23-17", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bbff70c8c0357b5b88238c83f680fcd3" + }, + "LearnBayes": { + "Package": "LearnBayes", + "Version": "2.15.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b2dd5e3f910f1ac390f847f35e8c2396" + }, + "MASS": { + "Package": "MASS", + "Version": "7.3-53", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d1bc1c8e9c0ace57ec9ffea01021d45f" + }, + "Matrix": { + "Package": "Matrix", + "Version": "1.2-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08588806cba69f04797dab50627428ed" + }, + "Matrix.utils": { + "Package": "Matrix.utils", + "Version": "0.9.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "74d1586cef483fdd0703316240ed8c1e" + }, + "MatrixGenerics": { + "Package": "MatrixGenerics", + "Version": "1.2.1", + "Source": "Bioconductor", + "Hash": "fbae799fc848a8599a46a3adfe8a975a" + }, + "MatrixModels": { + "Package": "MatrixModels", + "Version": "0.4-1", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "d57ac35220b39c591388ab3a080f9cbe" + }, + "R6": { + "Package": "R6", + "Version": "2.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b203113193e70978a696b2809525649d" + }, + "RANN": { + "Package": "RANN", + "Version": "2.6.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d128ea05a972d3e67c6f39de52c72bd7" + }, + "RColorBrewer": { + "Package": "RColorBrewer", + "Version": "1.1-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e031418365a7f7a766181ab5a41a5716" + }, + "RCurl": { + "Package": "RCurl", + "Version": "1.98-1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cf29e1b71f8736960e0e851123a83e6f" + }, + "ROCR": { + "Package": "ROCR", + "Version": "1.0-11", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cc151930e20e16427bc3d0daec62b4a9" + }, + "RSQLite": { + "Package": "RSQLite", + "Version": "2.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a281e35445a1c4fc7ccfc62f01bb1e2d" + }, + "RSpectra": { + "Package": "RSpectra", + "Version": "0.16-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a41329d24d5a98eaed2bd0159adb1b5f" + }, + "Rcpp": { + "Package": "Rcpp", + "Version": "1.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dbb5e436998a7eba5a9d682060533338" + }, + "RcppAnnoy": { + "Package": "RcppAnnoy", + "Version": "0.0.18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4c61a26f751659e875f46045df6d5fad" + }, + "RcppArmadillo": { + "Package": "RcppArmadillo", + "Version": "0.10.1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c66578fcae4cd6f42bddffee8a67f19b" + }, + "RcppEigen": { + "Package": "RcppEigen", + "Version": "0.3.3.9.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ddfa72a87fdf4c80466a20818be91d00" + }, + "RcppHNSW": { + "Package": "RcppHNSW", "Version": "0.3.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "06eb72de42a3f8fcb252badc58f92b2b", - "Requirements": [ - "clipr", - "curl", - "dplyr", - "httr", - "jsonlite", - "tibble" - ] + "Hash": "ce584c040a9cfa786ffb41f938f5ed19" + }, + "RcppProgress": { + "Package": "RcppProgress", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1c0aa18b97e6aaa17f93b8b866c0ace5" + }, + "ResidualMatrix": { + "Package": "ResidualMatrix", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "a6359ebe8106451188623f982fb9af20" + }, + "Rhdf5lib": { + "Package": "Rhdf5lib", + "Version": "1.12.1", + "Source": "Bioconductor", + "Hash": "7dc9be3558a910226d64a2040520dc7f" + }, + "RhpcBLASctl": { + "Package": "RhpcBLASctl", + "Version": "0.20-137", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fb135751ed3f00f33890826823ebe332" + }, + "Rtsne": { + "Package": "Rtsne", + "Version": "0.15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f153432c4ca15b937ccfaa40f167c892" + }, + "S4Vectors": { + "Package": "S4Vectors", + "Version": "0.28.1", + "Source": "Bioconductor", + "Hash": "f558c55a285751bd72af11d2bb853521" + }, + "Seurat": { + "Package": "Seurat", + "Version": "4.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "45c788295860d0ded1433fa75226245e" + }, + "SeuratObject": { + "Package": "SeuratObject", + "Version": "4.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0ac490e6dfe2e9f853b977ab9f101054" + }, + "SingleCellExperiment": { + "Package": "SingleCellExperiment", + "Version": "1.12.0", + "Source": "Bioconductor", + "Hash": "40badd4c5dcff81480c77a17b3b811bb" + }, + "SingleR": { + "Package": "SingleR", + "Version": "1.4.1", + "Source": "Bioconductor", + "Hash": "911b58ee9561bf35ec86656b365e2645" + }, + "SparseM": { + "Package": "SparseM", + "Version": "1.78", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "fbe4ac267bf42a91e495cc68ad3f8b63" + }, + "SummarizedExperiment": { + "Package": "SummarizedExperiment", + "Version": "1.20.0", + "Source": "Bioconductor", + "Hash": "2da24c5f66521d18cff602d324834b20" + }, + "XML": { + "Package": "XML", + "Version": "3.99-0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "408d42d1359f2a84d377c1f7f0568624" + }, + "XVector": { + "Package": "XVector", + "Version": "0.30.0", + "Source": "Bioconductor", + "Hash": "9bd9f991fb4ecde6adeff2fa2e401cc5" + }, + "abind": { + "Package": "abind", + "Version": "1.4-5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4f57884290cc75ab22f4af9e9d4ca862" + }, + "annotate": { + "Package": "annotate", + "Version": "1.68.0", + "Source": "Bioconductor", + "Hash": "3553333f7949ea3d722760136f3660ae" + }, + "askpass": { + "Package": "askpass", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e8a22846fff485f0be3770c2da758713" + }, + "assertthat": { + "Package": "assertthat", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "50c838a310445e954bc13f26f26a6ecf" + }, + "backports": { + "Package": "backports", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "644043219fc24e190c2f620c1a380a69" + }, + "base64enc": { + "Package": "base64enc", + "Version": "0.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "543776ae6848fde2f48ff3816d0628bc" + }, + "batchelor": { + "Package": "batchelor", + "Version": "1.6.2", + "Source": "Bioconductor", + "Hash": "0881eb8faadd983eb1d15c56193c722d" + }, + "beachmat": { + "Package": "beachmat", + "Version": "2.6.4", + "Source": "Bioconductor", + "Hash": "8af9f5ade6bca275eb2c7cf22267032f" + }, + "bit": { + "Package": "bit", + "Version": "4.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f36715f14d94678eea9933af927bc15d" + }, + "bit64": { + "Package": "bit64", + "Version": "4.0.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fe98599ca456d6552421db0d6772d8f" + }, + "bitops": { + "Package": "bitops", + "Version": "1.0-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0b118d5900596bae6c4d4865374536a6" + }, + "blob": { + "Package": "blob", + "Version": "1.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9addc7e2c5954eca5719928131fed98c" + }, + "bluster": { + "Package": "bluster", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "e8f8b977ef40b50bdc3910453f9b48fd" + }, + "boot": { + "Package": "boot", + "Version": "1.3-27", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d9778c960792721e8433daaf3db8f16a" + }, + "brio": { + "Package": "brio", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "36758510e65a457efeefa50e1e7f0576" + }, + "broom": { + "Package": "broom", + "Version": "0.7.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3cca8477943a8e840c3eb64a25fef9d2" + }, + "bslib": { + "Package": "bslib", + "Version": "0.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4830a372b241d78ed6f53731ee3023ac" + }, + "caTools": { + "Package": "caTools", + "Version": "1.18.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f5b3e8f693522708cd9444c839b432e0" + }, + "cachem": { + "Package": "cachem", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "803b5d36ec15fe3314905749a5619767" + }, + "callr": { + "Package": "callr", + "Version": "3.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b7d7f1e926dfcd57c74ce93f5c048e80" + }, + "car": { + "Package": "car", + "Version": "3.0-10", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "12d8cdaf73c30b8c8cb7a22591a3f57d" + }, + "carData": { + "Package": "carData", + "Version": "3.0-4", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "7ff5c94cec207b3fd9774cfaa5157738" + }, + "ccaPP": { + "Package": "ccaPP", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "5e40ffde68adf937e2fc07bf8f23f635" + }, + "celldex": { + "Package": "celldex", + "Version": "1.0.0", + "Source": "Bioconductor", + "Hash": "1bed4a4c05354e8620e0bf813c1fbb96" + }, + "cellranger": { + "Package": "cellranger", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f61dbaec772ccd2e17705c1e872e9e7c" + }, + "class": { + "Package": "class", + "Version": "7.3-18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "15ef288688a6919417ade6251deea2b3" + }, + "classInt": { + "Package": "classInt", + "Version": "0.4-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "17bdfa3c51df4a6c82484d13b11fb380" + }, + "cli": { + "Package": "cli", + "Version": "2.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "26fb4f0871c8e5b84d77f6dc22f2ee0a" + }, + "clipr": { + "Package": "clipr", + "Version": "0.7.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ebaa97ac99cc2daf04e77eecc7b781d7" + }, + "cluster": { + "Package": "cluster", + "Version": "2.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "db63a44aab5aadcb6bf2f129751d129a" + }, + "coda": { + "Package": "coda", + "Version": "0.19-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "24b6d006b8b2343876cf230687546932" + }, + "codetools": { + "Package": "codetools", + "Version": "0.2-16", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "89cf4b8207269ccf82fbeb6473fd662b" + }, + "colorspace": { + "Package": "colorspace", + "Version": "2.0-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "abea3384649ef37f60ef51ce002f3547" + }, + "commonmark": { + "Package": "commonmark", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f22be39ec1d141fd03683c06f3a6e67" + }, + "conquer": { + "Package": "conquer", + "Version": "1.0.2", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "a31720f692920e635ecef0481d478247" + }, + "corrplot": { + "Package": "corrplot", + "Version": "0.84", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "b55c32ae818a84109a51f172290c95f2" + }, + "cowplot": { + "Package": "cowplot", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b418e8423699d11c7f2087c2bfd07da2" + }, + "cpp11": { + "Package": "cpp11", + "Version": "0.2.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f08909ebdad90b19d8d3930da4220564" + }, + "crayon": { + "Package": "crayon", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fcff9126a4928a96c94e3df85b024899" + }, + "crosstalk": { + "Package": "crosstalk", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b06f9e415a62b6762e4b8098d2aecbc" + }, + "curl": { + "Package": "curl", + "Version": "4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2b7d10581cc730804e9ed178c8374bd6" + }, + "data.table": { + "Package": "data.table", + "Version": "1.13.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "813fa8857aaa949b243e2e0b4abb8592" + }, + "dbplyr": { + "Package": "dbplyr", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "714005206038b1dda74cb1de85029a20" + }, + "deldir": { + "Package": "deldir", + "Version": "0.2-9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5ecce9536aef446cf9b7b8519c0effae" + }, + "desc": { + "Package": "desc", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6c8fe8fa26a23b79949375d372c7b395" + }, + "diffobj": { + "Package": "diffobj", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "55fae7ec1418d2a47bd552571673d1af" + }, + "digest": { + "Package": "digest", + "Version": "0.6.27", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a0cbe758a531d054b537d16dff4d58a1" + }, + "doMC": { + "Package": "doMC", + "Version": "1.3.6", + "Source": "Repository", + "Repository": "RSPM", + "OS_type": "unix", + "Hash": "5d7e205a5ff1b3a1a10ca65e0ec79fed" + }, + "dplyr": { + "Package": "dplyr", + "Version": "1.0.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01c82e3b053eb7660a8ace8d932265b8" + }, + "dqrng": { + "Package": "dqrng", + "Version": "0.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cc0d03e8383d407e9568855f8efbc07d" + }, + "e1071": { + "Package": "e1071", + "Version": "1.7-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7e9462e3e3e565f51fbec181dfcab890" + }, + "edgeR": { + "Package": "edgeR", + "Version": "3.32.1", + "Source": "Bioconductor", + "Hash": "9728a55a7f19cfab9c54d84b4e59f143" + }, + "egg": { + "Package": "egg", + "Version": "0.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d958917f7b60c13089ab0c8d17114053" + }, + "ellipsis": { + "Package": "ellipsis", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fd2844b3a43ae2d27e70ece2df1b4e2a" + }, + "evaluate": { + "Package": "evaluate", + "Version": "0.14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec8ca05cffcc70569eaaad8469d2a3a7" + }, + "expm": { + "Package": "expm", + "Version": "0.999-6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1bb0f92b6125ea03dd7142f8eaf36bf5" + }, + "fansi": { + "Package": "fansi", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fea074fb67fe4c25d47ad09087da847d" + }, + "farver": { + "Package": "farver", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dad6793a5a1f73c8e91f1a1e3e834b05" + }, + "fastmap": { + "Package": "fastmap", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "77bd60a6157420d4ffa93b27cf6a58b8" + }, + "fitdistrplus": { + "Package": "fitdistrplus", + "Version": "1.1-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8e9ca89621f9304a553e0ff119328053" + }, + "forcats": { + "Package": "forcats", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "81c3244cab67468aac4c60550832655d" + }, + "foreach": { + "Package": "foreach", + "Version": "1.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e32cfc0973caba11b65b1fa691b4d8c9" + }, + "foreign": { + "Package": "foreign", + "Version": "0.8-80", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ae1b1e15cc6ccb2bc61c0ac33e86d35f" + }, + "formatR": { + "Package": "formatR", + "Version": "1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ad36e26eeeb7393886d8a0e19bc6ee42" + }, + "fs": { + "Package": "fs", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "44594a07a42e5f91fac9f93fda6d0109" + }, + "furrr": { + "Package": "furrr", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9f8988c1c716080a968a2949d1fd9af3" + }, + "futile.logger": { + "Package": "futile.logger", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "99f0ace8c05ec7d3683d27083c4f1e7e" + }, + "futile.options": { + "Package": "futile.options", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d9bf02413ddc2bbe8da9ce369dcdd2b" + }, + "future": { + "Package": "future", + "Version": "1.21.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f25fad6bee82b7ab01f055e2d813b96f" + }, + "future.apply": { + "Package": "future.apply", + "Version": "1.7.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7fb0dc1961807da107ab2078366052bd" + }, + "gdata": { + "Package": "gdata", + "Version": "2.18.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "465ccb84427f5fe2c54f8620666db131" + }, + "genefilter": { + "Package": "genefilter", + "Version": "1.72.1", + "Source": "Bioconductor", + "Hash": "c25bd3bb0821c2e7cda02b177b20136b" + }, + "generics": { + "Package": "generics", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4d243a9c10b00589889fe32314ffd902" + }, + "ggplot2": { + "Package": "ggplot2", + "Version": "3.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3eb6477d01eb5bbdc03f7d5f70f2733e" + }, + "ggpubr": { + "Package": "ggpubr", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "77089557d374c69db7cb77e65f0d6ab0" + }, + "ggrepel": { + "Package": "ggrepel", + "Version": "0.9.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "08ab869f37e6a7741a64ab9069bcb67d" + }, + "ggridges": { + "Package": "ggridges", + "Version": "0.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d028e8f37c84dba356ce3c367a1978e" + }, + "ggsci": { + "Package": "ggsci", + "Version": "2.9", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "81ccb8213ed592598210afd10c3a5936" + }, + "ggsignif": { + "Package": "ggsignif", + "Version": "0.6.0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "3e9b8a51dfdc95395632b25ce3ce8ebc" + }, + "ggtext": { + "Package": "ggtext", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "c59f6b5f5847da34158788d99d857ed7" + }, + "globals": { + "Package": "globals", + "Version": "0.14.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "eca8023ed5ca6372479ebb9b3207f5ae" + }, + "glue": { + "Package": "glue", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6efd734b14c6471cfe443345f3e35e29" + }, + "gmodels": { + "Package": "gmodels", + "Version": "2.18.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "beb8ca96406a2828f25e49ab17001c39" + }, + "goftest": { + "Package": "goftest", + "Version": "1.2-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3c9209bce1b10900155ea37ce954cf30" + }, + "gplots": { + "Package": "gplots", + "Version": "3.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e65e5d5dea4cbb9ba822dcd782b2ee1f" + }, + "gridExtra": { + "Package": "gridExtra", + "Version": "2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7d7f283939f563670a697165b2cf5560" + }, + "gridtext": { + "Package": "gridtext", + "Version": "0.1.1", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "3ad82bf883067612096bda752dbd513e" + }, + "grr": { + "Package": "grr", + "Version": "0.9.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "195f3206842ea5ae11968e8d462bb828" + }, + "gtable": { + "Package": "gtable", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac5c6baf7822ce8732b343f14c072c4d" + }, + "gtools": { + "Package": "gtools", + "Version": "3.8.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0a749b4458d19a54acae93c64e3e7c85" + }, + "haven": { + "Package": "haven", + "Version": "2.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "221d0ad75dfa03ebf17b1a4cc5c31dfc" + }, + "hdf5r": { + "Package": "hdf5r", + "Version": "1.3.3", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "baf21811a0cfd92309ceffb3fa5db0b5" + }, + "hexbin": { + "Package": "hexbin", + "Version": "1.28.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76314b69dc54f8c14204063a2fd6d74a" + }, + "highr": { + "Package": "highr", + "Version": "0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4dc5bb88961e347a0f4d8aad597cbfac" + }, + "hms": { + "Package": "hms", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bf552cdd96f5969873afdac7311c7d0d" + }, + "htmltools": { + "Package": "htmltools", + "Version": "0.5.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "af2c2531e55df5cf230c4b5444fc973c" + }, + "htmlwidgets": { + "Package": "htmlwidgets", + "Version": "1.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6fdaa86d0700f8b3e92ee3c445a5a10d" + }, + "httpuv": { + "Package": "httpuv", + "Version": "1.5.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b9d5d39be2150cf86538b8488334b8f8" + }, + "httr": { + "Package": "httr", + "Version": "1.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a525aba14184fec243f9eaec62fbed43" + }, + "ica": { + "Package": "ica", + "Version": "1.0-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ba9b882bb834ecbdad37338a11f3f8" + }, + "igraph": { + "Package": "igraph", + "Version": "1.2.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7b1f856410253d56ea67ad808f7cdff6" + }, + "ineq": { + "Package": "ineq", + "Version": "0.2-13", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "a637aa4075670fd2346fd469948202fa" + }, + "interactiveDisplayBase": { + "Package": "interactiveDisplayBase", + "Version": "1.28.0", + "Source": "Bioconductor", + "Hash": "94d61fec87eb3c8263856357f14beefb" + }, + "irlba": { + "Package": "irlba", + "Version": "2.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a9ad517358000d57022401ef18ee657a" + }, + "isoband": { + "Package": "isoband", + "Version": "0.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "53647fb507373700028b2ce6cd30751a" + }, + "iterators": { + "Package": "iterators", + "Version": "1.0.13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "64778782a89480e9a644f69aad9a2877" + }, + "jpeg": { + "Package": "jpeg", + "Version": "0.1-8.1", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "bc316c003aba520fc73d70ad53b5fc36" + }, + "jquerylib": { + "Package": "jquerylib", + "Version": "0.1.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5ff50b36f7f0832f8421745af333e73c" + }, + "jsonlite": { + "Package": "jsonlite", + "Version": "1.7.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "98138e0994d41508c7a6b84a0600cfcb" + }, + "kernlab": { + "Package": "kernlab", + "Version": "0.9-29", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "46b2f61dadae64579e4cbe8af3c088d6" + }, + "knitr": { + "Package": "knitr", + "Version": "1.31", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c3994c036d19fc22c5e2a209c8298bfb" + }, + "labeling": { + "Package": "labeling", + "Version": "0.4.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3d5108641f47470611a32d0bdf357a72" + }, + "lambda.r": { + "Package": "lambda.r", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b1e925c4b9ffeb901bacf812cbe9a6ad" + }, + "later": { + "Package": "later", + "Version": "1.1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d0a62b247165aabf397fded504660d8a" + }, + "latex2exp": { + "Package": "latex2exp", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dad1cdbbe7546e372dd822c4aba9ac75" + }, + "lattice": { + "Package": "lattice", + "Version": "0.20-41", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fbd9285028b0263d76d18c95ae51a53d" + }, + "lazyeval": { + "Package": "lazyeval", + "Version": "0.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d908914ae53b04d4c0c0fd72ecc35370" + }, + "leiden": { + "Package": "leiden", + "Version": "0.3.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d28a945b39ab3471acc7faa208073ace" + }, + "leidenbase": { + "Package": "leidenbase", + "Version": "0.1.2", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteUsername": "cole-trapnell-lab", + "RemoteRepo": "leidenbase", + "RemoteRef": "master", + "RemoteSha": "8c52ebcbf870debad6733a7513be6eb4390da0f6", + "Hash": "ffe4c88551cd81023bcd6208d5752920" + }, + "lifecycle": { + "Package": "lifecycle", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "361811f31f71f8a617a9a68bf63f1f42" + }, + "limma": { + "Package": "limma", + "Version": "3.46.0", + "Source": "Bioconductor", + "Hash": "78b860aa595c42e02464243a213b3e6d" + }, + "listenv": { + "Package": "listenv", + "Version": "0.8.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0bde42ee282efb18c7c4e63822f5b4f7" + }, + "lme4": { + "Package": "lme4", + "Version": "1.1-23", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "ad24d1fd9ed431543f4633bb083e194a" + }, + "lmtest": { + "Package": "lmtest", + "Version": "0.9-38", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b0edacc02f7a3dad41a1afc385e929f4" + }, + "locfit": { + "Package": "locfit", + "Version": "1.5-9.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "760b5b542e8435237d1b3c253bfe18e7" + }, + "lubridate": { + "Package": "lubridate", + "Version": "1.7.9.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5b5b02f621d39a499def7923a5aee746" + }, + "magrittr": { + "Package": "magrittr", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "41287f1ac7d28a92f0a286ed507928d3" + }, + "maptools": { + "Package": "maptools", + "Version": "1.0-2", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "1cb5cb7bbab76318944e3794ff2512ae" + }, + "markdown": { + "Package": "markdown", + "Version": "1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "61e4a10781dd00d7d81dd06ca9b94e95" + }, + "matrixStats": { + "Package": "matrixStats", + "Version": "0.58.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c318d148056e5bb8d7de79b0876f9ae6" + }, + "memoise": { + "Package": "memoise", + "Version": "2.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a0bc51650201a56d00a4798523cc91b3" + }, + "mgcv": { + "Package": "mgcv", + "Version": "1.8-33", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "eb7b6439bc6d812eed2cddba5edc6be3" + }, + "mime": { + "Package": "mime", + "Version": "0.9", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e87a35ec73b157552814869f45a63aa3" + }, + "miniUI": { + "Package": "miniUI", + "Version": "0.1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fec5f52652d60615fdb3957b3d74324a" + }, + "minqa": { + "Package": "minqa", + "Version": "1.2.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "eaee7d2a6f3ed4491df868611cb064cc" + }, + "mixtools": { + "Package": "mixtools", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "4999c07351f4c5e2f323c1d6e88652b9" + }, + "modeldata": { + "Package": "modeldata", + "Version": "0.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9ff91d86290b17774fdc7dc490e2298d" + }, + "modelr": { + "Package": "modelr", + "Version": "0.1.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9fd59716311ee82cba83dc2826fc5577" + }, + "monocle3": { + "Package": "monocle3", + "Version": "0.2.3.0", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteUsername": "cole-trapnell-lab", + "RemoteRepo": "monocle3", + "RemoteRef": "master", + "RemoteSha": "4c01d892a12dd4f2657b8ce4b19cdf6dbe218592", + "Hash": "f782480ba2ee5d71a192179822c53c9e" + }, + "munsell": { + "Package": "munsell", + "Version": "0.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6dfe8bf774944bd5595785e3229d8771" + }, + "mvtnorm": { + "Package": "mvtnorm", + "Version": "1.1-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "69fa7331e7410c2a2cb3f9868513904f" + }, + "ncdf4": { + "Package": "ncdf4", + "Version": "1.17", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "5c1c0231b12b3d54cf619a3e5e36d229" + }, + "nlme": { + "Package": "nlme", + "Version": "3.1-149", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "7c24ab3a1e3afe50388eb2d893aab255" + }, + "nloptr": { + "Package": "nloptr", + "Version": "1.2.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2737faeee353704efec5afa1e943dd64" + }, + "nnet": { + "Package": "nnet", + "Version": "7.3-14", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0d87e50e11394a7151a28873637d799a" + }, + "nnls": { + "Package": "nnls", + "Version": "1.4", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "e451f3c2946bae5c3e5b8d63f09d186e" + }, + "openssl": { + "Package": "openssl", + "Version": "1.4.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a399e4773075fc2375b71f45fca186c4" + }, + "openxlsx": { + "Package": "openxlsx", + "Version": "4.2.2", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "406db947a3721d059635aaa04e6d051a" + }, + "parallelly": { + "Package": "parallelly", + "Version": "1.23.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2f841d7915986a8fd995ab4ec105dd1b" + }, + "patchwork": { + "Package": "patchwork", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c446b30cb33ec125ff02588b60660ccb" + }, + "pbapply": { + "Package": "pbapply", + "Version": "1.4-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "52f8028b028076bc3b7ee5d6251abf0d" + }, + "pbkrtest": { + "Package": "pbkrtest", + "Version": "0.4-8.6", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "d547eab65958fc4f5d68ad0adfacfcf4" + }, + "pbmcapply": { + "Package": "pbmcapply", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4332529a23c4995d743ef489be54a839" + }, + "pcaPP": { + "Package": "pcaPP", + "Version": "1.9-73", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "90f84270f5af583cefeb978d12d121a7" + }, + "pheatmap": { + "Package": "pheatmap", + "Version": "1.0.12", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "db1fb0021811b6693741325bbe916e58" + }, + "pillar": { + "Package": "pillar", + "Version": "1.4.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3b3dd89b2ee115a8b54e93a34cd546b4" + }, + "pkgbuild": { + "Package": "pkgbuild", + "Version": "1.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "725fcc30222d4d11ec68efb8ff11a9af" + }, + "pkgconfig": { + "Package": "pkgconfig", + "Version": "2.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "01f28d4278f15c76cddbea05899c5d6f" + }, + "pkgload": { + "Package": "pkgload", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b6b150cd4709e0c0c9b5d51ac4376282" + }, + "plogr": { + "Package": "plogr", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "09eb987710984fc2905c7129c7d85e65" + }, + "plotly": { + "Package": "plotly", + "Version": "4.9.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6b85d9e4ed88074ea0ede1aa74bb00e" + }, + "plyr": { + "Package": "plyr", + "Version": "1.8.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ec0e5ab4e5f851f6ef32cd1d1984957f" + }, + "png": { + "Package": "png", + "Version": "0.1-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "03b7076c234cb3331288919983326c55" + }, + "polyclip": { + "Package": "polyclip", + "Version": "1.10-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cb167f328b3ada4ec5cf67a7df4c900a" + }, + "polynom": { + "Package": "polynom", + "Version": "1.4-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c396592ecfe9e75cee1013533efafe34" + }, + "praise": { + "Package": "praise", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a555924add98c99d2f411e37e7d25e9f" + }, + "prettyunits": { + "Package": "prettyunits", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "95ef9167b75dde9d2ccc3c7528393e7e" + }, + "processx": { + "Package": "processx", + "Version": "3.4.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "22aab6098cb14edd0a5973a8438b569b" + }, + "progress": { + "Package": "progress", + "Version": "1.2.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "14dc9f7a3c91ebb14ec5bb9208a07061" + }, + "promises": { + "Package": "promises", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a8730dcbdd19f9047774909f0ec214a4" + }, + "proxy": { + "Package": "proxy", + "Version": "0.4-24", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5967020649b83afda47a18198c0e02e2" + }, + "ps": { + "Package": "ps", + "Version": "1.5.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ebaed51a03411fd5cfc1e12d9079b353" + }, + "pscl": { + "Package": "pscl", + "Version": "1.5.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c55158537b8c4754a8c3de3382f1a659" + }, + "purrr": { + "Package": "purrr", + "Version": "0.3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "97def703420c8ab10d8f0e6c72101e02" + }, + "quantreg": { + "Package": "quantreg", + "Version": "5.73", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "4a1f966bab2298dce07d4d1471e977a1" + }, + "rappdirs": { + "Package": "rappdirs", + "Version": "0.3.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5e3c5dc0b071b21fa128676560dbe94d" + }, + "raster": { + "Package": "raster", + "Version": "3.4-5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a3ded548110163cf499d63c3932dd499" + }, + "readr": { + "Package": "readr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2639976851f71f330264a9c9c3d43a61" + }, + "readxl": { + "Package": "readxl", + "Version": "1.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "63537c483c2dbec8d9e3183b3735254a" + }, + "rematch": { + "Package": "rematch", + "Version": "1.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c66b930d20bb6d858cd18e1cebcfae5c" + }, + "rematch2": { + "Package": "rematch2", + "Version": "2.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "76c9e04c712a05848ae7a23d2f170a40" + }, + "renv": { + "Package": "renv", + "Version": "0.12.0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "7340c71f46a0fd16506cfa804e224e44" + }, + "reprex": { + "Package": "reprex", + "Version": "1.0.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "cb4d6f77f163b8d685833f2a59e7cb4c" + }, + "reshape2": { + "Package": "reshape2", + "Version": "1.4.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bb5996d0bd962d214a11140d77589917" + }, + "reticulate": { + "Package": "reticulate", + "Version": "1.18", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "fbd35cac6ae7554d0e4f440bca1adf3a" + }, + "rhdf5": { + "Package": "rhdf5", + "Version": "2.34.0", + "Source": "Bioconductor", + "Hash": "bf25b880f72c8b6dcbd8719b5ac9113b" + }, + "rhdf5filters": { + "Package": "rhdf5filters", + "Version": "1.2.0", + "Source": "Bioconductor", + "Hash": "9dee5e2185e9a498c7d910f6b3f33150" + }, + "rio": { + "Package": "rio", + "Version": "0.5.16", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "4a9aecbe83639be364de13ffe0671bcf" + }, + "rlang": { + "Package": "rlang", + "Version": "0.4.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "599df23c40a4fce9c7b4764f28c37857" + }, + "rmarkdown": { + "Package": "rmarkdown", + "Version": "2.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bc4bac38960b446c183957bfd563e763" + }, + "robustbase": { + "Package": "robustbase", + "Version": "0.93-6", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "241454e22c9d26b11669b78d06706b41" + }, + "rpart": { + "Package": "rpart", + "Version": "4.1-15", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9787c1fcb680e655d062e7611cadf78e" + }, + "rprojroot": { + "Package": "rprojroot", + "Version": "2.0.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "249d8cd1e74a8f6a26194a91b47f21d1" + }, + "rsample": { + "Package": "rsample", + "Version": "0.0.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a05b5f1136fb3e22efe51e85369c041c" + }, + "rstatix": { + "Package": "rstatix", + "Version": "0.6.0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "7eb4d25cb9f8183f0c9e19704a3cf681" + }, + "rstudioapi": { + "Package": "rstudioapi", + "Version": "0.13", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "06c85365a03fdaf699966cc1d3cf53ea" + }, + "rsvd": { + "Package": "rsvd", + "Version": "1.0.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3a6b30449282b6a4b19ce267142c3299" + }, + "rvest": { + "Package": "rvest", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a9795ccb2d608330e841998b67156764" + }, + "sass": { + "Package": "sass", + "Version": "0.3.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3ef1adfe46b7b144b970d74ce33ab0d6" + }, + "scales": { + "Package": "scales", + "Version": "1.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f76f71042411426ec8df6c54f34e6dd" + }, + "scattermore": { + "Package": "scattermore", + "Version": "0.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "373eb417aadd7c7f35861953f3fe3deb" + }, + "scran": { + "Package": "scran", + "Version": "1.18.5", + "Source": "Bioconductor", + "Hash": "3f935129e59f4cf0bb588ee776a0a570" + }, + "sctransform": { + "Package": "sctransform", + "Version": "0.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f6423b883393222fb5c022799374ccec" + }, + "scuttle": { + "Package": "scuttle", + "Version": "1.0.4", + "Source": "Bioconductor", + "Hash": "82d75cd0746bda36735f10a0087e171c" + }, + "segmented": { + "Package": "segmented", + "Version": "1.2-0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "6c68f376126e3b086978bda4727a96a3" + }, + "selectr": { + "Package": "selectr", + "Version": "0.4-2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3838071b66e0c566d55cc26bd6e27bf4" + }, + "sf": { + "Package": "sf", + "Version": "0.9-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9d6831c4c002137d99be6b946ac9da07" + }, + "shiny": { + "Package": "shiny", + "Version": "1.6.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6e3b6ae7fe02b5859e4bb277f218b8ae" + }, + "sitmo": { + "Package": "sitmo", + "Version": "2.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0f9ba299f2385e686745b066c6d7a7c4" + }, + "slam": { + "Package": "slam", + "Version": "0.1-48", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "1ab2028f9597732e853f85b9b7ee0090" + }, + "slider": { + "Package": "slider", + "Version": "0.1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ac1eb08941cacd8ff16f0041ca60a3de" + }, + "snow": { + "Package": "snow", + "Version": "0.4-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "11b822ad6214111a4188d5e5fd1b144c" + }, + "sourcetools": { + "Package": "sourcetools", + "Version": "0.1.7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "947e4e02a79effa5d512473e10f41797" + }, + "sp": { + "Package": "sp", + "Version": "1.4-5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "dfd843ee98246cf932823acf613b05dd" + }, + "spData": { + "Package": "spData", + "Version": "0.3.8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "be5fc9cc13487505381071422d8346e2" + }, + "sparseMatrixStats": { + "Package": "sparseMatrixStats", + "Version": "1.2.1", + "Source": "Bioconductor", + "Hash": "1841edbaa151c369bd671a1b61bad097" + }, + "spatstat": { + "Package": "spatstat", + "Version": "1.64-1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bf01485c922fd3bb6af165b9304539dd" + }, + "spatstat.data": { + "Package": "spatstat.data", + "Version": "1.7-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9f4d949b77a7f40299c7969fbf39ea1c" + }, + "spatstat.utils": { + "Package": "spatstat.utils", + "Version": "2.0-0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "8bda137ccec577888f478735987221ec" + }, + "spdep": { + "Package": "spdep", + "Version": "1.1-5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "e220c93e8a62be165fb5b56983ca2339" + }, + "speedglm": { + "Package": "speedglm", + "Version": "0.3-3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5955a9bd4ed0275ad45596a49d75946f" + }, + "statmod": { + "Package": "statmod", + "Version": "1.4.35", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "53c27113461e8abbe2dc7125e22b2a39" + }, + "stringi": { + "Package": "stringi", + "Version": "1.5.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a063ebea753c92910a4cca7b18bc1f05" + }, + "stringr": { + "Package": "stringr", + "Version": "1.4.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "0759e6b6c0957edb1311028a49a35e76" + }, + "survival": { + "Package": "survival", + "Version": "3.2-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "39c4ac6d22dad33db0ee37b40810ea12" + }, + "sva": { + "Package": "sva", + "Version": "3.38.0", + "Source": "Bioconductor", + "Hash": "e8ceff9fff082fd05284ccb6d4769ec2" + }, + "sys": { + "Package": "sys", + "Version": "3.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b227d13e29222b4574486cfcbde077fa" + }, + "tensor": { + "Package": "tensor", + "Version": "1.5", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "25cfab6cf405c15bccf7e69ec39df090" + }, + "testthat": { + "Package": "testthat", + "Version": "3.0.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "17826764cb92d8b5aae6619896e5a161" + }, + "tibble": { + "Package": "tibble", + "Version": "3.0.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "9c6c10e594f32096ede0c7d373ccbddd" + }, + "tidyr": { + "Package": "tidyr", + "Version": "1.1.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c40b2d5824d829190f4b825f4496dfae" + }, + "tidyselect": { + "Package": "tidyselect", + "Version": "1.1.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6ea435c354e8448819627cf686f66e0a" + }, + "tidyverse": { + "Package": "tidyverse", + "Version": "1.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "bd51be662f359fa99021f3d51e911490" + }, + "tinytex": { + "Package": "tinytex", + "Version": "0.29", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "f0b0ba735febac9a8344253ae6fa93f5" + }, + "umap": { + "Package": "umap", + "Version": "0.2.6.0", + "Source": "Repository", + "Repository": "RSPM", + "Hash": "983cb4768da0badfe4e2ebdba39d45b7" + }, + "units": { + "Package": "units", + "Version": "0.6-7", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a3df844d6d35ca2ba2b7ba95446b955" + }, + "utf8": { + "Package": "utf8", + "Version": "1.1.4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "4a5081acfb7b81a572e4384a7aaf2af1" + }, + "uwot": { + "Package": "uwot", + "Version": "0.1.10", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "a9737c75f5f949695617b05e78281b2f" + }, + "vctrs": { + "Package": "vctrs", + "Version": "0.3.6", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "5cf1957f93076c19fdc81d01409d240b" + }, + "viridis": { + "Package": "viridis", + "Version": "0.5.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "6f6b49e5b3b5ee5a6d0c28bf1b4b9eb3" + }, + "viridisLite": { + "Package": "viridisLite", + "Version": "0.3.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "ce4f6271baa94776db692f1cb2055bee" + }, + "waldo": { + "Package": "waldo", + "Version": "0.2.3", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "181d1a31b1ba2009ef20926f2ee0570c" + }, + "warp": { + "Package": "warp", + "Version": "0.2.0", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2982481615756e24e79fee95bdc95daa" + }, + "withr": { + "Package": "withr", + "Version": "2.4.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "caf4781c674ffa549a4676d2d77b13cc" + }, + "xfun": { + "Package": "xfun", + "Version": "0.20", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d7222684dc02327871e3b1da0aba7089" + }, + "xml2": { + "Package": "xml2", + "Version": "1.3.2", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "d4d71a75dd3ea9eb5fa28cc21f9585e2" + }, + "xtable": { + "Package": "xtable", + "Version": "1.8-4", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "b8acdf8af494d9ec19ccb2481a9b11c2" + }, + "yaml": { + "Package": "yaml", + "Version": "2.2.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "2826c5d9efb0a88f657c7a679c7106db" + }, + "zip": { + "Package": "zip", + "Version": "2.1.1", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "3bc8405c637d988801ec5ea88372d0c2" + }, + "zlibbioc": { + "Package": "zlibbioc", + "Version": "1.36.0", + "Source": "Bioconductor", + "Hash": "effcbe90f6986ca6f81ce4d67db7238b" + }, + "zoo": { + "Package": "zoo", + "Version": "1.8-8", + "Source": "Repository", + "Repository": "CRAN", + "Hash": "c2ea03282caa1f6972dc84fc5bf671cc" } } } diff --git a/tests/testthat/test_pkgref.R b/tests/testthat/test_pkgref.R index c100da0..42dc676 100644 --- a/tests/testthat/test_pkgref.R +++ b/tests/testthat/test_pkgref.R @@ -94,5 +94,11 @@ test_that("as_pkgrefs_packageDescription", { test_that("as_pkgrefs renv_lockfile", { res <- as_pkgrefs("../testdata/renv.lock") - expect_equal(res, c("cran::rtoot", "bioc::BiocGenerics", "github::schochastics/levelnet")) -}) \ No newline at end of file + expect_equal(res, readRDS("../testdata/bioc_renv.RDS")) +}) + +test_that(".detect_renv_lockfile false",{ + expect_false(.detect_renv_lockfile("./testdata/graph.RDS")) + expect_false(.detect_renv_lockfile(c("../testdata/graph.RDS", "../testdata/renv.lock"))) + expect_false(.detect_renv_lockfile("../testdata/fake_renv.lock")) +}) diff --git a/tests/testthat/test_resolve.R b/tests/testthat/test_resolve.R index ddb6918..9546dd2 100644 --- a/tests/testthat/test_resolve.R +++ b/tests/testthat/test_resolve.R @@ -240,3 +240,9 @@ test_that("issue 89", { expect_error(dockerize(x, output_dir = temp_dir, cache = TRUE, verbose = FALSE), NA) expect_true(file.exists(file.path(temp_dir, "cache", "GenomeInfoDbData_1.2.9.tar.gz"))) }) + +test_that("integration of renv to resolve", { + skip_if_offline() + skip_on_cran() + expect_error(X <- resolve("../testdata/renv.lock", snapshot_date = "2023-01-01"), NA) +}) \ No newline at end of file