小刘哥的笔记本

Keep It Simple, Stupid !


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

【生信分析】不同过滤软件的比较

发表于 2019-08-19 分类于 Bioinformatics Valine:

1. 起缘

小刘哥在分析拿到的 Small RNA 数据时发现不同的过滤软件对数据的过滤结果并不一样。由此我们想找到到底什么样的参数、哪款软件能满足我们 Small RNA 数据过滤的基本需求。抱着这样的目的我们做了下面的测试:
使用的数据是我们一个真实的玉米根系数据,使用 NextSeq500/NextSeq500AR SE50 进行的 Small RNA 测序。

2. 原始数据测序质量

我们首先使用 fastqc 对数据的测序质量来个基本的了解。

1
fastqc sample.fq.gz

生成网页报告如下:

数据统计发现共有原始数据 20,402,165 条,既 20.4M 原始reads。原始数据的 GC含量为 54%,测序长度为 50bp,数据质量格式为 Sanger / Illumina 1.9 格式 既 phred33 格式。

数据质量如下图:

整体测序质量高,绝大部分碱基质量分数在 30 分以上,既测序的准确率在 99.9% 以上。

没有测出的碱基(N碱基)几乎为 0:

重复序列占总序列的 21.09% ,这是因为 Small RNA 测序文库片段较短,因此重复性较高。

我们发现测序数据中主要包含了 Illumina Small RNA 3’ Adapter:

接下来,我们就使用不用的软件对这个数据进行低质量数据过滤,并比较其过滤结果。

3. 数据过滤标准

考虑到经常分析的 Small RNA 的有效长度基本我为 18 - 35 nt, 我们统一使用以下的过滤标准:

  1. 去除低质量 reads( sQ <= 20 的碱基数占整个 Reads 的 40% 以上)
  2. 去除 N 碱基比例大于 5 的 Reads
  3. 去除含有 5‘ 接头污染的 reads
  4. 去除没有 3‘ 接头的序列
  5. 去除插入片段缺失的 reads
  6. 去除 3‘ 接头
  7. 去除 Ploy/T/C/G 的序列
  8. 去除过长以及过短的 Reads (18 <= length <= 35)

4. 使用 SOAPnuke 进行过滤

SOAPnuke 是华大的老牌软件了,有专门过滤 small RNA 序列的模块,下载地址:https://github.com/BGI-flexlab/SOAPnuke 安装过程参照其说明文档。
具体参数使用以下命令查看:

1
SOAPnuke filtersRNA -h

{ % asset_img 72829788.png SOAPnuke 命令 % }

使用以下命令进行过滤:

1
SOAPnuke filtersRNA --fq1 sample.fq.gz --cleanFq1 Soap.Clean.fq.gz  --trimFq1 trim.sample.fq.gz  --outDir ./ --outFileType fastq --log SOAPnukeFilter.log --adapter1 GTTCAGAGTTCTACAGTCCGACGATC --adapter2 TGGAATTCTCGGGTGCCAAGG --seqType 1 --ada_trim --adaRCtg 6 --adaRAr 0.8 --adaRMa 5 --adaREr 0.4 --lowQual 20 --qualRate 0.4 --nRate 0.05 --mean 20 --polyA 0.4 --polyX 10 --index --thread 8 --qualSys 2 --outQualSys 2 --maxReadLen 35 --minReadLen 18

DELL R730xd 的二手服务器主机,E5-2678 v3 处理器(24核,48线程),我使用了 8 个线程,花费 1分 51秒 完成了过滤,同时生成了多个统计文件:

过滤完成后还剩余 9.93 M 的 Reads,过滤掉一半多。
我们还是使用 fastqc 软件再直观的查看一下过滤后的 Clean Reads 数据质量。

基本将低质量数据全部过滤掉了,遗憾的地方是,并没有将数据中的 接头序列剪切掉。

同时我们测试了不指定 Adapter 序列运行程序,发现程序对接头序列识别差的很,不得已,只有保留指定接头序列参数。

5. 使用 fastp 软件进行过滤

fastp 软件是海普洛斯公司研发团队开发的一个快速的过滤工具,下载地址:https://github.com/OpenGene/fastp
我使用 conda 安装了该软件:

1
conda install fastp

由于使用了指定的 Adapter 序列,导致运行结果严重失真,经测试发现 fastp 软件对单端数据默认只识别 RA3‘ 接头序列。

1
fastp --in1 ../sample.fq.gz --out1 fastp.Clean.fq.gz --adapter_sequence TGGAATTCTCGGGTGCCAAGG --trim_poly_g --poly_g_min_len 10 --trim_poly_x --poly_x_min_len 10 --cut_window_size 5 --cut_mean_quality 20 --qualified_quality_phred 15 --unqualified_percent_limit 40 --n_base_limit 1 --length_required 18 --length_limit 35 --json fastp.Clean.json --html fastp.Clean.html --thread 8

用时 66 秒, 结果如下:

可以看到过滤完后还剩余 9.92M 的 Clean Reads,而且结果也是切好的数据。比 SOAPnuke 软件切掉的数据少一些。

然后我们使用不加 adapter 参数的命令重新过滤,运行时间:64 秒,同样的,没有识别到 Adpter 序列,把长度大于 35 bp的序列都过滤掉了,因此我们只有保留接头序列参数。

fastqc 对 过滤后的 clean Reads 进行检验:发现基本也将低质量数据过滤完全了,并且接头也去除干净了。

6. 使用 cutadapt 软件进行过滤

cutadapt 是一款经典的测序数据过滤软件了,基于 python 编写的。
使用 conda 进行安装:

1
conda install cutadapt

安装完成后使用如下命令进行过滤:

1
cutadapt -a TGGAATTCTCGGGTGCCAAGG -j 8 -o cutadapt.Clean.fq.gz -m 18 -M 35 --max-n 2 --discard-untrimmed ../sample.fq.gz

同样的 8 线程,用时46.14 秒,过滤完成后保留了 9.99M 的 Clean Reads。

同样的,我们使用 fastqc 对过滤后的数据进行查看:

接头基本过滤干净了。

7. 使用 Trimmomatic 进行过滤

Trimmomatic 发表的文章至今已被引用了 6784 次,是一个广受欢迎的 Illumina 平台数据过滤工具。下载地址: http://www.usadellab.org/cms/index.php?page=trimmomatic
我们安装还是使用 conda :

1
conda install trimmomatic

我们使用一下命令进行过滤:

1
trimmomatic SE -threads 8 -phred33 -trimlog trim.log -summary trim.stat ../sample.fq.gz Trimmomatic.Clean.fq.gz ILLUMINACLIP:/MaizeShen/liupeng/TMP/Filter/adapter.txt:2:30:10 LEADING:13 TRAILING:13 SLIDINGWINDOW:5:20 MINLEN:18 TOPHRED33

fastqc 检测结果如下:

其结果也无法将接头直接去掉。

综合考虑,我们还是使用 fastp 软件进行过滤。

Alipe wechat
扫码关注小刘哥订阅号!
谢谢您的赏识!
Alipe 微信支付

微信支付

Alipe 支付宝

支付宝

# fastqc # SOAPnuke # fastp # cutadapt # Trimmomatic
Hexo中图片处理正确姿势
小刘哥学生信系列一数据质控
  • 文章目录
  • 站点概览
Alipe

Alipe

种地,学习,撸代码!
11 日志
7 分类
38 标签
RSS
GitHub E-Mail JianShu Twitter
  1. 1. 起缘
  2. 2. 原始数据测序质量
  3. 3. 数据过滤标准
  4. 4. 使用 SOAPnuke 进行过滤
  5. 5. 使用 fastp 软件进行过滤
  6. 6. 使用 cutadapt 软件进行过滤
  7. 7. 使用 Trimmomatic 进行过滤
© 2019 Alipe
由 Hexo 强力驱动
|
主题 – NexT.Pisces