cutadapt 的安裝與使用


cutadapt 是一款質量過濾的軟件, 它可以刪除adapter, primer. polyA尾等序列;也可以用來去除低質量序列

源代碼: https://github.com/marcelm/cutadapt/

官方文檔:http://cutadapt.readthedocs.org/en/stable/

安裝:
          git clone https://github.com/marcelm/cutadapt/
          cd cutadapt
          python setup.py build_ext -i
          cd bin
          export PATH=$PATH:$PWD
測試:
1) 去除3端引物序列
在建庫的過程中,會在DNA序列的3端加上對應的引物序列, 當測序儀的讀長read 過長時,比如建庫后的DNA fragement 長度是 200bp , 機器讀長是250bp, 機器從序列的5端開始測序,因為讀長大於序列長度,會讀到adapter 序列,測序得到的reads的3端就會包含引物序列,用法:
cutadapt -a AACCGGTT -o output.fastq input.fastq
-a 指定的是3端引物序列
去除3端
如果機器讀長大於fragment 的長度,會出現兩種情況;
1) 在測序得到的序列的3'末端會出現部分adapter 序列;
2)在3'末端有完整的adapter 序列,在adapter 序列之后還有其他隨機測到的序列;
input.fastq的內容如下:
@NB001
ATCATATCGATCTAGCCAACCGGTTACGA
+
/////////////////////////////
@NB002
ATCATATCGATCTAGCCAACCG
+
//////////////////////

3'端adapter 的序列為 AACCGGTT, 運行上述程序, output.fastq 的結果如下:

@NB001
ATCATATCGATCTAGCC
+
/////////////////
@NB002
ATCATATCGATCTAGCC
+
/////////////////

 對上述兩種情況,cutadapt 會把adapter 序列都清除干凈

2)去除5'端引物序列

在建庫過程中,如果在5端添加adapter 序列, 也需要去除5端引物序列
 
通常情況下,5段引物序列位於序列的起始位置,但是當5端引物降解時,可能只有部分引物序列會出現在序列的起始位置;有時5段引物序列還會出現在序列中間,這時引物序列之前的序列都會被切掉
假設引物序列是ADAPTER, 測序得到的序列是 MYSEQUENCE, 5端引物可能出現的情況有以下幾種
ADAPTERMYSEQUENCE                       : 正常情況
DAPTERMYSEQUENCE                        : 部分降解
TERMYSEQUENCE                              : 降解嚴重
SOMETHING ADAPTERMYSEQUENCE      : 在5段接頭之前混入其他序列,接頭序列被污染
 
上面所有的情況,在切除5段引物時,這些污染序列都會被切除,只剩下正常的序列, 用法:
cutadapt -g AACCGGTT -o output.fastq input.fastq
input.fastq 的內容:
@NB001
AACCGGTTATCATATCGATCTAGCC
+
/////////////////////////
@NB002
CGGTTATCATATCGATCTAGCC
+
//////////////////////
@NB003
GTTATCATATCGATCTAGCC
+
////////////////////
@NB004
ACGTAAACCGGTTATCATATCGATCTAGCC
+
//////////////////////////////

output.fastq 的內容:

@NB001
ATCATATCGATCTAGCC
+
/////////////////
@NB002
ATCATATCGATCTAGCC
+
/////////////////
@NB003
ATCATATCGATCTAGCC
+
/////////////////
@NB004
ATCATATCGATCTAGCC
+
/////////////////

 可以看到所有的adapter 序列都被清除干凈了

有一種特殊的情況叫做 Anchored adapter , 就是說只有當在reads的3’或者5'端出現長度一致的序列時,才認定這是一段adapter 序列,才會進行相應的去除adapter 序列的操作;

3) 去除barcode 序列或者兼並引物的序列
cutadapt 允許采用IUPAC 的鹼基字符表
            
 
字母N代表任意鹼基, 在去除barcode 序列是非常有用, 比如 ACGTANNNNNTAC 其中NNNN 代表barcode 序列, 又叫做index 序列
 
cutadapt -a ACGTAANNNNTTAGC -o output.fastq input.fastq
 
兼並引物序列:YACGT; 就是說可能為 CACGT 或者 TACGT
 
cutadapt -a YACGT -o output.fastq input.fastq
 
 
5) 去除雙端測序數據的adapter 序列
用法:
cutadapt -a ADAPTER_FWD -A ADAPTER_REV -o out.1.fastq -p out.2.fastq reads.1.fastq reads.2.fastq
 
備注:
cutadapt 在搜尋引物時, 默認允許錯配和插入缺失, 比如
adapter 序列是ADAPTER, 此時
ADABTER    有一個錯配,也會被剪切掉
ADAPTR      有一個缺失,deletion ,也會被剪切掉
ADAPPTER  有一個插入,也會被剪切掉
 
可以采用-e  指定錯配的比例, 默認-e 為0.1, 比如adapter  序列長度為9,允許的錯配數為 9 * 0.1 = 0.9, 然后直接向下取整后為0, 所以允許的錯配數為0;
 
可以采用-no-indels 來禁止插入和缺失,減少錯誤的剪切情況
因為cutadapt  允許部分匹配,比如 adapter 序列為ADAPTER , 測序得到的 序列為ATCGATGCTADCGAGCGC,在序列的中間位置AD是adapter 序列的一部分, 此時會把AD以及之后的序列全部剪切掉,這種情況就屬於錯誤的剪切,所以cutadapt 默認必須至少有3個鹼基匹配時才會認為是adapter 序列,然后進行切除, 這個參數可以通過 --overlap  參數來指定默認的3適合絕大多數的情況
 
6) 去除低質量序列
使用-q/--trim-qualities 過濾低質量序列, 在去除adapter序列之前就開始過濾低質量序列;默認使用phred quality+33 的方式識別序列質量,如果為phred quality+64的方式,則添加--quality-base=64 參數
用法:
cutadapt -q 10 -o output.fastq input.fastq
 
默認只過濾3端的低質量序列, 如果想要過濾5端低質量序列,需要用逗號隔開
cutadapt -q 15,10 -o output.fastq input.fastq
 5端用15進行過濾,3端用10進行過濾
 
質量過濾的算法
cutadapt 使用的質量過濾的算法和bwa 一致,假設一段序列質量編碼為
42, 40, 26, 27, 8, 7, 11, 4, 2, 3
 
質量過濾的閾值為10,則首先減去10
32, 30, 16, 17, -2, -3, 1, -6, -8, -7
 
從末端開始累加,
(70), (38), 8, -8, -25, -23, -20, -21, -15, -7
 
因為-25 最小,所以保留-25 之前的鹼基, 即保留前4位鹼基
 
7) 去除polyA 尾的序列
當adapter 序列中包含重復序列時,推薦使用A{10}這種寫法, 代表10個A,所以可以用來去除序列末端的polyA尾,用法:
cutadapt -a "A{10}" -o output.fastq input.fastq
注意的是,當序列末尾出現10個或者10個以上的A時,都會被去除
input.fastq 的內容:
@NB001
AACCGGTTATCATATCGATCTAGCCAAAAAAAAAA
+
///////////////////////////////////
@NB002
AACCGGTTATCATATCGATCTAGCCAAAAAAAAAAAAAA
+
///////////////////////////////////////

output.fastq的內容:

@NB001
AACCGGTTATCATATCGATCTAGCC
+
/////////////////////////
@NB002
AACCGGTTATCATATCGATCTAGCC
+
/////////////////////////

 可以看到,序列末尾的polyA尾全部被去除了

8) 從序列兩端切除固定長度的序列

cutadapt 還可以在序列的3端和5端切除固定長度的序列,使用-u/--cut 參數, 當值為正數時,從序列開頭切除, 當值為負數時,從序列末端開始切除
從序列開頭切除5bp,用法:
cutadapt -u 5 -o output.fastq  input.fastq
input.fastq 的內容:
 
@NB001
ATGCATGCTAGC
+
////////////

output.fastq的內容:

@NB001
TGCTAGC
+
///////

從序列末端切除5bp,用法:

cutadapt -u -5 -o output.fastq  input.fastq
 
 input.fastq 的內容:
@NB001
ATGCATGCTAGC
+
////////////

output.fastq的內容:

@NB001
ATGCATG
+
///////
9) cutadapt 的其他參數
--length_tag 在輸出文件中給出 序列的length 信息
>read1 length=10
ACGTACGTAC
 
 
filter  reads
-m N/ --minimum-length N      去除序列長度低於N的read
--too-short-output  file           將序列長度低於N的read 輸出到文件中
-M N/ --maximum-length N      去除長度大於N的read
--too-long-output  file             將序列長度大於N的read 輸出到文件中
--discard-trimmed                   去除出現adapter 序列的read
--untrimed-output                  將沒有進行出現過adapter 的序列單獨輸出到一個文件中
--discard-untrimmed               去除沒有出現過adapter序列的read
 
cutadapt 的處理順序:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM