R is a language and environment for statistical computing and graphics. It can be considered an open source decendant of the S language which was developed by Chambers and colleagues at Bell Laboratories in the 1970s.
R is highly extensible and provides a wide variety of modern statistical analysis methods combined with excellent graphical visualization capabilities embedded in a programming language that supports procedural, functuional, and object oriented programming styles. R natively provides operators for calculations on arrays and matrices.
While individual single threaded R code is not expected to run any faster in an interactive session on a compute node than it would run on a modern desktop, Biowulf allows users to run many R jobs concurrently or take advantage of the speedup provided by parallelizing R code to a much greater degree than possible on a single workstation.
On biowulf, R modules are available for the minor releases (e.g. 4.2) which will contain the newest patch level releases (e.g. 4.2.3).
$R_LIBS_USER
/data/$USER/R/rhel8/%v
with migration to RHEL8&&
or ||
with LHS or (if evaluated)
RHS of length greater than one is now always an error, with a report of the form
'length = 4' in coercion to 'logical(1)'
. R 4.2.0 introduced
a warning for this usage of conditional operators.&&
or ||
with either argument of length greater
than one now gives a warning (which it is intended will become
an error).stringsAsFactors = FALSE
as the defaultOMP_NUM_THREADS
or MKL_NUM_THREADS
environment variables which are set to 1 by the R wrappers because leaving this
variable unset can lead to R using as many threads as there are CPUs on a compute
node thus overloading jobs. If you know your code can make effective use of those
threads you can explicitly set OMP_NUM_THREADS
to greater than 1 after
loading the module. However, only a subset of code will be able to take advantage of
this - don't expect an automatic speed increase.
parallel::detectCores()
always detects all CPUs on a nodedetectCores()
function
from the parallel package to determine how many worker processes to use. However,
this function returns the number of physical CPUs on a compute node irrespective of
how many have been allocated to a job. Therefore, if not all CPUs are allocated to a job
the job will be overloaded and perform poorly. See the section on the
parallel package for more detail.
BiocParallel
by default tries to use most CPUs on a nodeBiocParallel
is not aware of slurm and by default tries to use most
of the CPUs on a node irrespetive of the slurm allocation. This can lead to overloaded
jobs. See the section on the
BiocParallel package for more information on how to avoid
this.
/data/R/rhel8/%v
(RHEL8) where %v
is the two
digit version of R (e.g. 4.1) or in the path set by $R_LIBS_USER
.
However, R won't always automatically create that directory and in
its absence will try to install to the central packge library which will fail. If you encounter
installation failures please make sure the library directory for your version of R exists.
No internet connection
setAnnotationHubOption("PROXY", Sys.getenv("http_proxy"))
or the corresponding setExperimentHubOption
function.
rlang
package. Look for errors that
include your private library path in the errors. All locally
installed package can be updated with
> my.lib <- .libPaths()[1] # check first that .libPaths()[1] is indeed the path to your library > my.pkgs <- list.files(my.lib) > library(pacman) > p_install(pkgs, character.only=T, lib=my.lib)An easy way to fix this error is also to delete the locally installed rlang with
$ rm -rf ~/R/4.2/library/rlang # replace 4.2 with the R major.minor version you are using
$ mkdir -p /data/$USER/R/rhel8/4.3/For example, for packages installed under R/4.2, you can re-install them by creating a list of installed libraries, find the ones that are not yet installed under data directory or not the same R version you are using, then re-install them with (please replace apptest with your username):
> packages<-installed.packages(lib.loc="/home/apptest/R/4.2/library")[,"Package"] > toInstall<-setdiff(packages,installed.packages(loc.lib="/data/apptest/R/rhel8/4.3/")[,"Package"]) > BiocManager::install(toInstall)
R will automatically use lscratch for temporary files if it has been allocated. Therefore we highly recommend users always allocate a minimal amount of lscratch of 1GB plus whatever lscratch storage is required by your code.
Allocate an interactive session for interactive R work. Note that R sessions are not allowed on the login node nor helix.
[user@biowulf]$ sinteractive --gres=lscratch:5 salloc.exe: Pending job allocation 46116226 salloc.exe: job 46116226 queued and waiting for resources salloc.exe: job 46116226 has been allocated resources salloc.exe: Granted job allocation 46116226 salloc.exe: Waiting for resource configuration salloc.exe: Nodes cn3144 are ready for job
There may be multiple versions of R available. An easy way of selecting the version is to use modules.To see the modules available, type
[user@cn3144 ~]$ module -r avail '^R$' --------------- /usr/local/lmod/modulefiles ------------------ R/3.4 R/3.4.3 R/3.4.4 R/3.5 (D) R/3.5.0 R/3.5.2
Set up your environment and start up an R session
[user@cn3144 ~]$ module load R/3.5 [user@cn3144 ~]$ R R version 3.5.0 (2018-04-23) -- "Joy in Playing" Copyright (C) 2018 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. Natural language support but running in an English locale R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > library(tidyverse) ── Attaching packages ─────────────────────────────────────── tidyverse 1.2.1 ── ✔ ggplot2 2.2.1 ✔ purrr 0.2.4 ✔ tibble 1.4.2 ✔ dplyr 0.7.4 ✔ tidyr 0.8.0 ✔ stringr 1.3.0 ✔ readr 1.1.1 ✔ forcats 0.3.0 ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ── ✖ dplyr::filter() masks stats::filter() ✖ dplyr::lag() masks stats::lag() > [...lots of work...] > q() Save workspace image? [y/n/c]: n
A rudimentary graphical interface is available if the sinteractive session was started from a session with X11 forwarding enabled:
[user@cn3144 ~]$ R --gui=Tk
However, RStudio is a much better interface with many advanced features.
Don't forget to exit the interactive session
[user@cn3144 ~]$ exit salloc.exe: Relinquishing job allocation 46116226 [user@biowulf ~]$
Packages installed in the current default R environment
Package | Version |
---|---|
spatial | 7.3-17 |
viridisLite | 0.4.2 |
urltools | 1.7.3 |
trapezoid | 2.0-2 |
plotly | 4.10.4 |
oligoClasses | 1.66.0 |
numDeriv | 2016.8-1.1 |
methylumi | 2.50.0 |
mcmc | 0.9-8 |
matrixcalc | 1.0-6 |
latticeExtra | 0.6-30 |
kdecopula | 0.9.2 |
ipred | 0.9-15 |
GWASExactHW | 1.2 |
groHMM | 1.38.0 |
GOSemSim | 2.30.2 |
geosphere | 1.5-20 |
DESeq2 | 1.44.0 |
DEoptimR | 1.1-3 |
cn.mops | 1.50.0 |
brio | 1.1.5 |
AnnotationForge | 1.46.0 |
TxDb.Celegans.UCSC.ce6.ensGene | 3.2.2 |
strucchange | 1.5-4 |
stabledist | 0.7-2 |
shadowtext | 0.1.4 |
rmarkdown | 2.28 |
RcppTOML | 0.2.2 |
ProtGenerics | 1.36.0 |
PMCMR | 4.4 |
MultiAssayExperiment | 1.30.3 |
msm | 1.8.1 |
MLEcens | 0.1-7.1 |
magic | 1.6-1 |
JavaGD | 0.6-5 |
ENmix | 1.40.2 |
distillery | 1.2-1 |
cpp11 | 0.5.0 |
conflicted | 1.2.0 |
caTools | 1.18.3 |
bsplus | 0.1.4 |
blob | 1.2.4 |
ALL | 1.46.0 |
ADGofTest | 0.3 |
statmod | 1.5.0 |
rcmdcheck | 1.4.0 |
ks | 1.14.3 |
keras | 2.15.0 |
httr | 1.4.7 |
Heatplus | 3.12.0 |
europepmc | 0.4.3 |
data.table | 1.16.0 |
Cubist | 0.4.4 |
CNEr | 1.40.0 |
clusterRepro | 0.9 |
bibtex | 0.5.1 |
xfun | 0.48 |
unisensR | 0.3.3 |
spam | 2.11-0 |
slingshot | 2.12.0 |
NOISeq | 2.48.0 |
Lmoments | 1.3-1 |
interval | 1.1-1.0 |
gfonts | 0.2.0 |
DBI | 1.2.3 |
ChIPpeakAnno | 3.38.1 |
bindata | 0.9-21 |
beadarray | 2.54.0 |
RRPP | 2.0.3 |
Rfast | 2.1.0 |
PhysicalActivity | 0.2-4 |
pheatmap | 1.0.12 |
MplusAutomation | 1.1.1 |
lifecycle | 1.0.4 |
lars | 1.3 |
Haplin | 7.3.2 |
DaMiRseq | 2.16.0 |
commonmark | 1.9.2 |
ade4 | 1.7-22 |
parallel | 4.4.1 |
tfdatasets | 2.17.0 |
remotes | 2.5.0 |
plyr | 1.8.9 |
org.Hs.eg.db | 3.19.1 |
mize | 0.2.4 |
kpeaks | 1.1.0 |
gypsum | 1.0.1 |
flux | 0.3-0.1 |
DAAG | 1.25.6 |
bindr | 0.1.1 |
Bhat | 0.9-12 |
vipor | 0.4.7 |
tximeta | 1.22.1 |
tkWidgets | 1.82.0 |
sciplot | 1.2-0 |
refund | 0.1-37 |
reactome.db | 1.88.0 |
MuMIn | 1.48.4 |
libcoin | 1.0-10 |
cn.farms | 1.52.0 |
cli | 3.6.3 |
BiocSingular | 1.20.0 |
bayestestR | 0.14.0 |
slider | 0.3.1 |
shinydashboard | 0.7.2 |
sampling | 2.10 |
RMTstat | 0.3.1 |
raster | 3.6-30 |
pls | 2.8-5 |
miniUI | 0.1.1.1 |
gsubfn | 0.7 |
grr | 0.9.5 |
GOstats | 2.70.0 |
GENIE3 | 1.26.0 |
gdata | 3.0.0 |
future.apply | 1.11.2 |
edgeR | 4.2.1 |
dfoptim | 2023.1.0 |
ChIPseeker | 1.40.0 |
ccaPP | 0.3.4 |
class | 7.3-22 |
tensorA | 0.36.2.1 |
spdep | 1.3-6 |
RNifti | 1.7.0 |
pROC | 1.18.5 |
PBSmodelling | 2.69.3 |
partykit | 1.2-22 |
mstate | 0.3.3 |
knn.covertree | 1.0 |
GPArotation | 2024.3-1 |
ggformula | 0.12.0 |
extraDistr | 1.10.0 |
cmprsk | 2.2-12 |
batchelor | 1.20.0 |
batch | 1.1-5 |
additivityTests | 1.1-4.2 |
svd | 0.5.7 |
snow | 0.4-4 |
Publish | 2023.01.17 |
plotmo | 3.6.4 |
plgem | 1.76.0 |
parsedate | 1.3.1 |
manhattanly | 0.3.0 |
DRIMSeq | 1.32.0 |
diffusionMap | 1.2.0 |
bit | 4.5.0 |
zlibbioc | 1.50.0 |
rvinecopulib | 0.6.3.1.1 |
qvcalc | 1.0.3 |
pingr | 2.0.3 |
pbdMPI | 0.5-1 |
oro.nifti | 0.11.4 |
mixsqp | 0.3-54 |
MAGeCKFlute | 2.8.0 |
e1071 | 1.7-16 |
ashr | 2.2-63 |
arsenal | 3.6.3 |
TeachingDemos | 2.13 |
R.matlab | 3.7.0 |
rle | 0.9.2 |
R2WinBUGS | 2.1-22.1 |
markdown | 1.13 |
ggm | 2.5.1 |
fansi | 1.0.6 |
clue | 0.3-65 |
timeSeries | 4041.111 |
sva | 3.52.0 |
SummarizedExperiment | 1.34.0 |
pec | 2023.04.12 |
MatchIt | 4.5.5 |
ICsurv | 1.0.1 |
graph | 1.82.0 |
ggthemes | 5.1.0 |
ggdendro | 0.2.0 |
ggalluvial | 0.12.5 |
genetics | 1.3.8.1.3 |
fontBitstreamVera | 0.1.1 |
DNAcopy | 1.78.0 |
discretization | 1.0-1.1 |
colorRamps | 2.3.4 |
ATACseqQC | 1.28.0 |
tiff | 0.1-12 |
Rmpfr | 0.9-5 |
rlecuyer | 0.3-8 |
rafalib | 1.0.0 |
pd.hugene.2.0.st | 3.14.1 |
mygene | 1.40.0 |
msa | 1.36.1 |
geonames | 0.999 |
FSelector | 0.34 |
fracdiff | 1.5-3 |
CODEX | 1.36.0 |
cards | 0.3.0 |
basilisk.utils | 1.16.0 |
KernSmooth | 2.23-24 |
wateRmelon | 2.10.0 |
Surrogate | 3.3.0 |
ROTS | 1.32.0 |
questionr | 0.7.8 |
pkgload | 1.4.0 |
pkgbuild | 1.4.4 |
optigrab | 0.9.2.1 |
logcondens | 2.1.8 |
JADE | 2.0-4 |
inaparc | 1.2.0 |
ids | 1.0.1 |
gsl | 2.1-8 |
ggtree | 3.12.0 |
fdrtool | 1.2.18 |
blockmodeling | 1.1.5 |
utils | 4.4.1 |
graphics | 4.4.1 |
zCompositions | 1.5.0-4 |
vioplot | 0.5.0 |
rbenchmark | 1.0.0 |
moments | 0.14.1 |
locfit | 1.5-9.10 |
inline | 0.3.19 |
idr | 1.3 |
hgu133plus2probe | 2.18.0 |
gld | 2.6.6 |
GGIRread | 1.0.1 |
enrichR | 3.2 |
dropbead | 0.3.1 |
CCA | 1.2.2 |
MASS | 7.3-61 |
grDevices | 4.4.1 |
xopen | 1.0.1 |
tidyselect | 1.2.1 |
seqLogo | 1.70.0 |
rvest | 1.0.4 |
robustbase | 0.99-4-1 |
rjson | 0.2.23 |
qs | 0.27.2 |
praise | 1.0.0 |
KMsurv | 0.1-5 |
INPower | 1.40.0 |
HilbertVis | 1.62.0 |
hexView | 0.3-4 |
geometry | 0.5.0 |
DMRcate | 3.0.10 |
corpcor | 1.6.10 |
spData | 2.3.3 |
rotl | 3.1.0 |
rex | 1.2.1 |
RCircos | 1.2.2 |
qpdf | 1.3.4 |
psych | 2.4.6.26 |
progress | 1.2.3 |
PBSmapping | 2.74.1 |
mr.raps | 0.2 |
miscTools | 0.6-28 |
MassSpecWavelet | 1.70.0 |
LSD | 4.1-0 |
gss | 2.2-7 |
batchtools | 0.9.17 |
airway | 1.24.0 |
survival | 3.7-0 |
TH.data | 1.1-2 |
SPAtest | 3.1.2 |
randtoolbox | 2.0.4 |
ncbit | 2013.03.29.1 |
hexbin | 1.28.4 |
dagitty | 0.3-4 |
bsseq | 1.40.0 |
bslib | 0.8.0 |
apeglm | 1.26.1 |
spatstat.random | 3.3-2 |
ReactomePA | 1.48.0 |
pctGCdata | 0.3.0 |
outliers | 0.15 |
mlmRev | 1.0-8 |
inum | 1.0-5 |
illuminaio | 0.46.0 |
hopach | 2.64.0 |
densityClust | 0.3.3 |
bit64 | 4.5.2 |
annaffy | 1.76.0 |
tidygraph | 1.3.1 |
rpf | 1.0.14 |
rGADEM | 2.52.0 |
plier | 1.74.0 |
httr2 | 1.0.5 |
git2r | 0.33.0 |
gargle | 1.5.2 |
gage | 2.54.0 |
EnhancedVolcano | 1.22.0 |
dqrng | 0.4.1 |
alabaster.matrix | 1.4.2 |
ada | 2.0-5 |
threejs | 0.3.3 |
speedglm | 0.3-5 |
spacetime | 1.3-2 |
ncdf4 | 1.23 |
MEGENA | 1.3.7 |
ensemblVEP | 1.46.0 |
DropletUtils | 1.24.0 |
aroma.core | 3.3.1 |
snpStats | 1.54.0 |
semTools | 0.5-6 |
rticles | 0.27 |
riskRegression | 2023.12.21 |
ResidualMatrix | 1.14.1 |
R.cache | 0.16.0 |
pathview | 1.44.0 |
optmatch | 0.10.8 |
motifmatchr | 1.26.0 |
maSigPro | 1.76.0 |
ipw | 1.2.1 |
DDRTree | 0.1.5 |
cqn | 1.50.0 |
contrast | 0.24.2 |
AUCell | 1.26.0 |
aggregation | 1.0.1 |
VGAM | 1.1-12 |
vcd | 1.4-13 |
styler | 1.10.3 |
R.rsp | 0.46.0 |
Rook | 1.2 |
pwr | 1.3-0 |
prediction | 0.3.18 |
MotifDb | 1.46.0 |
MAST | 1.30.0 |
mapproj | 1.2.11 |
lsmeans | 2.30-0 |
Kendall | 2.2.1 |
HDInterval | 0.2.4 |
googlesheets4 | 1.1.1 |
golubEsets | 1.46.0 |
glmnet | 4.1-8 |
futile.logger | 1.4.3 |
boot | 1.3-30 |
webdriver | 1.0.6 |
tidybayes | 3.0.7 |
RCurl | 1.98-1.16 |
randtests | 1.0.2 |
mipfp | 3.2.1 |
haven | 2.5.4 |
ComplexHeatmap | 2.20.0 |
tinytex | 0.53 |
spatstat.utils | 3.1-0 |
plm | 2.6-4 |
pd.hg.u133.plus.2 | 3.12.0 |
pbkrtest | 0.5.3 |
PADOG | 1.46.0 |
iterators | 1.0.14 |
ica | 1.0-3 |
hugene20sttranscriptcluster.db | 8.8.0 |
gson | 0.1.0 |
ggfortify | 0.4.17 |
GetoptLong | 1.0.5 |
dichromat | 2.0-0.1 |
warp | 0.2.1 |
rJava | 1.0-11 |
pbdZMQ | 0.3-13 |
pasilla | 1.32.0 |
openssl | 2.2.2 |
HTMLUtils | 0.1.9 |
Gviz | 1.48.0 |
ggbeeswarm | 0.7.2 |
csaw | 1.38.0 |
config | 0.3.2 |
colourpicker | 1.3.0 |
brglm | 0.7.2 |
ballgown | 2.36.0 |
datasets | 4.4.1 |
remaCor | 0.0.18 |
pdftools | 3.4.0 |
isva | 1.9 |
isotone | 1.1-1 |
filelock | 1.0.3 |
ChIPsim | 1.58.0 |
bio3d | 2.4-4 |
base64enc | 0.1-3 |
awsMethods | 1.1-1 |
akima | 0.6-3.4 |
signal | 1.8-1 |
RWekajars | 3.9.3-2 |
rngtools | 1.5.2 |
RMySQL | 0.10.29 |
mvQuad | 1.0-8 |
mouse4302.db | 3.13.0 |
marray | 1.82.0 |
lobstr | 1.1.2 |
fontawesome | 0.5.2 |
deldir | 2.0-4 |
ape | 5.8 |
whisker | 0.4.1 |
variancePartition | 1.34.0 |
tweenr | 2.0.3 |
SeqVarTools | 1.42.0 |
ROSE | 0.0-4 |
random | 0.2.6 |
profvis | 0.4.0 |
prettyunits | 1.2.0 |
PMCMRplus | 1.9.12 |
openxlsx | 4.2.7.1 |
MatrixEQTL | 2.3 |
hunspell | 3.0.5 |
hthgu133acdf | 2.18.0 |
gridtext | 0.1.5 |
ggraph | 2.2.1 |
gamlss.data | 6.0-6 |
flashClust | 1.01-2 |
downloader | 0.4 |
deepSNV | 1.50.0 |
TitanCNA | 1.42.0 |
sqldf | 0.4-11 |
seriation | 1.5.6 |
rstan | 2.32.6 |
loo | 2.8.0 |
ggdist | 3.3.2 |
dr | 3.0.10 |
DiceKriging | 1.6.0 |
testthat | 3.2.1.1 |
safe | 3.44.0 |
rslurm | 0.6.2 |
readstata13 | 0.10.1 |
pryr | 0.1.6 |
phyloseq | 1.48.0 |
optimx | 2023-10.21 |
modelr | 0.1.11 |
mathjaxr | 1.6-0 |
hu6800probe | 2.18.0 |
diffHic | 1.36.1 |
cosinor2 | 0.2.1 |
coin | 1.4-3 |
binom | 1.1-1.1 |
tzdb | 0.4.0 |
RUnit | 0.4.33 |
rrcov | 1.7-6 |
RPMM | 1.25 |
rematch2 | 2.1.2 |
R6 | 2.5.1 |
qvalue | 2.36.0 |
multidplyr | 0.1.3 |
laeken | 0.5.3 |
invgamma | 1.1 |
ijtiff | 2.3.4 |
hdrcde | 3.4 |
expint | 0.1-8 |
dir.expiry | 1.12.0 |
DiffBind | 3.14.0 |
DEXSeq | 1.50.0 |
DescTools | 0.99.57 |
cowplot | 1.1.3 |
base64url | 1.4 |
ars | 0.8 |
stats | 4.4.1 |
wheatmap | 0.2.0 |
uuid | 1.2-1 |
uroot | 2.1-3 |
TMB | 1.9.15 |
rhdf5 | 2.48.0 |
nloptr | 2.1.1 |
globaltest | 5.58.0 |
dunn.test | 1.3.6 |
DO.db | 2.9 |
DEsingle | 1.24.0 |
StanHeaders | 2.32.10 |
sjlabelled | 1.2.0 |
rio | 1.2.3 |
preseqR | 4.0.0 |
performance | 0.12.3 |
NLP | 0.3-0 |
network | 1.18.2 |
minpack.lm | 1.2-4 |
metadat | 1.2-0 |
impute | 1.78.0 |
IlluminaHumanMethylation27k.db | 1.4.8 |
ggdag | 0.2.13 |
fdapace | 0.6.0 |
doParallel | 1.0.17 |
DelayedMatrixStats | 1.26.0 |
bootstrap | 2019.6 |
affyio | 1.74.0 |
Matrix | 1.7-0 |
TCGAbiolinksGUI.data | 1.24.0 |
sys | 3.4.3 |
siggenes | 1.78.0 |
sets | 1.0-25 |
secretbase | 1.0.3 |
rredlist | 0.7.1 |
ps | 1.8.0 |
pedigreemm | 0.3-4 |
nonnest2 | 0.5-8 |
logging | 0.10-108 |
lavaan | 0.6-19 |
ggplot.multistats | 1.0.1 |
ggplot2 | 3.5.1 |
GenomicScores | 2.16.0 |
fda | 6.2.0 |
xtable | 1.8-4 |
VariantAnnotation | 1.50.0 |
TFBSTools | 1.42.0 |
spatstat.linnet | 3.2-2 |
rstanarm | 2.32.1 |
Rsamtools | 2.20.0 |
phyclust | 0.1-34 |
MBESS | 4.9.3 |
IlluminaHumanMethylation450kanno.ilmn12.hg19 | 0.6.1 |
GenomicRanges | 1.56.1 |
BB | 2019.10-1 |
widgetTools | 1.82.0 |
tab | 5.1.1 |
reactlog | 1.1.1 |
pvclust | 2.2-0 |
processx | 3.8.4 |
nleqslv | 3.3.5 |
Matching | 4.10-14 |
maftools | 2.20.0 |
linprog | 0.9-4 |
jomo | 2.7-6 |
iotools | 0.3-5 |
htmlTable | 2.4.3 |
gtable | 0.3.5 |
gee | 4.13-27 |
gap.datasets | 0.0.6 |
gamlss.dist | 6.1-1 |
fpc | 2.2-13 |
falconx | 0.2 |
BSgenome.Dmelanogaster.UCSC.dm2 | 1.4.0 |
BANOVA | 1.2.1 |
vctrs | 0.6.5 |
truncdist | 1.0-2 |
seqinr | 4.2-36 |
PolynomF | 2.0-8 |
org.Rn.eg.db | 3.19.1 |
lmm | 1.4 |
ggnewscale | 0.5.0 |
DEoptim | 2.2-8 |
CircStats | 0.2-6 |
taxize | 0.9.100.1 |
survRM2 | 1.0-4 |
OrganismDbi | 1.46.0 |
OpenImageR | 1.3.0 |
opencv | 0.4.0 |
nucleR | 2.36.0 |
multitaper | 1.0-17 |
mouse4302frmavecs | 1.5.0 |
minfi | 1.50.0 |
loomR | 0.2.0 |
Iso | 0.0-21 |
hgu133a2cdf | 2.18.0 |
futile.options | 1.0.1 |
wikitaxa | 0.4.0 |
shinyBS | 0.61.1 |
segmented | 2.1-2 |
scater | 1.32.1 |
rstpm2 | 1.6.5 |
reshape2 | 1.4.4 |
rentrez | 1.2.3 |
PKI | 0.1-14 |
pcaPP | 2.0-5 |
paran | 1.5.3 |
NuPoP | 2.12.0 |
magrittr | 2.0.3 |
kSamples | 1.2-10 |
KEGGdzPathwaysGEO | 1.42.0 |
infer | 1.0.7 |
gmp | 0.7-5 |
ggsignif | 0.6.4 |
ggjoy | 0.4.1 |
gbm | 2.2.2 |
FME | 1.3.6.3 |
DRR | 0.0.4 |
Category | 2.70.0 |
ash | 1.0-15 |
tools | 4.4.1 |
RTCGA | 1.34.0 |
rmeta | 3.0 |
RLRsim | 3.1-8 |
repr | 1.1.7 |
gamlss | 5.4-22 |
curry | 0.1.1 |
cubature | 2.1.1 |
biocViews | 1.72.0 |
arrayQualityMetrics | 3.60.0 |
softImpute | 1.4-1 |
scDD | 1.28.0 |
RWeka | 0.4-46 |
R.oo | 1.26.0 |
RhpcBLASctl | 0.23-42 |
pbmcapply | 1.5.1 |
IlluminaHumanMethylationEPICmanifest | 0.3.0 |
ggrastr | 1.0.2 |
CompQuadForm | 1.4.3 |
biomformat | 1.32.0 |
vegan | 2.6-8 |
tximportData | 1.32.0 |
scrime | 1.3.5 |
scde | 2.32.0 |
rjags | 4-15 |
quantsmooth | 1.70.0 |
mvnfast | 0.2.8 |
muhaz | 1.2.6.4 |
janitor | 2.2.0 |
itertools | 0.1-3 |
IlluminaHumanMethylationEPICanno.ilm10b2.hg19 | 0.6.0 |
ICS | 1.4-1 |
googleAuthR | 2.0.2 |
DiceDesign | 1.10 |
corrplot | 0.94 |
circlize | 0.4.16 |
BiocVersion | 3.19.1 |
visNetwork | 2.1.2 |
tilingArray | 1.82.0 |
swagger | 5.17.14.1 |
spatstat | 3.2-1 |
scatterpie | 0.2.4 |
RItools | 0.3-4 |
party | 1.3-17 |
monocle3 | 1.3.7 |
MendelianRandomization | 0.10.0 |
LogicReg | 1.6.6 |
gageData | 2.42.0 |
earth | 5.3.4 |
Canopy | 1.3.0 |
urca | 1.3-4 |
txtplot | 1.0-4 |
SparseM | 1.84-2 |
NBPSeq | 0.3.1 |
msir | 1.3.3 |
mosaicCore | 0.9.4.0 |
iClusterPlus | 1.40.0 |
GenomeInfoDb | 1.40.1 |
DOT | 0.1 |
trust | 0.1-8 |
tictoc | 1.2.1 |
spatstat.sparse | 3.1-0 |
servr | 0.32 |
Rhdf5lib | 1.26.0 |
polspline | 1.1.25 |
pkgdown | 2.1.1 |
pals | 1.9 |
later | 1.3.2 |
kpmt | 0.1.0 |
GEOmetadb | 1.66.0 |
gaussquad | 1.0-3 |
ensembldb | 2.28.1 |
copula | 1.1-4 |
canine2.db | 3.13.0 |
BH | 1.84.0-0 |
rgl | 1.3.1 |
RANN | 2.6.2 |
PROcess | 1.80.0 |
ggstats | 0.7.0 |
geneplotter | 1.82.0 |
fishplot | 0.5.2 |
egg | 0.4.5 |
ActCR | 0.3.0 |
urlchecker | 1.0.1 |
synchronicity | 1.3.10 |
RcppParallel | 5.1.9 |
qrng | 0.0-10 |
proxy | 0.4-27 |
pd.mouse430.2 | 3.12.0 |
parallelly | 1.38.0 |
metafor | 4.6-0 |
leidenbase | 0.1.31 |
KEGGREST | 1.44.1 |
hapsim | 0.31 |
GenomicDataCommons | 1.28.1 |
cvAUC | 1.1.4 |
basilisk | 1.16.0 |
aod | 1.3.3 |
zeallot | 0.1.0 |
rsconnect | 1.3.1 |
R.devices | 2.17.2 |
progressr | 0.14.0 |
patchwork | 1.3.0 |
org.Cf.eg.db | 3.19.1 |
inflection | 1.3.6 |
IlluminaHumanMethylation27kmanifest | 0.4.0 |
hgu133plus2.db | 3.13.0 |
fds | 1.8 |
dplyr | 1.1.4 |
dials | 1.3.0 |
cometExactTest | 0.1.5 |
combinat | 0.0-8 |
cmm | 1.0 |
alabaster.ranges | 1.4.2 |
methods | 4.4.1 |
useful | 1.2.6.1 |
trimcluster | 0.1-5 |
survey | 4.4-2 |
SQUAREM | 2021.1 |
reticulate | 1.39.0 |
reformulas | 0.3.0 |
phia | 0.3-1 |
pfamAnalyzeR | 1.4.0 |
ParamHelpers | 1.14.1 |
gaston | 1.6 |
clock | 0.7.1 |
affxparser | 1.76.0 |
weights | 1.0.4 |
tseries | 0.10-58 |
TFisher | 0.2.0 |
tensorflow | 2.16.0 |
tensor | 1.5 |
Repitools | 1.50.0 |
R2HTML | 2.3.4 |
JM | 1.5-2 |
hgu95av2probe | 2.18.0 |
fastICA | 1.2-5.1 |
compute.es | 0.2-5 |
bigmemory | 4.6.4 |
sourcetools | 0.1.7-1 |
PFAM.db | 3.19.1 |
PAIRADISE | 1.20.0 |
modelenv | 0.1.1 |
lsa | 0.73.3 |
iCNV | 1.24.0 |
future.batchtools | 0.12.1 |
EBImage | 4.46.0 |
ddalpha | 1.3.16 |
ctc | 1.78.0 |
clusterGeneration | 1.3.8 |
broom.mixed | 0.2.9.5 |
AnnotationHub | 3.12.0 |
svUnit | 1.0.6 |
stringfish | 0.16.0 |
shinytest | 1.6.1 |
scattermore | 1.2 |
mixOmics | 6.28.0 |
misc3d | 0.9-1 |
metap | 1.11 |
IlluminaHumanMethylationEPICanno.ilm10b4.hg19 | 0.6.0 |
hwriter | 1.3.2.1 |
gmm | 1.8 |
Glimma | 2.14.0 |
ddCt | 1.60.0 |
bc3net | 1.0.4 |
WikipediR | 1.7.1 |
RSpectra | 0.16-2 |
RColorBrewer | 1.1-3 |
perry | 0.3.1 |
networkLite | 1.0.5 |
minqa | 1.2.8 |
maxLik | 1.5-2.1 |
htmlwidgets | 1.6.4 |
hgu133a2.db | 3.13.0 |
HDF5Array | 1.32.1 |
ggridges | 0.5.6 |
gcrma | 2.76.0 |
epiDisplay | 3.5.0.2 |
bumphunter | 1.46.0 |
compiler | 4.4.1 |
TxDb.Hsapiens.UCSC.hg38.knownGene | 3.18.0 |
timeDate | 4041.110 |
sysfonts | 0.8.9 |
statnet | 2019.6 |
stargazer | 5.2.3 |
S4Arrays | 1.4.1 |
getPass | 0.2-4 |
Ecfun | 0.3-2 |
Ecdat | 0.4-2 |
dotCall64 | 1.2 |
beanplot | 1.3.1 |
foreign | 0.8-86 |
roxygen2 | 7.3.2 |
robCompositions | 2.4.1 |
NMOF | 2.8-0 |
limma | 3.60.6 |
hu6800cdf | 2.18.0 |
hierfstat | 0.5-11 |
hgu133a2probe | 2.18.0 |
gower | 1.0.1 |
fontLiberation | 0.1.0 |
flexclust | 1.4-2 |
ca | 0.71.1 |
usethis | 3.0.0 |
textshaping | 0.4.0 |
shiny | 1.9.1 |
R2jags | 0.8-5 |
quadprog | 1.5-8 |
phylobase | 0.8.12 |
microbenchmark | 1.5.0 |
MAVE | 1.3.11 |
graphlayouts | 1.2.0 |
GEOquery | 2.72.0 |
gdsfmt | 1.40.2 |
fitdistrplus | 1.2-1 |
ChAMPdata | 2.36.0 |
argparser | 0.7.2 |
adegenet | 2.1.10 |
threg | 1.0.3 |
targets | 1.8.0 |
scatterplot3d | 0.3-44 |
promises | 1.3.0 |
prettydoc | 0.4.1 |
poilog | 0.4.2 |
pkgmaker | 0.32.10 |
pd.mogene.2.0.st | 3.14.1 |
pbapply | 1.7-2 |
llogistic | 1.0.3 |
humanomni5quadv1bCrlmm | 1.0.0 |
ellipse | 0.5.0 |
doSNOW | 1.0.20 |
data.tree | 1.1.0 |
UCSC.utils | 1.0.0 |
topGO | 2.56.0 |
squash | 1.0.9 |
spatstat.explore | 3.3-2 |
s2 | 1.1.7 |
Runuran | 0.40 |
rngWELL | 0.10-9 |
rmdformats | 1.0.4 |
posterior | 1.6.0 |
NbClust | 3.0.1 |
ICC | 2.4.0 |
fBasics | 4041.97 |
extrafontdb | 1.0 |
dfidx | 0.1-0 |
xgboost | 1.7.8.1 |
viridis | 0.6.5 |
universalmotif | 1.22.3 |
treeio | 1.28.0 |
survivalAnalysis | 0.3.0 |
stepPlr | 0.93 |
pillar | 1.9.0 |
parmigene | 1.1.0 |
packrat | 0.9.2 |
MKmisc | 1.9 |
insight | 0.20.5 |
hms | 1.1.3 |
hgu95av2cdf | 2.18.0 |
fftwtools | 0.9-11 |
etm | 1.1.1 |
cvTools | 0.3.3 |
coxme | 2.2-20 |
BWStest | 0.2.3 |
bkmr | 0.2.2 |
bindrcpp | 0.2.3 |
aroma.light | 3.34.0 |
XVector | 0.44.0 |
units | 0.8-5 |
samr | 3.0 |
registry | 0.5-1 |
recipes | 1.1.0 |
intansv | 1.44.0 |
ICSNP | 1.1-2 |
feather | 0.3.5 |
extrafont | 0.19 |
base64 | 2.0.2 |
worrms | 0.4.3 |
wk | 0.9.3 |
venneuler | 1.1-4 |
VanillaICE | 1.66.0 |
ucminf | 1.2.2 |
svglite | 2.1.3 |
SingleR | 2.6.0 |
Rsolnp | 1.16 |
reshape | 0.8.9 |
phytools | 2.3-0 |
mzID | 1.42.0 |
MPO.db | 0.99.7 |
km.ci | 0.5-6 |
isobar | 1.50.0 |
highr | 0.11 |
filehash | 2.4-6 |
densvis | 1.14.1 |
CVST | 0.2-3 |
arm | 1.14-4 |
nnet | 7.3-19 |
mgcv | 1.9-1 |
venn | 1.12 |
sendmailR | 1.4-0 |
rappdirs | 0.3.3 |
plot3Drgl | 1.0.4 |
pepr | 0.5.0 |
multcomp | 1.4-26 |
ggalt | 0.4.0 |
dtw | 1.23-1 |
cosinor | 1.2.3 |
broom | 1.0.7 |
translations | 4.4.1 |
rbibutils | 2.3 |
polynom | 1.4-1 |
org.Mm.eg.db | 3.19.1 |
msigdbr | 7.5.1 |
chromVAR | 1.26.0 |
BSgenome.Hsapiens.UCSC.hg19 | 1.4.3 |
BPSC | 0.99.2 |
sensitivity | 1.30.1 |
pbatR | 2.2-17 |
mclogit | 0.9.6 |
lmom | 3.2 |
GlobalOptions | 0.1.2 |
ggfun | 0.1.6 |
geiger | 2.0.11 |
episensr | 1.3.0 |
compositions | 2.0-8 |
colorspace | 2.1-1 |
BSgenome.Scerevisiae.UCSC.sacCer1 | 1.4.0 |
BSgenome.Hsapiens.UCSC.hg18 | 1.3.1000 |
bold | 1.3.0 |
splines | 4.4.1 |
yulab.utils | 0.1.7 |
scuttle | 1.14.0 |
rae230aprobe | 2.18.0 |
pvca | 1.44.0 |
proto | 1.0.0 |
oompaData | 3.1.4 |
jsonlite | 1.8.9 |
gert | 2.1.2 |
foreach | 1.5.2 |
forcats | 1.0.0 |
fgsea | 1.30.0 |
farver | 2.1.2 |
FactoMineR | 2.11 |
expm | 1.0-0 |
credentials | 2.0.2 |
BSgenome.Scerevisiae.UCSC.sacCer2 | 1.4.0 |
BiocManager | 1.30.25 |
subSeq | 1.34.0 |
snowFT | 1.6-1 |
pipeFrame | 1.20.0 |
NMF | 0.28 |
logicFS | 2.24.0 |
LGEWIS | 1.1 |
IsoformSwitchAnalyzeR | 2.4.0 |
fit.models | 0.64 |
BiocGenerics | 0.50.0 |
codetools | 0.2-20 |
sna | 2.8 |
sgeostat | 1.0-27 |
R.methodsS3 | 1.8.2 |
multicool | 1.0.1 |
lmerTest | 3.1-3 |
lazyeval | 0.2.2 |
jsonvalidate | 1.3.2 |
ergm.multi | 0.2.1 |
ROpenCVLite | 4.90.1 |
rBayesianOptimization | 1.2.1 |
quantreg | 5.98 |
plumber | 1.2.2 |
pbs | 1.1 |
natserv | 1.0.0 |
naivebayes | 1.0.0 |
maps | 3.4.2 |
lmtest | 0.9-40 |
interactiveDisplayBase | 1.42.0 |
flexsurv | 2.3.2 |
flexmix | 2.3-19 |
CODEX2 | 1.3.0 |
BSgenome.Mmusculus.UCSC.mm10 | 1.4.3 |
bayesplot | 1.11.1 |
accelerometry | 3.1.2 |
WikidataR | 2.3.3 |
TxDb.Rnorvegicus.UCSC.rn4.ensGene | 3.2.2 |
TrajectoryUtils | 1.12.0 |
strex | 2.0.1 |
spls | 2.2-3 |
shinyFiles | 0.9.3 |
sesame | 1.22.2 |
RInside | 0.2.18 |
readr | 2.1.5 |
rainbow | 3.8 |
PMA | 1.2-4 |
packcircles | 0.3.6 |
IRkernel | 1.3.2 |
IlluminaHumanMethylation27kanno.ilmn12.hg19 | 0.6.0 |
biclust | 2.0.3.1 |
stats4 | 4.4.1 |
base | 4.4.1 |
tradeSeq | 1.18.0 |
tclust | 2.0-4 |
synthpop | 1.8-0 |
S4Vectors | 0.42.1 |
rstatix | 0.7.2 |
proj4 | 1.0-14 |
oz | 1.0-22 |
ordinal | 2023.12-4.1 |
mitools | 2.4 |
meta | 7.0-0 |
googledrive | 2.1.1 |
ggpubr | 0.6.0 |
bitops | 1.0-9 |
affycomp | 1.80.0 |
WriteXLS | 6.7.0 |
waveslim | 1.8.5 |
TxDb.Hsapiens.UCSC.hg19.knownGene | 3.2.2 |
tsna | 0.3.5 |
thgenetics | 0.4-2 |
sparseMatrixStats | 1.16.0 |
readxl | 1.4.3 |
RcppRoll | 0.3.1 |
RcppProgress | 0.4.2 |
postlogic | 0.1.0.1 |
ggeffects | 1.7.1 |
emmeans | 1.10.4 |
chk | 0.9.2 |
betareg | 3.2-1 |
bbmle | 1.0.25.1 |
BatchJobs | 1.9 |
UpSetR | 1.4.0 |
timsac | 1.3.8-4 |
tergm | 4.2.0 |
subplex | 1.9 |
spatstat.model | 3.3-2 |
sparsesvd | 0.2-2 |
rversions | 2.1.2 |
pd.genomewidesnp.6 | 3.14.1 |
oompaBase | 3.2.9 |
iterpc | 0.4.2 |
irr | 0.84.1 |
IRdisplay | 1.1 |
gmodels | 2.19.1 |
Exact | 3.3 |
withr | 3.0.1 |
tidyr | 1.3.1 |
spatstat.data | 3.1-2 |
showimage | 1.0.0 |
RWiener | 1.3-3 |
RSQLite | 2.3.7 |
RcppAnnoy | 0.0.22 |
pwalign | 1.0.0 |
perm | 1.0-0.4 |
lava | 1.8.0 |
intervals | 0.15.5 |
EBSeq | 2.2.0 |
zebrafishcdf | 2.18.0 |
vroom | 1.6.5 |
TxDb.Mmusculus.UCSC.mm9.knownGene | 3.2.2 |
robustHD | 0.8.1 |
RNOmni | 1.0.1.2 |
quantmod | 0.4.26 |
pastecs | 1.4.2 |
nplplot | 4.7 |
mutoss | 0.1-13 |
hdf5r | 1.3.11 |
glmpath | 0.98 |
extRemes | 2.1-4 |
chipseq | 1.54.0 |
biglm | 0.9-3 |
tsne | 0.1-3.1 |
tripack | 1.3-9.1 |
TailRank | 3.2.2 |
rsample | 1.2.1 |
qqconf | 1.3.2 |
orthogonalsplinebasis | 0.1.7 |
modeltools | 0.2-23 |
maxstat | 0.7-25 |
glmmML | 1.1.7 |
GenomicAlignments | 1.40.0 |
fail | 1.3 |
enpls | 6.1 |
brew | 1.0-10 |
vsn | 3.72.0 |
survminer | 0.4.9 |
relimp | 1.0-5 |
RcppNumerical | 0.6-0 |
pan | 1.9 |
mmap | 0.6-22 |
listenv | 0.9.1 |
gh | 1.4.1 |
DynDoc | 1.82.0 |
denstrip | 1.5.4 |
CpGassoc | 2.70 |
ConsensusClusterPlus | 1.68.0 |
bios2mds | 1.2.3 |
beachmat | 2.20.0 |
tcltk | 4.4.1 |
workflows | 1.1.4 |
wdm | 0.2.4 |
rhdf5filters | 1.16.0 |
prabclus | 2.3-4 |
orthopolynom | 1.0-6.1 |
NADA | 1.6-1.1 |
KEGGgraph | 1.64.0 |
ggstance | 0.3.7 |
gdtools | 0.4.0 |
gamm4 | 0.2-6 |
epiR | 2.0.76 |
dygraphs | 1.1.1.6 |
dmrseq | 1.24.2 |
tidyverse | 2.0.0 |
systemPipeR | 2.10.0 |
ruv | 0.9.7.1 |
robust | 0.7-5 |
Rfit | 0.27.0 |
mutSignatures | 2.1.1 |
minet | 3.62.0 |
hgu95av2 | 2.2.0 |
getopt | 1.20.4 |
geomorph | 4.0.8 |
fftw | 1.0-8 |
falcon | 0.2 |
evd | 2.3-7.1 |
diptest | 0.77-1 |
dimRed | 0.2.6 |
depmap | 1.18.0 |
dendextend | 1.18.0 |
conditionz | 0.1.0 |
ChromHeatMap | 1.58.0 |
chopsticks | 1.70.0 |
arrangements | 1.1.9 |
yardstick | 1.3.1 |
truncnorm | 1.0-9 |
systemfit | 1.1-30 |
RApiSerialize | 0.1.4 |
randomForestSRC | 3.3.1 |
plot3D | 1.4.1 |
paws.common | 0.7.7 |
optparse | 1.7.5 |
optimParallel | 1.0-2 |
mclust | 6.1.1 |
manipulateWidget | 0.11.1 |
logistf | 1.26.0 |
hash | 2.2.6.3 |
ggrepel | 0.9.6 |
ggbio | 1.52.0 |
EMCluster | 0.2-16 |
coxphf | 1.13.4 |
ClusterR | 1.3.3 |
brms | 2.22.0 |
bridgesampling | 1.1-2 |
ASSET | 2.22.0 |
webutils | 1.2.2 |
uwot | 0.2.2 |
SKAT | 2.2.5 |
shinystan | 2.6.0 |
scran | 1.32.0 |
mnormt | 2.1.1 |
kernlab | 0.9-33 |
HIBAG | 1.40.0 |
h2o | 3.44.0.3 |
grpreg | 3.5.0 |
gbRd | 0.4.12 |
clisymbols | 1.2.0 |
supraHex | 1.42.0 |
Seurat | 5.1.0 |
sctransform | 0.4.1 |
rtracklayer | 1.64.0 |
Rmisc | 1.5.1 |
reprex | 2.1.1 |
officer | 0.6.6 |
micEcon | 0.6-18 |
callr | 3.7.6 |
XML | 3.99-0.17 |
Rttf2pt1 | 1.3.12 |
restfulr | 0.0.15 |
ratelimitr | 0.4.1 |
nnls | 1.5 |
mlr | 2.19.2 |
esATAC | 1.26.0 |
crlmm | 1.62.0 |
cobs | 1.3-8 |
splines2 | 0.5.3 |
RJSONIO | 1.3-1.9 |
RcmdrPlugin.TeachingDemos | 1.2-0 |
RcmdrMisc | 2.9-1 |
Rcmdr | 2.9-4 |
oligo | 1.68.2 |
mvbutils | 2.8.232 |
irlba | 2.3.5.1 |
gtools | 3.9.5 |
Epi | 2.56 |
eha | 2.11.5 |
cubelyr | 1.0.2 |
clipr | 0.8.0 |
cghMCR | 1.62.0 |
Biostrings | 2.72.1 |
aplot | 0.2.3 |
zip | 2.3.1 |
yaml | 2.3.10 |
xlsx | 0.6.5 |
Rdpack | 2.6.1 |
rae230acdf | 2.18.0 |
networkD3 | 0.4 |
mets | 1.3.4 |
genefilter | 1.86.0 |
formula.tools | 1.7.1 |
epitools | 0.5-10.1 |
EDASeq | 2.38.0 |
dynamicTreeCut | 1.63-1 |
distributional | 0.5.0 |
datawizard | 0.13.0 |
cluster | 2.1.6 |
tidymodels | 1.2.0 |
signatureSearch | 1.18.0 |
sfsmisc | 1.1-19 |
seewave | 2.2.3 |
Rhtslib | 3.0.0 |
RcppZiggurat | 0.1.6 |
qap | 0.1-2 |
pander | 0.6.5 |
optextras | 2019-12.4 |
ini | 0.3.1 |
Illumina450ProbeVariants.db | 1.40.0 |
frma | 1.56.0 |
ExperimentHub | 2.12.0 |
EnvStats | 3.0.0 |
dtwclust | 6.0.0 |
doFuture | 1.0.1 |
SuppDists | 1.1-9.8 |
supclust | 1.1-1 |
slam | 0.1-53 |
shinythemes | 1.2.0 |
SeuratObject | 5.0.2 |
rprojroot | 2.0.4 |
PSCBS | 0.67.0 |
pixmap | 0.4-13 |
nycflights13 | 1.0.2 |
HardyWeinberg | 1.7.8 |
ggtext | 0.1.2 |
ecodist | 2.1.3 |
EBarrays | 2.68.0 |
devEMF | 4.5 |
cOde | 1.1.1 |
cachem | 1.1.0 |
alabaster.se | 1.4.1 |
xmlparsedata | 1.0.5 |
workflowsets | 1.1.0 |
TFMPvalue | 0.0.9 |
ROC | 1.80.0 |
princurve | 2.1.6 |
hoardr | 0.5.4 |
gRbase | 2.0.2 |
GeneRegionScan | 1.60.0 |
fmsb | 0.7.6 |
fastmap | 1.2.0 |
fastcluster | 1.2.6 |
DT | 0.33 |
doBy | 4.6.22 |
verification | 1.42 |
SpatialExperiment | 1.14.0 |
sfd | 0.1.0 |
ROpenCV | unknown |
rootSolve | 1.8.2.4 |
RcppHNSW | 0.6.0 |
qtl | 1.70 |
kde1d | 1.0.7 |
httpuv | 1.6.15 |
HMMcopy | 1.46.0 |
fibroEset | 1.46.0 |
emdbook | 1.3.13 |
drc | 3.0-1 |
broman | 0.84 |
Biobase | 2.64.0 |
bigmemory.sri | 0.1.8 |
assertthat | 0.2.1 |
V8 | 5.0.1 |
udunits2 | 0.13.2.1 |
tune | 1.2.1 |
selectr | 0.4-2 |
ROCR | 1.0-11 |
permute | 0.9-7 |
pcaMethods | 1.96.0 |
np | 0.60-17 |
mvmeta | 1.0.3 |
interp | 1.1-6 |
hthgu133aprobe | 2.18.0 |
GenSA | 1.1.14.1 |
FDb.InfiniumMethylation.hg19 | 2.2.0 |
fastDummies | 1.7.4 |
dvmisc | 1.1.4 |
directlabels | 2024.1.21 |
car | 3.1-3 |
broom.helpers | 1.17.0 |
BiocNeighbors | 1.22.0 |
AnnotationDbi | 1.66.0 |
animation | 2.7 |
wordcloud | 2.6 |
sandwich | 3.1-1 |
pspline | 1.0-20 |
methylKit | 1.30.0 |
memoise | 2.0.1 |
IlluminaHumanMethylation450kmanifest | 0.4.0 |
FDb.InfiniumMethylation.hg18 | 2.2.0 |
DOSE | 3.30.5 |
debugme | 1.2.0 |
corrgram | 1.14 |
c3net | 1.1.1.1 |
zoo | 1.8-12 |
triangle | 1.0 |
tis | 1.39 |
splancs | 2.01-45 |
SimpleITK | 2.1.1.1 |
scRNAseq | 2.18.0 |
pd.mogene.1.0.st.v1 | 3.14.1 |
parameters | 0.22.2 |
mcmcplots | 0.4.3 |
graphite | 1.50.0 |
GGally | 2.2.1 |
actuar | 3.3-4 |
utf8 | 1.2.4 |
TxDb.Hsapiens.UCSC.hg18.knownGene | 3.2.2 |
simsurv | 1.0.0 |
rncl | 0.8.7 |
RcppThread | 2.1.7 |
poweRlaw | 0.80.0 |
HPO.db | 0.99.2 |
GSVA | 1.52.3 |
ergm | 4.7.1 |
dtplyr | 1.3.1 |
collapse | 2.0.16 |
bezier | 1.1.2 |
bayesm | 3.1-6 |
AnnotationFilter | 1.28.0 |
svgPanZoom | 0.3.4 |
ResourceSelection | 0.3-6 |
philentropy | 0.8.0 |
mice | 3.16.0 |
lubridate | 1.9.3 |
lme4 | 1.1-35.5 |
hardhat | 1.4.0 |
GO.db | 3.19.1 |
GMMAT | 1.4.2 |
geepack | 1.3.12 |
Formula | 1.2-5 |
cummeRbund | 2.46.0 |
catmap | 1.6.4 |
splitstackshape | 1.4.8 |
RnBeads | 2.22.0 |
RcppEigen | 0.3.4.0.2 |
modeldata | 1.4.0 |
MLInterfaces | 1.84.0 |
ISwR | 2.0-8 |
ineq | 0.2-13 |
glue | 1.8.0 |
GenomicFeatures | 1.56.0 |
doMC | 1.3.8 |
dendsort | 0.3.4 |
dbplyr | 2.5.0 |
checkmate | 2.3.2 |
calibrate | 1.7.7 |
BSgenome.Mmusculus.UCSC.mm9 | 1.4.0 |
tidytree | 0.4.6 |
stringi | 1.8.4 |
rARPACK | 0.11-0 |
plogr | 0.2.0 |
nabor | 0.5.0 |
klaR | 1.7-3 |
infotheo | 1.2.0.1 |
glmmTMB | 1.1.10 |
ggmap | 4.0.0 |
genalg | 0.2.1 |
effectsize | 0.8.9 |
dynlm | 0.3-6 |
Deriv | 4.1.6 |
crul | 1.5.0 |
AlgDesign | 1.2.1.1 |
TxDb.Dmelanogaster.UCSC.dm3.ensGene | 3.2.2 |
tmvtnorm | 1.6 |
tfautograph | 0.3.2 |
sodium | 1.3.1 |
regioneR | 1.36.0 |
PureCN | 2.10.0 |
pbivnorm | 0.6.0 |
networkDynamic | 0.11.4 |
leaps | 3.2 |
gistr | 0.9.0 |
gam | 1.22-5 |
fs | 1.6.4 |
ffpe | 1.48.0 |
fastseg | 1.50.0 |
DirichletMultinomial | 1.46.0 |
agricolae | 1.3-7 |
themis | 1.0.2 |
spatstat.geom | 3.3-3 |
sass | 0.4.9 |
RMariaDB | 1.3.2 |
read.gt3x | 1.2.0 |
pscl | 1.5.9 |
numbers | 0.8-5 |
multtest | 2.60.0 |
isoband | 0.2.7 |
GIGrvg | 0.8 |
genoPlotR | 0.8.11 |
fANCOVA | 0.6-1 |
effects | 4.2-2 |
distr | 2.9.5 |
devtools | 2.4.5 |
deSolve | 1.40 |
crayon | 1.5.3 |
ChIPQC | 1.40.0 |
biomaRt | 2.60.1 |
Wrench | 1.22.0 |
timechange | 0.3.0 |
stabs | 0.6-4 |
ReportingTools | 2.44.0 |
qcc | 2.7 |
preprocessCore | 1.66.0 |
mixtools | 2.0.0 |
mashr | 0.2.79 |
lumi | 2.56.0 |
igraph | 2.0.3 |
GSEABase | 1.66.0 |
GSA | 1.03.3 |
GreyListChIP | 1.36.0 |
glasso | 1.11 |
GenomicDistributions | 1.12.0 |
conquer | 1.3.3 |
classInt | 0.4-10 |
ChIPseqR | 1.58.0 |
cellranger | 1.1.0 |
arrow | 16.1.0 |
apcluster | 1.4.13 |
admisc | 0.36 |
survMisc | 0.5.6 |
SuperLearner | 2.0-29 |
snakecase | 0.11.1 |
sm | 2.2-6.0 |
SeqArray | 1.44.3 |
RSNNS | 0.4-17 |
metapod | 1.12.0 |
manipulate | 1.0.1 |
goftest | 1.2-3 |
diffobj | 0.3.5 |
CNTools | 1.60.0 |
BSgenome.Hsapiens.1000genomes.hs37d5 | 0.99.1 |
BRAIN | 1.50.0 |
BBmisc | 1.13 |
AllelicImbalance | 1.42.0 |
ScaledMatrix | 1.12.0 |
ritis | 1.0.0 |
RcppGSL | 0.3.13 |
parallelMap | 1.5.1 |
mouse4302cdf | 2.18.0 |
merTools | 0.6.2 |
ieugwasr | 1.0.1 |
HSAUR2 | 1.1-20 |
GenomeInfoDbData | 1.2.12 |
fontquiver | 0.2.1 |
EGSEAdata | 1.32.0 |
dbscan | 1.2-0 |
caret | 6.0-94 |
BiocBaseUtils | 1.6.0 |
BiasedUrn | 2.0.12 |
txdbmaker | 1.0.1 |
tmvnsim | 1.0-2 |
snowfall | 1.84-6.3 |
rematch | 2.0.0 |
Rbowtie2 | 2.10.0 |
randomForest | 4.7-1.2 |
paws.storage | 0.7.0 |
MLmetrics | 1.1.3 |
labeling | 0.4.3 |
fastGHQuad | 1.0.1 |
BubbleTree | 2.34.0 |
bdsmatrix | 1.3-7 |
alabaster.sce | 1.4.0 |
afex | 1.4-1 |
xts | 0.14.0 |
tidytidbits | 0.3.2 |
sn | 2.1.1 |
rstantools | 2.4.0 |
ranger | 0.16.0 |
operator.tools | 1.6.3 |
OpenMx | 2.21.12 |
motifStack | 1.48.0 |
lpsymphony | 1.32.0 |
forecast | 8.23.0 |
diagram | 1.6.5 |
nlme | 3.1-165 |
statnet.common | 4.10.0 |
sjstats | 0.19.0 |
rvcheck | 0.2.1 |
RProtoBufLib | 2.16.0 |
poorman | 0.2.7 |
mda | 0.5-4 |
matrixStats | 1.4.1 |
hgu133plus2cdf | 2.18.0 |
girafe | 1.56.0 |
ggvis | 0.4.9 |
BSgenome.Celegans.UCSC.ce2 | 1.4.0 |
beeswarm | 0.4.0 |
annotate | 1.82.0 |
affycoretools | 1.76.0 |
singscore | 1.24.0 |
sem | 3.1-16 |
pseval | 1.3.1 |
mitml | 0.4-5 |
JGR | 1.9-2 |
heatmaply | 1.5.0 |
argparse | 2.2.3 |
VennDiagram | 1.7.3 |
TTR | 0.24.4 |
sjPlot | 2.8.16 |
runjags | 2.2.2-4 |
Rmpi | 0.7-2 |
kinship2 | 1.9.6.1 |
here | 1.0.1 |
gpls | 1.76.0 |
GENESIS | 2.34.0 |
forestplot | 3.1.3 |
doRNG | 1.8.6 |
chron | 2.3-61 |
arrayQuality | 1.82.0 |
xlsxjars | 0.6.1 |
qgraph | 1.9.8 |
PearsonDS | 1.3.1 |
MCMCpack | 1.7-1 |
haplo.stats | 1.9.7 |
gitcreds | 0.1.2 |
desc | 1.4.3 |
BSgenome.Hsapiens.UCSC.hg38 | 1.4.5 |
Brobdingnag | 1.2-9 |
BiocFileCache | 2.12.0 |
babelgene | 22.9 |
sitmo | 2.0.2 |
RUVSeq | 1.38.0 |
rsvg | 2.6.1 |
pracma | 2.4.4 |
pacman | 0.5.1 |
mogene20sttranscriptcluster.db | 8.8.0 |
MESS | 0.5.12 |
grImport | 0.9-7 |
commonsMath | 1.2.8 |
blme | 1.0-6 |
askpass | 1.2.1 |
TSP | 1.2-4 |
SnowballC | 0.7.1 |
SC3 | 1.32.0 |
satuRn | 1.12.0 |
RBGL | 1.80.0 |
R2OpenBUGS | 3.2-3.2.1 |
purrr | 1.0.2 |
lpSolve | 5.6.21 |
lambda.r | 1.2.4 |
labelled | 2.13.0 |
influenceR | 0.1.5 |
ggsci | 3.2.0 |
doMPI | 0.2.2 |
docopt | 0.7.1 |
dlm | 1.1-6.1 |
DelayedArray | 0.30.1 |
cyclocomp | 1.1.1 |
clusterProfiler | 4.12.6 |
SRAdb | 1.66.0 |
signeR | 2.6.0 |
schoolmath | 0.4.2 |
rlang | 1.1.4 |
RcppArmadillo | 14.0.2-1 |
R2admb | 0.7.16.3 |
qqman | 0.1.9 |
mlogit | 1.1-1 |
locfdr | 1.1-8 |
LearnBayes | 2.15.1 |
lawstat | 3.6 |
kknn | 1.3.1 |
karyoploteR | 1.30.0 |
gclus | 1.3.2 |
curl | 5.2.3 |
covr | 3.6.4 |
aplpack | 1.3.5 |
acepack | 1.4.2 |
spatstat.univar | 3.0-1 |
SparseArray | 1.4.8 |
solrium | 1.2.0 |
sf | 1.0-16 |
rsvd | 1.0.5 |
rmutil | 1.1.10 |
rlemon | 0.2.1 |
mcbiopi | 1.1.6 |
logitnorm | 0.8.39 |
lintr | 3.1.2 |
leiden | 0.4.3.1 |
kableExtra | 1.4.0 |
GWASTools | 1.50.0 |
GGIR | 3.1-4 |
BradleyTerry2 | 1.1-2 |
BeadDataPackR | 1.56.0 |
bamsignals | 1.36.0 |
Amelia | 1.8.2 |
grid | 4.4.1 |
shinyjs | 2.1.0 |
sessioninfo | 1.2.2 |
multcompView | 0.1-10 |
mime | 0.12 |
MALDIquant | 1.22.3 |
Hmisc | 5.1-3 |
CBPS | 0.23 |
BMA | 3.18.17 |
BiocStyle | 2.32.1 |
AER | 1.2-14 |
WikidataQueryServiceR | 1.0.0 |
tm | 0.7-14 |
SomaticSignatures | 2.40.0 |
scales | 1.3.0 |
ragg | 1.3.3 |
nortest | 1.0-4 |
MRInstruments | 0.3.2 |
metagenomeSeq | 1.46.0 |
isdparser | 0.4.0 |
gplots | 3.2.0 |
formatR | 1.14 |
evaluate | 1.0.0 |
ellipsis | 0.3.2 |
amap | 0.8-19.1 |
WGCNA | 1.73 |
superpc | 1.12 |
startupmsg | 0.9.7 |
spelling | 2.3.1 |
shinycssloaders | 1.1.0 |
rms | 6.8-2 |
RcppML | 0.3.7 |
plotrix | 3.8-4 |
MVA | 1.0-8 |
memisc | 0.99.31.8 |
LaplacesDemon | 16.1.6 |
Homo.sapiens | 1.3.1 |
HKprocess | 0.1-1 |
gridExtra | 2.3 |
GPfit | 1.0-8 |
geeM | 0.10.1 |
FSA | 0.9.5 |
crosstalk | 1.2.1 |
affy | 1.82.0 |
waldo | 0.5.3 |
splus2R | 1.3-5 |
smoother | 1.3 |
SIS | 0.8-8 |
Signac | 1.14.0 |
renv | 1.0.10 |
prodlim | 2024.06.25 |
ppclust | 1.1.0.1 |
MutationalPatterns | 3.14.0 |
matlab | 1.0.4.1 |
IRanges | 2.38.1 |
igraphdata | 1.0.1 |
Gmisc | 3.0.3 |
ggplotify | 0.1.2 |
geneLenDataBase | 1.40.1 |
etrunct | 0.1 |
entropy | 1.3.1 |
coda | 0.19-4.1 |
tfruns | 1.5.3 |
rstudioapi | 0.16.0 |
RiboProfiling | 1.34.0 |
pkgconfig | 2.0.3 |
pedgene | 3.9 |
nor1mix | 1.3-3 |
htmltools | 0.5.8.1 |
globals | 0.16.3 |
ggExtra | 0.10.1 |
ff | 4.5.0 |
abind | 1.4-8 |
rpart | 4.1.23 |
umap | 0.2.10.0 |
R.filesets | 2.15.1 |
Nozzle.R1 | 1.1-1.1 |
mvtnorm | 1.3-1 |
MRMix | 0.1.0 |
MatrixGenerics | 1.16.0 |
googleVis | 0.7.3 |
future | 1.34.0 |
EnsDb.Hsapiens.v86 | 2.99.0 |
DiagrammeR | 1.0.11 |
convert | 1.80.0 |
alabaster.schemas | 1.4.0 |
lattice | 0.22-6 |
XLConnect | 1.1.0 |
tkrplot | 0.0-27 |
sesameData | 1.22.0 |
seqminer | 9.7 |
Rtsne | 0.17 |
pso | 1.0.4 |
logisticPCA | 0.2 |
FD | 1.0-12.3 |
BSgenome | 1.72.0 |
arrayhelpers | 1.1-0 |
tfestimators | 1.9.2 |
sjmisc | 2.8.10 |
shape | 1.4.6.1 |
R.utils | 2.12.3 |
lhs | 1.2.0 |
httpcode | 0.3.0 |
gridBase | 0.4-7 |
genomeIntervals | 1.60.0 |
furrr | 0.3.1 |
bookdown | 0.40 |
backports | 1.5.0 |
affyPLM | 1.80.0 |
tcltk2 | 1.2-11 |
showtextdb | 3.0 |
shinyWidgets | 0.8.7 |
Rsubread | 2.18.0 |
rgexf | 0.16.3 |
rgenoud | 5.9-0.11 |
projpred | 2.8.0 |
polyclip | 1.10-7 |
microbiome | 1.26.0 |
magick | 2.8.3 |
ltsa | 1.4.6.1 |
InteractionSet | 1.32.0 |
Icens | 1.76.0 |
hgu133a.db | 3.13.0 |
GENEAread | 2.0.10 |
estimability | 1.5.1 |
digest | 0.6.37 |
BiocParallel | 1.38.0 |
alabaster.base | 1.4.2 |
writexl | 1.5.1 |
TxDb.Mmusculus.UCSC.mm10.knownGene | 3.10.0 |
sp | 2.1-4 |
SingleCellExperiment | 1.26.0 |
Rgraphviz | 2.48.0 |
parsnip | 1.2.1 |
ncvreg | 3.14.3 |
mscstts | 0.6.3 |
mixmeta | 1.2.0 |
HDO.db | 0.99.1 |
FateID | 0.2.2 |
clValid | 0.7 |
anytime | 0.3.9 |
xaringan | 0.30 |
webshot | 0.5.5 |
terra | 1.7-78 |
survivalROC | 1.0.3.1 |
RgoogleMaps | 1.5.1 |
rBiopaxParser | 2.44.0 |
pseudo | 1.4.3 |
plsVarSel | 0.9.12 |
pkgcond | 0.1.1 |
ModelMetrics | 1.2.2.2 |
knitr | 1.48 |
jpeg | 0.1-10 |
JASPAR2018 | 1.1.1 |
gridSVG | 1.7-5 |
FNN | 1.1.4.1 |
exactRankTests | 0.8-35 |
changepoint | 2.2.4 |
carData | 3.0-5 |
biovizBase | 1.52.0 |
xml2 | 1.3.6 |
tximport | 1.32.0 |
timereg | 2.0.6 |
texreg | 1.39.4 |
stringr | 1.5.1 |
praznik | 11.0.0 |
phangorn | 2.12.1 |
OmicCircos | 1.42.0 |
jquerylib | 0.1.4 |
flextable | 0.9.6 |
BSgenome.Ecoli.NCBI.20080805 | 1.3.1000 |
bluster | 1.14.0 |
VIM | 6.2.2 |
tuneR | 1.4.7 |
tibble | 3.2.1 |
RNeXML | 2.4.11 |
Rglpk | 0.6-5.1 |
penalized | 0.9-52 |
munsell | 0.5.1 |
HiClimR | 2.2.1 |
gProfileR | 0.7.0 |
gnm | 1.1-5 |
gap | 1.6 |
facets | 0.6.2 |
energy | 1.7-12 |
dgof | 1.4 |
Cairo | 1.6-2 |
BSgenome.Cfamiliaris.UCSC.canFam2 | 1.4.0 |
ASCAT | 3.1.3 |
ActiveDriver | 1.0.0 |
sloop | 1.0.1 |
R.huge | 0.10.1 |
Rcpp | 1.0.13 |
png | 0.1-8 |
missMethyl | 1.38.0 |
MatrixModels | 0.5-3 |
gsmoothr | 0.1.7 |
forge | 0.2.0 |
fastmatch | 1.1-4 |
BiocIO | 1.14.0 |
aroma.apd | 0.7.0 |
aroma.affymetrix | 3.2.2 |
aCGH | 1.82.0 |
triebeard | 0.4.1 |
subselect | 0.15.5 |
SNPRelate | 1.38.1 |
showtext | 0.9-7 |
ShortRead | 1.62.0 |
QuickJSR | 1.4.0 |
profileModel | 0.6.1 |
mixdist | 0.5-5 |
miscF | 0.1-5 |
mi | 1.1 |
mboost | 2.9-11 |
genomewidesnp6Crlmm | 1.0.7 |
generics | 0.1.3 |
float | 0.3-2 |
ergm.count | 4.1.2 |
EpiDynamics | 0.3.1 |
enrichplot | 1.24.4 |
Deducer | 0.7-9 |
cleaver | 1.42.0 |
systemfonts | 1.1.0 |
stringdist | 0.9.12 |
som | 0.3-5.2 |
setRNG | 2024.2-1 |
mlbench | 2.1-5 |
lpSolveAPI | 5.5.2.0-17.12 |
gridGraphics | 0.5-1 |
ggforce | 0.4.2 |
FlowSorted.Blood.450k | 1.42.0 |
findpython | 1.0.8 |
fields | 16.3 |
downlit | 0.4.4 |
aws | 2.5-6 |
annotatr | 1.30.0 |
Users can install their own packages. By default, on RHEL8, this private library
is located at /data/$USER/R/rhel8/%v
where %v
is the major.minor version of R (e.g. 4.3). This is a change from the
behaviour on RHEL7 where the default location was ~/R/%v/library
.
Note that this directory is not created automatically by some
versions of R so it is safest to create it manually before installing R
packages.
Users can choose alternative locations for this directory by setting and
exporting the environment variable $R_LIBS_USER
in your shell
startup script. If you are a bash user, for example, you could add the
following line to your ~/.bash_profile
to relocated your R
library:
export R_LIBS_USER="/data/$USER/code/R/rhel8/%v"
Here is an example using the pacman package for easier package management:
[user@cn3144 ~]$ R R version 4.1.0 (2021-05-18) -- "Camp Pontanezen" Copyright (C) 2021 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) > library(pacman) > p_isinstalled(rapport) [1] FALSE > p_install(rapport) Installing package into ‘/spin1/home/linux/user/R/4.1/library’ (as ‘lib’ is unspecified) also installing the dependency ‘rapportools’ trying URL 'http://cran.rstudio.com/src/contrib/rapportools_1.0.tar.gz' [...snip...] rapport installed >
A better approach than relying on packages installed centrally or in your home directory is to create isolated, per project package sets. This increases reproducibility at the cost of increased storage and potential package installation headaches. Some packages to implement this:
R batch jobs are similar to any other batch job. A batch script ('rjob.sh') is created that sets up the environment and runs the R code:
#!/bin/bash module load R/4.2 R --no-echo --no-restore --no-save < /data/user/Rtests/Rtest.r > /data/user/Rtests/Rtest.out
or use Rscript
instead
#!/bin/bash module load R/3.5 Rscript /data/user/Rtests/Rtest.r > /data/user/Rtests/Rtest.out
Submit this job using the Slurm sbatch command.
sbatch [--cpus-per-task=#] [--mem=#] rjob.sh
R scripts can be written to accept command line arguments. The simplest
way of doing this is with the commandArgs()
function. For
example the script 'simple_args.R'
args <- commandArgs(trailingOnly=TRUE) i <- 0 for (arg in args) { i <- i + 1 cat(sprintf("arg %02i: '%s'\n", i, arg)) }
can be called like this
[user@cn3144]$ module load R [user@cn3144]$ Rscript simple.R this is a test arg 01: 'this' arg 02: 'is' arg 03: 'a' arg 04: 'test' [user@cn3144]$ Rscript simple.R 'this is a test' arg 01: 'this is a test' [user@cn3144]$ R --no-echo --no-restore --no-save --args 'this is a test' < simple.R arg 01: 'this is a test'
Alternatively, commandline arguments can be parsed using the getopt package. For example:
library(getopt) ### ### Describe the expected command line arguments ### # mask: 0=no argument # 1=required argument # 2=optional argument spec <- matrix(c( # long name short name mask type description(optional) # --------- ---------- ---- ------------ --------------------- 'file' , 'f', 1, 'character', 'input file', 'verbose', 'v', 0, 'logical', 'verbose output', 'help' , 'h', 0, 'logical', 'show this help message' ), byrow=TRUE, ncol=5); # parse the command line opt <- getopt(spec); # show help if requested if (!is.null(opt$help)) { cat(getopt(spec, usage=TRUE)); q(); } # set defaults if ( is.null(opt$file) ) { opt$file = 'testfile' } if ( is.null(opt$verbose) ) { opt$verbose = FALSE } print(opt)
This script an be used as follows
[user@cn3144]$ Rscript getopt_example.R --file some.txt --verbose $ARGS character(0) $file [1] "some.txt" $verbose [1] TRUE [user@cn3144]$ Rscript getopt_example.R --file some.txt $ARGS character(0) $file [1] "some.txt" $verbose [1] FALSE [user@cn3144]$ Rscript getopt_example.R --help Usage: getopt_example.R [-[-file|f]] [-[-verbose|v]] [-[-help|h]] -f|--file input file -v|--verbose verbose output -h|--help show this help message
getopt does not have support for mixing flags and positional arguments. There are other packages with different features and approaches that can be used to design command line interfaces for R scripts.
A swarm of jobs is an easy way to submit a set of independent commands requiring identical resources.
Create a swarmfile (e.g. rjobs.swarm). For example:
Rscript /data/user/R/R1 > /data/user/R/R1.out Rscript /data/user/R/R2 > /data/user/R/R2.out Rscript /data/user/R/R3 > /data/user/R/R3.out
Submit this job using the swarm command.
swarm -f TEMPLATE.swarm [-g #] [-t #] --module R/3.5where
-g # | Number of Gigabytes of memory required for each process (1 line in the swarm command file) |
-t # | Number of threads/CPUs required for each process (1 line in the swarm command file). |
--module TEMPLATE | Loads the TEMPLATE module for each subjob in the swarm |
Rswarm
is a utility to create a series of R input files from a
single R (master) template file with different output filenames and with unique
random number generator seeds. It will simultaneously create a swarm command
file that can be used to submit the swarm of R jobs. Rswarm was originally
developed by Lori Dodd and Trevor Reeve with modifications by the Biowulf
staff.
Say, for example, that the goal of a simulation study is to evaluate properties of the t-test. The function "sim.fun" in file "sim.R" below repeatedly generates random normal data with a given mean, performs a one sample t-test (i.e. testing if the mean is different from 0), and records the p-values.
####################################### # n.samp: size of samples generated for each simulation # mu: mean # sd: standard deviation # nsim: the number of simulations # output1: output table # seed: the seed for set.seed ####################################### sim.fun <- function(n.samp=100, mu=0, sd=1, n.sim, output1, seed){ set.seed(seed) p.values <- c() for (i in 1:n.sim){ x <- rnorm(n.samp, mean=mu, sd=sd) p.values <- c(p.values, t.test(x)$p.value) } saveRDS(p.values, file=output1) }
To use Rswarm, create a wrapper script similar to the following ("rfile.R")
source("sim.R") sim.fun(n.sim=DUMX, output1="DUMY1",seed=DUMZ)
using the the dummy variables which will be replaced by Rswarm.
Dummy variable | Replaced with |
---|---|
DUMX | Number of simulations to be specified in each replicate file |
DUMY1 | Output file 1 |
DUMY2 | Output file 2 (optional) |
DUMZ | Random seed |
To swarm this code, we need replicates of the rfile.R file, each with a different seed and different output file. The Rswarm utility will create the specified number of replicates, supply each with a different seed (from an external file containing seed numbers), and create unique output files for each replicate. Note, that we allow for you to specify the number of simulations within each file, in addition to specifying the number of replicates.
For example, the following Rswarm command at the Biowulf prompt will create 2 replicate files, each specifying 50 simulations, a different seed from a file entitled, "seedfile.txt," and unique output files.
[user@biowulf]$ ls -lh total 8.0K -rw-r--r-- 1 user group 63 Apr 25 12:34 rfile.R -rw-r--r-- 1 user group 564 Apr 25 12:15 seedfile.txt -rw-r--r-- 1 user group 547 Apr 25 12:04 sim.R [user@biowulf]$ head -n2 seedfile.txt 24963 27507 [user@biowulf]$ Rswarm --rfile=rfile.R --sfile=seedfile.txt --path=. \ --reps=2 --sims=50 --start=0 --ext1=.rds The template file is rfile.R The seed file is seedfile.txt The path is . The number of replicates desired is 2 The number of sims per file is 50 The starting file number is 0+1 The extension for output files 1 is .rds The extension for output files 2 is .std.txt Is this correct (y or n)? : y Creating file number 1: ./rfile1.R with output ./rfile1.rds ./rfile1.std.txt and seed 24963 Creating file number 2: ./rfile2.R with output ./rfile2.rds ./rfile2.std.txt and seed 27507 [user@biowulf]$ ls -lh total 16K -rw-r--r-- 1 user group 69 Apr 25 12:39 rfile1.R -rw-r--r-- 1 user group 69 Apr 25 12:39 rfile2.R -rw-r--r-- 1 user group 63 Apr 25 12:34 rfile.R -rw-r--r-- 1 user group 50 Apr 25 12:39 rfile.sw -rw-r--r-- 1 user group 564 Apr 25 12:15 seedfile.txt -rw-r--r-- 1 user group 547 Apr 25 12:04 sim.R [user@biowulf]$ cat rfile1.R source("sim.R") sim.fun(n.sim=50, output1="./rfile1.rds",seed=24963) [user@biowulf]$ cat rfile2.R source("sim.R") sim.fun(n.sim=50, output1="./rfile2.rds",seed=27507) [user@biowulf]$ cat rfile.sw R --no-echo --no-restore --no-save < ./rfile1.R R --no-echo --no-restore --no-save < ./rfile2.R [user@biowulf]$ swarm -f rfile.sw --time=10 --partition=quick --module R 199110 [user@biowulf]$ ls -lh *.rds -rw-r--r-- 1 user group 445 Apr 25 12:52 rfile1.rds -rw-r--r-- 1 user group 445 Apr 25 12:52 rfile2.rds
Full Rswarm usage:
Usage: Rswarm [options] --rfile=[file] (required) R program requiring replication --sfile=[file] (required) file with generated seeds, one per line --path=[path] (required) directory for output of all files --reps=[i] (required) number of replicates desired --sims=[i] (required) number of sims per file --start=[i] (required) starting file number --ext1=[string] (optional) file extension for output file 1 --ext2=[string] (optional) file extension for output file 2` --help, -h print this help text
Note that R scripts can be written to take a random seed as a command line argument
or derive it from the environment variable SLURM_ARRAY_TASK_ID
to achieve
an equivalent result.
The R parallel package provides functions for parallel execution of R code on machines with multiple CPUs. Unlike other parallel processing methods, all jobs share the full state of R when spawned, so no data or code needs to be initialized if it was loaded before starting worker processes. The actual spawning is very fast as well since no new R instance needs to be started.
Parallel includes the dectectCores
function which is often used
to automatically detect the number of available CPUs. However, it always
reports all CPUs available on a node irrespective of how many CPUs
were allocated to the job. This is not the desired behavior for batch jobs
or sinteractive sessions. Instead, please use the availableCores()
function from the future (or parallelly for R >= 4.0.3) package which correctly
returns the number of allocated CPUs:
parallelly::availableCores() # for R >= 4.0.3 # or future::availableCores()
Or, if you prefer, you could also write your own detection function similar to the following example
detectBatchCPUs <- function() { ncores <- as.integer(Sys.getenv("SLURM_CPUS_PER_TASK")) if (is.na(ncores)) { ncores <- as.integer(Sys.getenv("SLURM_JOB_CPUS_PER_NODE")) } if (is.na(ncores)) { return(2) } return(ncores) }
The state of the random number generator in each worker process has
to be carefully considered for any parallel workloads. See the help for
mcparallel
and the parallel package documentation for
more details.
mclapply()
function calls lapply()
in parallel, so that the first two arguments
to mclapply()
are exactly the same as for lapply()
. Except the mc.cores
argument needs
to be specified to split the computatation across multiple CPUs on the same node. In most cases mc.cores
should be equal to the number of allocated CPUs.
> ncpus <- parallelly::availableCores() > options(mc.cores = ncpus) # set a global option for parallel packages # Then run mclapply() > mclapply(X, FUN, ..., mc.cores = ncpus)
Performance comparision between lapply()
and mclapply()
:
> library(parallel) > ncpus <- parallelly::availableCores() > N <- 10^6 > system.time(x<-lapply(1:N, function(i) {rnorm(300)})) ## user system elapsed ## 36.588 1.375 38.053 > system.time(x<-mclapply(1:N, function(i) {rnorm(300)},mc.cores = ncpus)) #Test on a phase5 node with ncpus=12 ## user system elapsed ## 11.587 14.547 13.684
In this example, using 12 CPUs with mclapply()
only reduced runtime by only 2.8 fold compared to running
on a single CPU. Under ideal conditions, the reduction would have been expected to be 12 fold. This means the work done
per CPU was less in the parallel case than in the sequential (single CPU) case. This is called parallel efficiency.
In this example the efficiency would have been sequential CPU time / parallel CPU time = (38.1 * 1) / (13.7 * 12) = 23%.
Parallel jobs should aim for an efficiency of 70-80%. Because parallel algorithms rarely
scale ideally to multiple CPUs we highly recommend performing scaling test before running programs in parallel.
To better optimize the usage of mclapply()
, we benchmarked the performance of mclappy()
with 2-32 CPUs
and compared their efficiency:
The code used for benchmark was:
> library(parallel) > library(microbenchmark) > N <- 10^5 # benchmark the performance with 2-32 CPUs for 20 times > for (n in c(2,4,6,8,16,32)) { microbenchmark(mctest = mclapply(1:N, function(i) {rnorm(30000)},mc.cores=n),times = 20) }
As show in the figure, this particular mclapply()
should be run with no more than 6 CPUs
to ensure a higher than 70% of efficiency. This may be different for your code and should be tested
for each type of workload. Note that memory usage increases with more CPUs are used which
makes it even more important to not allocate more CPUs than necessary.
A very convenient way to do parallel computations is provided by the foreach package. Here is a simple example (copied from this blog post)
> library(foreach) > library(doParallel) > library(doMC) > registerDoMC(cores=future::availableCores()) > max.eig <- function(N, sigma) { d <- matrix(rnorm(N**2, sd = sigma), nrow = N) E <- eigen(d)$values abs(E)[[1]] } > library(rbenchmark) > benchmark( foreach(n = 1:100) %do% max.eig(n, 1), foreach(n = 1:100) %dopar% max.eig(n, 1) ) ## test replications elapsed relative user.self sys.self user.child sys.child ##1 foreach(n = 1:100) %do% max.eig(n, 1) 100 32.696 3.243 32.632 0.059 0.000 0.00 ##2 foreach(n = 1:100) %dopar% max.eig(n, 1) 100 10.083 1.000 3.037 3.389 43.417 10.73 >
Note that with 12 CPUs we got a speedup of only 3.2 relative to sequential resulting in a low parallel efficiency. Another cautionary tale to carefully test scaling of parallel code.
A second way to run foreach in parallel:
> library(doParallel) > cl <- makeCluster(future::availableCores()) > registerDoParallel(cl) # parallel command > ... # stop cluster > stopCluster(cl)
What if we increased the number of tasks and the size of the largest matrix
(i.e. more work per task)? In the example above that means increasing the
i
in foreach(n=1:i)
using a fixed number of CPUs (32
in this case). We then calculated the speedup relative to execution on 2 CPUs:
If parallelism was 100% efficient, the speedup would be 16-fold. We recommend
running jobs at 70% parallel efficiency or better which would correspond to a
11-fold speedup in this case (blue horizontal line). In this example, 70% efficiency
is reached at i > 300
. That means on biowulf you should only
run this code on 32 CPUs if for i > 300
.
How does the code perform with different numbers of CPUs for i = 500
.
Based on the results shown below, this code should be run with no more than 32 CPUs
to ensure that efficiency is better than 70%.
The R
BiocParallel provides modified versions and novel implementation of
functions for parallel evaluation, tailored to use with Bioconductor objects. Like
the parallel package, it is not aware of slurm allocations and will therefore,
by default, try to use parallel::detectCores() - 2
CPUs, which is
all but 2 CPUs installed on a compute node irrespective of how many CPUs have
been allocated to a job. That will lead to overloaded jobs and very inefficient
code. You can verify this by checking on the registered backends after allocating
an interactive session with 2 CPUs:
> library(BiocParallel) > registered() $MulticoreParam class: MulticoreParam bpisup: FALSE; bpnworkers: 54; bptasks: 0; bpjobname: BPJOB bplog: FALSE; bpthreshold: INFO; bpstopOnError: TRUE bptimeout: 2592000; bpprogressbar: FALSE bpRNGseed: bplogdir: NA bpresultdir: NA cluster type: FORK [...snip...]
So the default backend (top of the registered stack) would use 54 workers on 2 CPUs. The default backend can be changed with
> options(MulticoreParam=quote(MulticoreParam(workers=future::availableCores()))) > registered() $MulticoreParam class: MulticoreParam bpisup: FALSE; bpnworkers: 2; bptasks: 0; bpjobname: BPJOB bplog: FALSE; bpthreshold: INFO; bpstopOnError: TRUE [...snip..]
or
> register(MulticoreParam(workers = future::availableCores()), default=TRUE)
Alternatively, a param object can be passed to BiocParallel functions.
R can do implicit multithreading when using a subset of optimized functions in the library or functions that take advantage of parallelized routines in the lower level math libraries.
The function crossprod(m)
which is equivalent to calculating
t(m) %*% m
, for example, makes use of implicit parallelism in the
underlying math libraries and can benefit from using more than one thread. The number
of threads used by such functions is regulated by the environment variable
OMP_NUM_THREADS
, which the R module sets automatically when
loaded as part of a batch or interactive job. Here is the runtime of
this function with different values for OMP_NUM_THREADS
:
The code used for this benchmark was
# this file is benchmark2.R runs <- 3 o <- 2^13 b <- 0 for (i in 1:runs) { a <- matrix(rnorm(o*o), o, o) invisible(gc()) timing <- system.time({ b <- crossprod(a) # equivalent to: b <- t(a) %*% a })[3] cat(sprintf("%f\n", timing)) }
And was called with
node$ module load R/3.5 node$ OMP_NUM_THREADS=1 Rscript benchmark2.R node$ OMP_NUM_THREADS=2 Rscript benchmark2.R ... node$ OMP_NUM_THREADS=32 Rscript benchmark2.R
From within a job that had been allocated 32 CPUs.
Notes:
{OMP|MKL}_NUM_THREADS
to 1.
This is done to avoid problems when also using explicit parallelism that
uses forked worker processes like for example the 'parallel' package. In that
case each worker may start OMP_NUM_THREADS
threads so there
could be as many as ncpus * OMP_NUM_THREADS
total threads. If
ncpus is set to the number of allocated CPUs, as would be the most common case,
that would lead to a huge overload of the job and could potentially fail
if the ulimit on the number of processes is exceeded.OMP_NUM_THREADS
and allocating more CPUs
may or may not increase performance of your code. Before running jobs
with more CPUs it is vital to benchmark single jobs and prove that
your code can benefit from implicit parallelism. Otherwise
resources will be wasted.
There appears to also be another level of parallelism within the R libraries.
One function that takes advantage of this is the dist
function.
The level of parallelism allowed with this mechanism seems to be set with
two internal R functions (setMaxNumMathThreads
and setNumMathThreads
).
Note that this is a distinct mechanism - i.e. setting OMP_NUM_THREADS has
no impact on dist
and setMaxNumMathThreads
has no impact on the performance of crossprod
. Here is the performance
of dist
with different numbers of threads:
The timings for this example were created with
# this file is benchmark1.R rt <- data.frame() o <- 2^12 m <- matrix(rnorm(o*o), o, o) for (nt in c(1, 2, 4, 8, 16, 32)) { .Internal(setMaxNumMathThreads(nt)) .Internal(setNumMathThreads(nt)) res <- system.time(d <- dist(m)) rt <- rbind(rt, c(nt, o, res[3])) } colnames(rt) <- c("threads", "order", "elapsed") write.csv(rt, file="benchmark1.csv", row.names=F)
This was run within an allocation with 32 CPUs with
node$ OMP_NUM_THREADS=1 Rscript benchmark1.R
The same notes about benchmarking as above apply. Also note that there is very little documentation about this to be found online.
Our R installations include the Rmpi and
pbdMPI interfaces to MPI (OpenMPI in our case). R/MPI code
can be run as batch jobs or from an sinteractive session with mpiexec
or srun --mpi=pmix
.
Running MPI code from an interactive R session is currently not supported.
The higher level snow MPI cluster interface is currently not supported. However, the doMPI parallel backend for foreach is supported.
See our MPI docs for more detail
This is a lower level Rmpi script
# this script is test1.r library(Rmpi) id <- mpi.comm.rank(comm=0) np <- mpi.comm.size (comm=0) hostname <- mpi.get.processor.name() msg <- sprintf ("Hello world from task %03d of %03d, on host %s \n", id , np , hostname) cat(msg) invisible(mpi.barrier(comm=0)) invisible(mpi.finalize())
It can be submitted as a batch job with the following script:
#! /bin/bash # this script is test1.sh module load R/4.1.0 || exit 1 srun --mpi=pmix Rscript test1.r ## or # mpiexec Rscript test1.r
which would be submitted with
[user@biowulf]$ sbatch --ntasks=4 --nodes=2 --partition=multinode test1.sh
And would generate output similar to
Hello world from task 000 of 004, on host cn4101 Hello world from task 001 of 004, on host cn4102 Hello world from task 002 of 004, on host cn4103 Hello world from task 003 of 004, on host cn4104
Here is a Rmpi example with actual collective communication though still very simplistic. This script derives an estimate for π in each task, gathers the results in task 0 and repeats this process n times to arrive at a final estimate:
# this is test2.r library(Rmpi) # return a random number from /dev/urandom readRandom <- function() { dev <- "/dev/urandom" rng = file(dev,"rb", raw=TRUE) n = readBin(rng, what="integer", 1) # read some 8-byte integers close(rng) return( n[1] ) # reduce range and shift } pi_dart <- function(i) { est <- mean(sqrt(runif(throws)^2 + runif(throws)^2) <= 1) * 4 return(est) } id <- mpi.comm.rank(comm=0) np <- mpi.comm.size (comm=0) hostname <- mpi.get.processor.name() rngseed <- readRandom() cat(sprintf("This is task %03d of %03d, on host %s with seed %i\n", id , np , hostname, rngseed)) set.seed(rngseed) throws <- 1e7 rounds <- 400 pi_global_sum = 0.0 for (i in 1:rounds) { # each task comes up with its own estimate of pi pi_est <- mean(sqrt(runif(throws)^2 + runif(throws)^2) <= 1) * 4 # then we gather them all in task 0; type=2 means that the values are doubles pi_task_sum <- mpi.reduce(pi_est, type=2, op="sum", dest=0, comm=0) if (id == 0) { # task with id 0 then uses the sum to calculate an avarage across the # tasks and adds that to the global sum pi_global_sum <- pi_global_sum + (pi_task_sum / np) } } # when we're done, the task id 0 averages across all the rounds and prints the result if (id == 0) { cat(sprintf("Real value of pi = %.10f\n", pi)) cat(sprintf(" Estimate of pi = %.10f\n", pi_global_sum / rounds)) } invisible(mpi.finalize())
Submitting this script with a batch script similar to the first example results in output like this:
This is task 000 of 004, on host cn4101 with seed -303950071 This is task 001 of 004, on host cn4102 with seed -1074523673 This is task 002 of 004, on host cn4103 with seed 788983269 This is task 003 of 004, on host cn4104 with seed -922785662 Real value of pi = 3.1415926536 Estimate of pi = 3.1415935438
doMPI provides an MPI backend for the foreach package. Here is a simple hello-world-ish doMPI example. Note that in my testing the least issues were encountered when the foreach loops were run from the first rank of the MPI job.
suppressMessages({ library(Rmpi) library(doMPI) library(foreach) }) myrank <- mpi.comm.rank(comm=0) cl <- doMPI::startMPIcluster() registerDoMPI(cl) if (myrank == 0) { cat("-------------------------------------------------\n") cat("== This is rank 0 running the foreach loops ==\n") x <- foreach(i=1:16, .combine="c") %dopar% { id <- mpi.comm.rank(comm=0) np <- mpi.comm.size (comm=0) hostname <- mpi.get.processor.name() sprintf ("Hello world from process %03d of %03d, on host %s \n", id , np , hostname) } print(x) x <- foreach(i=1:200, .combine="c") %dopar% { sqrt(i) } cat("-------------------------------------------------\n") print(x) x <- foreach(i=1:16, .combine="cbind") %dopar% { set.seed(i) rnorm(3) } cat("-------------------------------------------------\n") print(x) } closeCluster(cl) mpi.quit(save="no")
Do not specify the number of tasks to run. doMPI clusters will hang during shutdown
if doMPI has to spawn worker processes. Instead, let mpiexec
start the processes and then
doMPI will wire up a main process and workers from the existing processes. Note that the
startMPIcluster
function has to be called early in the script for that reason.
Shiny apps can be run on biowulf for a single user. Since they require tunneling a running shiny app cannot be shared with other users. However, if the code for the app is accessible to different users they each can run an ephemeral shiny app on biowulf. We will use the following example application:
## this file is 01_hello.r library(shiny) ui <- fluidPage( # App title ---- titlePanel("Hello Shiny!"), # Sidebar layout with input and output definitions ---- sidebarLayout( # Sidebar panel for inputs ---- sidebarPanel( # Input: Slider for the number of bins ---- sliderInput(inputId = "bins", label = "Number of bins:", min = 1, max = 50, value = 30) ), # Main panel for displaying outputs ---- mainPanel( # Output: Histogram ---- plotOutput(outputId = "distPlot") ) ) ) # Define server logic required to draw a histogram ---- server <- function(input, output) { # Histogram of the Old Faithful Geyser Data ---- # with requested number of bins # This expression that generates a histogram is wrapped in a call # to renderPlot to indicate that: # # 1. It is "reactive" and therefore should be automatically # re-executed when inputs (input$bins) change # 2. Its output type is a plot output$distPlot <- renderPlot({ x <- faithful$waiting bins <- seq(min(x), max(x), length.out = input$bins + 1) hist(x, breaks = bins, col = "#007bc2", border = "white", xlab = "Waiting time to next eruption (in mins)", main = "Histogram of waiting times") }) } # which port to run on port <- tryCatch( as.integer(Sys.getenv("PORT1", "none")), error = function(e) { cat("Please remember to use --tunnel to run a shiny app") cat("See https://hpc.nih.gov/docs/tunneling/") stop() } ) # run the app shinyApp( ui, server, options = list(port=port, launch.browser=F, host="127.0.0.1") )
Start an sinteractive session with a tunnel
[user@biowulf]$ sinteractive --cpus-per-task=2 --mem=6g --gres=lscratch:10 --tunnel salloc.exe: Pending job allocation 46116226 salloc.exe: job 46116226 queued and waiting for resources salloc.exe: job 46116226 has been allocated resources salloc.exe: Granted job allocation 46116226 salloc.exe: Waiting for resource configuration salloc.exe: Nodes cn3144 are ready for job [user@cn3144 ~]$ module load R [user@cn3144 ~]$ Rscript 01_hello.r Listening on http://127.0.0.1:34239
After you set up your tunnel you can use the URL above to access the shiny app.
h2o is a machine learning package written in java. The R interface starts a java h2o instance
with a given number of threads and then connects to it through http. This fails on compute nodes
if the http proxy variables are set. Therefore it is necessary to unset http_proxy
before using h2o:
[user@biowulf]$ sinteractive --cpus-per-task=4 --mem=20g --gres=lscratch:10 salloc.exe: Pending job allocation 46116226 salloc.exe: job 46116226 queued and waiting for resources salloc.exe: job 46116226 has been allocated resources salloc.exe: Granted job allocation 46116226 salloc.exe: Waiting for resource configuration salloc.exe: Nodes cn3144 are ready for job [user@cn3144 ~]$ module load R/4.2 [user@cn3144 ~]$ unset http_proxy [user@cn3144 ~]$ R R version 4.2.0 (2022-04-22) -- "Vigorous Calisthenics" Copyright (C) 2022 The R Foundation for Statistical Computing Platform: x86_64-pc-linux-gnu (64-bit) [...snip...] > library(h2o) > h2o.init(ip='localhost', nthreads=future::availableCores(), max_mem_size='12g') H2O is not running yet, starting it now... Note: In case of errors look at the following log files: /tmp/RtmpVdW92Y/h2o_user_started_from_r.out /tmp/RtmpVdW92Y/h2o_user_started_from_r.err openjdk version "1.8.0_161" OpenJDK Runtime Environment (build 1.8.0_161-b14) OpenJDK 64-Bit Server VM (build 25.161-b14, mixed mode) Starting H2O JVM and connecting: . Connection successful! R is connected to the H2O cluster: H2O cluster uptime: 1 seconds 683 milliseconds H2O cluster timezone: America/New_York H2O data parsing timezone: UTC H2O cluster version: 3.36.1.2 H2O cluster version age: 3 months and 20 days !!! H2O cluster name: H2O_started_from_R_user_ywu882 H2O cluster total nodes: 1 H2O cluster total memory: 10.64 GB H2O cluster total cores: 4 H2O cluster allowed cores: 4 H2O cluster healthy: TRUE H2O Connection ip: localhost H2O Connection port: 54321 H2O Connection proxy: NA H2O Internal Security: FALSE R Version: R version 4.2.0 (2022-04-22) >
dyno is a meta package that installs several other packages from the dynvers (https://github.com/dynverse). It includes some cran packages and some packages only available on github. We generally don't install any new github-only R packages any more so here are the instructions for installing this as a user.
### ### 1. install with the default dependent packages ### [user@biowulf]$ sinteractive --gres=lscratch:5 salloc.exe: Pending job allocation 46116226 salloc.exe: job 46116226 queued and waiting for resources salloc.exe: job 46116226 has been allocated resources salloc.exe: Granted job allocation 46116226 salloc.exe: Waiting for resource configuration salloc.exe: Nodes cn3144 are ready for job [user@cn3144 ~]$ module load R/4.2 [user@cn3144 ~]$ R -q --no-save --no-restore -e 'devtools::install_github("dynverse/dyno")' ### ### 2. install a pached version of babelwhale ### [user@cn3144 ~]$ git clone https://github.com/dynverse/babelwhale.git [user@cn3144 ~]$ patch -p0 <<'__EOF__' --- babelwhale/R/run.R.orig 2021-07-16 20:58:26.563714000 -0400 +++ babelwhale/R/run.R 2021-07-16 20:58:26.483721000 -0400 @@ -122,6 +122,8 @@ environment_variables %>% gsub("^.*=", "", .), environment_variables %>% gsub("^(.*)=.*$", "SINGULARITYENV_\\1", .) ), + "http_proxy" = Sys.getenv("http_proxy"), + "https_proxy" = Sys.getenv("https_proxy"), "SINGULARITY_TMPDIR" = tmpdir, "SINGULARITY_CACHEDIR" = config$cache_dir, "PATH" = Sys.getenv("PATH") # pass the path along __EOF__ [user@cn3144 ~]$ R CMD INSTALL babelwhale ### ### 3. Create a configuration that uses a dedicated singularity cache somewhere ### outside the home directory. In this example using `/data/$USER/dynocache` ### [user@cn3144 ~]$ R -q --no-save --no-restore <<'__EOF__' config <- babelwhale::create_singularity_config( cache_dir = "/data/$USER/dynocache" ) babelwhale::set_default_config(config, permanent = TRUE) __EOF__
guidelines_shiny(dataset, port=####, launch.browser=F)
where
#### is the port set up by the `sinteractive --tunnel`