如何快速建立生物信息分析環境

問題

早在今年9月份,我就開始了系統的轉錄組分析操作,中間遇到硬體性能不足的問題,折騰了兩個星期多沒弄好,最後還是花錢升級了一次內存才解決。

從那件事上我吸取了個教訓,能花錢解決的學習問題,最好毫不猶豫的花錢解決。

所以接著我就花錢配了一台高配的台式機,計劃當做個人伺服器用。但是隨後又遇到了一個問題:各種生信分析軟體的安裝太費時間!配置常用的軟體的時候,常常遇到各種各樣奇怪的問題。有時是Linux系統問題,有時是軟體版本問題,有時又是軟體兼容問題。各種包,各種庫,各種版本!更可惡的是R程序升級太快,各種R包的安裝又常常出現各種問題。已經成功安裝的R包,換一台電腦再安裝就會跑出各種意想不到的問題。真是要命!

於是從10開始到現在我又開始研究如何又好又快的將一個成熟的生物信息分析環境建立起來,現在稍稍有點收穫,整理在這裡與大家一起分享。

首屈一指選docker

解決以上問題最好的方法,莫過於使用docker了。

Docker的一個鮮明的特點是提供一個即時可用的鏡像(使用上類似於虛擬系統,但是實際上與虛擬機玩去不一樣),開發者把生物信息的各種軟體、R包等部署到鏡像中, 使用者可以直接下載該鏡像進行使用,省去了個人安裝軟體,配置環境的種種煩惱。

比如我感興趣的是RNAseq分析,正好Nature Commnication 上發了一篇關於RNAseq數據分析中各種軟體以及分析流程的測評文章,提出了RNAseq最佳分析流程"RNACocktail",且提供了docker image,利用這個image就能輕鬆建立RNAseq的分析環境。 下面介紹具體的建立方法:

#系統ubuntu16.04 LTSn#安裝dockernsudo apt-get install docker.ion#查看是否安裝成功nsudo docker infon#如果輸入以上命令後能顯示docker的信息說明安裝成功nn#運行hello-word進行測試nsudo docker run hello-worldn#該命令實際上是運行hello-world這個image,但是這時我們還沒有這image,docker會自動檢測,並下載hello-world這個測試image,並在容器中運行nn#下載RNAcocktail的鏡像ndocker pull marghoob/rnacocktailn

下載這個鏡像需要較長時間,而且我下了三次全部沒下載成功,所以後面的具體使用方法就沒有啦········

其次可以用conda

docker雖好,但是安裝和使用docker需要管理員的許可權,所以使用伺服器的小夥伴們就沒辦法用了。而且docker image也常常遇到pull不下來的情況。

那咋辦呢?

有辦法,用conda!

conda的基本使用可以參考我的知乎專欄學習·持續輸出 中的介紹。我們這裡重點介紹conda的高階用法。

使用conda快速複製他人的環境

conda可以建立不同的環境,每種環境單獨存在,互不干擾。同一系統下可以建立許多不同的環境,並且可以把該環境的配置導出為yml文件,其他人根據你的yml文件就可以快速構建一個同樣的環境。

首先我們熟悉一下conda中環境的建立和刪除

#建立一個新環境nconda create -n myenv #參數-n代表設置環境名稱,myenv是具體的環境名,可以替換成自己想要的名稱n#建立一個新環境,同時指定該壞境中python的版本nconda create -n myenv python=2.7 n#還可以建立環境的同時安裝軟體nconda create -n myenv nconda create -n myenv Scipy=0.15.0n#環境建立成功後,會提示環境的激活和關閉的方法nsource activate myenvnsource deactivate myenvnn#查看已有的環境nconda info --envsn#刪除某個環境nconda remove -n myenv --alln# 或者更加粗暴nrm -rf ~/miniconda3/envs/myenv/ #該路徑是要刪除的環境所在的路徑n

熟悉了conda 中環境的相關命令後,我們再看用yml文件快速配置conda環境

#首先,導出一個已經建立好的環境的yml文件nconda env export -n biostar -f biostar.yml #該命令會在當前路徑下生成一個yml文件。該文件包含conda環境的name,channels和dependencies三部分信息。nn#根據yml文件建立新環境nconda env create -f myenv.ymln#安裝完成後,可以激活該環境,查看該環境中的軟體nsource activate myenvnconda listn

除了通過本地yml文件快速建立環境外,還可以根據conda cloud上的yml文件直接在本地建立環境。不過這需要註冊和登錄anaconda賬戶,相關功能可通過conda env --help以及conda env create --help查看使用方法。

通過txt文件建立新環境

以上介紹的是通過yml文件快速建立conda環境。如果操作系統相同,且不關心channles信息,也可以通過conda導出一個包含軟體鏈接的txt文件來複刻別人的分析環境。

注意:這種方法只能用在同一平台操作系統甚至同一版本的操作系統(比如32位和64位的)

#在當前路徑下輸出當前環境的軟體信息nconda list --explicit > spec-file.txtn

該文件的主要內容如下:

# 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文件中的軟體nconda install --name myenv --file spec-file.txtn

注意:用這種方法時由於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-deseq2n

返回結果會提供各個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-deseq2n

conda會自動安裝最新版本的deseq2以及對應版本的R,以及各種依賴的其他R包。

參考資料與感謝

  1. conda user guide
  2. hoptop大神的RNACocktail安裝筆記
  3. hoptop大神的生信軟體安裝神器

推薦閱讀:

Docker 容器與鏡像的儲存
【DockerCon2017最新技術解讀】Docker最新特性介紹
Egg.js+Antd 擼個簡易版阿里雲CS控制台?
Docker Remote API 如何使用?
基於OSS搭建私有(跨區域)Docker鏡像倉庫

TAG:生物信息学 | Linux | Docker |