lyao222lll的个人博客分享 http://blog.sciencenet.cn/u/lyao222lll

博文

生信工具Fastp的安装及其在二代测序数据过滤质控中的使用说明

已有 8695 次阅读 2019-2-8 13:21 |个人分类:Software/Pipeline/Script|系统分类:科研笔记| _生信工具, _测序数据质控及评估

生信工具Fastp的安装及其在二代测序数据过滤质控中的使用说明


原始下机测序数据raw reads中,有些reads包含了测序接头序列adapter sequence,这些序列不属于测序物种中的原有序列,因此在后续需要去除。同时,raw reads中还包含了许多低质量的reads序列(如含有较高的测序错误的reads,去除接头序列后长度过短的reads等),会影响下游的分析,同样需要过滤去除。

这里介绍一款常用的二代测序数据质控软件,Fastp。该软件使用C++开发,优点是算法高效,可支持多线程等,因此运行速度很快。并且可以在最后生成一份动态版的网页版质控报告,十分方便快速查看结果;同时也会生成一份json文件,便于我们从中提取信息。

Fastp一直处于更新状态,其在GitHub中的链接:https://github.com/OpenGene/fastp

 

本文中的测试数据以及结果示例等的百度盘链接如下,均无提取码(若失效请在下方留言)。

测试fastq数据:https://pan.baidu.com/s/1yYQNxty5hBdcpoA8xkrQUg

Fastp结果文件示例:https://pan.baidu.com/s/1spxDKfk6MUkM9IQ0KpLaUA

 


Fastp下载安装


根据GitHub中的说明文档,在Linux系统下,我们可以通过三种方式安装Fastp,任选其一(推荐conda,方便快捷,自动解决环境配置)。

 

一,可直接使用conda安装。

#安装
conda install fastp

 

二,直接下载打包好的二进制文件,下载后添加可执行权限即可使用。

wget http://opengene.org/fastp/fastp
chmod a+x ./fastp


三,源码编译。

git clone https://github.com/OpenGene/fastp.git
cd fastp
make && make install



Fastp功能简介


Fastp支持多线程,多种phred格式的fastq文件输入,并且可以将输出结果根据指定文件大小等进行拆分以方便后续操作。此外,在得到输出结果后,还可自动生成一份动态版的网页版报告便于结果快速浏览,以及json文件以便于后续的信息提取。

 

在二代测序数据质控中,Fastp主要具有以下几种功能。

reads接头序列裁剪功能:去除测序接头序列以得到干净的测序reads,大多数情况下Fastp可以做到自动识别接头序列(即一般情况下无需额外指定接头序列),但这里出现了一个小问题,可见博文最后。

reads全局裁剪功能:在测序reads5'端或3'端,根据指定长度或碱基质量裁剪一定长度的序列。

reads polyG裁剪功能:对于Illumina NextSeq / NovaSeq的测序数据,因为是两色法发光,polyG是常有的事,所以该特性对该两类测序平台默认打开以去除尾部的polyG

reads滑窗裁剪功能:在测序reads5'端或3'端,根据一定长度的滑动窗口计算碱基质量均值,以去除低质量的碱基序列(该操作可能会影响到后续分析中对deduplication数据的识别)。

reads过滤功能:若reads中存在较多的低质量碱基,或者较多的N碱基,或者在裁剪接头序列、低质量碱基等操作后导致reads长度过短,则去除这些reads

reads碱基校正功能:对于双端测序数据(paired-end readsPE reads),若存在重叠区,则可根据重叠区的碱基序列对错误碱基进行纠错。

带分子标签(UMI)的数据处理功能:不管UMI在插入片段还是在index上,都可以轻松处理。 

Over-represented序列分析功能:在较新版本的Fastp中,增添了over-represented reads分析功能,不但提供了这些over-represented reads的个数和占比,还提供了他们在测序循环中的分布情况,这有利于分析各种问题。

 

Fastp安装完毕后,我们可首先看一下Fastp的参数说明。

fastp --help

1.png

各参数说明如下。

文件读写及程序运行基本选项

-i,输入文件1,双端测序raw reads R1

-o,输出文件1,双端测序clean reads R1

-I,输入文件2,双端测序raw reads R2

-O,输出文件2,双端测序clean reads R2

-6,输入fastq文件phred格式为phred64,将其转化为phred33,输出fastq文件phred33

-zgzip压缩水平,取值1-9,数值越高压缩空间越小但速度越慢,默认为2

-j,输出的json文件名称,默认fastp.json

-h,输出的html文件名称,默认fastp.html

-w,程序运行线程数,默认3线程;

-s,可根据指定文件个数拆分文件,默认不拆分;

-S,可根据指定行数拆分文件,默认不拆分;

reads接头序列裁剪功能

-A,若此参数存在,则关闭裁剪测序接头序列功能,默认启用;

-a,接头序列,默认自动检测;

reads全局裁剪功能

-f,裁剪reads1 5'端该长度的碱基,默认无;

-t,裁剪reads1 3'端该长度的碱基,默认无;

-F,裁剪reads2 5'端该长度的碱基,默认无;

-T,裁剪reads2 3'端该长度的碱基,默认无;

reads polyG裁剪功能

-g,执行polyG裁剪功能;默认情况下,仅识别Illumina NextSeq/NovaSeq数据执行polyG裁剪;

-G,关闭polyG裁剪功能;默认情况下,仅识别Illumina NextSeq/NovaSeq数据执行polyG裁剪;

reads滑窗裁剪功能

-5,在reads 5'端启用根据碱基质量值的裁剪,默认无,(该参数启用会影响后续分析中对deduplication数据的识别);

-3,在reads 3'端启用根据碱基质量值的裁剪,默认无,(该参数启用会影响后续分析中对deduplication数据的识别);

-W,设定reads裁剪的滑窗大小,默认4碱基为一滑窗;

-M,滑窗中碱基平均质量低于该设定阈值时,将被裁剪,默认阈值为q20

reads过滤功能(根据碱基质量、N碱基数量、长度等)

-Q,若此参数存在,则关闭质量筛查功能,默认启用;

-q,设定期望碱基质量值,质量值低于该值的碱基视为不合格,默认值15表示phred quality >= q15合格;

-u,允许reads中存在多少个碱基不合格,取值0-100,默认值40表示40%

-n,如果一个read中的N碱基大于此设定值,该read将被剔除,默认值为5

-L,若此参数存在,则关闭长度筛选功能,默认启用;

-l,如果一个read的长度低于此设定值,该read将被剔除,默认值为15

reads碱基校正功能

-c,若为双端测序数据(paired-end readsPE reads),可根据reads重叠区执行碱基校正,默认禁用;

对带分子标签(UMI)的数据处理功能

-U,启用unique molecular identifer (UMI)程序;

Over-represented序列分析功能

-p,启用over-represented reads分析;

-P,统计over-represented reads在指定测序扩增循环次数中的基本信息,默认第20轮循环。

 


使用Fastp过滤raw reads示例


以下我们使用网盘中所提供的示例测试数据,简要展示一个Fastp过滤raw reads得到clean reads的示例。

fastp -q 15 -u 40 -M 0 -n 5 -l 80 -w 4 -i Bacillus_subtilis.raw_R1.fastq.gz -I Bacillus_subtilis.raw_R2.fastq.gz -o Bacillus_subtilis.clean_R1.fastq.gz 
-O Bacillus_subtilis.clean_R2.fastq.gz -h report.html > report.txt

输入两个raw reads文件,输出两个clean reads文件(均为gzip压缩格式,以节约存储空间)。程序运行线程数4,期望碱基质量值设定为q15并去除高于40%低质量碱基数量的reads,同时过滤去除多于5N碱基的reads、总长度低于80个碱基的reads,不启用滑窗统计功能。

 

程序运行完毕后我们得到如下结果。使用上述命令所得到的运行结果亦可参见网盘附件“Bacillus_subtilis”中的“report.txt”“report.html”“fastp.json”

2.png

report.txt为运行结果简要,其内容如下,统计了测序reads过滤前后的reads总数、碱基总数、Q20比例、Q30比例、低质量reads总数、含接头的reads总数、运行命令、运行时间等信息。

3.png      4.png

Bacillus_subtilis.raw_R1.fastq.gzBacillus_subtilis.raw_R2.fastq.gz 分别为原始测序数据raw data文件,Bacillus_subtilis.clean_R1.fastq.gzBacillus_subtilis.clean_R2.fastq.gz分别为经过Fastp过滤质控后得到的clean data文件。我们可以看到,clean data文件中总行数减少,表明有一部分低质量数据被去除。

fastp.jsonreport.html分别为一并得到的json文件和网页版报告文件。然后我们接下来重点关注网页报告“report.html”文件

 


Fastp网页报告内容解读


以下是网页报告中的主要内容,可参见网盘附件“Bacillus_subtilis”中的“report.html”,即使用以上数据及运行命令的所得结果。也可点击http://opengene.org/fastp/fastp.html查看官方示例。

 

报告开头部分为质控简要,包含了Fastp版本、测序数据类型、测序reads过滤前后的reads总数、碱基总数、Q20比例、Q30比例、低质量reads总数、含接头的reads总数等信息。

结果中合并统计了测序reads R1R2

5.png

 

接下来分别展示了测序raw reads R1R2clean reads R1R2中,接头序列、碱基质量值、碱基含量、k-mer分布等信息。

以下是各部分的主要内容。

 

统计的测序reads中的接头序列信息,这些接头序列将被自动去除。

6.png

 

碱基质量分布以及碱基含量曲线。

碱基质量分布图中横坐标为碱基在reads中的位置,纵坐标为单碱基错误率(注:根据测序技术的特点,测序片段末端的碱基质量一般会比前端的低,属正常现象)。碱基含量曲线图中横坐标为碱基在reads中的位置;纵坐标为该位置处各碱基含量百分比,根据碱基互补原则,AT的比例应该接近,CG的比例也应该是接近的(注:实验过程所用的随机引物会引起前几个位置的碱基组成出现波动,这属于正常情况)。

作为动态网页报告,当我们将鼠标放置在曲线中时,会自动显示当前数值。

7.png     8.png

 

Fastp还对5个碱基长度的k-mer进行了统计。在k-mer统计表中,背景越深,则表示该k-mer出现频数越多,可较为直观查看异常k-mer

9.png

 


关于Fastp过滤接头的一个小问题


我们知道,测序raw reads中存在部分reads带有接头序列,这些接头序列位于测序reads5'端。而有时,测序reads3'端同样带有了接头序列。

那么,什么时候会测序reads3'端出现接头序列呢?在DNA文库中,正常情况下由于插入片段的长度合理,大于测序读长,因此测序时只会测到5'端的接头序列;而当我们的插入片段序列长度过短,而测序读长超过了插入片段的长度时,就会出现这种结果,如下所示。

10.png

 

而使用Fastp识别裁剪接头序列时,似乎只能识别5'端接头序列。也就是说,当我们使用Fastp处理raw reads数据时,当一条read3'端带有接头序列时,则不能够将这个接头序列识别出来,最后导致接头序列去除不完全的情况发生。

我们可以看个示例,使用网盘链接中“插入片段过短的DNA文库的测序数据中的测试数据来说明。在这个测试数据中,由于其测序样本的DNA浓度未达标,DNA片段化后未进行较严格的片段长度的筛选,因此导致DNA文库中出现较多比例的插入片段长度过短的序列。最终导致在测序raw reads中,许多reads3'端带有接头序列。虽然该测序数据中也存在其他物种DNA的污染,但并不影响我们对软件的测试结果。

我们使用Fastp过滤raw reads,参数同上,之后使用FastQC查看clean reads质量(FastQC是一款用于二代测序reads数据质量评估的软件,相较于FastpFastQC的质控报告包含更多内容,其中就有接头序列统计的内容,http://blog.sciencenet.cn/home.php?mod=space&uid=3406804&do=blog&quickforward=1&id=1161193)。主要结果文件亦保存在网盘中。

#fastp
fastp -q 15 -u 40 -M 0 -n 5 -l 80 -w 4 -i test.raw_R1.fastq.gz -I test.raw_R2.fastq.gz -o test.clean_R1.fastq.gz -O test.clean_R2.fastq.gz -h report.html > report.txt
#fastqc 查看 clean reads R1,结果输出在当前路径
fastqc ./ test.clean_R1.fastq.gz

FastQC结果中,关注“Adapter Content”这一项,可见经过Fastp过滤处理后,接头序列仍然存在。若是我们再使用Fastp对已经过滤后的数据再运行一次,结果仍然未变,即这种情况下Fastp不能有效将测序接头完全去除。同样地,由于测序接头未完全去除,导致碱基分布曲线异常。

11.png    12.png

 

由于一般情况下,DNA文库中插入片段长度都是合理的(即使出现了很少部分异常片段,也可以忽略),所以大部分情况Fastp仍然是首选。但有时可能会由于一些特殊原因,如以上示例中提到的DNA浓度偏低的问题(虽然此时不建议使用,但若样本来源稀缺,实属没办法的事的时候),导致了DNA文库中插入片段长度过短的情况发生,这时我们就要考虑更换质控软件了。如BBDuk,可避免此类问题的出现,但其速度明显不如Fastp快。

 


参考文献


Chen S, Zhou Y, Chen Y, et al. fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics, 2018, 34(17):i884-i890.




http://blog.sciencenet.cn/blog-3406804-1161192.html

上一篇:基因组K-mer分析及基因组大小评估工具KmerGenie的安装及使用说明
下一篇:二代测序数据质量评估软件FastQC的安装及使用说明

1 张成岗

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2020-8-12 17:56

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部