【块】生信上游-3 fastp

  • 这一篇只是fastp的官方manual,后面再放实操。

1. 主要功能

  1. 质量检测
  2. 排除质量较差的reads
  3. 剪掉质量低的碱基片段
  4. reads首尾剪切
  5. 校正低质量碱基
  6. polyG、polyX剪切
  7. UMI转化为序列名
  8. 将结果输出为多个文件,方便后续多线程分析
  9. 支持STDIN/STDOUT的管道操作
  10. reads去重
  11. HTML/JSON输出结果,便于展示及下游处理

2. 使用实例

主要区分单末端还是双末端

#单末端
fastp -i in.fq -o out.fq  
#双末端
fastp -i in.R1.fq.gz -I in.R2.fq.gz -o out.R1.fq.gz -O out.R2.fq.gz

贴心给了结果展示样例:

3.下载安装

  1. 可以用conda
conda install -c bioconda fastp
  1. 直接下二进制文件
#最新版本
wget http://opengene.org/fastp/fastp 
chmod a+x ./fastp #权限
#指定版本
wget http://opengene.org/fastp/fastp.0.23.1
mv fastp.0.23.1 fastp
chmod a+x ./fastp
  1. 安装包自己安装
    3.1. libisal搭建
    autoconf, automake, libtools, nasm (>=v2.11.01) and yasm (>=1.2.0) 需要提前准备好
git clone https://github.com/intel/isa-l.git
cd isa-l
./autogen.sh
./configure --prefix=/usr --libdir=/usr/lib64
make
sudo make install

3.2. libdeflate搭建

git clone https://github.com/ebiggers/libdeflate.git
cd libdeflate
make
sudo make install

3.3 fastp搭建

git clone https://github.com/OpenGene/fastp.git
# build
cd fastp
make
# Install
sudo make install

4. 输入与输出

--stdout
如果是双末端,R1与R2会间隔输出
--stdin
如果stdin的数据源是双末端stdout类似的R1、R2间隔输出,则需--interleaved_in选项
--unpaired1、--unpaired2
储存仅单端序列通过质量筛选的序列(储存通过筛选的)
--failed_out
双末端failed reads会放到一个文件内
--reads_to_process
限制用于质检的reads,以粗略的看一眼整体质量如何。或者只需要质检一部分序列。
--dont_overwrite
保护已有文件,若已有输出文件(read1, read2, json report, html report),则直接报错

5. 过滤reads

5.1. 质量过滤
默认打开的,-Q或--disable_quality_filtering取消
-n或--n_base_limit设置unqualified碱基的限制数目
-q或--qualified_quality_phred设置pred分数,默认>=15
-u或--unqualified_percent_limit设置多少碱基被允许unqualified,默认40%
5.2. 长度过滤
默认打开的,-L或--disable_length_filtering取消
-l或--length_required设置最小碱基数
--length_limit设置最大碱基数,用于小RNA,默认0代表没有限制
5.3. 复杂度过滤
默认关闭的,-y或--low_complexity_filter可以打开
-Y或--complexity_threshold设置在0-100范围内,默认30,意思是至少30%复杂度

  • 复杂度:整体来看下一个碱基与前一个碱基不同程度

6. 接头剪切

6.1. 默认打开,-A或--disable_adapter_trimming可取消
6.2. 单末端:根据前1M个reads估计接头序列
-a或--adapter_sequence指定接头序列,自动检测会取消
6.3. 双末端:
6.3.1. 会根据per-read overlap analysis估计接头序列,不需要手动输入接头序列。
6.3.2. 如果设置了--adapter_sequence和--adapter_sequence_r2,当碱基质量较差时,才会使用指定的序列。同时因为有overlap analysis,所以接头序列预测默认是关闭的,--detect_adapter_for_pe可打开。
6.3.3. 如果设置了接头序列,运行速度会比较慢,但是会更干净
6.3.4. 最常用的接头是Illumina TruSeq adapters. 如果数据来自TruSeq library, 可以设置,--adapter_sequence=AGATCGGAAGAGCACACGTCTGAACTCCAGTCA --adapter_sequence_r2=AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT 6.3.5. 或打开自动检查--detect_adapter_for_pe.
6.3.6. 也可以设置--adapter_fasta提供一个接头序列文件

  • fastp first trims the auto-detected adapter or the adapter sequences given by --adapter_sequence | --adapter_sequence_r2, then trims the adapters given by --adapter_fasta one by one.

7. 碱基剪切

7.1. -5或--cut_front从5端开始滑动检查,去除质量低于cut_front_mean_quality的碱基之前的序列或停止,cut_front_window_size设置滑动窗口大小;如果窗口大小是1,等同于Trimmomatic的 LEADING方法。
7.2. -3或--cut_tail从3端开始滑动检查,去除质量低于cut_tail_mean_quality的碱基之后的序列或停止,cut_tail_window_size设置滑动窗口大小;如果窗口大小是1,等同于Trimmomatic的 TRAILING方法。
7.3. -r或--cut_right,从5端到3端,如果遇到异常窗口,则丢弃右侧所有序列并停止。cut_right_window_size设置滑动窗口大小,cut_right_mean_quality设置质量要求。比较接近Trimmomatic的SLIDINGWINDOW方法。
7.4 用了--cut_right,就没必要用--cut_tail,因为--cut_right效果足够强;如果--cut_front和--cut_right联用,--cut_front应该会生效。
7.5. --cut_front和--cut_tail会影响reads去重
7.6. -W,--cut_window_size和-M,--cut_mean_quality

8. 碱基校正

overlap analysis可以用来校正
默认是关闭的,-c或--correction可打开,三个参数:overlap_len_require (default 30),overlap_diff_limit (default 5),overlap_diff_limit_percent (default 20%)。

9. 首尾剪切

头尾序列质量比较差,可以去掉几次测序
9.1. -t 1或 -trim_tail1=1可剪切掉所有reads最后一次测序
9.2. -f,--trim_front1 和 -t,--trim_tail1
9.3. -F,--trim_front2 和-T,--trim_tail2
9.4. -b, --max_len1 和 -B, --max_len2最大化reads长度(具体效果不清楚)

10. polyG、polyX剪切

10.1. polyG剪切对NextSeq/NovaSeq data是默认打开的,-g 或--trim_poly_g可打开,-G 或 --disable_trim_poly_g可取消,--poly_g_min_len设置最小长度,默认10
10.2. polyX剪切默认关闭,-x or --trim_poly_x可打开。poly_x_min_len可设置最小长度,默认10

11. UMI

将umi转到reads名

12. 输出多个文件

方便多线程分析
文件名:--out1 或 --out2
文件前缀:-d 或 --split_prefix_digits
举例:--split_prefix_digits=4, --out1=out.fq, --split=3, then the output files will be 0001.out.fq,0002.out.fq,0003.out.fq
-s 或 --split,根据文件数分
-S 或 --split_by_lines,根据文件行数分

13. overrepresented sequence analysis

-P or --overrepresentation_sampling
举例:if you set -P 100, only 1/100 reads will be used for counting, and if you set -P 1, all reads will be used but it will be extremely slow.

14. 融合双末端reads

15. reads去重

默认会计算重复率,--dont_eval_duplication可关闭,原理是哈希,--dup_calc_accuracy可提高精确度,等级在1-6,越高越慢。
-D 或 --dedup可去重,设置这个后,--dont_eval_duplication无效,dup_calc_accuracy默认是3级。

16. 其他

-w:线程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容