原文链接:
测序数据的质控:你需要Trimmomatic!
通过前两期文章二代测序原理详细解析和测序数据质量解析的介绍,我们可以推出二代测序数据的特点:大量的短序列(150-250bp)、双末端测序、末端质量较低。因此,在利用我们的测序数据进行分析之前,首先需要过滤掉低质量的碱基与序列,以确保分析结果的准确性。
二代测序数据的指控一般包含以下步骤:
1. 切除尾端碱基质量小于指定值(一般为20)的碱基。可以简单的单碱基修剪,也即从末端开始进行删除,直到读取碱基质量高于20;也可以进行滑窗修剪,也即从末端开始以指定碱基数目的滑窗开始修剪,直到滑窗内碱基平均质量高于20。
2. 去除末端修剪后长度小于指定值的reads。不同项目指定值不同,一般宏基因组去掉小于50bp的reads(50bp已不够产生k-mer),而扩增子测序则根据raw reads长度和PCR插入片段的长度来确定,例如V4区大概260bp,那么可以去掉双末端reads之和小于280bp的(否则不足以拼接)。
3. 其他一些要求,例如去除含有N(也即无法读取位点)过多的reads、去除完全重复的reads等。
通常质控需要我们自己写脚本来完成。Trimmomatic是一个便捷好用的Illumina测序数据质控工具,可以帮我们省掉很多代码任务,自发表以来引用量已过万,安装可以使用conda:
conda install -c trimmomatic
Trimmomatic基本使用方法及默认参数如下:
java-jar trimmomatic-0.30.jar PE -threads 20 -phred33 R1.fq R2.fq clean.R1.fq unpaired.R1.fq clean.R2.fq unpaired.R2.fq ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 LEADING:3 TRAILING:3 SLIDINGWINDOW:4:15 MINLEN:36
参数解释如下:
PE/SE 设定对Paired-End或Single-End的reads进行处理,其输入和输出参数稍有不一样。
-threads 设置多线程运行数,也即核数
-phred33 设置碱基的质量格式,可选pred64
ILLUMINACLIP:TruSeq3-PE.fa:2:30:10 切除adapter序列。参数后面分别接adapter序列的fasta文件:允许的最大mismatch数:palindrome模式下匹配碱基数阈值:simple模式下的匹配碱基数阈值。
LEADING:3 切除首端碱基质量小于3的碱基
TRAILING:3 切除尾端碱基质量小于3的碱基
SLIDINGWINDOW:4:15 滑窗修剪,一个Windows的size是4个碱基,其平均碱基质量小于15,则切除。
MINLEN:50 最小的reads长度
CROP: 保留reads到指定的长度
HEADCROP: 在reads的首端切除指定的长度
TOPHRED33 将碱基质量转换为pred33格式
TOPHRED64 将碱基质量转换为pred64格式
下面通过一些实例为大家介绍该软件的使用方法:
切除尾端碱基质量小于20的碱基(也即从末端开始进行删除,直到读取碱基质量高于20),并去掉剪切后长度小于150的小序列片段:
java -jar trimmomatic-0.30.jar PE -threads 20 -phred33 R1.fq R2.fq clean.R1.fq unpaired.R1.fq clean.R2.fq unpaired.R2.fq TRAILING:20 MINLEN:150
使用末端滑窗修剪,同时去掉质控后长度过短(小于50bp)的小片段,如下所示:
java -jar trimmomatic-0.33.jar PE -threads 20 -thred33 rm_dup_N_trim_1.fq rm_dup_N_trim_2.fq clean_1.fq unp_clean_1.fq clean_2.fq unp_clean_2.fq SLIDINGWINDOW:4:20 MINLEN:50
质控后,我们由raw reads获得clean reads,也可以再次使用FastQC进行质量可视化来查看质控效果: