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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容