之前寫過一篇文章Fastq-dump: 一個神奇的軟件芍殖, 詳細介紹了fastq-dump的用法。
雖然fastq-dump參數很多谴蔑,而且一直被吐槽參數說明寫的太差豌骏,但是如果真的要用起來其實也就是一行代碼
fastq-dump --gzip --split-3 --defline-qual '+' --defline-seq '@$ac-$si/$ri' SRRXXXXX| SRRXXXX.sra
# 加上--gzip后需要時間進行文件壓縮
當然除了參數問題,還有一個讓人詬病的地方就是他只能單個線程隐锭,所以速度特別的慢窃躲。盡管相對于下游分析要分析好幾天而言,這點時間還能能等的钦睡。但是能快一點總是好的蒂窒,所以在2018年的6月份,sra-tools更新了一個新的sra解壓工具荞怒,fasterq-dump, a faster fastq-dump洒琢,它能利用臨時文件和多線程加速從SRA文件提取FASTQ。
fasterq-dump
的用法和fastq-dump
一樣褐桌,如下所示
fasterq-dump --split-3 SRR5318040.sra
如上代碼運行時如果出現報錯 err: invalid accession 'SRR5318040.sra '衰抑,請改用如下代碼
fasterq-dump --split-3 ./SRR5318040
注意,這個 ./ 非常重要荧嵌,這意味著我們使用的是下載到本地的sra數據停士。
此外還有建立了GitHub Wiki提供使用教程挖帘,參見https://github.com/ncbi/sra-tools/wiki/HowTo:-fasterq-dump。
重點參數是-e|threads
, 用于選擇使用多少線程進行運行恋技,默認是6個線程。 同時考慮到有些人容易著急逻族,還提供了-p
選項用于顯示當前進度蜻底。
我用一個9G大小的SRA文件,分別以fastq-dump
和fasterq-dump
進行了測試聘鳞。
time fastq-dump --split-3 -O test SRR5318040.sra
# 558.76s user 41.36s system 101% cpu 9:51.82 total
time fasterq-dump --split-3 SRR5318040.sra -e 20 -o SRR5318040
# 582.70s user 121.06s system 1130% cpu 1:02.25 total
同樣的如果上面的fastqer-dump運行報錯薄辅,請把 SRR5318040.sra 改成 ./SRR5318040.
從用戶模式(user mode)來看, 兩者的總CPU使用時間都差不多是560秒,從內核模式來看(Kernel Mode)來看抠璃,fasterq-dump
花了更多時間在調用底層硬件上站楚,例如分配內存地址。fastq-dump
基本上穩(wěn)定在一個線程搏嗡,而fasterq-dump
盡管指定了20個線程窿春,但平均只用了11.5個線程吧。
對于我們而言采盒,我們只要看最后的total部分旧乞,也就是實際花了多少時間。fastq-dump
花了快10分鐘磅氨,而fasterq-dump
只需要1分鐘尺栖,快了9倍多。
最后還有一點不足之處:輸出的fastq的ID目前暫時沒有選項可以調整烦租,需要自己寫個腳本解決延赌。