各位做生信的小伙伴都知道,对于下机的FASTQ数据需要进行质控和预处理,以保证下游分析输入的数据都是干净可靠的。通常我们都是使用FASTQC等软件进行质控,使用cutadapt软件去除接头,使用Trimmomatic等软件进行剪裁,然后使用一些自已开发的脚本进行过滤。
好了,现在给大家介绍一个发表在《bioinfomatics》上的测序质控软件--fastp
文章链接请移步:https://academic.oup.com/bioinformatics/article/34/17/i884/5093234
通过扫描fastq文件一次,就完成从质控到处理的工作,而且速度也是很让人舒服。
因为是C++开发,而且完美支持多线程!(尖叫!),所以软件的运算速度还是很快的。
话不多说有需要了解的直接移步:https://github.com/OpenGene/fastp
我们直接来看看软件的优点
对数据自动进行全方位质控,生成人性化的报告。
过滤功能(低质量,太短,太多N……)。
对每一个序列的头部或尾部,计算滑动窗内的质量均值,并将均值较低的子序列进行切除(类似Trimmomatic的做法,但是快非常多)。
全局剪裁 (在头/尾部,不影响去重),对于Illumina下机数据往往最后一到两个cycle需要这样处理。
去除接头污染。厉害的是,你不用输入接头序列,因为算法会自动识别接头序列并进行剪裁。
对于双端测序(PE)的数据,软件会自动查找每一对read的重叠区域,并对该重叠区域中不匹配的碱基对进行校正。
去除尾部的polyG。对于Illumina NextSeq/NovaSeq的测序数据,因为是两色法发光,polyG是常有的事,所以该特性对该两类测序平台默认打开。
对于PE数据中的overlap区间中不一致的碱基对,依据质量值进行校正
可以对带分子标签(UMI)的数据进行预处理,不管UMI在插入片段还是在index上,都可以轻松处理。
可以将输出进行分拆,而且支持两种模式,分别是指定分拆的个数,或者分拆后每个文件的行数。
fastp软件会生成HTML格式的报告,而且该报告中没有任何一张静态图片,所有的图表都是使用JavaScript动态绘制,非常具有交互性。想要看一下样板报告的,可以去以下链接:http://opengene.org/fastp/fastp.html
而且软件的开发者还充分考虑到了各种自动化分析的需求,不但生成了人可读的HTML报告,还生成了程序可读性非常强的JSON结果,该JSON报告中的数据包含了HTML报告100%的信息,而且该JSON文件的格式还是特殊定制的,不但程序读得爽,你用任何一款文本编辑器打开,一眼过去也会看得明明白白。想要看一下JSON结果长什么样的,可以去以下链接:http://opengene.org/fastp/fastp.json
1.软件的安装
如果你的系统安装了anaconda的话
conda install -c bioconda fastp
下载安装
wget http://opengene.org/fastp/fastp
chmod a+x ./fastp
源码安装
git clone https://github.com/OpenGene/fastp.git
# build
cd fastp
make
# Install
sudo make install
2.软件的使用
单端测序数据(single-end,SE) 的话
fastp -i in.fq -o out.fq
双端测序数据(paired-end,PE)的话
fastp -i in.R1.fq -o out.R1.fq -I in.R2.fq -O out.R2.fq
#注意大小写
fastp对于输入和输出都支持gzip压缩,只要文件名的末尾带有.gz,就会被认为是gzip压缩文件,会启用gzip对输入输出进行压缩和解压处理。
fastp -i in.R1.fq.gz -I in.R2.fq.gz -o out.R1.fq.gz -O out.R2.fq.gz
4.结果的分析
1.summary
astp可以对低质量序列,较多N的序列,该功能默认是启用的,但可以使用-Q参数关闭。使用-q参数来指定合格的phred质量值,比如-q 15表示质量值大于等于Q15的即为合格,然后使用-u参数来指定最多可以有多少百分比的质量不合格碱基。比如-q 15 -u 40表示一个read最多只能有40%的碱基的质量值低于Q15,否则会被扔掉。使用-n可以限定一个read中最多能有多少个N。
fastp还默认启用了read长度过滤,但可以使用-L参数关闭。使用-l参数指定最低要求一个read有多长,比如-l 30表示低于30个碱基的read会被扔掉。这个功能可以用于实现常用的discard模式,以保证所有输出的序列都一样长。
在fastp的HTML报告中,最头上的Summary表格很清楚地显示了过滤的统计信息
2.接头
fastp默认启用了接头处理,但是可以使用-A命令来关掉。fastp可以自动化地查找接头序列并进行剪裁,也就是说你可以不输入任何的接头序列,fastp全自动搞定了!
对于SE数据,你还是可以-a参数来输入你的接头,而对于PE数据则完全没有必要,fastp基于PE数据的overlap分析可以更准确地查找接头,去得更干净,而且对于一些接头本身就有碱基不匹配情况处理得更好。fastp对于接头去除会有一个汇总的报告 。
3.滑窗质量剪裁
很多时候,一个read的低质量序列都是集中在read的末端,也有少部分是在read的开头。fastp支持像Trimmomatic那样对滑动窗口中的碱基计算平均质量值,然后将不符合的滑窗直接剪裁掉。使用-5参数开启在5’端,也就是read的开头的剪裁,使用-3参数开启在3’端,也就是read的末尾的剪裁。使用-W参数指定滑动窗大小,默认是4,使用-M参数指定要求的平均质量值,默认是20,也就是Q20。
4.过滤短序列
默认开启多序列过滤,默认值为15,使用-L(--disable_length_filtering)禁止此默认选项。或使用-l(--length_required)自定义最短序列。
5.双端测序碱基校正
fastp支持对PE数据的每一对read进行分析,查找它们的overlap区间,然后对于overlap区间中不一致的碱基,如果发现其中一个质量非常高,而另一个非常低,则可以将非常低质量的碱基改为相应的非常高质量值的碱基值。此选项默认关闭,可使用-c(--correction)开启。
6.polyG剪裁
对于两色发光法的Illumina设备(NextSeq /NovaSeq),因为在没有光信号情况下base calling的结果会返回G,所以在序列的尾端可能会出现较多的polyG,需要被去除。
fastp会自动化地识别NextSeq / NovaSeq的数据,然后进行polyG识别和剪裁。如果你想强制开启该功能,可以指定-g参数,如果想强制关闭该功能,则可以指定-G参数。
7.分子标签UMI处理
UMI在处理ctDNA类似的超低频突变检测应用中是十分有用的,为了更好地对带UMI的FASTQ文件进行预处理,fastp也很好地支持了UMI预处理功能。该功能默认没有启用,需要使用-U参数开启,另外需要使用--umi_loc来指定UMI所在的位置,它可以是(index1、 index2、 read1、 read2、 per_index、 per_read )中的一种,分别表示UMI是在index位置上,还是在插入片段中。如果指定了是在插入序列中,还需要使用 --umi_len 参数来指定UMI所占的碱基长度。
8.质量过滤
fastp可以对低质量序列,较多N的序列,该功能默认是启用的,但可以使用-Q参数关闭。使用-q参数来指定合格的phred质量值,比如-q 15表示质量值大于等于Q15的即为合格,然后使用-u参数来指定最多可以有多少百分比的质量不合格碱基。比如-q 15 -u 40表示一个read最多只能有40%的碱基的质量值低于Q15,否则会被扔掉。使用-n可以限定一个read中最多能有多少个N。
具体参数的解读可以移步 喵小媛的博客 里面就有很详细的讲解
其实大部分功能也用的不是很多 软件最快乐的地方当然是简单了
最后我们看一下在实际中的应用情况:
for i in {1..18};
do
fastp -i R${i}_1.fq.gz -o R${i}_1.out.fq -I R${i}_2.fq.gz -O R${i}_2.out.fq -w 8
done
然后就会生成快乐的html文件
参考: