序列剪切相關軟件(cutadapt和trimmomatic)

昨天剛剛寫過一篇fastqc對原始下機fastq數據質控的文章(https://www.jianshu.com/p/025a443be536),fastqc可以通過生成多種形式的“統計圖”,通過評估 adapter序列含量、dup率含量、鹼基質量Q分佈情況等等,對下機數據的質量情況做直觀的展示。然而fastqc並沒有“去除接頭序列”和“低質量鹼基序列”的功能,這些實驗過程中不可避免引入的錯誤鹼基需要被去除,才能夠保證後續mutation calling等步驟的準確性。
一般情況下,需要首先去除“接頭污染序列”,隨後再處理“低質量鹼基序列”,這裏面介紹兩款常用的軟件:cutadapt 和 trimmomatic。

1. cutadapt

cutadapt是一款用python寫的去接頭軟件,可以去除任意指定的接頭和序列,同時也可以用於質量過濾。輸入文件可以是fastq形式也可以是fq.gz的壓縮形式。這裏只介紹了cutadapt幾個常用參數,更多應用參考官方文檔 https://cutadapt.readthedocs.io/en/stable/guide.html#

1.1 cutadapt用於去除接頭序列

用戶輸入 “指定adapter序列”,軟件會將“adapter序列”與reads的尾部序列比對,在可允許錯配的前提下(通常錯配率爲0.1),與adapter序列的overlap超過閾值(默認3bp)的reads便被判斷爲“接頭污染”,然後軟件將該“接頭序列”切除。
根據不同的應用需求,可以靈活使用不同的參數:(這裏只介紹了雙端測序reads的處理)

-a #3'端的接頭序列
-A #5'端的接頭序列(與3'端反向互補)
-o #輸出reads1.fastq去接頭後的輸出結果
-p #輸出reads2.fastq去接頭後的輸出結果
-e #最大錯配比例 (假若 e 設置爲0.1,cutadapt在一條read中檢測到20bp的接頭序列,那麼允許該20bp的接頭序列有2個鹼基的錯配)
-m (--minimum-length) #切除接頭後的序列長度最小值
-O (--overlap) #默認參數爲3(默認至少3個鹼基配對才認爲是adapter序列)
-- discard-trimmed #添加該參數,去掉檢測到接頭的序列(默認只剪切掉接頭序列及之後)
-- pair-filter=(any|both) #any:read1 和 read2任何一個檢測到接頭均捨棄;both: read1 和 read2 全部檢測到接頭才捨棄read1 和 read2

輸出沒有接頭的序列(同時去除存在接頭序列reads對應的paired序列): cutadapt -a GATCGGAAGAGCACACGTCTGAACTCCAGTCACATCACGATCTCGTATGCCGTCTTCTGCTTG \
-A AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT \
-e 0.1 -m 50 -O 5 -- discard-trimmed -- pair-filter=any -o out.1.fq.gz -p out.2.fq.gz read.1.fq.gz read.2.fq.gz

1.2 cutadapt用於指定鹼基剪切

-u N #去除reads前面的 N bp鹼基
-q N #根據reads質量對3'端或(和)5'端序列過濾(-q對應的數字和phred值不一樣,它是軟件根據一定的算法計算出來的)。通常和 --quality-base=(33|64)配合使用

去除最前面的10bp:
cutadapt -u 10 -o out.1.fq.gz -p out.2.fq.gz read.1.fq.gz read.2.fq.gz
對3'端和5'端序列過濾,3'端閾值爲15,5'端閾值爲20:
cutadapt -q 15,20 --quality-base=33 -o out.1.fq.gz -p out.2.fq.gz read.1.fq.gz read.2.fq.gz

2. trimmomatic

trimmomatic的應用和cutadapt相似,所以放在了同一篇文章裏。不過,它是一款java語言編寫的剪切軟件,輸入文件可以是fastq形式也可以是fq.gz或fq.bz2的壓縮形式。這裏也只是簡單記錄幾個常用參數的使用(雙端測序),文中未描述的參數信息,參考技術文檔 http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/TrimmomaticManual_V0.32.pdf

2.1 trimmomatic的背景介紹

下載trimmomatic打開文件夾,adapters文件夾中默認存放的是illumina測序平臺的接頭序列(fasta格式),在使用trimmomatic去除接頭的過程中,我們需要明確指定對應的fasta序列作爲輸入參數。一般來說,目前的Hiseq和Miseq系列用的都是Truseq3。如果待處理數據不是使用的illumina平臺,也可以按照adapters文件夾下的這些文件格式,做一個新的接頭序列,然後再作爲參數輸入。(不過其中的注意事項詳見👆“技術文檔”)


去除read末尾低質量reads:具體的原理是通過滑動一定長度的窗口,計算窗口內的鹼基平均質量,如果過低,就直接往後全部切除,而不是挖掉read中的這部分低質量序列。

2.2 trimmomatic判斷接頭序列

  • trimmomatic使用兩步法來判斷“接頭序列與reads的比對情況”:
    (1)許多短的adapter序列(接頭序列section,不超過16bp)與reads的任意位置比對
    (2) 對於完全比對的部分評分(每多配對一個鹼基增加0.6,每錯配一個鹼基減少Q/10)

  • 接頭序列section與reads比對分爲4種情況:
    A: 接頭序列section與reads完全匹配
    B: 接頭序列section的一部分與reads匹配(極端情況在D)
    C: 全部的接頭序列與reads匹配(forward read 和 reverse read全部被切掉)
    D: 接頭序列section的極少的幾個鹼基與reads匹配(palindrome mode:forward read 與 reverse read比對-只有雙端測序才能使用這種方法)

2.3 trimmomatic的常用參數

trimmomatic的執行順序:首先去除接頭;通過滑動窗口去除尾端低質量read序列;切除首端低質量鹼基序列(像切菜一樣切除);切除尾端低質量鹼基序列;切除過長的reads的尾部序列;切除首端指定長度序列;丟掉長度低於閾值的序列

詳細參數介紹:
PE #雙端測序數據(如果是單端測序數據改成SE)
-phred 33 #設置鹼基的質量格式(默認是64)
ILLUMINACLIP:<fastaWithAdaptersEtc>:<seed mismatches>:<palindrome clip
threshold>:<simple clip threshold> :<minAdapterLength>:<keepBothReads> # <fastaWithAdaptersEtc> 接頭序列信息;<seed mismatches>:接頭序列與reads比對時允許的最大錯配數;<palindrome clip threshold>:比對爲D palindrome mode情況時,adapter和reads的比對評分的閾值(通常要求比較高,在30左右);<simple clip threshold>:比對爲A、B情況時,adapter和reads的比對評分的閾值(通常要求在 7-15);<minAdapterLength>:對於palindrome mode(也就是👆比對圖中D情況)最小檢出adpater的長度(默認8bp,倘若想要更短的adapter序列被剔除,可以設置爲1);<keepBothReads>:是否保留其paired read?默認爲false(因爲檢測到adapter說明DNA插入片段過短,forward read 和 reverse read 序列是鹼基互補配對的,而造成數據的冗餘,軟件默認只保留其中一條read)
SLIDINGWINDOW:<windowSize>:<requiredQuality> # <windowSize>:設定滑動窗口的size;<requiredQuality>:設定平均鹼基質量閾值
LEADING:<quality> # 切除首端鹼基質量值小於<quality>的鹼基
TRAILING:<quality> #切除尾端鹼基質量值小於<quality>的鹼基
CROP:<length> #假設reads長度爲150,CROP:130代表切除reads後20個鹼基,僅保留前130個鹼基。
HEADCROP:<length> #在reads的首端切除指定的長度
MINLEN:<length>#規定read被切除後至少需要保留的長度。‘MINLEN:50’表示去除過濾後長度低於50的reads
TOPHRED33 #將鹼基質量轉換爲 Phred-33 格式
TOPHRED64 #將鹼基質量轉換爲 Phred-64 格式

應用舉例:
一對雙端測序的fastq文件使用trimmomatic處理接頭和低質量鹼基:

  • 選擇PE -phred33模式
  • adapter序列爲TruSeq3-PE.fa
  • 接頭序列與reads匹配時最大容錯鹼基數爲2;palindrome mode 匹配成功的評分閾值設爲30;普通情況 匹配成功的評分閾值設爲10
  • 滑動窗口設置爲5bp;平均鹼基質量閾值爲20
  • 切除首端鹼基質量小於5的鹼基
  • 切除末端鹼基質量小於5的鹼基
  • 去除過濾後長度低於50的reads
  • 使用trimlog增加日誌文件
  • 使用threads設置線程數
java -jar /path/Trimmomatic/trimmomatic-0.36.jar PE -phred33 \
reads_1.fq.gz reads_2.fq.gz \
out.read_1.fq.gz out.trim.read_1.fq.gz \
out.read_2.fq.gz out.trim.read_2.fq.gz \
ILLUMINACLIP:/path/Trimmomatic/adapters/TruSeq3-PE.fa:2:30:10 \
SLIDINGWINDOW:5:20 \
LEADING:5 \
TRAILING:5 \
MINLEN:50 \
-trimlog test.log \
-threads 10
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章