当前位置: 首页 > news >正文

NGS 数据过滤之 Trimmomatic

NGS

Trimmomatic 支持多线程,处理数据速度快,主要用来去除 Illumina 平台的 Fastq 序列中的接头,并根据碱基质量值对 Fastq 进行修剪。软件有两种过滤模式,分别对应 SE 和 PE 测序数据,同时支持 gzip 和 bzip2 压缩文件。

另外也支持 phred-33 和 phred-64 格式互相转化,现在之所以会出现 phred-33 和 phred-64 格式的困惑,都是 Illumina 公司的锅(damn you, Illumina!),不过现在绝大部分 Illumina 平台的产出数据也都转为使用 phred-33 格式了。


Trimmomatic 过滤步骤

Trimmomatic 过滤数据的步骤与命令行中过滤参数的顺序有关,通常的过滤步骤如下:

  1. ILLUMINACLIP: 过滤 reads 中的 Illumina 测序接头和引物序列,并决定是否去除反向互补的 R1/R2 中的 R2。
  2. SLIDINGWINDOW: 从 reads 的 5' 端开始,进行滑窗质量过滤,切掉碱基质量平均值低于阈值的滑窗。
  3. MAXINFO: 一个自动调整的过滤选项,在保证 reads 长度的情况下尽量降低测序错误率,最大化 reads 的使用价值。
  4. LEADING: 从 reads 的开头切除质量值低于阈值的碱基。
  5. TRAILING: 从 reads 的末尾开始切除质量值低于阈值的碱基。
  6. CROP: 从 reads 的末尾切掉部分碱基使得 reads 达到指定长度。
  7. HEADCROP: 从 reads 的开头切掉指定数量的碱基。
  8. MINLEN: 如果经过剪切后 reads 的长度低于阈值则丢弃这条 reads。
  9. AVGQUAL: 如果 reads 的平均碱基质量值低于阈值则丢弃这条 reads。
  10. TOPHRED33: 将 reads 的碱基质量值体系转为 phred-33。
  11. TOPHRED64: 将 reads 的碱基质量值体系转为 phred-64。

Trimmomatic 简单用法

由于 Trimmomatic 过滤数据的步骤与命令行中过滤参数的顺序有关,因此,如果需要去接头,建议第一步就去接头,否则接头序列被其他的过滤参数剪切掉部分之后就更难匹配更难去除干净了。

双末端测序模式

在 PE 模式下,有两个输入文件,正向测序序列和反向测序序列,但是过滤之后输出文件有四个,过滤之后双端序列都保留的就是 paired,反之如果其中一端序列过滤之后被丢弃了另一端序列保留下来了就是 unpaired

PE 模式下的输入输出文件

PE 模式下的输入输出文件

 

java -jar <path to trimmomatic.jar> PE [-threads <threads] [-phred33 | -phred64] [-trimlog
<logFile>] >] [-basein <inputBase> | <input 1> <input 2>] [-baseout <outputBase> |
<paired output 1> <unpaired output 1> <paired output 2> <unpaired output 2> <step 1> <step 2> ...

其中 -phred33 和 -phred64 参数指定 fastq 的质量值编码格式,如果不设置这个参数,软件会自动判断输入文件是哪种格式(v0.32 之后的版本都支持),虽然软件默认的参数是 phred64,如果不确定序列是哪种质量编码格式,可以不设置这个参数。

输入输出文件

PE 模式的两个输入文件:sample_R1.fastq sample_R2.fastq以及四个输出文件:sample_paired_R1.clean.fastq sample_unpaired_R1.clean.fastq sample_paired_R1.clean.fastq sample_unpaired_R1.clean.fastq

通常 PE 测序的两个文件,R1 和 R2 的文件名是类似的,因此可以使用 -basein 参数指定其中 R1 文件名即可,软件会推测出 R2 的文件名,但是这个功能实测并不好用,因为软件只能自动识别推测三种种格式的 -basein:

  • Sample_Name_R1_001.fq.gz -> Sample_Name_R2_001.fq.gz
  • Sample_Name.f.fastq -> Sample_Name.r.fastq
  • Sample_Name.1.sequence.txt -> Sample_Name.2.sequence.txt

建议不用 -basein 参数,直接指定两个文件名(R1 和 R2)作为输入。

输出文件有四个,当然也可以像上文一样指定四个文件名,但是参数太长有点麻烦,有个省心的方法,使用 -baseout 参数指定输出文件的 basename,软件会自动为四个输出文件命名。例如 -baseout mySampleFiltered.fq.gz ,文件名中添加 .gz 后缀,软件会自动将输出结果进行 gzip 压缩。输出的四个文件分别会自动命名为:

  • mySampleFiltered_1P.fq.gz - for paired forward reads
  • mySampleFiltered_1U.fq.gz - for unpaired forward reads
  • mySampleFiltered_2P.fq.gz - for paired reverse reads
  • mySampleFiltered_2U.fq.gz - for unpaired reverse reads

此外,如果直接指定输入输出文件名,文件名后添加 .gz 后缀就是告诉软件输入文件是 .gz 压缩文件,输出文件需要用 gzip 压缩。


 

转载
作者:wangpeng905
链接:https://www.jianshu.com/p/a8935adebaae
来源:简书

相关文章:

  • js 5秒钟后执行某个函数_前端面试题: (JavaScript 第5期)
  • SRA数据库及其数据的下载
  • wps如何在目录里面打省略号_Word中如何引用?3个实用小技巧帮你工作效率翻倍!...
  • asp.net图书管理系统源码_[源码和文档分享]基于B树实现的图书管理系统
  • SRA下载到分析
  • 多个子流程_协程工作流程的实现
  • Permission denied
  • wps交叉表_WPS文字小工具大用途—交叉引用的使用方法
  • 使用Trinity进行转录组组装
  • linux ssh连接交换机_【交换机】交换机如何配置ssh管理
  • python股票分析入门_学习用Python分析股票数据(入门)
  • Aspera 下载_SRA原始数据下载
  • keil5怎么配置程序风格_分享一个在Keil开发环境中配置代码格式化工具Astyle(美化代码风格)...
  • 01-rna-seq从头开始 卖萌哥
  • bc伐木机器人_BC教程之自动合成_我的世界BCmod教程 BCmod怎么玩__ 单机攻略_跑跑车单机游戏网...
  • 2018一半小结一波
  • CSS盒模型深入
  • ES2017异步函数现已正式可用
  • extract-text-webpack-plugin用法
  • github从入门到放弃(1)
  • leetcode讲解--894. All Possible Full Binary Trees
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • XML已死 ?
  • 浅谈web中前端模板引擎的使用
  • 如何利用MongoDB打造TOP榜小程序
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 《天龙八部3D》Unity技术方案揭秘
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​520就是要宠粉,你的心头书我买单
  • #vue3 实现前端下载excel文件模板功能
  • (1)常见O(n^2)排序算法解析
  • (10)ATF MMU转换表
  • (2)MFC+openGL单文档框架glFrame
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .net core Swagger 过滤部分Api
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .netcore如何运行环境安装到Linux服务器
  • .NET中GET与SET的用法
  • .net中应用SQL缓存(实例使用)
  • []error LNK2001: unresolved external symbol _m
  • [Android]创建TabBar
  • [C++数据结构](22)哈希表与unordered_set,unordered_map实现
  • [daily][archlinux][game] 几个linux下还不错的游戏
  • [EWS]查找 文件夹
  • [java进阶]——方法引用改写Lambda表达式
  • [Linux] 进程间通信基础
  • [Python] 什么是KMeans聚类算法以及scikit-learn中的KMeans使用案例
  • [Spark SQL]Spark SQL读取Kudu,写入Hive