現(xiàn)在可以用
fasterq-dump
, 速度更快,請閱讀都8102年了,還用fastq-dump,快換fasterq-dump吧
做生信的基本上都跟NCBI-SRA打過交道,尤其是fastq-dump
大家肯定不陌生.NCBI的fastq-dump軟件一直被大家歸為目前網(wǎng)上文檔做的最差的軟件之一",而我用默認參數(shù)到現(xiàn)在基本也沒有出現(xiàn)過什么問題,感覺好像也沒有啥問題, 直到今天看到如下內(nèi)容, 并且用谷歌搜索的時候,才覺得大家對fastq-dump的評價非常很到位.
我們一般使用fastq-dump
的方式為
fastq-dump /path/to/xxx.sra
但是這個默認使用方法得到結(jié)果往往很糟, 比如說他默認會把雙端測序結(jié)果保存到一個文件里, 但是如果你加上--split-3
之后, 他會把原來雙端拆分成兩個文件,但是原來單端并不會保存成兩個文件. 還有你用--gzip
就能輸出gz格式, 能夠節(jié)省空間的同時也不會給后續(xù)比對軟件造成壓力, 比對軟件都支持,就是時間要多一點。
但是很不幸運,這些東西在官方文檔并沒有特別說明,你只有通過不斷的踩坑才能學到這些小知識。
我建議盡量去EMBL-EBI去下載原始數(shù)據(jù),而不是這種神奇的sra格式,盡管有一些下載的數(shù)據(jù)其實就是從SRA解壓而來。
不過要用fastq-dump
,那就介紹幾個比較重要的參數(shù)吧。我會按照不懂也加,不懂別加,有點意思,沒啥意義這三個級別來闡述不同參數(shù)的重要級.
太長不看版
如果你不想了解一些細節(jié)性內(nèi)容,用下面的參數(shù)就行了
fastq-dump --gzip --split-3 --defline-qual '+' --defline-seq '@\$ac-\$si/\$ri' SRR_ID
# 建議加別名
alias fd='fastq-dump --split-3 --defline-qual '+' --defline-seq '@\\\$ac-\\\$si/\\\$ri' '
數(shù)據(jù)格式
不懂也加: reads拆分
默認情況下fastq-dump
不對reads進行拆分, 對于很早之前的單端測序沒有出現(xiàn)問題.但是對于雙端測序而言,就會把原本的兩條reads合并成一個,后續(xù)分析必然會出錯.
常見的參數(shù)有三類:
-
--split-spot
: 將雙端測序分為兩份,但是都放在同一個文件中 -
--split-files
: 將雙端測序分為兩份,放在不同的文件,但是對于一方有而一方?jīng)]有的reads直接丟棄 -
--split-3
: 將雙端測序分為兩份,放在不同的文件,但是對于一方有而一方?jīng)]有的reads會單獨放在一個文件夾里
關于遇到的Rejected 35403447 READS because of filtering out non-biological READS
就是因為原來是SE數(shù)據(jù),但是用--split-3
當作PE數(shù)據(jù)處理,出現(xiàn)的問題. 看起來好像有問題,但是對后續(xù)結(jié)果分析沒有太多影響.
因此,對于一個你不知道到底是單端還是雙端的SRA文件,一律用--split-3
.
沒事別加: read ID
默認雙端測序數(shù)據(jù)拆分后得到兩個文件中同一個reads的名字是一樣的,但是加上-I | --readids
之后同一個reads的ID就會加上.1和.2進行區(qū)分.舉個例子
是否有-I參數(shù) | ID 1 | ID 2 |
---|---|---|
無 | @SRR5829230.1 1 length=36 | @SRR5829230.1 1 length=36 |
有 | @SRR5829230.1.1 1 length=36 | @SRR5829230.1.2 1 length=36 |
問題來了, 明明已經(jīng)可以通過ID后面的"1"和"2"來區(qū)分ID, 加這個參數(shù)干嘛. 加完之后還會讓后續(xù)的BWA報錯.所以,沒事千萬別加
有點意義: 原始格式
默認情況下輸出的文件的ID都是SRR開頭,但其實原始數(shù)據(jù)名字不是這樣子,比如說@ST-E00600:143:H3LJWALXX:1:1101:5746:1016 2:N:0:CCTCCTGA
,@HWI-ST620:248:HB11HADXX:2:1101:1241:2082#0/1
這種. 如果你想看到那種格式,而不是SRR,你需要怎么做呢?
可以通過如下三個選項進行修改
-
F|--origfmt
: 僅保留數(shù)據(jù)名字 -
--defline-seq <fmt>
: 定義readsID的顯示方式 -
--defline-qual <fmt>
: 定義質(zhì)量的顯示方式
其中fmt按照如下要求定義
雖然看起來有點意思,但是對最后的分析其實沒啥幫助.
沒啥意義: fasta輸出
如果下游分析只需要用到fasta
文件,那么用--fasta
就行. 當然了也有很多方法能夠把fastq轉(zhuǎn)換成fasta,比如說samtools.
過濾
我覺得這部分的參數(shù)都沒有意義, 畢竟完全可以用專門的質(zhì)控軟件處理reads,不過--skip-technical
,是唯一比較重要.
- 根據(jù)ID:
-N
-X
- 根據(jù)長度:
-M
- 多標簽序列:
--skip-technical
, 這個是唯一有點意思的,就是說如果你原來建庫測序使用了多個標簽來區(qū)分序列, 默認不會輸出這個標簽. 但是如果不輸出標簽,我們怎么區(qū)分呢? 所以一定要顯示聲明
有點意思: 輸出方式
這部分參數(shù)也很重要, 選擇是否壓縮,還是直接輸出到標準輸出
-
--gzip
,--bzip2
: 壓縮方式 -
-Z | --stdout
: 輸出到標準輸出 -
-O|--outdir
: 輸出到指定文件夾