Fastq dump 乙個神奇的軟體

2021-09-29 03:41:55 字數 2526 閱讀 6513

現在可以用fasterq-dump, 速度更快,請閱讀都2023年了,還用fastq-dump,快換fasterq-dump吧

做生信的基本上都跟ncbi-sra打過交道,尤其是fastq-dump大家肯定不陌生.ncbi的fastq-dump軟體一直被大家歸為目前網上文件做的最差的軟體之一",而我用預設引數到現在基本也沒有出現過什麼問題,感覺好像也沒有啥問題, 直到今天看到如下內容, 並且用谷歌搜尋的時候,才覺得大家對fastq-dump的評價非常很到位.

過濾

我們一般使用fastq-dump的方式為

fastq-dump /path/to/***.sra
但是這個預設使用方法得到結果往往很糟, 比如說他缺省會把雙端測序結果儲存到乙個檔案裡, 但是如果你加上--split-3之後, 他會把原來雙端拆分成兩個檔案,但是原來單端並不會儲存成兩個檔案. 還有你用--gzip就能輸出gz格式, 能夠節省空間的同時也不會給後續比對軟體造成壓力, 比對軟體都支援,就是時間要多一點。

--gzip時間

沒有gzip時間

但是很不幸運,這些東西在官方文件並沒有特別說明,你只有通過不斷的踩坑才能學到這些小知識。

不過要用fastq-dump,那就介紹幾個比較重要的引數吧。我會按照不懂也加,不懂別加,有點意思,沒啥意義這三個級別來闡述不同引數的重要級.

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' '

預設情況下fastq-dump不對reads進行拆分, 對於很早之前的單端測序沒有出現問題.但是對於雙端測序而言,就會把原本的兩條reads合併成乙個,後續分析必然會出錯.

常見的引數有三類:

關於遇到的rejected 35403447 reads because of filtering out non-biological reads就是因為原來是se資料,但是用--split-3當作pe資料處理,出現的問題. 看起來好像有問題,但是對後續結果分析沒有太多影響.

因此,對於乙個你不知道到底是單端還是雙端的sra檔案,一律用--split-3.

預設雙端測序資料拆分後得到兩個檔案中同乙個reads的名字是一樣的,但是加上-i | --readids之後同乙個reads的id就會加上.1和.2進行區分.舉個例子

是否有-i引數

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

問題來了, 明明已經可以通過id後面的"1"和"2"來區分id, 加這個引數幹嘛. 加完之後還會讓後續的bwa報錯.所以,沒事千萬別加

預設情況下輸出的檔案的id都是srr開頭,但其實原始資料名字不是這樣子,比如說@st-e00600:143:h3ljwalxx:1:1101:5746:1016 2:n:0:cctcctga,@hwi-st620:248:hb11hadxx:2:1101:1241:2082#0/1這種. 如果你想看到那種格式,而不是srr,你需要怎麼做呢?

可以通過如下三個選項進行修改

其中fmt按照如下要求定義

fmt的寫法

雖然看起來有點意思,但是對最後的分析其實沒啥幫助.

如果下游分析只需要用到fasta檔案,那麼用--fasta就行. 當然了也有很多方法能夠把fastq轉換成fasta,比如說samtools.

我覺得這部分的引數都沒有意義, 畢竟完全可以用專門的質控軟體處理reads,不過--skip-technical,是唯一比較重要.

這部分引數也很重要, 選擇是否壓縮,還是直接輸出到標準輸出

scanf 乙個神奇的函式

scanf函式,與printf函式一樣,都被定義在stdio.h裡,因此在使用scanf函式時要加上 include。它是格式輸入函式,即按使用者指定的格式從鍵盤上把資料輸入到指定的變數之中,其關鍵字最末乙個字母f即為 格式 format 之意。scanf 格式控制,位址表列 int scanf c...

pointer events,乙個神奇的css屬性

pointer events,搞前端的朋友們應該聽說過這個屬性吧。每年聖誕節的時候,許多網頁上都會掛出乙個雪花飄落的特效增加一些節日氣氛。有一些是用flash實現的,也有用html js實現的。當時就很好奇為何在頁面z軸最上層增加了乙個層卻完全不會影響下面元素的任何事件響應。簡直是前端黑科技。後來看...

記錄乙個神奇的失誤

在使用mybatis generator生成了xml檔案之後,查詢語句是這個樣的 select from hjt bill where id 我想著照著這個寫乙個多個鍵值查詢的select語句,於是寫成了這樣 select from bill where bill num and type 然後死活...