转录组分析 | 使用Trimmomatic过滤Fastq文件
随着测序成本的不断降低,RNA-seq已经是许多实验的标配。经过小编一段时间的准备,接下来的几周时间里,将推出一系列的转录组分析教程,教大家从零开始学习转录组分析,欢迎大家持续关注!
上一期,小编教大家使用FastQC评估了自己手中RNA-seq数据的质量,今天教大家使用Trimmomatic切除数据中的接头序列和低质量序列。
## 下载Trimmomatic
wget -c http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/Trimmomatic-0.39.zip
## 解压
unzip Trimmomatic-0.39.zip
## 进入目录
cd Trimmomatic-0.39
进入目录后,我们可以看到Trimmomatic的执行文件是一个Java文件,所以在运行前,需要先安装Java。
安装好Java后,就可以运行程序啦!
## 切除接头序列
java -jar ./trimmomatic-0.39.jar PE -phred33 -trimlog seq.log -threads 4 seq1.fq.gz seq2.fq.gz seq1.clean.fq.gz seq1.unpaired.fq.gz seq2.clean.fq.gz seq2.unpaired.fq.gz ILLUMINACLIP:./adapters/TruSeq3-PE.fa:2:30:10 SLIDINGWINDOW:5:20 LEADING:5 TRAILING:5 MINLEN:50
参数介绍:
PE:过滤双端测序数据(如果数据是单端测序的,则用SE)。
phred33:Fastq文件的质量值格式为phred33,一般二代测序数据的格式基本都是phred33,如果不清楚自己数据格式的话可以咨询测序公司。
trimlog:设置日志文件。
threads:设置线程数。
seq*.fq.gz:需要过滤的Fastq文件。
seq*.clean.fq.gz:过滤后的Fastq文件。
ILLUMINACLIP: ./adapters/TruSeq3-PE.fa指去除illumina测序平台下的TruSeq3接头序列,具体使用哪个接头序列可以咨询测序公司。
接头序列后跟的3个数字(2:30:10)分别代表比对时允许的最大错配数,两条reads与接头序列的匹配率和单条reads与接头的匹配率。2:30:10即表示,在比对接头序列时允许有两个位置的碱基发生错配,双端测序的两条reads与接头序列匹配率超过30%的话,就会被切除掉,单条reads如果与接头序列的匹配率超过10%,也会被切除掉。
SLIDINGWINDOW:5:20表示以5bp为窗口进行滑窗统计,切除碱基平均质量低于20的窗口及之后的序列。
LEADING:5表示切除reads 5’端质量值低于5的碱基,直到某一个碱基的质量值大于5。
TRAILING:5表示切除reads 3’端质量值低于5的碱基,直到某一个碱基的质量值大于5。
MINLEN:50表示去除过滤后长度低于50的reads。
除了这些参数外,如果我们想要切除reads开头的碱基,可以使用HEADCROP 参数。
## 切除reads开头碱基
java -jar ./trimmomatic-0.39.jar PE -phred33 -trimlog seq.log seq1.fq.gz seq2.fq.gz seq1.clean.fq.gz seq1.unpaired.fq.gz seq2.clean.fq.gz seq2.unpaired.fq.gz HEADCROP:9
HEADCROP:9表示切除reads开头9个碱基。
如果想切除reads末端的序列,仅保留前一部分,可以使用CROP 参数。
## 切除reads末端碱基
java -jar ./trimmomatic-0.39.jar PE -phred33 -trimlog seq.log seq1.fq.gz seq2.fq.gz seq1.clean.fq.gz seq1.unpaired.fq.gz seq2.clean.fq.gz seq2.unpaired.fq.gz CROP:130
假设reads长度为150,CROP:130代表切除reads后20个碱基,仅保留前130个碱基。
参考资料:
https://zhuanlan.zhihu.com/p/28802083
https://www.jianshu.com/p/a8935adebaae
http://www.usadellab.org/cms/uploads/supplementary/Trimmomatic/TrimmomaticManual_V0.32.pdf
转录组分析教程:
- HDU 1754 I Hate It(线段树之单点更新,区间最值)
- Selenium2+python自动化19-单选和复选框
- Uva 11300 Spreading the Wealth(递推,中位数)
- Uva 11729 Commando War (简单贪心)
- UVA 11292 Dragon of Loowater(简单贪心)
- Codeforces Beta Round #2 A,B,C
- 牛顿迭代法(Newton's Method)
- 最长递减子序列(nlogn)(个人模版)
- Selenium2+python自动化26-js处理内嵌div滚动条
- Selenium2+python自动化25-js处理日历控件
- 转负二进制(个人模版)
- Selenium2+python自动化24-js处理富文本
- 【干货】对抗自编码器PyTorch手把手实战系列——PyTorch实现对抗自编码器
- Selenium2+python自动化23-富文本(自动发帖)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MQ 系列之 JMSTemplate
- Leetcode 76. 最小覆盖子串 (双指针,map)
- ExpiringMap,一个可以用于缓存的 Map
- Leetcode 121. 买卖股票的最佳时机 (DP,模拟)
- MQ 系列之初识消息中间件
- Leetcode 第23场双周赛C 5361. 圆和矩形是否有重叠 (计算几何 初中数学)
- vue-cli 4 快速构建一个 Vue 项目
- SpringDataJPA 系列之快速入门
- Leetcode 第23场双周赛B 5362. 构造 K 个回文字符串(map,思维)
- Java 水题系列(1)数字金字塔
- Leetcode 836. 矩形重叠
- 详解 Vue 目录及配置文件之 config 目录
- Nginx 搭建静态资源服务
- vue 使用自定义字体
- vue 跨域问题