關於illumina產生的測序原始檔bcl轉換成fastq格式的問題
由於連線測序儀的伺服器不知道哪裡抽了風,無法直接的生成fastq格式的檔案,好久都無解,經過一段時間仍無法解決,所以採用曲線救國的方法,看能不能利用三方軟體將bcl轉換成fastq檔案
google以後發現illumina的OLB(off-line Basecaller)軟體可以實現從bcl格式轉換成qseq格式,而qseq格式就可以通過簡單的perl或者shell或者java指令碼轉換成fastq格式。還有一種策略是利用picard的IlluminaBcl2sam轉換成sam格式,然後再從sam轉換成fastq格式(雖然沒有采用這種方法,但是隱隱的感覺該方法可能轉換出來的資料不理想,而且中間生成的sam檔案也比較大比較佔空間,加上感覺引數指定的時候很多檔案例如positionfile ,filterfile都沒用上)。本人對bcl格式知道的不多,測序生成的rawdata原始資料夾有個Intensitive 而該資料夾又含有basecall資料夾和很多的positionfile,雖然不知道position file是幹嘛的,但是後面採用OLB軟體轉換的時候會用到這些檔案,basecalling資料夾下又含有不同lane的資訊例如L001等,開啟每個lane資料夾進去看,發現很多C打頭的資料夾,這些資料夾根據我的理解就是變合成邊測序產生circle檔案,每個circle代表一個鹼基。點開進去就是我們需要轉換的bcl檔案了。
下面從基本的OBL安裝開始(http://support.illumina.com/documents/MyIllumina/ec3129a6-b41f-4d98-963f-668391997f1a/OLB_194_UserGuide_15009920D.pdf 這是manual)
簡單說一下 ,這個安裝時很麻煩的,幸虧我們伺服器安裝了絕大多數的包,但是仍有幾個包沒有安裝,這麼多的包得安裝你沒有管理員許可權是很難完成的,這裡稍作總結一下:
這是manual檔案中涉及的需要安裝的包,看一下 是不是需要很多,其中perl,python自然是最基礎的,記住版本一定要大於所要求的,GNU編譯器也是需要的,c++編譯器也是需要安裝。gnuplot是之前自己裝,隱約覺得挺快就裝好了,這些不懂的都可以去百度。其中比較麻煩的是Ghostscript和ImageMaker ,Ghostscript是用來轉換bitmap的工具,這裡也要呼叫,fft包官方下載的OLB 安裝包下自帶,需要進入fft資料夾編譯安裝以後才能使用。
這些依賴的軟體及軟體包都安裝完了以後就需要安裝OLB了,方法也很簡單,進入OLB資料夾,輸入
make
make install
如果沒有報錯 就基本沒問題了。下面使用OLB對檔案進行轉換,轉換的qseq檔案有兩種方式一種是預設的bustard的方式 也是預設的方式,產生的檔案中的未測到的鹼基用“.” 表示,還有一種下游的GERALD生成的檔案中為測到的鹼基用N表示(通過--gerald引數),如果你採用第一種,之後也還要對資料中的“.”進行替換。
這裡主要用這個軟體轉換資料格式,所以其他的功能也不做討論,具體看如何轉換:
首先進入你的資料所在目錄的下的basecall的資料夾下面,然後輸入
這裡值得注意的是,後面的引數需要進行更改,在指定-b和-o(表示檔案輸入目錄和輸出目錄-這個必須是新建的)的同時還要制定-f和-i -p,分別表示filter檔案所在位置,intensive檔案和position檔案所在位置,不然就會報錯。
這樣就會在你的輸出資料夾產生一個makefile。進入你的輸出資料夾cd
輸入
make -j 8 (表示執行緒數)
就會拿到你需要的qseq檔案,這步會花費很長的時間,你需要儲存log檔案用於檢查資料有沒有問題,這裡也要注意檔案完整性,故在跑程式之前都要檢查檔案是否有問題,不然中途就會中斷。
產生的後的qseq檔案需要進行轉換
其中perl的程式碼如下
#!/usr/bin/perl
use warnings;
use strict;
while (<>) {
chomp;
my @parts = split /\t/;
print "@","$parts[0]:$parts[2]:$parts[3]:$parts[4]:$parts[5]#$parts[6]/$parts[7]\n";
print "$parts[8]\n";
print "+\n";
print "$parts[9]\n";
}
儲存以後 執行就可以生成一堆的fastq檔案,這裡還要對每個lane的檔案進行合併,採用cat命令就可以實現
cat s_1_1_0???_qseq.txt | qseq2fastq.pl > s_1_1.fastq
這樣就能得到我們資料分析需要用到的fastq檔案的格式了。還有一點需要注意,這裡產生的fastq檔案中有很多質量差的資料,根原來伺服器軟體出來的不一樣,這裡就需要對產生的資料進行質量控制,也就是我們所說的QC了。