Bioconda软件安装神器:多版本并存、环境复制、环境导出
seq你想知道的全在這)、ChIP-seq分析?(ChIP-seq基本分析流程)、單細胞測序分析?(重磅綜述:三萬字長文讀懂單細胞RNA測序分析的最佳實踐教程 (原理、代碼和評述))、DNA甲基化分析、重測序分析、GEO數(shù)據(jù)挖掘(典型醫(yī)學設計實驗GEO數(shù)據(jù)分析 (step-by-step) - Limma差異分析、火山圖、功能富集)等內(nèi)容。
2017年生信寶典發(fā)布了Linux學習 - 又雙叒叕一個軟件安裝方法,現(xiàn)在根據(jù)使用經(jīng)驗做一些更新,主要是增加了conda環(huán)境的復制、導入和導出功能。最開始是為了培訓時,學員更方便搭建流程引入的,現(xiàn)在分享出來,方便更多人使用。
Conda包管理系統(tǒng)
Conda是一種通用包管理系統(tǒng),旨在構(gòu)建和管理任何語言的任何類型的軟件。通常與Anaconda (集成了更多軟件包,https://www.anaconda.com/download/#download)和Miniconda(只包含基本功能軟件包, https://conda.io/miniconda.html)一起分發(fā)。
最初接觸到Anaconda是用于Python包的安裝。Anaconda囊括了100多個常用的Python包,一鍵式安裝,解決Python包安裝的痛苦。但后來發(fā)現(xiàn),其還有更多的功能,尤其是其增加了bioconda (https://bioconda.github.io/index.html)頻道后,生物信息分析的1500多個軟件都可以一鍵安裝了,免去了編譯時間浪費和解決庫文件安裝的問題。對于經(jīng)常編譯軟件的人,這一點還不夠有吸引力。最吸引我的是它的工作環(huán)境概念,可以簡單的配置不同Python版本的環(huán)境、不同Python包的環(huán)境、不同R環(huán)境和R包的環(huán)境,對于生物信息軟件繁雜的應用和頻繁的更新提供了很大的便利。
Conda安裝和配置
在上面給出的鏈接下載Anaconda或Conda對應版本的分發(fā)包之后,安裝就是運行下面的命令,根據(jù)提示一步步操作,主要是修改安裝路徑 (如果是根用戶,可以安裝到/anaconda下,其它任意目錄都可以,但路徑短還是有好處的;普通用戶安裝到自己有權(quán)限的目錄下)
bash Miniconda2-latest-Linux-x86_64.sh安裝完成之后,記得把安裝路徑下的bin文件夾加入到環(huán)境變量中。環(huán)境變量的解釋和使用見?http://blog.genesino.com/2017/06/bash1/和文章“PATH和path,傻傻分不清”
Conda基本使用
在Conda安裝配置好之后,就可以使用了。
conda list # 列出安裝的軟件包 conda search <package ambigious name> # 搜索需要安裝的軟件包,獲取其完成名字以搜索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 defaults1.12.0 py36_nomkl_0 defaults [nomkl]* 1.12.1 py27_0 defaults1.12.1 py27_nomkl_0 defaults [nomkl]1.13.1 py36_0 defaults1.13.1 py36_nomkl_0 defaults [nomkl] numpy-indexed 0.3.2 py27_0 conda-forge1.0.47 py35_0 conda-forge1.0.47 py36_0 conda-forge numpy_groupies 0.9.6 py27_0 conda-forge0.9.6 py35_0 conda-forge0.9.6 py36_0 conda-forge numpy_sugar 1.0.6 py27_0 conda-forge1.0.6 py34_0 conda-forge numpydoc 0.6.0 py27_0 conda-forge0.6.0 py34_0 conda-forge xnumpy 0.0.1 py27_0 conda-forge安裝包
conda install <package name> # 安裝軟件包 conda install numpy=1.7.2 # 安裝特定版本的軟件包 conda remove <package name> # 移除軟件包安裝R
# 具體見下面 conda install -c r r-essentials # 安裝R,及80多個常用的數(shù)據(jù)分析包, 包括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默認的源訪問速度有些慢,可以增加國內(nèi)的源 (https://mirror.tuna.tsinghua.edu.cn/help/anaconda/);另外還可以增加幾個源,以便于安裝更多的軟件,尤其是bioconda安裝生信類工具。conda-forge通道是Conda社區(qū)維護的包含很多不在默認通道里面的通用型軟件。r通道是向后兼容性通道,尤其是使用R3.3.1版本時會用到。后加的通道優(yōu)先級更高,因此一般用下面列出的順序添加。
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/ # 清華通道, 最高優(yōu)先級 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 channelsconda通道的配置文件一般在~/.condarc里面,內(nèi)容如下。全局控制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創(chuàng)建不同的軟件運行環(huán)境
這是Conda最有特色的地方,可以通過創(chuàng)建不同的環(huán)境,同時運行不同軟件的多個版本。
新創(chuàng)建的軟件環(huán)境的目錄為anaconda_path/envs/enrironment_name,具體見下面的3個例子。
- 安裝ete3
使用官方的推薦命令安裝時出了問題,py3.5的包裝到了py2.7環(huán)境下。解決辦法,新建一個py2.7的環(huán)境,然后安裝。
# 新建一個環(huán)境,命名為phylo,指定其內(nèi)安裝的python版本為2.7 conda create -n phylo python=2.7# 在phylo環(huán)境中安裝 ete3 # ete3存在于2個通道中,官方推薦使用自己的通道,但沒有成功 # -n 指定安裝環(huá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文件夾,一般使用全路徑就可以調(diào)用,如下 # anaconda_path/envs/phylo/bin/ete3 -h # 但有時會因為依賴關系而失敗# 所以激活本次安裝環(huán)境是比較不容易出問題的使用方式 source activate phylo# 在新環(huán)境里面執(zhí)行命令操作 ete3 -h # 其它操作# 退出新環(huán)境 source deactivate phylo-
創(chuàng)建R環(huán)境 Reference1
-
(https://samrelton.wordpress.com/2015/07/02/rconda/)
- 創(chuàng)建比對工具環(huán)境 (bioconda中的例子,https://bioconda.github.io/index.html#set-up-channels)
- 移除環(huán)境
如果環(huán)境不需要了,或出了錯,則可以移除。比如需要移除phylo環(huán)境,執(zhí)行conda remove -n phylo --all。
- 備份環(huán)境
有的時候會出現(xiàn)裝一個新包,裝著裝著就把當前環(huán)境搞裝崩了的情況,所以備份一個環(huán)境還是必要的,conda create -n python35copy --clone python35
- 環(huán)境導出和導入
做培訓時需要給參加培訓的老師提供配置環(huán)境的腳本,之前都是提供一個Bash文件,更簡單的方式是可以導出環(huán)境,自己配置時再導入就好了。
# 假設我們有一個環(huán)境叫 ehbio,可以導出為一個yml文件 conda env export --file ehbio_env.yml --name ehbio# 然后換一臺電腦,就可以完全重現(xiàn)這個環(huán)境了 conda env create -f ehbio_env.ymlConda配置R
在添加了不同的源之后,有些源更新快,有些更新慢,經(jīng)常會碰到版本不一的問題。而且軟件版本的優(yōu)先級,低于源的優(yōu)先級。保險期間,先做下搜索,獲得合適的版本號,然后再選擇安裝。
conda search r-essentialsr-essentials 1.0 r3.2.1_0 r1.0 r3.2.1_0a r1.1 r3.2.1_0 r1.1 r3.2.2_0 r1.1 r3.2.1_0a r1.1 r3.2.2_0a r1.1 r3.2.2_1 r1.1 r3.2.2_1a r1.4 0 r1.4.1 r3.3.1_0 r1.4.2 0 r1.4.2 r3.3.1_0 r1.4.3 r3.3.1_0 r1.5.0 0 r1.5.1 0 r1.5.2 r3.3.2_0 r1.5.2 r3.4.1_0 r1.6.0 r3.4.1_0 r1.0 r3.2.1_0 defaults1.0 r3.2.1_0a defaults1.1 r3.2.1_0 defaults1.1 r3.2.2_0 defaults1.1 r3.2.1_0a defaults1.1 r3.2.2_0a defaults1.1 r3.2.2_1 defaults1.1 r3.2.2_1a defaults1.4 0 defaults1.4.1 r3.3.1_0 defaults1.4.2 0 defaults1.4.2 r3.3.1_0 defaults1.4.3 r3.3.1_0 defaults1.5.0 0 defaults1.5.1 0 defaults1.5.2 r3.3.2_0 defaults1.5.2 r3.4.1_0 defaults1.6.0 r3.4.1_0 defaults1.5.2 r3.3.2_0 conda-forge1.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.0R會安裝于conda_path/envs/r/bin中,軟鏈到位于環(huán)境變量的目錄中即可正常使用。
Conda環(huán)境簡化運行
為了方便不同環(huán)境里面程序的運行,我寫了一個shell腳本 (conda_env_run.sh),具體運行如下:
# -c: 表示實際需要運行的命令 # -e: 表示需要啟動的軟件環(huán)境,也就是上面conda create建立的環(huán)境 # -b:一般不需要指定,如果conda沒在環(huán)境變量中需要給出conda的安裝路徑 conda_env_run.sh -c 'ete3 -h mod' -e phyloconda_env_run.sh -c 'bwa mem -h' -e aligner -b "/usr/local/anaconda2/bin"conda_env_run.sh內(nèi)容如下
#!/bin/bash#set -xusage() { cat <<EOF${txtcyn}***CREATED BY Chen Tong (chentong_biology@163.com)***Usage:$0 options${txtrst}${bldblu}Function${txtrst}:This is designed to run conda program in given environment. It will automatically activate the environment, run the program and deactivate the environment.Thress commands from conda, 'activate', 'conda', 'deactivate' must be in PATH or you should spcify <-b> 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:" OPTIONdocase $OPTION inh) 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} ]; thenecho 1>&2 "Please give command and environment."usage exit 1fiif ! [ -z ${conda_path} ]; thenexport 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
-
清華大學開源鏡像站
總結(jié)
以上是生活随笔為你收集整理的Bioconda软件安装神器:多版本并存、环境复制、环境导出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 益生菌拯救“社恐”?肿瘤攘外安内?胎盘似
- 下一篇: 易生信-宏基因组2020 积微学术论坛