fastp安装及使用-fastp v0.23.4(bioinfomatics tools-002)

01 测序数据发展背景

基因测序技术已经经历了近半个世纪的发展。在1975年,Sanger首次引入DNA测序方法的概念,随后发表了一种通过DNA聚合酶催化DNA链的合成的测序方法。在第一台自动荧光DNA测序设备中,成对的测序方法被首次使用,并且完成了对次黄嘌呤-鸟嘌呤磷酸核苷转移酶(HPRT)基因的完整基因座的测序。1996年,ABI推出了第一台利用ABI Prism 310板状凝胶电泳的商业DNA测序仪。经过人类基因组计划联盟13年的努力,基于Sanger法的DNA测序仪于2003年成功地用于第一个人类基因组的测序,成本约为27亿美元。在接下来的几年里,第一个噬菌体基因组(长度为5386个碱基)和多达30亿个碱基的人类基因组的测序的完成标志着测序技术达到了另一个里程碑。

二代测序技术,也称为下一代测序(Next-Generation Sequencing, NGS)技术,可以在一次测序中产生大约五亿到数十亿个碱基序列,因此也被称为高通量测序技术。这些技术包括罗氏公司的454技术、Illumina公司的HiSeq、Solexa技术以及ABI公司的SOLiD技术。下一代测序技术的发展在降低测序成本的同时,还大大提高了测序速度,使得以前需要多年时间完成的测序工作,现在只需要一周便可完成。2008年,美国国家人类基因组研究中心(NHGRI)启动了一系列项目的资助,作为其基因组测序技术计划的一部分,旨在实现以1000美元或更低的价格进行人类全基因组测序。2010年12月,NHGRI联盟公布了最全面的人类遗传变异图谱,使用下一代DNA测序技术,在三个试点研究中系统地描述了4个群体的79个个体和7个群体的697个个体的遗传差异,即所谓的“1000基因组计划”。“1000基因组计划”为研究人类遗传变异奠定了重要基础,旨在建立一个全面的、可公开使用的遗传变异图谱,最终将收集来自全球多个人群的2500人的序列,并作为未来遗传学研究的支撑。

1.1 测序数据解析与质量控制

下一代测序技术产生大量的测序数据,可以用于不同的生物学处理流程如基因组、转录组分析等。但是,不同的流程都需要通过质量控制(Quality Control, QC)以获得高质量、纯净的测序数据,从而使后续处理流程得到的结果更加可靠。对FASTQ格式的原始序列数据进行质量控制和预处理是获得高置信度结果的必要条件。质量控制产生文本或图形报告,以确定来自测序仪或者在文库制备过程产生的问题,而预处理步骤则包括修剪测序辅助序列(通常是测序仪特定的PCR引物和接头序列)并过滤掉不合格的测序数据,以产生高质量的测序序列用于后续分析。

1.2 软件及其算法原理

专用的质量控制工具,如FastQCReadQC(NGS-Bits中的一个模块),致力于检测发现序列数据中的潜在问题。FastQC基于HTML在生成的报告中绘制图形和表格,详尽而有效地说明了各种QC指标,其中包括测序序列(read)数和碱基数、序列长度、碱基组成分布、GC含量分布和质量分数曲线统计。此外,FastQC也可以自动检查质量分数编码方案,并可由用户自定义警告和错误的阈值。ReadQC的报告相对简单,由碱基数、测序片段长度、Q20、Q30和两个qcML格式的图组成。在使用人类全外显子测序数据的测试中,由于采用下采样策略,FastQC比ReadQC具有更高的运行效率。在实际使用过程中,科研人员发现,通过统计待研究样本中每个样本的报告来识别测序质量问题可能不方便,MultiQC解决了这个问题,它创建了一个单独的报告文件,可以灵活地整合来自不同QC工具和样本集的质量报告,从而可以快速有效地识别大规模样本研究的整体趋势和偏差。

除了质量控制工具之外,预处理工具通过修剪测序接头、过滤低质量序列、纠正碱基错误等操作来处理测序文件。测序接头检测和修剪是这些操作中最重要的一环。测序接头是用于连接到目标DNA片段末端的短寡核苷酸,从而与引物结合起来进行扩增。当DNA片段短于指定的测序长度时,接头序列将被读取和测序,称为接头污染。常见的预处理软件包括FASTX-Toolkit、Cutadapt、TrimGalore、Trimmomatic、Skewer、SOAPnuke和Ktrim。这些软件根据一系列配置文件或用户指定的接头序列来识别和去除接头。双端文件的接头修剪工具可以通过使用重叠分析算法,利用成对的正向和反向重叠片段检测出长度不确定的接头序列,并且检测精度更高。与基于序列匹配的算法相比,基于重叠分析的算法具有明显的优势:不需要指定接头序列,对于分析来自多个不同技术平台的大规模癌症基因组学数据特别有用;此外,还能检测和去除较短的接头序列。除了接头序列之外,预处理工具还将低质量的测序序列从结果文件中删除,以确保测序结果的可靠性。目前有两种碱基质量编码方案:Phred33与Phred64。Phred33为目前主流编码方案,被Sanger/Illumina 1.9+测序仪使用,而Phred64在Illumina处理流程CASAVA 1.3之前使用。FastQC会自动检测并报告测序仪的版本,从而推断测序数据使用的碱基质量编码方案。大多数原始序列数据预处理工具都支持这两种质量编码方案,并能从Phred64转换到Phred33,但FASTX-Toolkit只能处理Phred64格式的文件。Trimmomatic支持从Phred33转换到Phred64,并可以在用户没有指定编码方案的情况下自动检查编码方案。

成对末端数据处理流程的 fastp。该工作流可以简单分为解压器、预处理器和压缩器三部分。输入的成对FASTQ文件被单独解压成读取包,每个包包含固定的读取记录。每个工作线程轮流挑选奇数或偶数的读取包,处理读取数据,进行一些统计,并按相同的顺序将清洁数据输出到压缩器。

1.3 一体化的工具--fastp

fastp和AfterQC作为质量控制与预处理一体化工具,可以在预处理后产生交互式报告,使用户能够直接检查测序质量。两者都使用重叠分析算法自动检测和删除接头。然而,AfterQC的运行速度相对较慢,在处理大的FASTQ文件时非常耗时。fastp具有优异的多线程性能,适用于大规模测序数据分析中的自动绘图和数据处理操作。

 

部分 fastp 交互式统计图表。(A) 每周期质量曲线,(B) 每周期碱基含量曲线。(C) 评估插入大小的分布,由于配对读取不重叠,留有少部分读取未知,这通常是因为片段太长。(D) 过度表达序列的统计,包括其每周期分布。

综上所述,尽管纯质控工具在报告质量指标方面更精细,但一体化工具在功能方面优于单独的质控、预处理工具,并通过整合功能,可以解决更多问题。上述预处理工具均需处理FASTQ文件格式的测序文件,为更有效地处理测序文件,用于生物序列文件的读取、解析工作。

02 参考
https://github.com/OpenGene/fastp     #官网地址
03 安装
https://github.com/OpenGene/fastp/archive/refs/tags/v0.23.4.tar.gz   #官网下载地址
wget -c https://github.com/OpenGene/fastp/archive/refs/tags/v0.23.4.tar.gz   #下载
tar -zxvf v0.23.4.tar.gz   #解压缩即可得到最终二进制软件
chmod 744 ./fastp     #可选步骤,一般权限够用,默认744
chmod a+x ./fastp     #可选步骤,作用同上
04 使用
./fastp -h
选项需要值:--html
用法:./fastp [选项] ...
选项:
  -i, --in1                            read1输入文件名(字符串[=])
  -o, --out1                           read1输出文件名(字符串[=])
  -I, --in2                            read2输入文件名(字符串[=])
  -O, --out2                           read2输出文件名(字符串[=])
      --unpaired1                      对于PE输入,如果read1通过QC但read2没有,它将被写入unpaired1。默认是丢弃它。(字符串[=])
      --unpaired2                      对于PE输入,如果read2通过QC但read1没有,它将被写入unpaired2。如果--unpaired2与--unpaired1相同(默认模式),两个未配对的读取将被写入这个相同的文件。(字符串[=])
      --overlapped_out                 对于每对读取对,如果重叠区域没有任何错配的碱基,输出重叠区域。(字符串[=])
      --failed_out                     指定存储无法通过过滤器的读取的文件。(字符串[=])
  -m, --merge                          对于成对端输入,如果它们重叠,则将每对读取合并为单个读取。合并的读取将被写入--merged_out指定的文件,未合并的读取将被写入--out1和--out2指定的文件。合并模式默认禁用。
      --merged_out                     在合并模式下,指定存储合并输出的文件名,或指定--stdout以流式传输合并输出(字符串[=])
      --include_unmerged               在合并模式下,将未合并或未配对的读取写入--merge指定的文件。默认禁用。
  -6, --phred64                        表示输入使用phred64评分(它将被转换为phred33,所以输出仍将是phred33)
  -z, --compression                    gzip输出的压缩级别(1~9)。1是最快的,9是最小的,默认是4。(整数[=4])
      --stdin                          从STDIN输入。如果STDIN是交错配对端FASTQ,请同时添加--interleaved_in。
      --stdout                         将通过过滤器的读取流式传输到STDOUT。这个选项将导致成对端输出的交错FASTQ输出。默认禁用。
      --interleaved_in                 表示<in1>是一个交错的FASTQ,包含了read1和read2。默认禁用。
      --reads_to_process               指定要处理的读取/对数。默认0表示处理所有读取。(整数[=0])
      --dont_overwrite                 不覆盖现有文件。默认允许覆写。
      --fix_mgi_id                     MGI FASTQ ID格式与许多BAM操作工具不兼容,启用此选项以修复它。
  -V, --verbose                        输出详细日志信息(即每处理1M读取时)。
  -A, --disable_adapter_trimming       默认启用接头修剪。如果指定了此选项,则禁用接头修剪
  -a, --adapter_sequence               read1的接头。对于SE数据,如果未指定,则接头将被自动检测。对于PE数据,如果发现R1/R2不重叠,将使用此选项。(字符串[=自动])
      --adapter_sequence_r2            read2的接头(仅PE数据)。如果发现R1/R2不重叠,将使用此选项。如果未指定,它将与<adapter_sequence>相同(字符串[=自动])
      --adapter_fasta                  指定一个FASTA文件,通过该FASTA文件中的所有序列修剪read1和read2(如果是PE)(字符串[=])
      --detect_adapter_for_pe          默认情况下,自动检测接头是针对SE数据输入的,打开此选项以启用它对PE数据的适用。
  -f, --trim_front1                    修剪read1前端的碱基数,默认是0(整数[=0])
  -t, --trim_tail1                     修剪read1尾端的碱基数,默认是0(整数[=0])
  -b, --max_len1                       如果read1长于max_len1,则在其尾部修剪read1,使其与max_len1一样长。默认0表示没有限制(整数[=0])
  -F, --trim_front2                    修剪read2前端的碱基数。如果未指定,它将遵循read1的设置(整数[=0])
  -T, --trim_tail2                     修剪read2尾端的碱基数。如果未指定,它将遵循read1的设置(整数[=0])
  -B, --max_len2                       如果read2长于max_len2,则在其尾部修剪read2,使其与max_len2一样长。默认0表示没有限制。如果未指定,它将遵循read1的设置(整数[=0])
  -D, --dedup                          启用去重复功能以丢弃重复的读取/对
      --dup_calc_accuracy              计算重复的准确度级别(1~6),更高级别使用更多内存(1G, 2G, 4G, 8G, 16G, 24G)。默认1表示无去重模式,3表示去重模式。(整数[=0])
      --dont_eval_duplication          不评估重复率以节省时间和使用更少的内存。
  -g, --trim_poly_g                    强制polyG尾部修剪,默认情况下自动启用Illumina NextSeq/NovaSeq数据的修剪
      --poly_g_min_len                 检测读取尾部polyG的最小长度。默认10。(整数[=10])
  -G, --disable_trim_poly_g            禁用polyG尾部修剪,默认情况下自动启用Illumina NextSeq/NovaSeq数据的修剪
  -x, --trim_poly_x                    启用3'端polyX修剪。
      --poly_x_min_len                 检测读取尾部polyX的最小长度。默认10。(整数[=10])
  -5, --cut_front                      从前端(5')到尾部移动一个滑动窗口,如果窗口内的平均质量<threshold,则丢弃窗口内的碱基,否则停止。
  -3, --cut_tail                       从尾部(3')到前端移动一个滑动窗口,如果窗口内的平均质量<threshold,则丢弃窗口内的碱基,否则停止。
  -r, --cut_right                      从前端到尾部移动一个滑动窗口,如果遇到一个窗口的平均质量<threshold,则丢弃窗口内的碱基和右侧部分,然后停止。
  -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])
      --cut_right_window_size          cut_right的窗口大小选项,默认为cut_window_size(如果未指定)(整数[=4])
      --cut_right_mean_quality         cut_right的平均质量要求选项,默认为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])
  -e, --average_qual                   如果一个读取的平均质量分<avg_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)。默认为30,意味着要求30%的复杂度。(整数[=30])
      --filter_by_index1               指定一个文件,包含一系列要被过滤掉的index1的条形码,每行一个条形码(字符串[=])
      --filter_by_index2               指定一个文件,包含一系列要被过滤掉的index2的条形码,每行一个条形码(字符串[=])
      --filter_by_index_threshold      索引条形码过滤允许的差异,默认0意味着完全相同。(整数[=0])
  -c, --correction                     启用成对端数据的重叠区域的碱基校正,默认禁用
      --overlap_len_require            检测成对读取的重叠区域所需的最小长度。这将影响基于重叠分析的PE合并、接头修剪和校正。默认30。(整数[=30])
      --overlap_diff_limit             检测成对读取的重叠区域所允许的最大错配碱基数。这将影响基于重叠分析的PE合并、接头修剪和校正。默认5。(整数[=5])
      --overlap_diff_percent_limit     检测成对读取的重叠区域所允许的最大错配碱基百分比。这将影响基于重叠分析的PE合并、接头修剪和校正。默认20意味着20%。(整数[=20])
  -U, --umi                            启用唯一分子标识符(UMI)预处理
      --umi_loc                        指定UMI的位置,可以是(index1/index2/read1/read2/per_index/per_read,默认为none)(字符串[=])
      --umi_len                        如果UMI位于read1/read2中,则应提供其长度(整数[=0])
      --umi_prefix                     如果指定,一个下划线将用来连接前缀和UMI(即,prefix=UMI, UMI=AATTCG, final=UMI_AATTCG)。默认没有前缀(字符串[=])
      --umi_skip                       如果UMI位于read1/read2中,fastp可以跳过UMI后面的几个碱基,默认是0(整数[=0])
      --umi_delim                      在读取名和UMI之间使用的分隔符,默认是:(字符串[=:])
  -p, --overrepresentation_analysis    启用过度代表序列分析。
  -P, --overrepresentation_sampling    在(--overrepresentation_sampling)读取中计算一次过度代表序列分析(1~10000),较小的值运行较慢,默认是20。(整数[=20])
  -j, --json                           json格式报告文件名(字符串[=fastp.json])
  -h, --html                           html格式报告文件名(字符串[=fastp.html])
  -R, --report_title                   应该用'或"引号引起来,默认是"fastp report"(字符串[=fastp report])
  -w, --thread                         工作线程数,默认是3(整数[=3])
  -s, --split                          通过限制总分割文件数来分割输出,使用此选项(2~999),一个顺序编号前缀将被添加到输出名称(0001.out.fq, 0002.out.fq...),默认禁用(整数[=0])
  -S, --split_by_lines                 通过限制每个文件的行数来分割输出,使用此选项(>=1000),一个顺序编号前缀将被添加到输出名称(0001.out.fq, 0002.out.fq...),默认禁用(长[=0])
  -d, --split_prefix_digits            顺序编号填充的位数(1~10),默认是4,所以文件名将被填充为0001.xxx,0禁用填充(整数[=4])
      --cut_by_quality5                已弃用,使用--cut_front代替。
      --cut_by_quality3                已弃用,使用--cut_tail代替。
      --cut_by_quality_aggressive      已弃用,使用--cut_right代替。
      --discard_unmerged               已弃用,现在无效,请参阅合并的介绍。
  -?, --help                           打印此消息
05 常用命令行
##缺省参数,基本参数就可以,不需要太多,简洁有效
#for paired end data (gzip compressed)
fastp -i in.R1.fq.gz -I in.R2.fq.gz -o out.R1.fq.gz -O out.R2.fq.gz

#By default, the HTML report is saved to fastp.html (can be specified with -h option), and the JSON report is saved to fastp.json (can be specified with -j option).

06 参考文献

Chen S, Zhou Y, Chen Y, Gu J. fastp: an ultra-fast all-in-one FASTQ preprocessor. Bioinformatics. 2018 Sep 1;34(17):i884-i890. doi: 10.1093/bioinformatics/bty560. PMID: 30423086; PMCID: PMC6129281.

Chen, Shifu. 2023. “ Ultrafast one-pass FASTQ data preprocessing, quality control, and deduplication using fastp.” iMeta 2, e107. https://doi.org/10.1002/imt2.107

 张浩. 面向下一代测序数据的处理算法优化研究[D].山东大学,2023.

  • 30
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值