序列剪切相关软件(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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章