利用conda布署生物信息分析环境
很高兴再次见到生信技能树的粉丝们,我是技能树VIP小编青山屋主,目前在中国农科院工作,部分朋友可能在知乎上面看到过我,同时我也在我们的技能树公众号发布过几个教程:
以及转录组系列~~~(顺便预告一下,明天有个转录组全流程实战分享哦)
下面我给大家分享部署生物信息学数据分析环境的一些心得。
问题
早在今年9月份,我就开始了系统的转录组分析操作,中间遇到硬件性能不足的问题,折腾了两个星期多没弄好,最后还是花钱升级了一次内存才解决。
从那件事上我吸取了个教训,能花钱解决的学习问题,最好毫不犹豫的花钱解决。
所以接着我就花钱配了一台高配的台式机,计划当做个人服务器用。但是随后又遇到了一个问题:各种生信分析软件的安装太费时间!配置常用的软件的时候,常常遇到各种各样奇怪的问题。有时是Linux系统问题,有时是软件版本问题,有时又是软件兼容问题。各种包,各种库,各种版本!更可恶的是R程序升级太快,各种R包的安装又常常出现各种问题。已经成功安装的R包,换一台电脑再安装就会跑出各种意想不到的问题。真是要命!
于是从10开始到现在我又开始研究如何又好又快的将一个成熟的生物信息分析环境建立起来,现在稍稍有点收获,整理在这里与大家一起分享。
首屈一指选docker
解决以上问题最好的方法,莫过于使用docker了。
Docker的一个鲜明的特点是提供一个即时可用的镜像(使用上类似于虚拟系统,但是实际上与虚拟机玩去不一样),开发者把生物信息的各种软件、R包等部署到镜像中, 使用者可以直接下载该镜像进行使用,省去了个人安装软件,配置环境的种种烦恼。
比如我感兴趣的是RNAseq分析,正好Nature Commnication 上发了一篇关于RNAseq数据分析中各种软件以及分析流程的测评文章,提出了RNAseq最佳分析流程"RNACocktail",且提供了docker image,利用这个image就能轻松建立RNAseq的分析环境。 下面介绍具体的建立方法:
#系统ubuntu16.04 LTS
#安装docker
sudo apt-get install docker.io
#查看是否安装成功
sudo docker info
#如果输入以上命令后能显示docker的信息说明安装成功
#运行hello-word进行测试
sudo docker run hello-world
#该命令实际上是运行hello-world这个image,但是这时我们还没有这image,docker会自动检测,并下载hello-world这个测试image,并在容器中运行
#下载RNAcocktail的镜像
docker pull marghoob/rnacocktail
下载这个镜像需要较长时间,而且我下了三次全部没下载成功,所以后面的具体使用方法就没有啦········ (主要是因为国内的长城比较强大!)
其次可以用conda
docker虽好,但是安装和使用docker需要管理员的权限,所以使用服务器的小伙伴们就没办法用了。而且docker image也常常遇到pull不下来的情况。
那咋办呢?
有办法,用conda!
conda的基本使用可以参考我的知乎专栏学习·持续输出 中的介绍。我们这里重点介绍conda的高阶用法。
使用conda快速建立他人的环境
conda可以建立不同的环境,每种环境单独存在,互不干扰。同一系统下可以建立许多不同的环境,并且可以把该环境的配置导出为yml文件,其他人根据你的yml文件就可以快速构建一个同样的环境。
首先我们熟悉一下conda中环境的建立和删除
#建立一个新环境
conda create -n myenv #参数-n代表设置环境名称,myenv是具体的环境名,可以替换成自己想要的名称
#建立一个新环境,同时指定该坏境中python的版本
conda create -n myenv python=2.7
#还可以建立环境的同时安装软件
conda create -n myenv
conda create -n myenv Scipy=0.15.0
#环境建立成功后,会提示环境的激活和关闭的方法
source activate myenv
source deactivate myenv
#查看已有的环境
conda info --envs
#删除某个环境
conda remove -n myenv --all
# 或者更加粗暴
rm -rf ~/miniconda3/envs/myenv/ #该路径是要删除的环境所在的路径
熟悉了conda 中环境的相关命令后,我们再看用yml文件快速配置conda环境
#首先,导出一个已经建立好的环境的yml文件
conda env export -n biostar -f biostar.yml #该命令会在当前路径下生成一个yml文件。该文件包含conda环境的name,channels和dependencies三部分信息。
#根据yml文件建立新环境
conda env create -f myenv.yml
#安装完成后,可以激活该环境,查看该环境中的软件
source activate myenv
conda list
除了通过本地yml文件快速建立环境外,还可以根据conda cloud上的yml文件直接在本地建立环境。不过这需要注册和登录anaconda账户,相关功能可通过conda env --help以及conda env create --help查看使用方法。
通过txt文件建立新环境
以上介绍的是通过yml文件快速建立conda环境。如果操作系统相同,且不关心channles信息,也可以通过conda导出一个包含软件链接的txt文件来复刻别人的分析环境。
注意:这种方法只能用在同一平台操作系统甚至同一版本的操作系统(比如32位和64位的)
#在当前路径下输出当前环境的软件信息
conda list --explicit > spec-file.txt
该文件的主要内容如下:
# This file may be used to create an environment using:
# $ conda create --name <env> --file <this file>
# platform: osx-64
@EXPLICIT
https://repo.continuum.io/pkgs/free/osx-64/mkl-11.3.3-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/numpy-1.11.1-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/openssl-1.0.2h-1.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/pip-8.1.2-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/python-3.5.2-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/readline-6.2-2.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/setuptools-25.1.6-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/sqlite-3.13.0-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/tk-8.5.18-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/wheel-0.29.0-py35_0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/xz-5.2.2-0.tar.bz2
https://repo.continuum.io/pkgs/free/osx-64/zlib-1.2.8-3.tar.bz2
#在当前环境中安装txt文件中的软件
conda install --name myenv --file spec-file.txt
注意:用这种方法时由于conda没有输出depencies信息,所以一定要保证所输出的软件信息是当前处于激活状态的环境中的,且必须用在同一平台,同一版本的系统上。
通过以上介绍可以发现,用conda快速建立环境不需管理员权限,删除和新建都很方便,但是前提是必须要有一个已经存在的yml或者txt文件。这些文件可以从anaconda cloud上去找,虽然会费点劲,但是不费点劲怎么提升你的技能呢?
用conda安装R包
以上介绍的都是用conda安装软件,而后期生物信息分析时,大量用到的是各种R包。R包的安装也是一个麻烦事,R本身更新较快,各种R包间的依赖关系又非常复杂。同一个R包在不同的操作系统上安装时也会遇到各种不同的问题。
conda不仅能统筹协调各种生物信息软件的安装,也可以协调各种R包的安装。
入门使用方式可以参考官方介绍Using R with conda 我这里重点介绍一下用conda安装bioconductor包。
比如通过啊conda安装DESeq2这个包
conda search bioconductor-deseq2
返回结果会提供各个channles中的可用的这个包的各种版本号以及对应的R的版本号
bioconductor-deseq2
1.8.2 r3.2.2_0 bioconda
1.10.0 r3.2.2_0 bioconda
1.10.0 r3.2.2_1 bioconda
1.10.1 r3.2.2_0 bioconda
1.12.4 r3.3.1_1 bioconda
1.12.4 r3.3.1_2 bioconda
1.12.4 r3.3.1_3 bioconda
1.12.4 r3.3.1_4 bioconda
1.12.4 r3.3.1_5 bioconda
1.14.1 r3.3.1_0 bioconda
1.14.1 r3.3.2_0 bioconda
* 1.16.1 r3.3.2_0 bioconda
1.16.1 r3.4.1_0 bioconda
1.16.1 r3.4.1_2 bioconda
1.16.1 r3.4.1_3 bioconda
1.18.0 r3.4.1_0 bioconda
1.18.1 r3.4.1_0 bioconda
你可以根据你的R的版本选择安装对应版本的DESeq2,或者直接输入
conda install bioconductor-deseq2
conda会自动安装最新版本的deseq2以及对应版本的R,以及各种依赖的其他R包。
参考资料与感谢
conda user guide
hoptop大神的RNACocktail安装笔记
hoptop大神的生信软件安装神器