前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用fastp对NGS数据进行质量过滤

使用fastp对NGS数据进行质量过滤

作者头像
生信修炼手册
发布2020-05-08 16:38:42
4.8K0
发布2020-05-08 16:38:42
举报
文章被收录于专栏:生信修炼手册生信修炼手册

欢迎关注”生信修炼手册”!

fastp是最近新出的一款NGS数据质量过滤工具,相比传统的QC工具,有两个主要特点,第一个就是运行速度快,第二个就是提供了质控前后数据详细统计结果。github地址如下

https://github.com/OpenGene/fastp

安装过程如下

代码语言:javascript
复制
wget http://opengene.org/fastp/fastp
chmod a+x fastp

无论是单端测序,还是双端数据,fastp都支持。对于单端数据,用-i参数指定输入的序列文件,-o参数指定输出的序列文件;对于双端数据,用-i-I分别指定R1端和R2端的序列。

该软件可以对数据进行以下几种过滤

1. 去除adapter 序列

默认情况下,该软件会自动查找序列中的adapter序列并去除,对于单端测序数据,根据起始的1M左右的reads来预测adapter序列;对于双端测序数据,根据overlap部分的reads来推测adapter序列,虽然自动化预测对于使用者而言比较方便省心,但是预测的adaper序列可能不太准确,实际使用时,建议还是自己手动指定具体的adapter序列。

单端数据,通过--adapter_sequence指定adapter序列;对于双端数据,通过--adapter_sequence--adapter_sequence_r2指定adapter序列。当手动指定adapter序列时,软件就不会自动检测了,而是按照指定的adapter序列进行查找和过滤。

如果不希望进行去除adapter序列这一步,可以添加-A或者--disable_adapter_trimming参数,这样软件就不会去除adapter序列了。

2. 过滤低质量的序列

默认情况下,会过滤掉质量较差的序列,-q参数指定碱基质量的阈值,小于该质量的碱基被认为是低质量的碱基,-u参数指定一条序列中允许的低质量碱基的百分比,取值范围从0-100,如果序列中低质量碱基百分比超过了该阈值,这条序列就会被过滤掉;-n参数指定一条序列中最多允许的N碱基的个数,如果超过这个数值,这条序列会被过滤掉。

如果不希望过滤掉低质量序列,可以添加-Q参数。

3. 根据序列长度进行过滤

默认情况下,该软件会根据长度对序列进行过滤,--length_required指定最小长度,小于该长度的reads会被过滤掉;--length_limit指定最大长度,大于该长度的reads也会被过滤掉,如果不希望进行长度过滤,可以添加-L或者--disable_length_filtering参数。

4. 去除低质量的碱基

fastp支持类似trimmomatic滑动窗口的方式,对序列中的低质量碱基进行过滤,但是它的算法运行速度更快。-W参数定义滑动窗口的长度,默认值为4,-M参数定义碱基平均质量的阈值,默认值为20。如果一个窗口内碱基平均质量低于20,该窗口及其之后的碱基都会被过滤掉。

默认情况下,是不会去除低质量碱基的,添加-3参数可以利用滑动窗口的方式从reads的3’端去除低质量的碱基。

5. 去除reads两端的部分碱基

fastp支持从reads的3’端和5’端去除固定个数的碱基,对于单端数据,-f指定从5’端去除的碱基数,-t指定从3’端去除的碱基数;对于双端数据,用-f-F参数分别指定R1序列5’端去除的碱基数,用-t-T参数分别指定R2序列3’端去除的碱基数。

6. 去除polyG/polyX

fastp支持去除序列3’端的尾巴,只有对于NextSeq/NovsSeq的数据,fastp会自动去除polyG尾,--poly_g_min_len指定ployG的最小长度,-g参数强制对所有数据去除polyG尾,-G参数禁止去除polyG尾。默认情况下,fastp不会去除polyX尾,可以添加-X参数,同时使用--poly_x_min_len指定polyX的最小长度,默认值都为10。

7. 过滤掉低复杂度的序列

fastp支持根据复杂度对序列进行过滤,序列复杂度定义如下

代码语言:javascript
复制
seq = 'AAAATTTTTTTTGGGCCC'
complexity = 3/(18-1) = 17.65%

依次比较前后相连的两个碱基,统计前后碱基不同的次数,这个次数作为分母,对于上述的例子而言,就是3,分子是序列长度减一,二者的商就是序列负责度。

默认情况下,是不会根据序列复杂度进行过滤的,如果想要进行过滤,需要添加-Y参数,同时使用-y参数指定复杂度的阈值,取值范围0-100, 默认值为30,复杂度低于30%的序列会被过滤掉。

8. 根据index 对序列进行过滤

fastp支持根据index对序列进行过滤, --filter_by_index1参数指定一个index文件,该文件中每行是一个index,如果序列的index在该文件中,这条序列会被过滤掉,--filter_by_index_threshold参数指定实际index序列与检测到的index序列之间的最大错配数。

9. 对双端数据进行校正

通常情况下,reads的3’端质量较差,双端测序的数据,可以根据overlap部分的序列,对低质量的测序结果进行校正。通过添加-c参数,fastp可以校正双端测序的结果,--overlap_len_require参数指定overlap的最小碱基数,--overlap_diff_limit指定overlap区域允许的最大错配数。

10. UMI 预处理

由于文件构建过程中,存在PCR的过程, 会影响定量结果的准确性,最近出现了UMI这样的技术,本质上对未扩增之前的片段进行标记,建库之后,拥有相同UMI标记的reads来自于同一份模板,在数据分析时,可以依据这个标记对序列去冗余,使定量的结果更加准确。

fastp支持对UMI标记的序列进行预处理,添加-U参数之后,fastp就可以对UMI数据进行预处理。--umi_loc指定umi 的index 出现的位置,--umi_len指定umi index的长度。

11. 分析过表达序列

在reads中存在的过表达序列可能是adapter序列,分析过表达序列有助于我们发现测序和建库中可能出现的问题,通过添加-p参数可以使fastp进行过表达序列的分析。

在以上所有操作中,前3步默认都会执行,其他操作可以根据个人需要,进行添加。fastp支持多线程,通过-w参数指定并行的线程数。

除了输出质控后的clean reads外,fastp还可以输出jsonhtml两种格式的报告文件,-j指定json格式的报告文件,-h指定html格式的报告文件。

fastp的基本用法如下,单端数据

代码语言:javascript
复制
fastp -i input.fastq  -o output.fastq  -a  ATAGCATCA  -j report.json -h report.html

双端数据

代码语言:javascript
复制
fastp -i R1.fq  -o  R1.clean.fq -I R2.fq -O R2.clean.fq  -a ATAGCATCA   -a2  ATAGCATCA  -j report.json -h json.html

在报告文件中,会给出QC前后的序列统计信息, json文件示例如下

代码语言:javascript
复制
"summary": {
               "before_filtering": {
                       "total_reads":90187304,
                       "total_bases":10477279513,
                       "q20_bases":9875367665,
                       "q30_bases":9314029123,
                       "q20_rate":0.942551,
                       "q30_rate":0.888974,
                       "gc_content":0.475662
               },
               "after_filtering": {
                       "total_reads":81203730,
                       "total_bases":9425595563,
                       "q20_bases":9153628470,
                       "q30_bases":8762772007,
                       "q20_rate":0.971146,
                       "q30_rate":0.929678,
                       "gc_content":0.472036
               }
       }

fastp的质量过滤功能更加的丰富,速度更快,而且报告文件给出的统计信息详尽有用,可以算得上是最强大的质控软件了。

·end·

—如果喜欢,快分享给你的朋友们吧—

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 去除adapter 序列
  • 2. 过滤低质量的序列
  • 3. 根据序列长度进行过滤
  • 4. 去除低质量的碱基
  • 5. 去除reads两端的部分碱基
  • 6. 去除polyG/polyX
  • 7. 过滤掉低复杂度的序列
  • 8. 根据index 对序列进行过滤
  • 9. 对双端数据进行校正
  • 10. UMI 预处理
  • 11. 分析过表达序列
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档