做生信的基本上都跟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 呼叫如...