From d3b2a8481fefb84a4c437626a1715d7911395cde Mon Sep 17 00:00:00 2001 From: Eric Scott Date: Tue, 1 Oct 2024 17:00:19 -0700 Subject: [PATCH 1/3] update all packages --- _targets_packages.R | 2 +- renv.lock | 212 ++++++++++---------------------------------- renv/activate.R | 105 ++++++++++++++++++++-- 3 files changed, 144 insertions(+), 175 deletions(-) diff --git a/_targets_packages.R b/_targets_packages.R index cb2b0d4..1ee6bf6 100644 --- a/_targets_packages.R +++ b/_targets_packages.R @@ -1,5 +1,5 @@ # Generated by targets::tar_renv(): do not edit by hand -library(bs4Dash) +library(bslib) library(crew) library(gt) library(markdown) diff --git a/renv.lock b/renv.lock index bd053df..15c4f35 100644 --- a/renv.lock +++ b/renv.lock @@ -9,13 +9,6 @@ ] }, "Packages": { - "BH": { - "Package": "BH", - "Version": "1.84.0-0", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "a8235afbcd6316e6e91433ea47661013" - }, "Matrix": { "Package": "Matrix", "Version": "1.6-5", @@ -66,7 +59,7 @@ }, "V8": { "Package": "V8", - "Version": "4.4.2", + "Version": "5.0.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -75,29 +68,7 @@ "jsonlite", "utils" ], - "Hash": "ca98390ad1cef2a5a609597b49d3d042" - }, - "anytime": { - "Package": "anytime", - "Version": "0.3.9", - "Source": "Repository", - "Repository": "RSPM", - "Requirements": [ - "BH", - "R", - "Rcpp" - ], - "Hash": "74a64813f17b492da9c6afda6b128e3d" - }, - "askpass": { - "Package": "askpass", - "Version": "1.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "sys" - ], - "Hash": "cad6cf7f1d5f6e906700b9d3e718c796" + "Hash": "7f3867df00a91c63089beb85b9ef0208" }, "backports": { "Package": "backports", @@ -141,32 +112,14 @@ }, "bitops": { "Package": "bitops", - "Version": "1.0-7", + "Version": "1.0-8", "Source": "Repository", "Repository": "CRAN", - "Hash": "b7d8d8ee39869c18d8846a184dd8a1af" - }, - "bs4Dash": { - "Package": "bs4Dash", - "Version": "2.3.3", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "bslib", - "fresh", - "htmltools", - "httpuv", - "httr", - "jsonlite", - "lifecycle", - "shiny", - "waiter" - ], - "Hash": "9d3c4c0f9022322dbad0b3a68b86e81b" + "Hash": "da69e6b6f8feebec0827205aad3fdbd8" }, "bslib": { "Package": "bslib", - "Version": "0.7.0", + "Version": "0.8.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -184,18 +137,18 @@ "rlang", "sass" ], - "Hash": "8644cc53f43828f19133548195d7e59e" + "Hash": "b299c6741ca9746fb227debcb0f9fb6c" }, "cachem": { "Package": "cachem", - "Version": "1.0.8", + "Version": "1.1.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "fastmap", "rlang" ], - "Hash": "c35768291560ce302c0a6589f92e837d" + "Hash": "cd9a672193789068eb5a2aad65a0dedf" }, "callr": { "Package": "callr", @@ -233,7 +186,7 @@ }, "colorspace": { "Package": "colorspace", - "Version": "2.1-0", + "Version": "2.1-1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -243,7 +196,7 @@ "methods", "stats" ], - "Hash": "f20c47fd52fae58b4e377c37bb8c335b" + "Hash": "d954cb1c57e8d8b756165d7ba18aa55a" }, "commonmark": { "Package": "commonmark", @@ -264,7 +217,7 @@ }, "crayon": { "Package": "crayon", - "Version": "1.5.2", + "Version": "1.5.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -272,7 +225,7 @@ "methods", "utils" ], - "Hash": "e8a1e41acf02548751f45c718d55aa6a" + "Hash": "859d96e65ef198fd43e82b9628d593ef" }, "crew": { "Package": "crew", @@ -321,13 +274,13 @@ }, "curl": { "Package": "curl", - "Version": "5.2.1", + "Version": "5.2.3", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "411ca2c03b1ce5f548345d2fc2685f7a" + "Hash": "d91263322a58af798f6cf3b13fd56dde" }, "data.table": { "Package": "data.table", @@ -342,14 +295,14 @@ }, "digest": { "Package": "digest", - "Version": "0.6.35", + "Version": "0.6.37", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "698ece7ba5a4fa4559e3d537e7ec3d31" + "Hash": "33698c4b3127fc9f506654607fb73676" }, "dplyr": { "Package": "dplyr", @@ -374,27 +327,15 @@ ], "Hash": "fedd9d00c2944ff00a0e2696ccf048ec" }, - "ellipsis": { - "Package": "ellipsis", - "Version": "0.3.2", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "rlang" - ], - "Hash": "bb0eec2fe32e88d9e2836c2f73ea2077" - }, "evaluate": { "Package": "evaluate", - "Version": "0.24.0", + "Version": "1.0.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ - "R", - "methods" + "R" ], - "Hash": "a1066cbc05caee9a4bf6d90f194ff4da" + "Hash": "6b567375113ceb7d9f800de4dd42218e" }, "fansi": { "Package": "fansi", @@ -410,10 +351,10 @@ }, "farver": { "Package": "farver", - "Version": "2.1.1", + "Version": "2.1.2", "Source": "Repository", "Repository": "CRAN", - "Hash": "8106d78941f34855c440ddb946b8f7a5" + "Hash": "680887028577f3fa2a81e410ed0d6e42" }, "fastmap": { "Package": "fastmap", @@ -434,19 +375,6 @@ ], "Hash": "c2efdd5f0bcd1ea861c2d4e2a883a67d" }, - "fresh": { - "Package": "fresh", - "Version": "0.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "htmltools", - "rstudioapi", - "sass", - "shiny" - ], - "Hash": "fa54367040deb4537da49b7ac0ee5770" - }, "fs": { "Package": "fs", "Version": "1.6.4", @@ -481,18 +409,18 @@ }, "glue": { "Package": "glue", - "Version": "1.7.0", + "Version": "1.8.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "e0b3a53876554bd45879e596cdb10a52" + "Hash": "5899f1eaa825580172bb56c08266f37c" }, "gt": { "Package": "gt", - "Version": "0.10.1", + "Version": "0.11.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -518,7 +446,7 @@ "vctrs", "xml2" ], - "Hash": "03009c105dfae79460b8eb9d8cf791e4" + "Hash": "3470c2eb1123db6a2c54ec812de38284" }, "highr": { "Package": "highr", @@ -577,21 +505,6 @@ ], "Hash": "d55aa087c47a63ead0f6fc10f8fa1ee0" }, - "httr": { - "Package": "httr", - "Version": "1.4.7", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R", - "R6", - "curl", - "jsonlite", - "mime", - "openssl" - ], - "Hash": "ac107251d9d9fd72f0ca8049988f1d7f" - }, "igraph": { "Package": "igraph", "Version": "2.0.3", @@ -627,13 +540,13 @@ }, "jsonlite": { "Package": "jsonlite", - "Version": "1.8.8", + "Version": "1.8.9", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "methods" ], - "Hash": "e1b9c55281c5adc4dd113652d9e26768" + "Hash": "4e993b65c2c3ffbffce7bb3e2c6f832b" }, "juicyjuice": { "Package": "juicyjuice", @@ -723,7 +636,7 @@ }, "markdown": { "Package": "markdown", - "Version": "1.12", + "Version": "1.13", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -732,7 +645,7 @@ "utils", "xfun" ], - "Hash": "765cf53992401b3b6c297b69e1edb8bd" + "Hash": "074efab766a9d6360865ad39512f2a7e" }, "memoise": { "Package": "memoise", @@ -787,16 +700,6 @@ ], "Hash": "c601dd0bd16c37df416cab6c47512815" }, - "openssl": { - "Package": "openssl", - "Version": "2.2.0", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "askpass" - ], - "Hash": "2bcca3848e4734eb3b16103bc9aa4b8e" - }, "pillar": { "Package": "pillar", "Version": "1.9.0", @@ -867,14 +770,14 @@ }, "ps": { "Package": "ps", - "Version": "1.7.7", + "Version": "1.8.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "878b467580097e9c383acbb16adab57a" + "Hash": "4b9c8485b0c7eecdf0a9ba5132a45576" }, "rappdirs": { "Package": "rappdirs", @@ -888,13 +791,13 @@ }, "reactR": { "Package": "reactR", - "Version": "0.5.0", + "Version": "0.6.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "htmltools" ], - "Hash": "c9014fd1a435b2d790dd506589cb24e5" + "Hash": "b8e3d93f508045812f47136c7c44c251" }, "reactable": { "Package": "reactable", @@ -913,13 +816,13 @@ }, "renv": { "Package": "renv", - "Version": "1.0.7", + "Version": "1.0.9", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "utils" ], - "Hash": "397b7b2a265bc5a7a06852524dabae20" + "Hash": "ef233f0e9064fc88c898b340c9add5c2" }, "rlang": { "Package": "rlang", @@ -934,7 +837,7 @@ }, "rmarkdown": { "Package": "rmarkdown", - "Version": "2.26", + "Version": "2.28", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -953,14 +856,14 @@ "xfun", "yaml" ], - "Hash": "9b148e7f95d33aac01f31282d49e4f44" + "Hash": "062470668513dcda416927085ee9bdc7" }, "rstudioapi": { "Package": "rstudioapi", - "Version": "0.15.0", + "Version": "0.16.0", "Source": "Repository", "Repository": "CRAN", - "Hash": "5564500e25cffad9e22244ced1379887" + "Hash": "96710351d642b70e8f02ddeb237c46a7" }, "sass": { "Package": "sass", @@ -1008,7 +911,7 @@ }, "shiny": { "Package": "shiny", - "Version": "1.8.0", + "Version": "1.9.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1018,7 +921,6 @@ "cachem", "commonmark", "crayon", - "ellipsis", "fastmap", "fontawesome", "glue", @@ -1038,16 +940,15 @@ "withr", "xtable" ], - "Hash": "3a1f41807d648a908e3c7f0334bf85e6" + "Hash": "6a293995a66e12c48d13aa1f957d09c7" }, "shinyWidgets": { "Package": "shinyWidgets", - "Version": "0.8.1", + "Version": "0.8.7", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", - "anytime", "bslib", "grDevices", "htmltools", @@ -1056,7 +957,7 @@ "sass", "shiny" ], - "Hash": "96bb249d21b7473dbeb0311702ef5288" + "Hash": "fd8239886f70daa85c36596214958451" }, "shinybusy": { "Package": "shinybusy", @@ -1081,16 +982,9 @@ ], "Hash": "5f5a7629f956619d519205ec475fe647" }, - "sys": { - "Package": "sys", - "Version": "3.4.2", - "Source": "Repository", - "Repository": "CRAN", - "Hash": "3a1be13d68d47a8cd0bfd74739ca1555" - }, "tarchetypes": { "Package": "tarchetypes", - "Version": "0.9.0", + "Version": "0.10.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1107,7 +1001,7 @@ "vctrs", "withr" ], - "Hash": "094a74cdaa048b727d52aebf4c80ed7a" + "Hash": "554afb784cbe615ae628dfed026cf77f" }, "targets": { "Package": "targets", @@ -1174,13 +1068,13 @@ }, "tinytex": { "Package": "tinytex", - "Version": "0.50", + "Version": "0.53", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "xfun" ], - "Hash": "be7a76845222ad20adb761f462eed3ea" + "Hash": "9db859e8aabbb474293dde3097839420" }, "utf8": { "Package": "utf8", @@ -1234,18 +1128,6 @@ ], "Hash": "3e48b097e8d9a91ecced2ed4817a678d" }, - "waiter": { - "Package": "waiter", - "Version": "0.2.5", - "Source": "Repository", - "Repository": "CRAN", - "Requirements": [ - "R6", - "htmltools", - "shiny" - ], - "Hash": "93e6b6c8ae3f81d4be77a0dc74e5cf5e" - }, "withr": { "Package": "withr", "Version": "3.0.1", diff --git a/renv/activate.R b/renv/activate.R index d13f993..c360bf2 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -2,7 +2,7 @@ local({ # the requested version of renv - version <- "1.0.7" + version <- "1.0.9" attr(version, "sha") <- NULL # the project directory @@ -98,6 +98,66 @@ local({ unloadNamespace("renv") # load bootstrap tools + ansify <- function(text) { + if (renv_ansify_enabled()) + renv_ansify_enhanced(text) + else + renv_ansify_default(text) + } + + renv_ansify_enabled <- function() { + + override <- Sys.getenv("RENV_ANSIFY_ENABLED", unset = NA) + if (!is.na(override)) + return(as.logical(override)) + + pane <- Sys.getenv("RSTUDIO_CHILD_PROCESS_PANE", unset = NA) + if (identical(pane, "build")) + return(FALSE) + + testthat <- Sys.getenv("TESTTHAT", unset = "false") + if (tolower(testthat) %in% "true") + return(FALSE) + + iderun <- Sys.getenv("R_CLI_HAS_HYPERLINK_IDE_RUN", unset = "false") + if (tolower(iderun) %in% "false") + return(FALSE) + + TRUE + + } + + renv_ansify_default <- function(text) { + text + } + + renv_ansify_enhanced <- function(text) { + + # R help links + pattern <- "`\\?(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:help:\\1\a?\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # runnable code + pattern <- "`(renv::(?:[^`])+)`" + replacement <- "`\033]8;;ide:run:\\1\a\\1\033]8;;\a`" + text <- gsub(pattern, replacement, text, perl = TRUE) + + # return ansified text + text + + } + + renv_ansify_init <- function() { + + envir <- renv_envir_self() + if (renv_ansify_enabled()) + assign("ansify", renv_ansify_enhanced, envir = envir) + else + assign("ansify", renv_ansify_default, envir = envir) + + } + `%||%` <- function(x, y) { if (is.null(x)) y else x } @@ -142,7 +202,10 @@ local({ # compute common indent indent <- regexpr("[^[:space:]]", lines) common <- min(setdiff(indent, -1L)) - leave - paste(substring(lines, common), collapse = "\n") + text <- paste(substring(lines, common), collapse = "\n") + + # substitute in ANSI links for executable renv code + ansify(text) } @@ -306,7 +369,11 @@ local({ ) if ("headers" %in% names(formals(utils::download.file))) - args$headers <- renv_bootstrap_download_custom_headers(url) + { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } do.call(utils::download.file, args) @@ -385,10 +452,22 @@ local({ for (type in types) { for (repos in renv_bootstrap_repos()) { + # build arguments for utils::available.packages() call + args <- list(type = type, repos = repos) + + # add custom headers if available -- note that + # utils::available.packages() will pass this to download.file() + if ("headers" %in% names(formals(utils::download.file))) + { + headers <- renv_bootstrap_download_custom_headers(url) + if (length(headers) && is.character(headers)) + args$headers <- headers + } + # retrieve package database db <- tryCatch( as.data.frame( - utils::available.packages(type = type, repos = repos), + do.call(utils::available.packages, args), stringsAsFactors = FALSE ), error = identity @@ -470,6 +549,14 @@ local({ } + renv_bootstrap_github_token <- function() { + for (envvar in c("GITHUB_TOKEN", "GITHUB_PAT", "GH_TOKEN")) { + envval <- Sys.getenv(envvar, unset = NA) + if (!is.na(envval)) + return(envval) + } + } + renv_bootstrap_download_github <- function(version) { enabled <- Sys.getenv("RENV_BOOTSTRAP_FROM_GITHUB", unset = "TRUE") @@ -477,16 +564,16 @@ local({ return(FALSE) # prepare download options - pat <- Sys.getenv("GITHUB_PAT") - if (nzchar(Sys.which("curl")) && nzchar(pat)) { + token <- renv_bootstrap_github_token() + if (nzchar(Sys.which("curl")) && nzchar(token)) { fmt <- "--location --fail --header \"Authorization: token %s\"" - extra <- sprintf(fmt, pat) + extra <- sprintf(fmt, token) saved <- options("download.file.method", "download.file.extra") options(download.file.method = "curl", download.file.extra = extra) on.exit(do.call(base::options, saved), add = TRUE) - } else if (nzchar(Sys.which("wget")) && nzchar(pat)) { + } else if (nzchar(Sys.which("wget")) && nzchar(token)) { fmt <- "--header=\"Authorization: token %s\"" - extra <- sprintf(fmt, pat) + extra <- sprintf(fmt, token) saved <- options("download.file.method", "download.file.extra") options(download.file.method = "wget", download.file.extra = extra) on.exit(do.call(base::options, saved), add = TRUE) From c4179705ebaec84a9857bdf60ad5d5465950cd5a Mon Sep 17 00:00:00 2001 From: Eric Scott Date: Tue, 1 Oct 2024 17:24:16 -0700 Subject: [PATCH 2/3] switch setup instructions to focus on OOD --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index be51054..7c80389 100644 --- a/README.md +++ b/README.md @@ -15,26 +15,27 @@ It also makes parallelization relatively easy by allowing you to define each tar - [A UA HPC account](https://uarizona.atlassian.net/wiki/spaces/UAHPC/pages/75990889/Account+Creation) - Some familiarity with R, RStudio, the [`renv` pacakge](https://rstudio.github.io/renv/articles/renv.html), and the [`targets` package](https://books.ropensci.org/targets/) - A GitHub account +- Some familiarity with creating new RStudio projects from git— is a great place to get started ## To set-up: -To get this bare-bones pipeline running on the HPC: +### Overview -1. Click the “Use this template” button to create a repo under your own GitHub user name. -2. Modify the HPC group name in `_targets.R` and in `run.sh` to be your PI group. -3. [SSH into the UA HPC](https://uarizona.atlassian.net/wiki/spaces/UAHPC/pages/75990560/System+Access). -4. Clone this repo on the HPC, e.g. with `git clone https://github.com/your-user-name/targets-uahpc.git`. -5. Start an interactive session on the HPC, e.g. with `interactive -a ` . -6. Load R with `module load R`. -7. Launch R from within the `targets-uahpc/` directory with the `R` command -8. The [`renv` package](https://rstudio.github.io/renv/) should install itself. After it is done, you can install all necessary R packages by running `renv::restore()`. +Below are some step-by-step instructions to create a GitHub repo from this template, clone your repo to the HPC, install R packages with `renv`, modify some user-specific configuration, then run the workflow. +These instructions take advantage of the RStudio GUI you can get with Open OnDemand, but you can use the command line if you're familiar with it. + +1. On this page, click the “Use this template” button to create a repo under your own GitHub user name. +2. Start a new Open OnDemand RStudio session [here](https://ood.hpc.arizona.edu/pun/sys/dashboard/batch_connect/sys/UAz_rstudio/session_contexts/new) (you only need 1 core for this) +3. Once RStudio launches in your browser, create a new project from your GitHub repository (E.g. using the [RStudio new project wizard](https://happygitwithr.com/existing-github-first#rstudio-ide-1)). +4. The [`renv` package](https://rstudio.github.io/renv/) should install itself and prompt you to run `renv::restore()` to install all needed packages. +5. Modify the HPC group name in `_targets.R` and in `run.sh` to be your PI group. To modify the pipeline to run *your* code, you'll need to edit the list of targets in `_targets.R` as well as functions in the `R/` folder. See the [targets manual](https://books.ropensci.org/targets/) for more information. Note that use of the `renv` package for tracking dependencies isn't strictly necessary, but it does simplify package installation on the HPC. As you add R packages dependencies, you can use `targets::tar_renv()` to update the `_targets_packages.R` file and then `renv::snapshot()` to add them to `renv.lock`. -On the HPC, running `renv::restore()` not only installs any missing R packages, it also automatically detects system dependencies and lets you know if they aren't installed. +On the HPC, running `renv::restore()` not only installs any missing R packages, it also automatically detects system dependencies and lets you know if they aren't installed or loaded. ## Running the pipeline From b93ba3709b67b88f72d076c31261dcfe9a30d1de Mon Sep 17 00:00:00 2001 From: Eric Scott Date: Tue, 1 Oct 2024 17:30:53 -0700 Subject: [PATCH 3/3] add note about OOD not loading modules --- README.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7c80389..3566afd 100644 --- a/README.md +++ b/README.md @@ -21,11 +21,11 @@ It also makes parallelization relatively easy by allowing you to define each tar ### Overview -Below are some step-by-step instructions to create a GitHub repo from this template, clone your repo to the HPC, install R packages with `renv`, modify some user-specific configuration, then run the workflow. -These instructions take advantage of the RStudio GUI you can get with Open OnDemand, but you can use the command line if you're familiar with it. +Below are some step-by-step instructions to create a GitHub repo from this template, clone your repo to the HPC, install necessary R packages, and modify some user-specific configuration. +The set-up instructions take advantage of the RStudio GUI you can get with Open OnDemand, but you can use the command line if you're familiar with it. 1. On this page, click the “Use this template” button to create a repo under your own GitHub user name. -2. Start a new Open OnDemand RStudio session [here](https://ood.hpc.arizona.edu/pun/sys/dashboard/batch_connect/sys/UAz_rstudio/session_contexts/new) (you only need 1 core for this) +2. Start a new Open OnDemand RStudio session [here](https://ood.hpc.arizona.edu/pun/sys/dashboard/batch_connect/sys/UAz_rstudio/session_contexts/new) (you likely only need 1 or 2 cores for this) 3. Once RStudio launches in your browser, create a new project from your GitHub repository (E.g. using the [RStudio new project wizard](https://happygitwithr.com/existing-github-first#rstudio-ide-1)). 4. The [`renv` package](https://rstudio.github.io/renv/) should install itself and prompt you to run `renv::restore()` to install all needed packages. 5. Modify the HPC group name in `_targets.R` and in `run.sh` to be your PI group. @@ -55,6 +55,9 @@ menu and navigate to the .Rproj file for this project. Then, from the console, run `targets::tar_make()` optionally with the `as_job = TRUE` argument to run it as a background process. You can occasionally check the progress of the pipeline in a variety of ways including `targets::tar_visnetwork()`. +> [!NOTE] +> Open OnDemand doesn't support loading modules, so if your pipeline uses any R packages with system dependencies, you may not be able to use this method. + ### From R SSH into the HPC, navigate to this project, and request an interactive session with `interactive -a -t ` where you replace the groupname with your group name, and the time stamp with how ever long you think the pipeline will take to run.