测序及质控单细胞原始数据处理生物信息学

测序数据质控和预处理之fastp

2019-10-05  本文已影响0人  吴十三和小可爱的札记

1. 引言

下机的FASTQ数据通常需要进行质控和预处理,以保证下游分析输的准确性。fastp软件仅扫描数据文件一次,就可以完成FASTQC + cutadapt + Trimmomatic 的功能;而且它使用C++开发,利用高效算法,并且支持多线程,加快了处理速度。

2. 特点

3. 安装fastp

Bioconda 安装

# note: the fastp version in bioconda may be not the latest
conda install -c bioconda fastp

Linux 系统安装

# this binary was compiled on CentOS, and tested on CentOS/Ubuntu
wget http://opengene.org/fastp/fastp
chmod a+x ./fastp

源下载安装

# get source (you can also use browser to download from master or releases)
git clone https://github.com/OpenGene/fastp.git
# build
cd fastp
make
# Install
sudo make install

注:如编译时遇到(undefined reference to gzbuffer),需要更新zlib

4. 输入和输出

  1. fastp支持双端(PE)数据和单端(SE)数据的输入和输出

    • 对于SE数据,使用指令-i 或 --in1输入,-o 或--out1输出。

    • 对于PE数据,使用指令-I 或 --in2输入,-O或--out2输出。

    • 如果不指定输出文件名,而且输入名以.gz结尾,QC会执行完并压缩。

  2. STDIN输入

    • --stdin 指明使用STDIN输入。

    • --interleaved_in 指定interleaved paired-end stream.

  3. STDOUT输出 - fastp将结果传到STDOUT,以便传递到bwabowtie2

    • --stdout

对于PE数据,输出将与FASTQ交错,因此会有 record1-R1 -> record1-R2 -> record2-R1 -> record2-R2 -> record3-R1 -> record3-R2 ...记录。

  1. store the unpaired reads for PE data

  2. store the reads that fail the filters

  3. process only part of the data

  4. do not overwrite exiting files

  5. split the output to multiple files for parallel processing

  6. merge PE reads

5. 功能介绍

  1. 质量过滤 - 质量过滤功能默认开启

    • -Q 或 disable_quality_filtering关闭。

    • -n 或 --n_base_limit限制碱基N的数量

    • -q 或 --qualified_quality_phred指定合格的质量值。(默认为 -q 15,即质量值大于等于Q15的即为合格)

    • -u 或 --unqualified_percent_limit指定不合格碱基的最高百分比。(默认40%)

    • -e 或--average_qual通过质量百分比过滤,如果质量值低于平均值,就被丢弃。

  2. 长度过滤 - 长度过滤默认开启

    • -L 或 --disable_length_filtering关闭。

    • -l 或 --length_required指定所需最小长度。(-l 30表示低于30个碱基的read会被丢弃)

    • --length_limit指定最长read长度。(mall RNA sequencing可用)

结合起来就可以实现常用的discard模式,以保证所有输出的序列都一样长。

  1. 低复杂度过滤 - 默认关闭

    • -y 或 --low_complexity_filter开启。

复杂度由的定义为reads中与下一个碱基不同的碱基的百分比。

# a 51-bp sequence, with 3 bases that is different from its next base

seq ='AAAATTTTTTTTTTTTTTTTTTTTTGGGGGGGGGGGGGGGGGGGGGGCCCC'

complexity = 3/(51-1) = 6%

在fastp的报告中,第一个Summary表格很清楚地显示了过滤的统计信息。

  1. 接头处理 - 默认开启,自动识别
>Illumina TruSeq Adapter Read 1

AGATCGGAAGAGCACACGTCTGAACTCCAGTCA

>Illumina TruSeq Adapter Read 2

AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGT

>polyA

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA

修剪顺序:--adapter_sequence | --adapter_sequence_r2 | --adapter_fasta

修剪的接头序列可以在fastp报告中找到.

  1. 根据质量修剪每条read - 有三种选择,可以全选

*all these three operations will interfere deduplication for SE data, and --cut_front or --cut_right may also interfere deduplication for PE data. *

If --cut_right is enabled, then there is no need to enable --cut_tail, since the former is more aggressive. If --cut_right is enabled together with --cut_front, --cut_front will be performed first before --cut_right to avoid dropping whole reads due to the low quality starting bases.

cut_front will interfere deduplication for both PE/SE data, and --cut_tail will interfere deduplication for SE data.

  1. PE数据的碱基矫正 - 默认关闭

通过overlap检索,矫正后碱基质量和对照同等。

-c or --correction 开启. 可调参数overlap_len_require (default 30), overlap_diff_limit (default 5) and overlap_diff_limit_percent (default 20%).

  1. 全局裁剪 - 统一剪裁reads的头部和尾部

用于统一去掉低质量cycle。如:Illumina最后一个cycle通常质量是非常低,通过-t 1 or --trim_tail1=1去掉。

For read1 or SE data, the front/tail trimming settings are given with -f, --trim_front1 and -t, --trim_tail1.

For read2 of PE data, the front/tail trimming settings are given with -F, --trim_front2 and -T, --trim_tail2. (如read2无指定,read2裁剪参数 = read1。)

-b或 --max_len1指定read1长度, -B或 --max_len2指定read2长度。(如read2无指定,read2裁剪参数 = read1。)

1, UMI preprocessing (--umi)

2, global trimming at front (--trim_front)

3, global trimming at tail (--trim_tail)

4, quality pruning at 5' (--cut_front)

5, quality pruning by sliding window (--cut_right)

6, quality pruning at 3' (--cut_tail)

7, trim polyG (--trim_poly_g, enabled by default for NovaSeq/NextSeq data)

8, trim adapter by overlap analysis (enabled by default for PE data)

9, trim adapter by adapter sequence (--adapter_sequence, --adapter_sequence_r2. For PE data, this step is skipped if last step succeeded)

10, trim polyX (--trim_poly_x)

11, trim to max length (---max_len)

  1. polyG裁剪 - 默认对Illumina NextSeq/NovaSeq data开启

对于两色发光法的Illumina设备(NextSeq /NovaSeq),在没有光信号情况下base calling的结果会返回G,所以在序列的尾端可能会出现较多的polyG,需要被去除。

fastp会通过机器ID自动化地识别NextSeq / NovaSeq的数据,然后进行polyG识别和裁剪。

-g or --trim_poly_g 向其他数据开启;-G or --disable_trim_poly_g关闭。

<poly_g_min_len>设定最小长度,默认值10。

  1. polyX尾裁剪 - 默认关闭

-x or --polyX; <poly_x_min_len>, 默认值10。

同时开启时的裁剪顺序:polyG | polyA。

  1. 分子标签(UMI)处理 - 消除重复和纠正错误

-U 或 -umi 开启。

--umi_loc指定UMI所在的位置,可以是(index1、 index2、 read1、 read2、 per_index、 per_read )中的一种;分别表示UMI是在index位置上,还是在插入片段中。如果指定了是在插入序列中,还需要使用 --umi_len 参数来指定UMI所占的碱基长度。

#初始序列

@NS500713:64:HFKJJBGXY:1:11101:1675:1101 1:N:0:TATAGCCT+GACCCCCA

AAAAAAAAGCTACTTGGAGTACCAATAATAAAGTGAGCCCACCTTCCTGGTACCCAGACATTTCAGGAGGTCGGGAAA

+

6AAAAAEEEEE/E/EA/E/AEA6EE//AEE66/AAE//EEE/E//E/AA/EEE/A/AEE/EEA//EEEEEEEE6EEAA

​

fastp -i R1.fq -o out.R1.fq -U --umi_loc=read1 --umi_len=8

​

@NS500713:64:HFKJJBGXY:1:11101:1675:1101:AAAAAAAA 1:N:0:TATAGCCT+GACCCCCA

GCTACTTGGAGTACCAATAATAAAGTGAGCCCACCTTCCTGGTACCCAGACATTTCAGGAGGTCGGGAAA

+

EEE/E/EA/E/AEA6EE//AEE66/AAE//EEE/E//E/AA/EEE/A/AEE/EEA//EEEEEEEE6EEAA
  1. 输出拆分 - 两种模式

-s or --split指定file数目。

-S or --split_by_lines指定file中的行数。

  1. **过表达序列(Overrepresented sequence analysis) **- 默认关闭

-p or --overrepresentation_analysis开启。( count 长度为10bp, 20bp, 40bp, 100bp or (cycles - 2 ), 默认值20兼顾速度与精确性)

在fastp的报告中,不仅提供overrepresented sequence的序列个数和占比,还提供了其在测序cycles中的分布情况。

  1. PE数据reads拼接

对于PE数据,fastp通过-m/--merge选项实现拼接模式。

cheatsheet

上一篇 下一篇

猜你喜欢

热点阅读