数据过滤
FASTQ数据文件
FASTQ 是一种中间文件,承接上游测序与下游分析,记录了测序结果与相应的其他信息,大致格式如下:
@SIM:1:FCX:1:15:6329:1045 1:N:0:2
TCGCACTCAACGCCCTGCATATGACAAGACAGAATC
+
<>;##=><9=AAAAAAAAAA9#:<#<;<<<????#=
- 第一行解释:
- 第二行解释: 测序得到的序列
- 第三行解释: 质量分数标识符行(仅由 + 组成)
- 第四行解释: 质量得分,以ASCII码表单字符标识,与序列一一对应
具体可参考以下两篇文章:
FastQ Files: https://help.basespace.illumina.com/files-used-by-basespace/fastq-files
20160406 FASTA 与 FASTQ格式详解: https://zhuanlan.zhihu.com/p/20714540
过滤背景与条件
测序得到的原始序列包含接头序列与低质量序列,通过对原始数据进行质量控制从而获得高质量序列的过程称为数据过滤。
质量控制标准有三:
- 去除含有接头的reads
- 过滤去除低质量值数据,确保数据质量
- 去除含有N(不确定的碱基)的比例大于5%的reads
过滤工具选用trim_galore
,为了方便这里直接用conda下载。
❯ conda install bioconda::trim-galor
# 命令示例
❯ trim_galore --phred33 -q 30 --length 30 --stringency 3 --fastqc --paired --max_n 3 -o <your_output_path> <your_input_data>
trim_galore常用参数如下:
stringency
stringency参数的具体含义如下:
假如我有一个读段AAAAAAAAAACCCGGGGTTATAGATCGG
,我已知这次测序采用的接头序列,Trim-Galore! 截取为AGATCGGAAGAGC
,可见3'端存在AGATCGG
7bp长的匹配段,此时如果--stringency
的设置小于7,AGATCGG
将会被整个切除。
但是同样的读段,只是因为测序错误导致接头看起来“不完美”:AAAAAAAAAACCCGGGGTTATAGACC
,仅有AGA
匹配,此时如果--stringency
的设置大于3,那么这个接头都不会被移除。
当然在实践中,Trim-Galore! 底层封装的 cutadapt 支持传入-e
作为错误率设置,这意味着除了严格的完美匹配以外,Trim-Galore! 对大致相像,错误率可以接受的序列也会进行剪切。
另一个过滤工具为fastp
(采用 C++ 编写的高性能过滤工具)。
官方仓库: https://github.com/OpenGene/fastp
通过Bioconda安装:
❯ conda install -c bioconda fastp
# 更新一下c++依赖
❯ conda install -c conda-forge libgcc-ng libstdcxx-ng
# 单文件命令实例,以双端测序为例
❯ fastp -i <path/to/your/input_file> -I <path/to/another/input_file> -o <path/to/your/output_file> -O <path/to/another/output_file> -l 36 -q 20 --compression=6 -R <your_report_title> -h <path/to/your/report.html> -j <path/to/your/report.json>
质量校验
Trim Golare! 内集成了FastQC做为修剪后的质量校验工具,而fastp也同样内置了一个自己的质量校验程序。
类似于FastQC的质量校验工具会基于测序文件所提供的信息对我们测序结果质量进行校验与评估,通过多个图表像我们直观展示测序结果的质量如何。
同样的,通过数据过滤前后的质量校验结果,我们也可以了解到数据过滤是否发挥了预期作用。
了解更多,可以参考以下两篇教程:
一文掌握fastqc使用及结果解读: https://zhuanlan.zhihu.com/p/19856288800
FastQC Tutorial & FAQ: https://rtsf.natsci.msu.edu/genomics/technical-documents/fastqc-tutorial-and-faq.aspx