R
集群R 使用¶
Warning
集群上R最新的主线版本为 R/4.0.0,此版本内安装了大量可用R包,如代码或R包无较高R版本需求,建议优先使用此版本。
集群上安装了多个版本的R,3.3, 3.6, 4.0, 4.2等,可使用module av R 查看。用户可以根据需要,通过module load 命令调用需要的R。
module load R/4.0.0
在R/4.0.0 中,安装了许多常用的R包,部分R包安装运行时会依赖高版本GCC、库文件等,具体见本文后面的表格,使用这些R包需要先载入对应的软件。
对于集群中没有安装的R包,用户可以在自己的账号中安装。调用集群中的R安装R包时候,R包会装在默认位置~/R/x86_64-pc-linux-gnu-library/x.x 目录中,如使用R/4.0.0 ,R包默认安装目录为 ~/R/x86_64-pc-linux-gnu-library/4.0 。
各种R包安装方式见 R包安装。
如果不是安装在默认位置,可以在~/.bashrc 目录内写入R_LIBS变量来指定R包安装的位置以方便调用。
export R_LIBS=~/R_libs
Rstudio¶
为方便画图等,可以调用集群中安装的Rstudio,具体见RStudio。
Rstudio运行在计算节点,由于计算节点没有联网,因此不能直接安装R包。处理方式为:
- 自行安装
在登录节点上,使用集群公共R R/4.2.0 安装R包到指定目录,然后在Rstudio中使用安装的这个包。
$ module load R/4.2.0
# 确保 ~/R/rstudio/4.2/ 目录存在,否则自行创建
$ R
# install.packages包安装,使用lib参数指定安装位置
$ > install.packages("ggplot2", lib="~/R/rstudio/4.2/")
# Bioconductor包安装
# 先指定安装位置,然后再安装
$ > .libPaths(c("~/R/rstudio/4.2/", .libPaths()))
$ > BiocManager::install("methylKit")
- 使用预装包
# 添加包路径 $ > .libPaths(c('/public/home/software/opt/bio/software/rstudio/4.2/library',.libPaths())) # 如使用装好的 monocle3 $ > library(monocle3)
R 依赖库¶
| R包 | 集群R版本 | 依赖库 |
|---|---|---|
| LPmerge | 4.0.0 | module load glpk/5.0 |
| raster | 4.0.0 | module load GDAL/3.1.0 SQLite/3.23.1 PROJ/6.3.2 GEOS/3.7.1 |
| xcms | 4.0.0 | module load netCDF/4.5.0 Szip/2.1.1 |
| scFunctions | 4.0.0 | module load GEOS/3.7.1 GCC/5.4.0-2.26 |
| Seurat(4.3.0) | 4.0.0 | module load GEOS/3.7.1 GCC/5.4.0-2.26 libpng/1.6.24 |
| Seurat(5.0.1) | 4.2.0 | module load GEOS/3.7.1 GCC/7.2.0-2.29 libpng/1.6.24 glpk/5.0 |
| SimBu | 4.0.0 | module load GCC/5.4.0-2.26 |
| RNetCDF | 3.6.0 | module load netCDF/4.7.4 |
| Nebulosa | 4.0.0 | module load GEOS/3.7.1 GCC/5.4.0-2.26 |
| BioEnricher | 4.3.2 | module load GCC/7.2.0-2.29 libpng/1.6.24 |
| MEGENA | 4.2.0 | module load GCC/7.2.0-2.29 glpk/5.0 |
| devtools | 4.2.0/4.3.2 | module load GCC/9.4.0 |
| monocle3 | 4.2.0 | module load GCC/7.2.0-2.29 glpk/5.0 PROJ/6.3.2 GDAL/3.1.0 GEOS/3.7.1 |
| DESeq2 | 4.2.0 | module load GCC/5.4.0-2.26 libpng/1.6.24 glpk/5.0 |
| GenomicFeatures | 4.2.0 | module load GCC/5.4.0-2.26 libpng/1.6.24 |
| branchpointer | 4.2.0 | module load GCC/5.4.0-2.26 libpng/1.6.24 |
| GENESPACE | 4.2.0 | module load GCC/5.4.0-2.26 glpk/5.0 OrthoFinder/2.3.8 MCScanX/1.0 |
其它库缺失可以加载对应的库,见 常用库缺失解决办法
'GLIBC_x.xx' not found 报错解决办法,见 'GLIBC_x.xx' not found
R 源码编译及部分复杂包安装¶
4.2.0¶
devtools¶
$ module load R/4.2.0 GCC/9.4.0 freetype/2.6.5 harfbuzz/1.7.5 fribidi/1.0.13
$ Rscript -e 'install.packages(c("devtools"), repos="http://cran.us.r-project.org")'
scRNA 镜像¶
igraph¶
安装 igraph_2.0.3 时报错,error: ‘isnan’ is already declared in this scope using std::isnan;,可以有三种解决方案:
方案1
安装低版本的
igraph,测试安装1.6.0可行。方案2
使用
GCC 7,module load GCC/7.2.0-2.29方案3
更改源码,同时也要加载
GCC 5,module load GCC/5.4.0-2.26。下载源码包,解压,找到这2个源码文件src/vendor/cigraph/src/community/infomap/infomap.cc,src/vendor/cigraph/src/community/walktrap/walktrap.cpp,将其中的using std::isnan;给注释掉,然后再打包,再使用该源码包安装R CMD INSTALL igraph_2.0.3.1.tar.gz。
ggtree¶
ggtree 安装过程中报错 object 'rect_to_poly' not found,根据作者的说法是 rect_to_poly 在 geom_hilight 中有使用,但这个函数有问题,然后在 ggplot2 中被移除了,导致这个报错。作者给的临时解决办法是根据 ggplot2 中新的实现,在 ggtree 中自己实现 rect_to_poly 这个函数,具体见 copy rect_to_poly, #601 。解决办法作者在这里说得不是很详细,翻源码看了一下,做了一番测试,解决方法如下:
下载 ggtree 源码,这里使用的 ggtree_3.6.2.tar.gz,解压,将 R/geom_hilight.R 中第 486 行代码注释,然后添加新的 rect_to_poly 实现,如下所示。
# rect_to_poly <- getFromNamespace("rect_to_poly", "ggplot2")
rect_to_poly <- function(xmin, xmax, ymin, ymax) {
data_frame0(
y = c(ymax, ymax, ymin, ymin, ymax),
x = c(xmin, xmax, xmax, xmin, xmin)
)
}
$ tar -czvf ggtree_3.6.2.1.tar.gz ggtree
$ R CMD INSTALL ggtree_3.6.2.1.tar.gz
R 4.3.2¶
R 编译安装¶
在交互节点安装
$ wget https://mirror.nju.edu.cn/CRAN/src/base/R-4/R-4.3.2.tar.gz
$ tar xf R-4.3.2.tar.gz
$ cd R-4.3.2
$ module load PCRE/10.00
$ ./configure --enable-R-shlib --with-x --with-cairo --prefix=/DIR/
$ make -j12
$ make install
devtools¶
$ module load R/4.3.2 GCC/9.4.0 freetype/2.6.5 harfbuzz/1.7.5 fribidi/1.0.13 git/2.17.0
$ Rscript -e 'install.packages(c("devtools"), repos="http://cran.us.r-project.org")'
部分错误解决¶
C++17 standard requested but CXX17 is not defined安装R包的过程中出现报错
C++17 standard requested but CXX17 is not defined,解决办法为加载高版本GCC,然后设置R相关环境变量。$ module load GCC/7.2.0-2.29 $ mkdir -p ~/.R $ echo 'CXX17 = g++ -std=c++17 -fPIC' >> ~/.R/Makevarsaddress 0x20, cause 'memory not mapped'R包安装或运行过程中,出现如下报错可以通过重新安装Rcpp解决*** caught segfault *** address 0x20, cause 'memory not mapped'参考:$ >remove.packeages('Rcpp') $ >install.packages('Rcpp')
installing-optimized-libraries
本文阅读量 次本站总访问量 次