Skip to content

数据过滤

约 1316 个字 8 行代码 预计阅读时间 5 分钟

FASTQ数据文件

FASTQ 是一种中间文件,承接上游测序与下游分析,记录了测序结果与相应的其他信息,大致格式如下:

@SIM:1:FCX:1:15:6329:1045 1:N:0:2
TCGCACTCAACGCCCTGCATATGACAAGACAGAATC
+
<>;##=><9=AAAAAAAAAA9#:<#<;<<<????#=
  • 第一行解释:
元素 要求 描述
@ @ 每个序列标识符行以@开头
instrument 允许的字符:a-z,A-Z,0-9和下划线 仪器ID
run number 数值型 仪器上的运行编号
flowcell ID 允许的字符:a-z,A-Z,0-9 流动池ID
lane 数值型 lane编号
tile 数值型 tile编号
x_pos 数值型 cluster的X坐标
y_pos 数值型 cluster的Y坐标
read 数值型 读取编号。1可以是单个读取或配对末端读取的Read 2
is filtered Y或N 如果读取被过滤(未通过),则为Y,否则为N
control number 数值型 当没有控制位打开时为0,否则为偶数。在HiSeq X系统上,不执行控制规范,此数字始终为0。
sample number 数值型 样本表中的样本编号
  • 第二行解释: 测序得到的序列
  • 第三行解释: 质量分数标识符行(仅由 + 组成)
  • 第四行解释: 质量得分,以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常用参数如下:

参数 描述
-j/--cores 使用线程数,默认为1
-q/--quality span style="color: red;">切除质量得分低于设置值的序列。默认值20
--phred33/--phred64 使用不同质量得分作为Phred得分标准。默认选项是phred33
-a / --adapter 输入adapter序列,也可以不输入,软件会自动搜索可能性最高的平台对应的adapter。自动搜选的平台有三个,也可以直接设置参数输入这三个平台,分别是--illumina, --nextera和--small_rna
--length span style="color: red;">长度小于设定值的reads将被丢弃,Default: 20 bp.
--max_length 长度大于设定值的reads将被丢弃
--stringency 设定当reads的3'/5'端有多少碱基比对上接头序列后对其进行切除
--paired 对于双端测序的一对reads,如果其中一个不合格被剔除,另一个也将被剔除。
-o/--output_dir 设定输出目录,必须是已存在的目录,否则运行将报错。
--fastqc 当剪切结束后用默认选项对结果文件进行fastqc分析
--max_n span style="color: red;">去除含有N碱基数大于n的序列

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>
参数 描述
-i, -I(大写的i) span style="color: red;">后接需要过滤的fastq文件
-o, -O(大写的o) span style="color: red;">后接过滤完输出的fastq文件名
-h html报告文件名
-j json报告文件名
-n / --n_base_limit span style="color: red;">限制 N 个数
-q span style="color: red;">设置碱基质量阈值,默认阈值为15
-u 设置允许不合格碱基阈值,超过比例时,整条read将被丢弃,默认为40。
-l(小写的L) 设置read的最小长度,默认是15,长度小于15的read将被丢弃
-w 设置软件可用线程数,默认为2
-z 设置结果文件压缩比

质量校验

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