Bioconda软件安装神器:多版本并存、环境复制、环境导出

seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述))、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step) - Limma差异分析、火山图、功能富集)等内容。

2017年生信宝典发布了Linux学习 - 又双叒叕一个软件安装方法,现在根据使用经验做一些更新,主要是增加了conda环境的复制、导入和导出功能。最开始是为了培训时,学员更方便搭建流程引入的,现在分享出来,方便更多人使用。

Conda包管理系统

Conda是一种通用包管理系统,旨在构建和管理任何语言的任何类型的软件。通常与Anaconda (集成了更多软件包,https://www.anaconda.com/download/#download)和Miniconda(只包含基本功能软件包, https://conda.io/miniconda.html)一起分发。

最初接触到Anaconda是用于Python包的安装。Anaconda囊括了100多个常用的Python包,一键式安装,解决Python包安装的痛苦。但后来发现,其还有更多的功能,尤其是其增加了bioconda (https://bioconda.github.io/index.html)频道后,生物信息分析的1500多个软件都可以一键安装了,免去了编译时间浪费和解决库文件安装的问题。对于经常编译软件的人,这一点还不够有吸引力。最吸引我的是它的工作环境概念,可以简单的配置不同Python版本的环境、不同Python包的环境、不同R环境和R包的环境,对于生物信息软件繁杂的应用和频繁的更新提供了很大的便利。

Conda安装和配置

在上面给出的链接下载Anaconda或Conda对应版本的分发包之后,安装就是运行下面的命令,根据提示一步步操作,主要是修改安装路径 (如果是根用户,可以安装到/anaconda下,其它任意目录都可以,但路径短还是有好处的;普通用户安装到自己有权限的目录下)

bash Miniconda2-latest-Linux-x86_64.sh

安装完成之后,记得把安装路径下的bin文件夹加入到环境变量中。环境变量的解释和使用见 http://blog.genesino.com/2017/06/bash1/和文章“PATH和path,傻傻分不清”

Conda基本使用

在Conda安装配置好之后,就可以使用了。

conda list # 列出安装的软件包
conda search  # 搜索需要安装的软件包,获取其完成名字

以搜索numpy为例:

conda search numpy  # * 表示对于版本的包已安装
Fetching package metadata ...............
numpy                        1.7.2           py27_blas_openblas_201  conda-forge     [blas_openblas]
                             1.7.2           py27_blas_openblas_202  conda-forge     [blas_openblas]
                             1.12.0                   py36_0  defaults
                             1.12.0             py36_nomkl_0  defaults        [nomkl]
                          *  1.12.1                   py27_0  defaults
                             1.12.1             py27_nomkl_0  defaults        [nomkl]
                             1.13.1                   py36_0  defaults
                             1.13.1             py36_nomkl_0  defaults        [nomkl]
numpy-indexed                0.3.2                    py27_0  conda-forge
                             1.0.47                   py35_0  conda-forge
                             1.0.47                   py36_0  conda-forge
numpy_groupies               0.9.6                    py27_0  conda-forge
                             0.9.6                    py35_0  conda-forge
                             0.9.6                    py36_0  conda-forge
numpy_sugar                  1.0.6                    py27_0  conda-forge
                             1.0.6                    py34_0  conda-forge
numpydoc                     0.6.0                    py27_0  conda-forge
                             0.6.0                    py34_0  conda-forge
xnumpy                       0.0.1                    py27_0  conda-forge

安装包

conda install  # 安装软件包
conda install numpy=1.7.2 # 安装特定版本的软件包
conda remove  # 移除软件包

安装R

# 具体见下面
conda install -c r r-essentials # 安装R,及80多个常用的数据分析包, 包括idplyr, shiny, ggplot2, tidyr, caret 和 nnet
# 安装单个包
# conda install -c https://conda.binstar.org/bokeh ggplot

获取帮助信息

conda -h # 查看conda可用的命令
conda install -h #查看install子命令的帮助

只是这些命令就可以省去不少安装的麻烦了,但是如果软件没搜索到呢?

Conda的channel

Conda默认的源访问速度有些慢,可以增加国内的源 (https://mirror.tuna.tsinghua.edu.cn/help/anaconda/);另外还可以增加几个源,以便于安装更多的软件,尤其是bioconda安装生信类工具。conda-forge通道是Conda社区维护的包含很多不在默认通道里面的通用型软件。r通道是向后兼容性通道,尤其是使用R3.3.1版本时会用到。后加的通道优先级更高,因此一般用下面列出的顺序添加。

conda config --add channels conda-forge # Lowest priority
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ # 清华通道, 最高优先级
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes
# 显示已有的通道conda config --get channels

conda通道的配置文件一般在~/.condarc里面,内容如下。全局控制conda的安装在conda_path/.condarc,具体操作见https://conda.io/docs/user-guide/configuration/admin-multi-user-install.html。

channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/conda
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # Anocanda清华镜像
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  - bioconda
  - defaults
  - r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
  - conda-forge

创建不同的软件运行环境

这是Conda最有特色的地方,可以通过创建不同的环境,同时运行不同软件的多个版本。

新创建的软件环境的目录为anaconda_path/envs/enrironment_name,具体见下面的3个例子。

  • 安装ete3

使用官方的推荐命令安装时出了问题,py3.5的包装到了py2.7环境下。解决办法,新建一个py2.7的环境,然后安装。

# 新建一个环境,命名为phylo,指定其内安装的python版本为2.7
conda create -n phylo python=2.7

# 在phylo环境中安装 ete3
# ete3存在于2个通道中,官方推荐使用自己的通道,但没有成功
# -n 指定安装环境  -c 指定下载通道
# conda install -n phylo -c etetoolkit ete3 ete3_external_apps

# bioconda通道里面也有ete3, 下面的安装未指定具体通道,将在前面设定的几个通道里面按先后顺序查找安装
conda install -n phylo ete3 ete3_external_apps

# 默认安装到了anaconda_path下面的envs/phylo目录下(在屏幕输出也会有显示)
# 这个目录下存在bin文件夹,一般使用全路径就可以调用,如下
# anaconda_path/envs/phylo/bin/ete3 -h # 但有时会因为依赖关系而失败

# 所以激活本次安装环境是比较不容易出问题的使用方式
source activate phylo

# 在新环境里面执行命令操作
ete3 -h
# 其它操作

# 退出新环境
source deactivate phylo
  • 创建R环境 Reference1

  • (https://samrelton.wordpress.com/2015/07/02/rconda/)

# Create a new conda environment called r,并且在里面安装anaconda
conda create -n r anaconda

# Switch to r environment
source activate r

# 在新环境里面安装R Installs R
conda install -c r r

# Install R kernel for IPython notebook
conda install -c r r-irkernel

# Install ggplot
conda install -c https://conda.binstar.org/bokeh ggplot

# 最后退出新环境
source deactivate r
  • 创建比对工具环境 (bioconda中的例子,https://bioconda.github.io/index.html#set-up-channels)
# 环境名字为 aligners
# 环境中安装 bwa bowtie hisat star
conda create -n aligners bwa bowtie hisat star

# 如果还想继续安装
conda install -n aligners hisat2

# 启动新环境
source activate aligners
star -h

source deactivate aligners
  • 移除环境

如果环境不需要了,或出了错,则可以移除。比如需要移除phylo环境,执行conda remove -n phylo --all

  • 备份环境

有的时候会出现装一个新包,装着装着就把当前环境搞装崩了的情况,所以备份一个环境还是必要的,conda create -n python35copy --clone python35

  • 环境导出和导入

做培训时需要给参加培训的老师提供配置环境的脚本,之前都是提供一个Bash文件,更简单的方式是可以导出环境,自己配置时再导入就好了。

# 假设我们有一个环境叫 ehbio,可以导出为一个yml文件
conda env export --file ehbio_env.yml --name ehbio

# 然后换一台电脑,就可以完全重现这个环境了
conda env create -f ehbio_env.yml

Conda配置R

在添加了不同的源之后,有些源更新快,有些更新慢,经常会碰到版本不一的问题。而且软件版本的优先级,低于源的优先级。保险期间,先做下搜索,获得合适的版本号,然后再选择安装。

conda search r-essentials

r-essentials                 1.0                    r3.2.1_0  r
                             1.0                   r3.2.1_0a  r
                             1.1                    r3.2.1_0  r
                             1.1                    r3.2.2_0  r
                             1.1                   r3.2.1_0a  r
                             1.1                   r3.2.2_0a  r
                             1.1                    r3.2.2_1  r
                             1.1                   r3.2.2_1a  r
                             1.4                           0  r
                             1.4.1                  r3.3.1_0  r
                             1.4.2                         0  r
                             1.4.2                  r3.3.1_0  r
                             1.4.3                  r3.3.1_0  r
                             1.5.0                         0  r
                             1.5.1                         0  r
                             1.5.2                  r3.3.2_0  r
                             1.5.2                  r3.4.1_0  r
                             1.6.0                  r3.4.1_0  r
                             1.0                    r3.2.1_0  defaults
                             1.0                   r3.2.1_0a  defaults
                             1.1                    r3.2.1_0  defaults
                             1.1                    r3.2.2_0  defaults
                             1.1                   r3.2.1_0a  defaults
                             1.1                   r3.2.2_0a  defaults
                             1.1                    r3.2.2_1  defaults
                             1.1                   r3.2.2_1a  defaults
                             1.4                           0  defaults
                             1.4.1                  r3.3.1_0  defaults
                             1.4.2                         0  defaults
                             1.4.2                  r3.3.1_0  defaults
                             1.4.3                  r3.3.1_0  defaults
                             1.5.0                         0  defaults
                             1.5.1                         0  defaults
                             1.5.2                  r3.3.2_0  defaults
                             1.5.2                  r3.4.1_0  defaults
                             1.6.0                  r3.4.1_0  defaults
                             1.5.2                  r3.3.2_0  conda-forge
                             1.5.2                  r3.3.2_0  https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge

从上面可以看到清华的源版本同步于conda-forge, 都比较老,还是指定r通道安装。

conda install -c r -n r r-essentials=1.6.0

R会安装于conda_path/envs/r/bin中,软链到位于环境变量的目录中即可正常使用。

Conda环境简化运行

为了方便不同环境里面程序的运行,我写了一个shell脚本 (conda_env_run.sh),具体运行如下:

# -c: 表示实际需要运行的命令
# -e: 表示需要启动的软件环境,也就是上面conda create建立的环境
# -b:一般不需要指定,如果conda没在环境变量中需要给出conda的安装路径
conda_env_run.sh -c  'ete3 -h mod' -e phylo

conda_env_run.sh -c  'bwa mem -h' -e aligner -b "/usr/local/anaconda2/bin"

conda_env_run.sh内容如下

#!/bin/bash#set -xusage()
{
cat < parameter.${txtbld}OPTIONS${txtrst}:
    -c    Full command to be run ${bldred}[NECESSARY]${txtrst}
    -e    Environment name${bldred}[NECESSARY]${txtrst}
    -b    Conda path${bldred}[NECESSARY]${txtrst}EOF
}

command_cmd=''environment=''conda_path=''while getopts "hc:e:b:" OPTIONdo
    case $OPTION in
        h)            echo "Help mesage"
            usage            exit 1
            ;;
        c)
            command_cmd=$OPTARG
            ;;
        e)
            environment=$OPTARG
            ;;
        b)
            conda_path=$OPTARG
            ;;
        ?)
            usage            echo "Unknown parameters"
            exit 1
            ;;    esacdoneif [ -z ${environment} ]; then
    echo 1>&2 "Please give command and environment."
    usage    exit 1fiif ! [ -z ${conda_path} ]; then
    export PATH=${conda_path}:${PATH}fisource activate ${environment}${command_cmd}source deactivate ${environment}

Reference

  • https://samrelton.wordpress.com/2015/07/02/rconda/

  • https://www.anaconda.com/blog/developer-blog/anaconda-r-users-sparkr-and-rbokeh/

  • http://www.bioinfo-scrounger.com/archives/209

  • 清华大学开源镜像站

你可能感兴趣的:(Bioconda软件安装神器:多版本并存、环境复制、环境导出)