三代测序 - 数据质控 | fastplong

提起二代测序数据质控软件 fastp,相信大家一定不会陌生。作为一款质量控制软件,其从查看碱基质量过滤修剪去接头等全方位的预处理服务,加之高速、易用的特点,在生物信息学领域赢得了广泛的好评。

对于三代测序长度长数据来说,你是否和我一样在纠结究竟该使用哪一款软件对原始下机数据进行质量控制和过滤修剪呢?对于 PacBio平台 的下机数据,因其通过CSS(circular consensus sequencing)测序模式和算法获得的HiFi序列,平均质量一般都比较高(Q>20),一般来说问题不大。在拿到测序质量未知的数据时,大家可以使用 LongQCLongReadSum 等软件对数据质量进行查看统计,使用 chopper 对序列进行过滤修剪。对于 ONT 及其类似原理的平台(如华大序风CycloneSEQ-WT02),其下机数据质量相对较低,大家可以使用 nanopack 套件 (如NanoPlot,nanocomp,chopper等)对数据质量进行查看以及进行过滤修剪。

当我正在纠结这么多质控软件的选择和想像 fastp 一样一步解决数据质量查看和序列过滤修剪时,fastplong 来了!

一、软件介绍

fastplong 是一款长读长测序数据(如纳米孔测序、PacBio 测序、Cyclone 测序等)的超快速预处理与质量控制软件。由于其和 fastp 是孪生兄弟,所以用法和参数也几乎一致。第一个版本(v0.1.0)最早发布于2024年10月11号,现在的最新版本为v0.2.2 (2024.12.03)。

Github: https://github.com/OpenGene/fastp

二、软件安装

1. conda或mamba

# conda安装
$ conda install -c bioconda fastplong

# mamba安装
$ mamba install -c bioconda fastplong

2. 二进制文件的安装

  • 如果因为网络问题在服务器上无法直接下载,可以下载到本地然后上传服务器。
  • 下载后也可以将软件的可执行文件路径添加到系统的 PATH 环境变量,方便后续调用。
#下载最新版本
$ wget http://opengene.org/fastplong/fastplong
$ chmod a+x ./fastplong  #所有用户都可以执行该文件,a 表示“all”,+x 表示“添加执行权限”.

# 或下载特定版本, 如fastplong v0.2.2
$ wget http://opengene.org/fastplong/fastplong.0.2.2
$ mv fastplong.0.2.2 fastplong   #修改软件名称
$ chmod a+x ./fastplong

三、软件使用

1. 快速使用

输入和输出文件都可以是 gzip 压缩格式。默认情况下,HTML 报告会保存为 fastplong.html(可以通过 -h 选项指定),JSON 报告会保存为fastplong.json(可以通过 -j 选项指定)

$ fastplong -i in.fq -o out.fq

2. 输入输出文件

使用 -i--in 指定输入文件,使用 -o--out 指定输出文件。

  • 如果不指定输出文件名,fastplong 将不会写入输出文件,但仍然会对过滤前后的数据进行质量控制。
  • 如果输出文件名以 .gz 结尾,输出文件将被 gzip 压缩。

3. 过滤功能

(1)质量过滤
默认启用质量过滤,但可以通过 -Q--disable_quality_filtering 禁用。目前支持通过限制 N 碱基数量(-n, --n_base_limit)和不合格碱基的百分比来进行过滤。

要按不合格碱基的百分比过滤序列,需要提供以下两个选项:

  • -q, --qualified_quality_phred 定义一个碱基为合格的质量值。默认值为 15,表示 Phred 质量值 ≥ Q15 的碱基为合格。
  • -u, --unqualified_percent_limit 允许的不合格碱基的百分比(0~100)。默认值为 40%,表示允许 40% 的碱基不合格。

你也可以通过平均质量值过滤读段:

  • -m, --mean_qual 如果一条序列的平均质量值低于此值,则该序列将被丢弃。默认值为 0,表示无要求(整数 [0])。

(2)长度过滤
默认启用长度过滤,但可以通过 -L--disable_length_filtering 禁用。最小长度要求通过 -l--length_required 指定。你可以通过 --length_limit 指定最大长度限制,以丢弃超过该长度的序列。默认值为 0,表示无限制。

4. 全局修剪

fastplong 支持全局修剪,即在所有序列的前端或末端修剪碱基。例如,最后一个循环通常质量较低,可以通过 -t 1--trim_tail=1 选项将其丢弃。

  • 使用-f, --trim_front-t, --trim_tail设置序列前端和末端的修剪数量。

5. 实际使用示例

  • 原始下机数据放在1_raw_fastq文件夹下。
  • 建立2_fastplong文件夹,fastplong的结果文件放在2_fastplong下。
  • 参数根据质控结果和实际情况进行调整就行。
$ fastplong -i 1_raw_fastq/sample.fastq.gz -o 2_fastplong/sample.fastq.gz \
  -h 2_fastplong/sample.report.html \
  -j 2_fastplong/sample.report.json \
  -m 20 -l 100 -w 12 -A

 #-m 20 按照reads平均碱基质量过滤
 #-l 100 过滤掉小于100bp的碱基
 #-w 12 运行cpu线程
 #-A 不去接头adapter

6.所有选项

用法:fastplong -i <输入文件> -o <输出文件> [选项...]
fastplong:用于长读长的超快速 FASTQ 预处理和质量控制工具
版本 0.0.1
用法:./fastplong [选项] ...
选项:
  -i, --in                           输入文件名(字符串 [=])
  -o, --out                          输出文件名(字符串 [=])
      --failed_out                   指定文件名,保存未通过过滤的序列。(字符串 [=])
  -z, --compression                  gzip 输出的压缩级别(1 ~ 9)。1 最快,9 最小,默认值为 4。(整数 [=4])
      --stdin                        从 STDIN 输入。
      --stdout                       将通过过滤的序列流式输出到 STDOUT。此选项会导致配对端输出的 FASTQ 文件交错。默认禁用。
      --reads_to_process             指定要处理的读段数量。默认值 0 表示处理所有序列。(整数 [=0])
      --dont_overwrite               不覆盖现有文件。默认允许覆盖。
  -V, --verbose                      输出详细日志信息(例如,每处理 1M 条读段时输出一次)。
  -A, --disable_adapter_trimming     默认启用接头序列修剪。如果指定此选项,则禁用接头序列修剪。
  -s, --start_adapter                读段起始端(5')的接头序列。(字符串 [=auto])
  -e, --end_adapter                  读段末端(3')的接头序列。(字符串 [=auto])
  -a, --adapter_fasta                指定一个 FASTA 文件,用于修剪该文件中列出的所有接头序列。(字符串 [=])
  -d, --distance_threshold           序列-接头序列距离/接头序列长度的阈值(0.0 ~ 1.0),值越大表示检测到的接头序列越多(浮点数 [=0.25])
      --trimming_extension           检测到接头序列时,扩展修剪范围以进行更干净的修剪,默认值 10 表示额外修剪 10 个碱基。(整数 [=10])
  -f, --trim_front                   序列前端修剪的碱基数量,默认值为 0。(整数 [=0])
  -t, --trim_tail                    序列末端修剪的碱基数量,默认值为 0。(整数 [=0])
  -x, --trim_poly_x                  启用 3' 端的 polyX 修剪。
      --poly_x_min_len               检测序列尾部 polyX 的最小长度。默认值为 10。(整数 [=10])
  -5, --cut_front                    从 5' 端向 3' 端移动滑动窗口,如果窗口的平均质量值低于阈值,则丢弃窗口中的碱基,否则停止。
  -3, --cut_tail                     从 3' 端向 5' 端移动滑动窗口,如果窗口的平均质量值低于阈值,则丢弃窗口中的碱基,否则停止。
  -W, --cut_window_size              由 cut_front、cut_tail 或 cut_sliding 共享的窗口大小选项。范围:1~1000,默认值:4(整数 [=4])
  -M, --cut_mean_quality             由 cut_front、cut_tail 或 cut_sliding 共享的平均质量要求选项。范围:1~36,默认值:20(Q20)(整数 [=20])
      --cut_front_window_size        cut_front 的窗口大小选项,默认值为 cut_window_size(整数 [=4])
      --cut_front_mean_quality       cut_front 的平均质量要求选项,默认值为 cut_mean_quality(整数 [=20])
      --cut_tail_window_size         cut_tail 的窗口大小选项,默认值为 cut_window_size(整数 [=4])
      --cut_tail_mean_quality        cut_tail 的平均质量要求选项,默认值为 cut_mean_quality(整数 [=20])
  -Q, --disable_quality_filtering    默认启用质量过滤。如果指定此选项,则禁用质量过滤。
  -q, --qualified_quality_phred      定义一个碱基为合格的质量值。默认值 15 表示 Phred 质量值 ≥ Q15 的碱基为合格。(整数 [=15])
  -u, --unqualified_percent_limit    允许的不合格碱基的百分比(0~100)。默认值 40 表示允许 40% 的碱基不合格。(整数 [=40])
  -n, --n_base_limit                 如果一个序列的 N 碱基数量 > n_base_limit,则丢弃该序列。默认值为 5。(整数 [=5])
  -m, --mean_qual                    如果一个序列的平均质量值 < mean_qual,则丢弃该序列。默认值 0 表示无要求。(整数 [=0])
  -L, --disable_length_filtering     默认启用长度过滤。如果指定此选项,则禁用长度过滤。
  -l, --length_required              长度小于 length_required 的序列将被丢弃,默认值为 15。(整数 [=15])
      --length_limit                 长度大于 length_limit 的序列将被丢弃,默认值 0 表示无限制。(整数 [=0])
  -y, --low_complexity_filter        启用低复杂度过滤。复杂度定义为与下一个碱基不同的碱基的百分比(base[i] != base[i+1])。
  -Y, --complexity_threshold         低复杂度过滤的阈值(0~100)。默认值为 3

参考文献

1.Shifu Chen. 2023. Ultrafast one-pass FASTQ data preprocessing, quality control, and deduplication using fastp. iMeta.

2.Shifu Chen, Yanqing Zhou, Yaru Chen, Jia Gu. 2018. fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics.

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

推荐阅读更多精彩内容