? ? ? ? 最近在分析sQTL,用到了一款軟件叫LeafCutter,?這個軟件在做的第三步鑒定Differential Splicing時锯蛀,是用封裝好的leafcutter包來進行后續(xù)分析的价说。至此歹啼,我就開始了一個很crushing的安裝過程。
? ? ? ? 原軟件的安裝過程參見https://davidaknowles.github.io/leafcutter/articles/Installation.html晋涣。
1仪媒、安裝rstan包
? ? ? ? Stan是由哥倫比亞大學應(yīng)用統(tǒng)計系的研究人員在2012年開發(fā)的一款基于貝葉斯統(tǒng)計的計算軟件。由C++編譯而來的Stan谢鹊,可在Windows算吩、Linux、Mac平臺進行安裝佃扼,而且它提供了不同語言的接口偎巢,如R、Python兼耀、Matlab压昼、Julia、Scala等翠订,但目前大多數(shù)Stan使用者及資源來自R社群巢音。
? ? ? ? 首先在服務(wù)器上進行安裝,基于RedHat內(nèi)核尽超。
module load r
R
install.packages("rstan")
運行一段時間后報錯官撼,c++14 standard requested but cxx14 is not defined windows
============================================================================================================================
于是按照官網(wǎng)給的安裝提示進行排查(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。
============================================================================================================================
于是又開始排查巩踏,發(fā)現(xiàn)rstan網(wǎng)站上安裝時用的是gcc 4.9(https://github.com/stan-dev/rstan/wiki/Installing-RStan-on-Linux)秃诵,而在服務(wù)器上的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進行再次編輯毅往,但是仍出錯
============================================================================================================================
接著搜索,最后在這個網(wǎng)站又找到了一個提示(https://discourse.mc-stan.org/t/rstan-installation-on-rhel-6/6558/8)派近,即在Makevars中添加CXX14 = g++ -std=c++1y攀唯,照做。最終Makevars的內(nèi)容為
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之后的確在系統(tǒng)路徑中沒有找到GLIBCXX_3.4.20,但在自己目錄下安裝的gcc文件夾中是有的诗茎。
cd?/home/myname/software/gcc-4.9.4/gcc_compile/lib64
ls ##發(fā)現(xiàn)libstdc++.so.6.0.20
strings libstdc++.so.6 | grep GLIBC ##發(fā)現(xiàn)GLIBCXX_3.4.20
于是按照官網(wǎng)的提示(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安裝成功枢析。
============================================================================================================================
最近又出現(xiàn)了新的問題玉掸。前段時間由于需要重新安裝了一版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)
之后出現(xiàn)了下問題。g++: error: unrecognized command line option ‘-std=gnu++14’饮睬。這是由于系統(tǒng)默認的gcc版本太低租谈,只有4.8.5(gcc --version,或者在R下system('g++ -v')查看)捆愁,但安裝rstan需要更高版本割去,而之前已經(jīng)在自己的home目錄下安裝了新版本gcc,現(xiàn)在只需要在安裝的時候指定gcc的版本即可昼丑,此時就需要更改R的配置文件呻逆。即更改/home/.R/Makevars文件,更改后的內(nèi)容如下:
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咖城。
現(xiàn)在開始安裝如下
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開始也有錯誤呼奢,但比較好解決宜雀。
參照官網(wǎng)即可,https://github.com/stan-dev/rstan/wiki/Installing-RStan-from-source-on-Windows
在Mac上安裝完全沒問題控妻。
2州袒、安裝leafcutter包
首先是在服務(wù)器上
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里安裝依鸥。之后按以下步驟進行l(wèi)eafcutter的安裝即可亥至,注意中間要求是否更新,選擇不更新即可贱迟,或者直接回車姐扮。
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中內(nèi)容衣吠,且windows和Linux下的內(nèi)容不一樣茶敏。
一般windows下Makevars.win文件存放在C:\Users\Myname\Documents\.R文件下,服務(wù)器上該文件存放于自己的根目錄下./R缚俏。