- 这一篇只是fastp的官方manual,后面再放实操。
1. 主要功能
- 质量检测
- 排除质量较差的reads
- 剪掉质量低的碱基片段
- reads首尾剪切
- 校正低质量碱基
- polyG、polyX剪切
- UMI转化为序列名
- 将结果输出为多个文件,方便后续多线程分析
- 支持STDIN/STDOUT的管道操作
- reads去重
- 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
贴心给了结果展示样例:
- HTML report: http://opengene.org/fastp/fastp.html
- JSON report: http://opengene.org/fastp/fastp.json
3.下载安装
- 可以用conda
conda install -c bioconda fastp
- 直接下二进制文件
#最新版本
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
- 安装包自己安装
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:线程