生信藍領,一個不捨得分享的高通量資料分析框架
- 安裝bcbio框架
- 軟體安裝
- 配置參考基因組
- 流程配置
- 手動建立
- 指令碼建立
- 簡單實戰
- 總結
當我跑完一些分析流程,比如說RNA-Seq,重測序分析以後,我就想到一句名言
能自動化的都要自動化,不能自動化的要實現半自動化
高通量資料分析發展到現在,大部分上游分析,比如說qc, alignment, snp-calling等都已經實現了自動化,這些部分如果再自己一行一行輸命令,不但浪費時間,而且缺少重複性。因此,我希望有那麼一個框架,能夠幫我完成所有的上游分析,從而集中精力解決生物學問題。
bcbio是一個GitHub上的社群專案,始於2009年,已經有將近8年的歷史了。目前這個框架在github上已經有了470個star,223個fork。 經過了那麼長時間的洗禮,我們就能比較放心的使用了。
它具有如下特點:
- 社群開發:開發過程是完全開放的並且由來自多個社群的貢獻者來共同維護。通過在共享框架上的協作,我們可以克服在迅速變化的研究領域維護複雜管道的挑戰。
- 可量化性:優秀的科學研究需要能夠準確地評估結果的質量,新的演算法和軟體成為可用。
- 可分析性:將結果匯入工具使得查詢結果與視覺化結果更加容易。
- 可擴充套件性:在分散式異構計算環境中處理大資料集以及樣本資料。
- 可複用性:跟蹤配置,版本,來源以及命令列以便對結果的除錯、擴充套件以及複用。
- 易理解性:生物資訊學家、生物學家和公眾能夠將研究材料、個人基因組的臨床樣本資料等各種資料作為輸入來執行整個工具。
bcbio-nextgen能實現如下全自動高通量測序資料分析流程:
- Germline variant calling
- Caner variant calling
- Somatic with germline variants
- Structural variant calling
- RNA-Seq
- fast RNA-Seq
- single-cell RNA-Seq
- smallRNA-Seq
- ChIP-Seq
基本覆蓋了高通量組學所有領域。 不過,這個框架似乎在中國的知名度不高,谷歌結果中僅有一篇中文的相關介紹: bcbio-nextgen:一個為全自動高通量測序分析提供最佳實踐管道的工具,這篇文章釋出在伯樂線上,是原文的翻譯,我從這篇文章中複製了5點特性。
我花了2天多時間研究了一下這個框架,本來希望它能減輕我以後的工作壓力,沒想到學習它也是非常的費勁。
安裝bcbio框架
注: 建議在一個乾淨的Linux系統進行如下步驟,不然容易出現奇奇怪怪小問題。
注: 建議在一個乾淨的Linux系統進行如下步驟,不然容易出現奇奇怪怪小問題。
注: 建議在一個乾淨的Linux系統進行如下步驟,不然容易出現奇奇怪怪小問題。
bcbio有自己的一套安裝方法,也就是bcbio_nextgen_install.py
.
該檔案做的事情為:
- 從官方下載安裝
anaconda
,國內推薦清華映象源。 - 根據requirement.txt的內容,用conda安裝包。這裡他添加了兩個channel。
conda-forge
和bioconda
。 國內依舊需要新增清華源 其中requirement就一行“bcbio-nextgen=1.0.5” - 寫入系統配置 bcbio_system.yaml。
按照官方的要求,使用bcbio_nextgen_install.py
。這裡使用我修改的國內專享版,利用清華映象源加速,僅需要10~30 min的時間。海外使用者用原版。
# 我的腳本里面有中文,Python2使用者請刪除中文部分執行
wget --no-check-certificate https://raw.github.com/xuzhougeng/zgtoolkits/master/bcbio_nextgen_install.py
python3 bcbio_nextgen_install.py ~/local/bcbio -u stable
# 安裝完成還需要在.bashrc檔案中新增
export PATH=~/local/biobc/anaconda/bin:$PATH
出現如下輸出結果,說明安裝成功
同時會在家目錄下生成“bcbio”資料夾,包含如下內容
bcbio
|---- anaconda # anaconda-python
|---- config
|---- galaxy # 存放全區配置檔案 bcbio_system.yaml
|---- manifest # 用於框架更新
|---- genomes # 參考序列
bcbio裡的內容不完全一致,至少要包括,anaconda, config, galaxy,manifest。
軟體安裝
bcbio只是一個框架,你提供輸入檔案,執行所需軟體的路徑,他負責用比較完善的流程幫你把結果跑出來。
安裝軟體這一步原本是可以在bcbio_nextgen_install.py
通過新增引數--tooldir
,自動完成。但是問題來了,預設的步驟會用他們自己開發的cloudlinux
經由”biconda”和”conda-forge”下載軟體,速度就會非常的感人。因此,需要修改位於~/local/bcbio/anaconda/lib/python2.7/site-packages/bcbio
裡的install.py
。
因此,你需要下載國內專享版install.py
然後對原檔案進行替換。海外使用者用原版。
wget --no-check-certificate https://raw.github.com/xuzhougeng/zgtoolkits/master/install.py
cp install.py ~/local/bcbio/anaconda/lib/python2.7/site-packages/bcbio/
之後安裝就會比較塊, 即便如此,也要等比較長的一段時間。
bcbio_nextgen.py upgrade --tools --tooldir=~/local/bin
這些軟體會以軟連結的形式放在~/local/bin/bin
下
對於上面不能直接搞定的包, 可以模仿官方示例
bcbio_nextgen.py upgrade --tools --toolplus gatk=/path/to/gatk/GenomeAnalysisTK.jar
經過這一步,所有高通量資料分析會用到的軟體基本都安裝完畢,可以繼續下一步。
配置參考基因組
bcbio_nextgen
可以下載模式生物的基因組,但是由於bcbio是由國外團隊開發,所以預設的下載地址不太友好,有些檔案還有可能請求不到,動不動就會發生如下事故。
# 預設的下載方法
bcbio_nextgen.py upgrade --genomes TAIR10 --aligner bwa --alinger hisat2
# 提示從amazonaws下載
wget --continue --no-check-certificate -O TAIR10-seq.tar.xz 'https://s3.amazonaws.com/biodata/genomes/TAIR10-seq.tar.xz
# 正在解析主機 s3.amazonaws.com (s3.amazonaws.com)... 54.231.82.20
# 正在連線 s3.amazonaws.com (s3.amazonaws.com)|54.231.82.20|:443... 失敗:資源暫時不可用。
# 重試中。
於是只能先下載好資料,然後進行配置。這裡以擬南芥為例,同樣適用於任意非模式生物。
配置參考基因組從官方文件來看,是比較複雜的活,需要考慮建立對應的基因組配置檔案,形如buildname-resources.yaml
。並且還需要模仿galaxy建立參考序列的檔案結構。
然而,如果這一步不能自動化,還需要手工完成的話,這個框架可以直接丟了。所以,最簡單的方法就是bcbio_setup_genome.py
# 實現準備galaxy所需的.loc檔案
mkdir -p ~/local/bcbio/galaxy/tool-data
cd ~/local/bcbio/galaxy/tool-data
touch bowtie_indices.loc bwa_index.loc sam_fa_indices.loc twobit.loc
# 建立bwa索引
bcbio_setup_genome.py -f TAIR10.fa --gff3 --gtf TAIR10_GFF3_genes.gff -n Alyrata -b TAIR10 -i bwa
很不可思議,我就單純想搞一個bwa索引,最後卻 ”bowtie2”, ”bwa”, ”tophat2”, ”kallisto” 等多個結果。真不知道原始檔是怎麼寫的。
(PS:那命令裡面的-i引數幹嘛的呢?)
流程配置
流程配置,是非常重要的一步,關係到你的分析流程如何進行。你需要選擇比對軟體,質量控制工具,參考基因組等等。總之是,一著不慎半天白跑,然後就只能含淚rm -rf
。
有兩種方式可以配置流程,一種手動編寫配置檔案,一種是基於已有模板進行替換。
手動建立
使用bcbio進行流程化分析比較重要的一步就是寫好樣本配置檔案,如下是官方文件的案例。
假設,手頭有一個雙端測序(PE)結果,用illumina TruSeq kit製備。現在需要進行RNA-Seq資料分析,那麼YAML檔案可以這樣寫
-
fc_date
和fc_name
用於中間書檔案的字首, 因此按需設計。 -
upload
: 結果檔案存放處。可以結合galaxy -
details
: 具體如何處理樣品,至少要宣告原始檔案所在處(files),專案描述(description),參考基因組(genome_build),分析流程(analysis),所用演算法和工具(algorithm)。 -
algorithm
這個部分用於調整流程分析流程的引數和工具。比如說,如果你的測序結果是2009年之前前,由於那時候質量令人擔憂,所以資料預處理非常必要。
如果有多個樣本,其實配置也很簡單,只要更改details
,如下
details:
- files: [/full/path/to/control_1.fastq,/full/path/to/control_2.fastq]
....
- files: [/full/path/to/case_1.fastq,/full/path/to/case_2.fastq]
...
僅僅是需要複製一份,然後修改一下樣本的檔案路徑而已。
指令碼建立
當然,配置檔案不需要自己每次都手動寫,bcbio_nextgen.py
其實提供了命令列建立配置檔案的方法
bcbio_nextgen.py -w template freebayes-variant project1.csv sample1.bam sample2_1.fq sample2_2.fq
引數說明:
- freebayes-variant 是模板名
- project1.csv 則是存放樣本的元資料,描述檔案和需要調整的引數,以逗號分隔。不同列的解析規則如下:
- samplename: 樣品命名,比較複雜,基本原則就是不要檔案路徑,不要檔案字尾,對於PE資料,取共同部分,也就是sample_1.fq, sample_2.fq,只保留sample
- description: 專案資訊
- 演算法引數: 只要列名符合Algorithm paramters
- sample information: 不符合上述要求都被認為是樣本其他資訊
額外內容:
;
分隔資料會被解析成立標,:
或::
分別資料會被解析成字典
以上內容可能過於複雜,不需要太過糾結,可以通過簡單的實戰幫助理解。
簡單實戰
以我之前BSA分析所用的兩組資料為例,介紹如何使用框架進行SNP calling。 已有2組樣本, 放在bsa_analysi/work下:
bgreads_1.fq bgreads_2.fq fgreads_1.fq fgreads_2.fq
建立csv檔案用於描述這些樣本
samplename,description,phenotype, genome_build,mark_duplicates
bgreads, background, normal, TAIR10, false
fgreads, foreground, mutation, TAIR10, false
使用bcbio_nextgen
建立模板
bcbio_nextgen.py -w template freebayes-variant bsa_analysis.csv bsa_analysis/work/bgreads_1.fq bsa_analysis/work/bgreads_2.fq bsa_analysis/work/fgreads_1.fq bsa_a nalysis/work/fgreads_2.fq
這會在當前檔案下新建如下內容
bsa_analysis/
├── config # 存放配置檔案
└── work # 工作目錄
進入bsa_analysis/work
下執行,保證所有中間檔案都在work中,輸入檔案會存放後同級的final
。
cd bsa_analysis/work
bcbio_nextgen.py ../config/bsa_nalysi.yam -n 4
執行一覽:
最後不幸在QC這一步出現了問題,我要繼續研究這個框架了。
總結
一個框架越是龐大,這個框架就越是脆弱。
當你在執行中出現了問題,想從這個框架中找到問題進行修改時,就需要理解這個框架的設計理念。
所以不建議新手去折騰這個框架,保證讓你懷疑人生。對於老手而言,大部分人都寫了一套自己的流程,所以需求性也不高。
於是這個框架的意義就變成讓你踩坑。因為你經歷的坑越多,你的經驗就越豐富。那些殺不死你的,只會讓你更強大,因此歡迎各位勇於作死
綜上,總結一下這篇文章的所用命令
# 下載專用版的bcbio_nextgen_install.py
wget --no-check-certificate https://raw.github.com/xuzhougeng/zgtoolkits/master/bcbio_nextgen_install.py
# 安裝bcbio
python3 bcbio_nextgen_install.py ~/local/bcbio -u stable
# 安裝基本軟體(替換install.py)
wget --no-check-certificate https://raw.github.com/xuzhougeng/zgtoolkits/master/install.py
cp install.py ~/local/bcbio/anaconda/lib/python2.7/site-packages/bcbio/
# 配置基因組
## 實現準備galaxy所需的.loc檔案
mkdir -p ~/local/bcbio/galaxy/tool-data
cd ~/local/bcbio/galaxy/tool-data
touch bowtie_indices.loc bwa_index.loc sam_fa_indices.loc twobit.loc
## 建立bwa索引
bcbio_setup_genome.py -f TAIR10.fa --gff3 --gtf TAIR10_GFF3_genes.gff -n Alyrata -b TAIR10 -i bwa
# 配置流程
bcbio_nextgen.py -w template freebayes-variant bsa_analysis.csv bsa_analysis/work/bgreads_1.fq bsa_analysis/work/bgreads_2.fq bsa_analysis/work/fgreads_1.fq bsa_a nalysis/work/fgreads_2.fq
# 執行流程
cd bsa_analysis/work
bcbio_nextgen.py ../config/bsa_nalysi.yam -n 4
PS : 我們公眾號團隊力圖把所有好用的,可以執行的生物資訊學流程詳細講解給大家,但是受限於文章字數,以及文字的表現能力,如果有傳達不完整的,請多多提建議哈。理論上一個初學者跟著我們的推文,仔細折騰七八個小時,跑幾遍公共資料,肯定就能學會這套流程了。當然,如果你基礎太差,或者悟性有限,可能需要多耗費點時間,畢竟每個人的背景不一樣。如果你還沒伺服器,那麼這些教程對你沒有用其實。