病原体基因溯源数据中心,给您提供权威的行业数据
分类
bioinfo
试剂盒
不适用
样本类型
FASTQ格式测序数据文件(Illumina/MGI平台,单端或双端)
预计时间
~5-15 min(~10 Gb双端数据,4线程)
bioinfo

fastp一体化质控:病毒测序数据预处理的高效替代方案

方法定义:fastp 是一个用 C++ 编写的超高速 FASTQ 数据一体化预处理工具,单次扫描即可完成质量评估、接头切除、质量过滤、碱基校正、polyG 修剪等多项操作。速度比 Trimmomatic 快 2~5 倍,同时生成处理前后并列对比的 HTML 质控报告。适用于 Illumina 和 MGI 平台的病毒扩增子测序、宏基因组测序数据的预处理。在 SARS-CoV-2 基因组监测中已被 nf-core/viralrecon 和 ViReflow 等主流流程采纳为默认质控模块。

原理

fastp 解决的是测序数据预处理中一个很现实的痛点。传统流程里,FastQC 做质控,Cutadapt 切接头,Trimmomatic 做质量修剪——三个工具、三次读盘、三份报告。fastp 把这些操作合并到一次数据扫描里完成。C++ 底层、多线程并行,处理速度比 Trimmomatic 快 2~5 倍,同时输出一份处理前后并列对比的 HTML 报告。没别的。

在病毒溯源工作中,无论是临床样本的扩增子测序(比如 ARTIC 方案产生的 SARS-CoV-2 数据),还是宏基因组鸟枪法筛查新发病原体,第一步都是把原始 FASTQ 里的接头污染、低质量碱基、polyG 尾清理干净。数据不干净,下游的比对、组装、变异检测全都会被拖累。fastp 在这个定位上是一个预处理一站式方案——质控和数据清洗合二为一,省时间、省 IO、少出错。在 SARS-CoV-2 基因组监测与溯源案例中,fastp 已被 nf-core/viralrecon、ViReflow 等主流病毒分析流程采纳为默认预处理模块。

操作步骤

1. 安装 fastp

最省事的方法是通过 Bioconda 安装,也可以用预编译二进制:

conda install -c bioconda fastp
wget http://opengene.org/fastp/fastp
chmod a+x ./fastp

2. 运行基础质控与过滤

双端测序数据的最简命令——只指定输入输出,其余全部用默认参数。fastp 会自动检测并切除接头、过滤低质量序列、生成 HTML 报告。

fastp -i sample_R1.fq.gz -I sample_R2.fq.gz \
      -o clean_R1.fq.gz -O clean_R2.fq.gz \
      -h fastp_report.html -j fastp_report.json

默认参数已经覆盖了:接头自动检测与切除、polyG 尾修剪(针对 NovaSeq/NextSeq)、碱基质量过滤(Q15 为合格线,允许最多 40% 不合格碱基)、最短读长过滤(默认 15 bp)、N 碱基数量过滤(超过 5 个就丢弃)。处理完自动输出 fastp.html 和 fastp.json 两份报告。

3. 按需叠加高级参数

病毒测序数据常见需要额外参数的场景:

fastp -i in_R1.fq.gz -I in_R2.fq.gz \
      -o out_R1.fq.gz -O out_R2.fq.gz \
      --cut_right --cut_window_size 4 --cut_mean_quality 20 \
      --length_required 50 \
      --correction \
      --detect_adapter_for_pe \
      -h report.html

--cut_right 做滑动窗口质量修剪,从 5' 向 3' 扫描,遇到窗口平均质量低于 Q20 就把该窗口及右侧全部切掉(这是替代 Trimmomatic SLIDINGWINDOW 的关键功能)。--length_required 50 丢弃修剪后短于 50 bp 的 reads,避免过短序列干扰下游比对。--correction 对双端 reads 重叠区域做碱基校正:一端高质量、另一端低质量时,用高质量碱基覆盖低质量碱基。--detect_adapter_for_pe 为双端数据额外启用接头序列检测,比纯 overlap 分析多找到 0.1%~0.5% 的残留接头。UMI 标记的病毒测序文库用 --umi --umi_loc=read1 --umi_len=8 把 UMI 序列提取到 read ID 中供后续去重使用。

4. 解读 HTML 报告

fastp HTML 报告的核心价值在于前后对比:同一页面并列展示过滤前后的碱基质量曲线、GC 含量分布、序列长度分布、接头含量、重复率。重点关注几个指标:碱基质量曲线过滤后应整体抬升,尾部质量塌陷被切除。GC 含量过滤后应恢复正常钟形曲线(原始数据 GC 比例异常偏离理论值往往是接头或外源污染的信号)。Adapter Content 确认过滤后趋近于零。Duplication Rate 方面,病毒扩增子数据通常重复率偏高属正常现象,但宏基因组样本中出现异常高重复率提示可能存在 PCR 过度扩增。

参数选择建议

参数推荐值说明
-q / --qualified_quality_phred15合格碱基的最低 Phred 质量值,默认即可
-u / --unqualified_percent_limit40允许的不合格碱基百分比上限
-n / --n_base_limit5单条 read 中 N 碱基最大数量
-l / --length_required50(病毒分析)建议设 50 bp 以上,避免短序列错误比对
-W / --cut_window_size4滑动窗口大小,默认 4 bp
-M / --cut_mean_quality20(Q20)滑动窗口平均质量阈值
--overlap_len_require30双端重叠检测最小长度
-c / --correction视情况启用双端数据推荐开启碱基校正
-D / --dedup宏基因组可开PCR 去重,扩增子数据慎用

常见问题

fastp 和 Trimmomatic + FastQC 组合怎么选?

追求速度和省事选 fastp。一次扫描、一份报告、速度是 Trimmomatic 的 2~5 倍。需要极度精细控制每个步骤参数(比如自定义 score 体系)的场景,Trimmomatic 更灵活。对大多数病毒测序项目,fastp 默认参数已经足够好。就这样。

为什么 fastp 默认参数就能满足大部分需求,还需要调参吗?

默认值本身就是针对 Illumina 短读长数据优化的通用方案。需要调参的典型场景:病毒扩增子数据需要提高 --length_required 来过滤引物二聚体干扰;宏基因组去宿主后读长变短需要放宽长度限制;处理 MGI 平台数据时加 --fix_mgi_id 修正序列 ID 格式。

病毒扩增子测序数据,fastp 要不要开 dedup?

一般不开。扩增子文库本质上是 PCR 产物,reads 天然高度重复。开了 dedup(-D)会把真实的病毒基因组覆盖深度削掉,反而降低变异检测灵敏度。宏基因组鸟枪法数据没有这个顾虑,开 dedup 有助于去除 PCR 重复、提升组装质量。

参考文献

  1. Chen S, Zhou Y, Chen Y, Gu J. fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics. 2018;34(17):i884-i890. DOI: 10.1093/bioinformatics/bty560
  2. Chen S. Ultrafast one-pass FASTQ data preprocessing, quality control, and deduplication using fastp. iMeta. 2023;2(2):e107. DOI: 10.1002/imt2.107