LeafCutter及rstan的安装

        最近在分析sQTL,用到了一款软件叫LeafCutter, 这个软件在做的第三步鉴定Differential Splicing时,是用封装好的leafcutter包来进行后续分析的。至此,我就开始了一个很crushing的安装过程。

        原软件的安装过程参见https://davidaknowles.github.io/leafcutter/articles/Installation.html。

1、安装rstan包

        Stan是由哥伦比亚大学应用统计系的研究人员在2012年开发的一款基于贝叶斯统计的计算软件。由C++编译而来的Stan,可在Windows、Linux、Mac平台进行安装,而且它提供了不同语言的接口,如R、Python、Matlab、Julia、Scala等,但目前大多数Stan使用者及资源来自R社群。


        首先在服务器上进行安装,基于RedHat内核。

module load r

R

install.packages("rstan")

运行一段时间后报错,c++14 standard requested but cxx14 is not defined windows

============================================================================================================================

于是按照官网给的安装提示进行排查(https://github.com/stan-dev/rstan/wiki/RStan-Getting-Started),如下添加dotR<-file.path(Sys.getenv("HOME"),".R")

if(!file.exists(dotR)) dir.create(dotR)

M<-file.path(dotR, ifelse(.Platform$OS.type=="windows","Makevars.win","Makevars"))

if(!file.exists(M)) file.create(M)

cat("\nCXX14FLAGS=-O3 -march=native -mtune=native",if( grepl("^darwin",R.version$os))"CXX14FLAGS += -arch x86_64 -ftemplate-depth-256"elseif(.Platform$OS.type=="windows")"CXX11FLAGS=-O3 -march=corei7 -mtune=corei7"else"CXX14FLAGS += -fPIC",file=M,sep="\n",append=TRUE)

M<-file.path(Sys.getenv("HOME"),".R",ifelse(.Platform$OS.type=="windows","Makevars.win","Makevars"))

file.edit(M)

之后再添加CXX14=g++,保存,运行

install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE)

但依旧报错c++14 standard requested but cxx14 is not defined windows。

============================================================================================================================

于是又开始排查,发现rstan网站上安装时用的是gcc 4.9(https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Linux),而在服务器上的gcc 版本是4.8(cat /proc/version),因此对gcc进行了升级安装(在https://ftp.gnu.org/gnu/gcc/文件夹下选择下载)。由于是非root用户,只能在自己的目录下安装,安装过程如下:

cd /home/myname/software/

tar -zxvf gcc-4.9.4.tar.gz

cd gcc-4.9.4/

./contrib/download_prerequisites

mkdir gcc_compile

cd gcc_compile/

../configure --disable-checking --enable-languages=c,c++ --disable-multilib --prefix=/home/myname/software/gcc-4.9.4/gcc_compile --enable-threads=posix

make -j12

make install

g++ -v

之后再安装仍旧未成功

============================================================================================================================

再搜索,参考https://medium.com/@samstatsinn/r-and-stan-%E5%AE%89%E8%A3%9D%E8%88%87%E8%A8%AD%E5%AE%9A-f63b764279a7中的linux部分对Makevars进行再次编辑,但是仍出错

============================================================================================================================

接着搜索,最后在这个网站又找到了一个提示(https://discourse.mc-stan.org/t/rstan-installation-on-rhel-6/6558/8),即在Makevars中添加CXX14 = g++ -std=c++1y,照做。最终Makevars的内容为

CXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function -Wno-macro-redefined

CXXFLAGS+=-flto -Wno-unused-local-typedefs

CXX14FLAGS=-O3 -march=native -mtune=native -fPIC

CXX14=g++ -std=c++1y

保存,运行install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE),仍旧有错误,但这次的错误不一样,

unable to load shared object '/home/myname/R/x86_64-pc-linux-gnu-library/3.4/rstan/libs/rstan.so':

/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /home/myname/R/x86_64-pc-linux-gnu-library/3.4/rstan/libs/rstan.so)

============================================================================================================================

google一下“version glibcxx_3.4.20' not found (required by”的错误。按照https://itbilu.com/linux/management/NymXRUieg.html上的进行查看。

strings /usr/lib64/libstdc++.so.6 | grep GLIBC之后的确在系统路径中没有找到GLIBCXX_3.4.20,但在自己目录下安装的gcc文件夹中是有的。

cd /home/myname/software/gcc-4.9.4/gcc_compile/lib64

ls ##发现libstdc++.so.6.0.20

strings libstdc++.so.6 | grep GLIBC ##发现GLIBCXX_3.4.20

于是按照官网的提示(https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Linux的Special Note: CentOS 7.0部分),退出R,并将export LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/usr/local/lib64:/usr/lib64改为export LD_LIBRARY_PATH=/home/myname/software/gcc-4.9.4/gcc_compile/lib64,然后打开R,运行install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE)

至此,linux上的rstan安装成功。

============================================================================================================================

最近又出现了新的问题。前段时间由于需要重新安装了一版R,把之前的文件覆盖掉了,rstan和leafcutter都不可以用了。下面是安装过程。

export LD_LIBRARY_PATH=/home/myname/software/gcc-9.1.0/gcc_compile/lib64,然后打开R,运行install.packages("rstan",repos="https://cloud.r-project.org/",dependencies=TRUE)

之后出现了下问题。g++: error: unrecognized command line option ‘-std=gnu++14’。这是由于系统默认的gcc版本太低,只有4.8.5(gcc --version,或者在R下system('g++ -v')查看),但安装rstan需要更高版本,而之前已经在自己的home目录下安装了新版本gcc,现在只需要在安装的时候指定gcc的版本即可,此时就需要更改R的配置文件。即更改/home/.R/Makevars文件,更改后的内容如下:

CXXFLAGS=-O3 -mtune=native -march=native -Wno-unused-variable -Wno-unused-function -Wno-macro-redefined

CXXFLAGS+=-flto -Wno-unused-local-typedefs

CXX14FLAGS=-O3 -march=native -mtune=native -fPIC

CC=/home/myname/software/gcc-9.1.0/gcc_compile/bin/gcc

CXX=/home/myname/software/gcc-9.1.0/gcc_compile/bin/g++

保存后退出。


之后下载rstan包(https://cran.r-project.org/src/contrib/rstan_2.21.2.tar.gz)到/home/myname/software/R-3.6.2/library。

现在开始安装如下

cd home/myname/software/R-3.6.2/library

/home/myname/software/R-3.6.2/bin/R CMD INSTALL rstan_2.21.2.tar.gz

安装成功


过程中如果遇到00LOCK-*类似的问题,直接 cd /home/myanme/software/R-3.6.2/library下删除


在windows上安装rstan开始也有错误,但比较好解决。

参照官网即可,https://github.com/stan-dev/rstan/wiki/Installing-RStan-from-source-on-Windows


在Mac上安装完全没问题。


2、安装leafcutter包


首先是在服务器上

if (!require("devtools"))

install.packages("devtools", repos='http://cran.us.r-project.org')

devtools::install_github("stan-dev/rstantools")

没问题,安装成功


在windows上

比较坑的是,需要的一个包doMC的新版本只能使用与Linux版的R,在windows上的R不适用,但是可以在https://cran.r-project.org/src/contrib/Archive/doMC/下到旧版的,这里我下的是1.3.5。下载下来存放到C:\Program Files\R\R-3.6.1\library下,然后从Rstudio里安装。之后按以下步骤进行leafcutter的安装即可,注意中间要求是否更新,选择不更新即可,或者直接回车。

if (!require("devtools")) install.packages("devtools", repos='http://cran.us.r-project.org')

devtools::install_github("stan-dev/rstantools")

devtools::install_github("davidaknowles/leafcutter/leafcutter")


在Mac上安装完全没问题

============================================================================================================================

总之,要注意的是需要修改Makevars.win中内容,且windows和Linux下的内容不一样。

一般windows下Makevars.win文件存放在C:\Users\Myname\Documents\.R文件下,服务器上该文件存放于自己的根目录下./R。

你可能感兴趣的:(LeafCutter及rstan的安装)