上一節(jié)我們對原始數(shù)據(jù)進(jìn)行了質(zhì)量檢測,對于質(zhì)量比較好的數(shù)據(jù)我們可以直接進(jìn)行后續(xù)分析,而對于一般質(zhì)量的,或者質(zhì)量較差的,我們就需要對數(shù)據(jù)進(jìn)行進(jìn)一步的清洗過濾了。
前文我們提到,下機(jī)數(shù)據(jù)中可能包含以下幾類不合格數(shù)據(jù):
- 測序質(zhì)量低 :低質(zhì)量堿基(即質(zhì)量分?jǐn)?shù)為小于10的堿基)占整條序列的30%以上。
- 序列含接頭 :接頭序列未去除干凈或者由于測序讀長較短測穿了的數(shù)據(jù)。
- 含N比例較高:由于機(jī)器設(shè)備或者其他原因,導(dǎo)致堿基未測出的。
- 測序錯誤的序列等
這塊比較好的幾款軟件都在 Github (程序員搞基大本營) 上建立了各自的開源項(xiàng)目。
1. 幾款常用軟件 (排序不分先后)
1.1 fastp
業(yè)內(nèi)同行海普洛斯小伙伴們的一個開源項(xiàng)目,這里要向海普洛斯 CTO 陳實(shí)富博士(推廣到了我們生信人員大本營)致敬。
該程序由 C++開發(fā),支持多線程,能實(shí)現(xiàn)多個功能,操作簡便,支持較多,開發(fā)也較為活躍,個人推薦使用:
- 可以過濾低質(zhì)量數(shù)據(jù) (如較低的質(zhì)量分?jǐn)?shù),較短的序列,含 N 較多的序列等等)
- 可以實(shí)現(xiàn)剪切序列的首尾兩端
- 可以通過對滑動窗口的平均質(zhì)量的評價,對 5' 和 3' 端序列進(jìn)行剪切(這個功能與Trimmomatic 軟件功能相似,但是速度卻更快)
- 可以自動檢測街頭序列并做切除
- 對于PE數(shù)據(jù)中的overlap區(qū)間中不一致的堿基對,依據(jù)質(zhì)量值進(jìn)行校正
- 支持三代測序或四代測序的long reads (nanopore / pacbio的數(shù)據(jù))
- 生成 html/json 報(bào)告,有助于直觀的查看,json 格式更利于一些大型流程的串寫
- 其他等一系列功能(軟件還在開發(fā)階段,可以直接和作者團(tuán)隊(duì)交流,提一些相關(guān)建議)
題外話:軟件安裝不外乎兩種方式(主要針對Linux,其他系統(tǒng)大都相似):
- 二進(jìn)制程序直接下載使用 (建議初學(xué)者使用)
- 下載源代碼進(jìn)行編譯
## 軟件安裝:
## fastp 有編譯好的二進(jìn)制可執(zhí)行文件版本,我們直接下載使用
wget http://opengene.org/fastp/fastp
chmod a+x ./fastp
## 使用起來也比較簡單
fastp -i in.fq -o out.fq

參數(shù)不少,但是說明給的還比較詳細(xì)。具體可以查看網(wǎng)頁。
會輸出過濾后的結(jié)果,fq/fq.gz 格式,同時還有 json 和 html 格式的報(bào)告,具體內(nèi)容見 示例報(bào)告
1.2 AfterQC
fastp 前身,python語言寫的。輸出內(nèi)容比較豐富,但是速度較慢,開發(fā)團(tuán)隊(duì)推薦 使用 fastp 。
## 軟件安裝(由于是 python包,推薦使用 bioconda安裝)
conda install afterqc
## 也可以直接下載
wget -c https://github.com/OpenGene/AfterQC/archive/master.zip
## 解壓后使用
unzip master.zip
## 用法比較簡單
# SE
python after.py -1 R1.fq
# PE
python after.py -1 R1.fq -2 R2.fq

生成的報(bào)告比較豐富:
Example: http://opengene.org/AfterQC/report.html
1.3 SOAPnuke
華大看家工具集 SOAP 系列之一。適用于多種數(shù)據(jù)類型 ( mRNA,small RNA,DEG... )
## 軟件下載安裝
git clone https://github.com/BGI-flexlab/SOAPnuke.git
cd SOAPnuke/src
cmake .
make
./SOAPnuke
## 軟件使用
SOAPnuke filter --cut 0 --qualRate 0.5 --index --lowQual 5 --nRate 0.1 -Q 2 -5 1 -1 ZJ-2-1-A_1.fq.gz -2 ZJ-2-1-A_2.fq.gz -o output/ZJ1Rep1 -C ZJ1Rep1_1.fq -D ZJ1Rep1_2.fq

結(jié)果展示如下:

這些文件詳細(xì)的展示了序列過濾的具體情況。
1.4 seqtk
李恒大神(不知道此人的請自行百度)寫的一款過濾軟件。
四個字點(diǎn)評:短小精悍!
## 下載安裝
git clone https://github.com/lh3/seqtk.git;
cd seqtk;
make



該軟件功能豐富,具體示例詳見說明文檔:https://github.com/lh3/seqtk
我們重點(diǎn)關(guān)注 fqchk 與trimfq 功能:


1.5 Trimmomatic
老牌軟件啦,java 寫的,說明文檔:manual。
## 下載安裝
wget -c http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.36.zip
## 解壓軟件包
unzip Trimmomatic-0.36.zip
## 軟件使用示例
# PE
java -jar trimmomatic-0.35.jar PE -phred33 input_forward.fq.gz input_reverse.fq.gz output_forward_paired.fq.gz output_forward_unpaired.fq.gz output_reverse_paired.fq.gz output_reverse_unpaired.fq.gz ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36
# SE
java -jar trimmomatic-0.35.jar SE -phred33 input.fq.gz output.fq.gz ILLUMINACLIP:TruSeq3-SE:2:30:10 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36


參數(shù)說明:
PE/SE 設(shè)定對Paired-End或Single-End的reads進(jìn)行處理,其輸入和輸出參數(shù)稍有不一樣。
-threads 設(shè)置多線程運(yùn)行數(shù)
-phred33 設(shè)置堿基的質(zhì)量格式,可選pred64
ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 切除adapter序列。參數(shù)后面分別接adapter序列的fasta文件:允許的最大 mismatch 數(shù):palindrome 模式下匹配堿基數(shù)閾值:simple模式下的匹配堿基數(shù)閾值。
LEADING:3 切除首端堿基質(zhì)量小于3的堿基
TRAILING:3 切除尾端堿基質(zhì)量小于3的堿基
SLIDINGWINDOW:4:15 從5'端開始進(jìn)行滑動,當(dāng)滑動位點(diǎn)周圍一段序列(window)的平均堿基低于閾值,則從該處進(jìn)行切除。Windows的size是4個堿基,其平均堿基
質(zhì)量小于15,則切除。
MINLEN:50 最小的reads長度
CROP:<length> 保留reads到指定的長度
HEADCROP:<length> 在reads的首端切除指定的長度
TOPHRED33 將堿基質(zhì)量轉(zhuǎn)換為pred33格式
TOPHRED64 將堿基質(zhì)量轉(zhuǎn)換為pred64格式
2. 其他數(shù)據(jù)過濾軟件:
QcReads
由中科院昆明動物所開發(fā)的一個快速、高效的高通量測序reads去接頭和去低質(zhì)量序列工具。
cutadapt
從名字可以很直觀的看出來這是一款去接頭的軟件啦~
fastx_toolkit
二代測序經(jīng)典數(shù)據(jù)質(zhì)控過濾軟件,只是 2010 年后就沒有維護(hù)更新啦~
喜歡折騰的可以去官網(wǎng)或者 github 上逛逛:
官網(wǎng)
GitHub
SOAPnuke 軟件編譯這塊稍顯復(fù)雜,之前華大網(wǎng)站有放出編譯好的 SOAPnuke 程序,可惜找不到了。文中所列軟件,如果有需要的話,各位下伙伴可以后臺回復(fù)索取(Linux 版本)。
歡迎補(bǔ)充討論。
下節(jié)我們詳細(xì)討論各個軟件生成的報(bào)告。
3. 小尾巴.命令詳解
今天的小尾巴是 chmod.
chmod命令用來變更文件或目錄的權(quán)限。在UNIX系統(tǒng)家族里,文件或目錄權(quán)限的控制分別以讀取、寫入、執(zhí)行3種一般權(quán)限來區(qū)分,另有3種特殊權(quán)限可供運(yùn)用。用戶可以使用chmod指令去變更文件與目錄的權(quán)限,設(shè)置方式采用文字或數(shù)字代號皆可。符號連接的權(quán)限無法變更,如果用戶對符號連接修改權(quán)限,其改變會作用在被連接的原始文件。
語法:
chmod [-cfvR] [--help] [--version] mode file...
權(quán)限范圍的表示法如下:
u User,即文件或目錄的擁有者;
g Group,即文件或目錄的所屬群組;
o Other,除了文件或目錄擁有者或所屬群組之外,其他用戶皆屬于這個范圍;
a All,即全部的用戶,包含擁有者,所屬群組以及其他用戶;
r 讀取權(quán)限,數(shù)字代號為“4”;
w 寫入權(quán)限,數(shù)字代號為“2”;
x 執(zhí)行或切換權(quán)限,數(shù)字代號為“1”;
- 不具任何權(quán)限,數(shù)字代號為“0”;
s 特殊功能說明:變更文件或目錄的權(quán)限。
來自: http://man.linuxde.net/chmod
參考資料
http://journal.embnet.org/index.php/embnetjournal/article/view/200/479
http://hannonlab.cshl.edu/fastx_toolkit/index.html
http://not.farbox.com/page/9
https://zhuanlan.zhihu.com/p/28924793
https://disease.novogene.org/topic/305/%E4%BD%BF%E7%94%A8trimmomatic%E8%BF%87%E6%BB%A4%E4%BD%8E%E8%B4%A8%E9%87%8F%E5%BA%8F%E5%88%97?page=1
http://not.farbox.com/post/fastx_toolkit