软件3 —— Trim Galore和Trimmomatic

一、 基本介绍

Trim Galore是对FastQC和Cutadapt的包装。适用于所有高通量测序,包括RRBS (Reduced Representation Bisulfite-Seq )、Illumina、Nextera 和smallRNA测序平台的双端和单端数据。主要功能包括两步:第一步首先去除低质量碱基,然后去除3' 末端的adapter,如果没有指定具体的adapter,程序会自动检测前1 million的序列,然后对比前12-13bp的序列是否符合以下类型的adapter:Illumina: AGATCGGAAGAGC;Small RNA: TGGAATTCTCGG; Nextera: CTGTCTCTTATA。

Trimmomatic是一个主要针对Illumina测序的reads修剪和过滤的软件。它支持多线程,处理数据速度快,过滤模式有两种,分别对应paired end (PE) reads和single end (SE) reads 测序数据,也支持 gzip 和 bzip2 压缩文件。Trimmomatic的好处在于,它不但可以用来切除illumina测序平台的接头序列,还可以去除由我们自己指定的特定接头序列,而且同时也能够过滤read末尾的低质量序列。具体的原理就是通过滑动一定长度的窗口,计算窗口内的碱基平均质量,如果过低,就直接往后全部切除,注意不是挖掉read中的这部分低质量序列,而是像切菜一样,直接从低质量区域开始把这条read后面的所有其它碱基全部剁掉!否则就是在人为改变实际的基因组序列情况。

Trimmomatic接头序列的选择:一般来说,目前的HiSeq系列和MiSeq系列用的都是TruSeq3,TruSeq2是以前GA2系列的测序仪所用的,已经很少见了。这些信息都可以在illumina的官网上找到,至于具体该用PE(Pair End)还是SE(Single End)就按照具体的测序类型进行选择即可。如果用的不是illumina测序平台,那么我们也可以按照adapters文件夹下的这些文件的格式做一个新的接头序列,然后再作为参数传入。不过在自定义接头序列的时候,命名时有一些小的细节需要注意,可以参考Trimmomatic的主页文档(The Adapter Fasta)。需要明确指明质量值体系是Phred33还是Phred64,默认是Phred64,这需要特别注意,因为我们现在的测序数据基本都是Phred33的了,所以一定要指定这个参数。

ls /home/analysis/miniconda3/pkgs/trimmomatic-0.39-hdfd78af_2/share/trimmomatic/adapters/
# NexteraPE-PE.fa  TruSeq2-PE.fa  TruSeq2-SE.fa  TruSeq3-PE-2.fa  TruSeq3-PE.fa  TruSeq3-SE.fa

# TruSeq3-PE.fa的内容是:
>PrefixPE/1
TACACTCTTTCCCTACACGACGCTCTTCCGATCT
>PrefixPE/2
GTGACTGGAGTTCAGACGTGTGCTCTTCCGATCT
# TruSeq3-SE.fa的内容是:
>TruSeq3_IndexedAdapter
AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC
>TruSeq3_UniversalAdapter
AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTA
# TruSeq3-PE-2.fa的内容是:
>PrefixPE/1
TACACTCTTTCCCTACACGACGCTCTTCCGATCT
>PrefixPE/2
GTGACTGGAGTTCAGACGTGTGCTCTTCCGATCT
>PE1
TACACTCTTTCCCTACACGACGCTCTTCCGATCT
>PE1_rc
AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTA
>PE2
GTGACTGGAGTTCAGACGTGTGCTCTTCCGATCT
>PE2_rc
AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC

二、 trim_galore使用方法

(1) 用法和参数

trim_galore  [options]  <filename(s)>
trim_galore  -j 4  -q 25  -e 0.1  --stringency 4  --length 20  --max_n 2  -o outputdir  test.fq.gz  #单端
trim_galore  -j 4  -q 25  -e 0.1  --paired  --stringency 4  --length 40  --max_n 4  -o outputdir  test_1.fq.gz  test_2.fq.gz  #双端

-j/--cores:线程数,默认1(最好设置为4,假设已使用Python 3并安装了Pigz,那么内核设置为4,实际使用内核是15)。
-q/--quality <INT>:除了移除接头之外,还要修剪掉reads的低质量末端。Default Phred score: 20。
-e <ERROR RATE>:最大允许错误率(错误数除以匹配区域的长度)。Default: 0.1
--paired:双端测序,如果其中一个不合格则两个都被剔除。
--stringency <INT>:严格性,设定可以忍受的前后adapter重叠的碱基数,默认1(even a single bp of overlapping sequence will be trimmed off from the 3' end of any read),为非常严格的设置,通常可以适当放宽,因为后一个adapter几乎不可能被测序仪测到。
--length <INT>:丢弃由于质量或接头调整而变得短于长度n的read。值“0”禁用了该行为。Default: 20 bp。在PE150下,可以设置50或36。
--max_n:一条read在被完全删除之前可能包含的N的总数。
-o/--output_dir <DIR>:输入目录,需要提前建立目录,否则运行会报错
--phred33/--phred64:默认phred33。
-a/--adapter <STRING>:要修剪的接头序列。如果没有明确指定,Trim Galore将尝试自动检测是否使用了Illumina universal、Nextera transposase或Illumina small RNA接头序列。
--max_length <INT>:丢弃修剪后长于n的read。仅建议用于小RNA测序,以去除非小RNA序列。
--gzip:用GZIP压缩输出文件。如果输入文件是GZIP压缩的,输出文件也会自动被GZIP压缩。
--dont_gzip:输出文件不会用GZIP压缩。该选项覆盖--gzip。
--fastqc:剪切结束后用默认选项对结果文件进行fastqc分析

(2) 举个例子

trim_galore  -j 4  -q 20  -e 0.1  --stringency 4  --length 40  --max_n 4  -o ./02_cleandata  00_rawdata/WTF5.Input_1.fastq.gz  #单端
trim_galore  -j 4  -q 20  -e 0.1  --paired  --stringency 4  --length 40  --max_n 4  -o ./02_cleandata  00_rawdata/WTF5.Input_1.fastq.gz 00_rawdata/WTF5.Input_2.fastq.gz  #双端

(3) 批量处理

#以双端为例:trim_galore.sh
for i in `ls 00_rawdata/*_1.fastq.gz`
do

    i=`basename $i`
    i=${i%_1.fastq.gz}
    echo $i >>log/trim_galore_log.txt

    trim_galore  -j 4  -q 20  -e 0.1  --paired  --stringency 4  --length 40  --max_n 4  -o ./02_cleandata  00_rawdata/$i\_1.fastq.gz  00_rawdata/$i\_2.fastq.gz  2>> log/trim_galore_log.txt

done

# sh trim_galore.sh &

三、 Trimmomatic使用方法

(1) 用法和参数

trimmomatic PE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] [-validatePairs] [-basein <inputBase> | <inputFile1> <inputFile2>] [-baseout <outputBase> | <outputFile1P> <outputFile1U> <outputFile2P> <outputFile2U>] <trimmer1>...  #双端
trimmomatic SE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] <inputFile> <outputFile> <trimmer1>...  #单端

trimmomatic  PE  -phred33  test_1.fq test_2.fq \ test_1_paired.fq test_1_unpaired.fq \ test_2_paired.fq test_2_unpaired.fq \ ILLUMINACLIP:/usr/local/src/Trimmomatic/Trimmomatic-0.36/adapters/TruSeq3-PE.fa:2:30:10 \ LEADING:5  TRAILING:5  SLIDINGWINDOW:3:20  MINLEN:50  #双端
trimmomatic  SE  -phred33  test.fq test.out.fq  ILLUMINACLIP:/home/analysis/miniconda3/pkgs/trimmomatic-0.39-hdfd78af_2/share/trimmomatic/adapters/TruSeq3-SE.fa:2:30:10 SLIDINGWINDOW:5:20  LEADING:5  TRAILING:5  MINLEN:50  #单端

<inputFile1> <inputFile2>:为输入文件,fastq或fq.gz。
<outputFile1P> <outputFile1U> <outputFile2P> <outputFile2U>:为对应的四个输出文件,双端序列都保留的paired序列文件和只保留一段序列的unpaired序列文件,unpaired是不需要的。单端模式不需要指定文件来存放被过滤掉的read信息。
-threads:线程数。
-phred33:设置碱基的质量格式(默认是64,但现在常用33)。
LEADING:5:切除首端碱基质量小于5的碱基或者N。
TRAILING:5:切除末端碱基质量小于5的碱基或者N。
SLIDINGWINDOW:3:20:从5'端开始进行滑动,滑动窗口Windows的长度是3个碱基,其平均碱基质量小于20则切除。
MINLEN:50:最低reads长度为50。
ILLUMINACLIP:adapters/TruSeq3-PE.fa:2:30:10:切除adapter序列。参数ILLUMINACLIP后面分别接: adapter序列的fasta文件: 比对时接头序列时所允许的最大错误mismatch 数: palindrome模式下匹配碱基数阈值(PE的两条read同时和PE的adapter序列比对,匹配度加起来超30%,就认为这对PE的read含有adapter): simple模式下的匹配碱基数阈值(只要这条read的某部分和adapter序列有超过10%的匹配率,就代表含有adapter了)。推荐30%和10%。

(2) 举个例子

trimmomatic  PE  -phred33  -threads 4  00_rawdata/WTF4.Input_1.fastq.gz  00_rawdata/WTF4.Input_1.fastq.gz  02_cleandata/WTF4.Input_1.clean.fastq.gz  02_cleandata/WTF4.Input_1.unpaired.fastq.gz  02_cleandata/WTF4.Input_2.clean.fastq.gz  02_cleandata/WTF4.Input_2.unpaired.fastq.gz  ILLUMINACLIP:/home/analysis/miniconda3/pkgs/trimmomatic-0.39-hdfd78af_2/share/trimmomatic/adapters/TruSeq3-PE.fa:2:30:10  SLIDINGWINDOW:3:20  LEADING:5  TRAILING:5  MINLEN:50  #双端

trimmomatic  SE  -phred33  -threads 4  00_rawdata/WTF4.Input_1.fastq.gz  02_cleandata/WTF4.Input_1.clean.fastq.gz  ILLUMINACLIP:/home/analysis/miniconda3/pkgs/trimmomatic-0.39-hdfd78af_2/share/trimmomatic/adapters/TruSeq3-SE.fa:2:30:10  SLIDINGWINDOW:3:20  LEADING:5  TRAILING:5  MINLEN:50  #单端

(3) 批量处理

#以双端为例:trimmomatic.sh
for i in `ls 00_rawdata/*_1.fastq.gz`
do

    i=`basename $i`
    i=${i%_1.fastq.gz}
    echo $i >>log/trimmomatic_log.txt

    trimmomatic  PE  -phred33  -threads 6  00_rawdata/$i\_1.fastq.gz  00_rawdata/$i\_2.fastq.gz  02_cleandata/$i\_1.clean.fq.gz  02_cleandata/$i\_1.unpaired.fq.gz  02_cleandata/$i\_2.clean.fq.gz 02_cleandata/$i\_2.unpaired.fq.gz  ILLUMINACLIP:/home/analysis/miniconda3/pkgs/trimmomatic-0.39-hdfd78af_2/share/trimmomatic/adapters/TruSeq3-PE.fa:2:30:10  SLIDINGWINDOW:3:20  LEADING:5  TRAILING:5  MINLEN:50  2>>log/trimmomatic_log.txt

done

# sh trimmomatic.sh &

四、 Cutadapt

(1) color space数据

例如,测序仪AB 5500xl Genetic Analyzer得到的reads:

@SRR1449908.1 ugc_450_solid0105_20110426_FRAG_BC_ugc_450_3_48_545/1
T20103321021332323020223030003323033200023300033032
+
!05')<:-2(*4-(**(&(%%.)%,%(&((.4%(.%&%(*%2'3)%7,)%&

color space数据fastq里面的第二行不是序列,而是color的编码。Colors may be encoded either as numbers (0=blue, 1=green, 2=orange, 3=red) or as characters A/C/G/T (A=blue, C=green, G=orange, T=red).

Here, T is the primer base.(“T”是引物碱基)bowtie detects and handles primer bases properly (i.e., the primer base and the adjacent color are both trimmed away prior to alignment) as long as the rest of the read is encoded as numbers.

(2) cutadapt使用方法

SOLiD colorspace format不支持使用trim_galore,可以用cutadapt进行数据修剪。

cutadapt  -a ADAPTER  [options]  [-o output.fastq]  input.fastq  #单端
cutadapt  -a ADAPT1  -A ADAPT2  [options]  -o out1.fastq  -p out2.fastq  in1.fastq  in2.fastq  #双端

cutadapt  -j 4  -a AACCGGTT  -o output.fastq  input.fastq  #去除3'接头
cutadapt  -a TGAGACACGCA  -a AGGCACACAGGG  -n 2  -o output.fastq  input.fastq  #多个3'接头
cutadapt  -q 10  -o output.fastq  input.fastq  #过滤3'端的低质量序列
cutadapt  -q 15,10  -o output.fastq  input.fastq  #过滤3'和5'端的低质量序列

输入或输出文件格式:fasta文件指定后缀:.fasta,.fa,.fna;fastq文件指定后缀:.fastq,.fq;或以上任意后缀+压缩格式(.gz,.bz2,.xz),cutadapt会自动解压或压缩。
-j:选择几个核
-a:3’接头,如果机器读长大于fragment 的长度,在测序得到的序列的3'末端会出现部分adapter序列;3'末端有完整的adapter序列,在adapter序列之后还有其他随机测到的序列。对上述两种情况,cutadapt 会把adapter 序列都清除干净。
-n:检测几次,有两种接头就检测两次
-o:输出reads.1.fastq去掉接头的结果
-p:是--paired-output 的缩写,输出reads.2.fastq去掉接头的结果
-q/--trim-qualities:过滤低质量序列,默认使用phred quality+33 的方式识别序列质量。默认只过滤3'端的低质量序列,如果想要过滤5'端低质量序列,需要用逗号隔开。
-m/--minimum-length:去除序列长度低于N的read
--max-n:单条reads中N碱基的最大数量
-A:3’端接头的反向互补序列。The -A/-G/-B/-U options work like their -a/-b/-g/-u counterparts, but are applied to the second read in each pair.
-g:5'接头
-G:5’端接头的反向互补序列
-u/--cut:在序列的3端和5端切除固定长度的序列,当值为正数时,从序列开头切除, 当值为负数时,从序列末端开始切除。
-e:最大允许错误率(错误数除以匹配区域的长度,默认值0.1)
-O:最小重叠长度。如果read和adapter之间的重叠小于该长度,则不修改read。这减少了纯粹由于短随机接头匹配而修剪的碱基数量。(默认值3)
--pair-filter=(any|both):Which of the reads in a paired-end read have to match the filtering criterion in order for it to be filtered. Default: any.

colorspace选项:https://cutadapt.readthedocs.io/en/v1.18/colorspace.html
-c, --colorspace:Enable colorspace mode: Also trim the color that is adjacent to the found adapter
--maq/--bwa:MAQ- and BWA-compatible colorspace output. This enables -c, -d, -t, --strip-f3 and -y '/1'. Enables colorspace mode (-c), double-encoding (-d), primer trimming (-t)
--no-zero-cap:不要将色彩空间数据中的负质量值更改为零。色彩空间读数的质量值有时是负的,BWA和Bowtie无法处理,默认情况下Cutadapt将色彩空间数据中的负质量值转换为0。
--format=sra-fastq:当使用来自sra-toolkit包的FASTQ-dump程序将这些.sra文件转换为FASTQ格式时,colorspace读取将在每次读取开始时获得额外的质量值,使质量值数目比序列数多1。为了让cutadapt忽略额外的质量基础,在命令行中添加--format=sra-fastq。

fastqc检测到的接头:
https://github.com/csf-ngs/fastqc/blob/master/Contaminants/contaminant_list.txt

(3) 举个例子

cutadapt  --bwa  -a 330201030313112312  -q 20  -m 20  --max-n 3  --format=sra-fastq  SRR1449908.fastq.gz  -o SRR1449908_clean.fastq.gz  >& log/cutadapt_log.txt  &
cutadapt  -c  -t  -a 330201030313112312  -q 20  -m 20  --max-n 3  --format=sra-fastq  SRR1449909.fastq.gz  -o SRR1449909_new.fastq.gz  >& log/cutadapt_log.txt  &

旧版本的bowtie,支持colorspace,参数稍有不同(需要加-C/--color,索引也是需要单独构建的)。

./shellscript/bowtie-0.12.3/bowtie-build  -C  -f  genome.fa  index/bowtie_c  &
./shellscript/bowtie-0.12.3/bowtie  -p 4  -C  index/bowtie_c  SRR1449908_clean.fastq  -S  SRR1449908.sam  2>>log/bowtie_log.txt  &

五、 fastx_toolkit

(1) 去接头

fastx_clipper  [-h] [-a ADAPTER] [-D] [-l N] [-n] [-d N] [-c] [-C] [-o] [-v] [-z] [-i INFILE] [-o OUTFILE] 
fastx_clipper  -i SRR620204.1.fastq  -o SRR620204.clipper.fastq  -Q 33 

[-a ADAPTER]:接头序列(默认为CCTTAAGG)
[-l N]:忽略那些碱基数目少于N的reads,默认为5
[-M N]:要求最小能匹配到接头的长度N,如果和接头匹配的长度小于N不修剪
[-i INFILE]:输入文件,不支持压缩格式的输入文件,不允许序列中存在N碱基,这样的序列会自动去除
[-o OUTFILE]:输出文件
[-Q]:illumina测序需要加上-Q 33,默认情况下认为fastq文件的碱基编码格式为phred64
[-z]:压缩输出
[-d N]:保留接头序列后的N个碱基,默认-d 0
[-c]:放弃那些没有接头的序列
[-C]:只保留没有接头的序列
[-k]:报告只有接头的序列
[-n]:保留有N多序列,默认不保留
[-v]:详细报告序列编号
[-D]:输出调试结果

(2) 去除低质量reads

fastq_quality_filter  [-h] [-v] [-q N] [-p N] [-z] [-i INFILE] [-o OUTFILE] 
fastq_quality_filter  -q 20  -p 80  -Q 33  -i SRR306394.fastq  -o SRR306394_filtered.fastq 
#要求一条reads中最少有80%以上的碱基质量值达到Q20才作保留

[-q N]:最小的需要留下的质量值
[-p N]:每个reads中最少有百分之多少的碱基需要有-q的质量值
[-Q]:illumina测序需要加上-Q 33
[-z]:压缩输出
[-v]:详细报告序列编号,如果使用了-o则报告会直接在STDOUT,如果没有则输入到STDERR

(3) FASTQ-to-FASTA

fastq_to_fasta  [-h] [-r] [-n] [-v] [-z] [-i INFILE] [-o OUTFILE] 

[-h]:This helpful help screen.
[-r]:Rename sequence identifiers to numbers.
[-n]:Keep sequences with unknown (N) nucleotides. Default is to discard such sequences.
[-v]:Verbose - report number of sequences.
If [-o] is specified, report will be printed to STDOUT.
If [-o] is not specified (and output goes to STDOUT), report will be printed to STDERR.
[-z]:Compress output with GZIP.
[-i INFILE]:FASTA/Q input file. default is STDIN.
[-o OUTFILE]:FASTA output file. default is STDOUT.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342

推荐阅读更多精彩内容