如何使用fastq dump轉換SRA格式

2021-08-27 11:37:30 字數 2344 閱讀 5515

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

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

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

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

不過要用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按照如下要求定義

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

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

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

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

如何使用List toArray 轉換為陣列物件

在做多目錄索引時,要動態傳入new出來的indexsearcher的陣列,發現我採用的lucene2.3版本裡的multisearcher並沒有傳入list集合的介面。2.4版本就不太清楚。在程式中,我們往往習慣使用list這種集合類,但是程式中卻要求需要傳遞乙個陣列,我們可以這樣實現 long l...

如何使用python編寫PDF轉換器?

想必小夥伴都經歷過,當你想要把pdf轉為word時,自己打字赫赫甩在你眼前 不充錢就想白嫖?想得美 然而,kimol君是不會退縮的,畢竟迎難而上是傳統美德。於是,今天的主題出來了 用python寫乙個pdf轉word的小工具 基於某 介面 實現 import time import requests...

dede使用方法 如何轉換時間戳

dede用 sql呼叫乙個 mysql 時間,mysql 的時間欄位是時間戳展示的,突然不知道咋轉換了,有點迷茫,結果找了下,發現其實很簡單,直接用 dede 的就行了,如下 可以參考dede 預設的時間呼叫,進行修改 field pubdate function mydate m d me 呼叫如...