1. 程式人生 > 其它 >資料清洗—【trim_galore】那些事

資料清洗—【trim_galore】那些事

Trim Galore是對FastQC和cutadapt的包裝。適用於所有高通量測序,包括RRBS(Reduced Representation Bisulfite-Seq )、 Illumina、Nextera和smallRNA測序平臺的雙端和單端資料。主要功能包括兩步:第一步首先去除低質量鹼基,然後去除3' 末端的adapter, 如果沒有指定具體的adapter,程式會自動檢測前1 million的序列,然後對比前12-13bp的序列是否符合以下型別的adapter:

1 Illumina: AGATCGGAAGAGC
2 Small RNA: TGGAATTCTCGG
3 Nextera: CTGTCTCTTATA

一、部分引數說明

1 #–q | ––quality <INT>
2     除了去除接頭,同時修剪3‘端低質量的鹼基;預設的phred分數為20;對不同的樣本處理方式不同;
3     RRBS樣本:先修剪3‘末端低質量鹼基,隨後再去除接頭;
4     其他型別樣本:低質量鹼基和接頭一次性處理;
1 #––phred33
2    適用於IlLumina 1.9+:指導cutadapt使用ASCII+33質量分數作為pared分數,預設使用。
3 #--phred64
4    適用於Illumina 1.5: 指導cutadapt使用ASCII+64質量分數作為pared分數
1 #––fastqc
2     當資料修剪完成以後以預設引數執行fastqc再次處理fastq檔案
3 #––fastqc_args ”<ARGS>”
4     為fastqc執行提供額外的引數,如果引數多於一個,必須以”arg1 arg2…”的格式。如:––fastqc_args ”--nogroup --outdir /home ” 
 1 #-a | --adapter <STRING>
 2    指定要修剪的接頭序列;若沒有特別指定,trim_galore將自動檢測是否為以下的種類:
 3    Illumina通用
 4    Nextera轉座酶
5 Illumina小RNA接頭序列 6 如果在指定的第一個檔案的前100萬個序列中沒有檢測到接頭或者在一些接頭序列之間存在聯絡,trim_galore會預設使用”--illumina”(如果illuminate adapter是其中的一個選項,否則會預設使用”--nextera”) 7 8 #-a2 | --adapter2 <STRING> 9 為雙端測序的第二個讀長設定要去除的接頭序列;該選項依賴於”--paired”;如果要清洗的文庫是smallRNA,則a2會自動使用Illumina系統的small RNA 5’接頭(GATCGTCGGACT) 10 11 #--illumina 12 使用illumina通用接頭的前13bp作為要去除的接頭序列(AGATCGGAAGAGC),而不會預設去檢測接頭序列的型別 13 14 #--nextera 15 使用Nextera接頭的前12bp作為要去除的接頭序列(CTGTCTCTTATA),而不會預設去檢測接頭序列的型別 16 17 #--small_rna 18 使用illumina small RNA 3’接頭的前12bp作為要去除的接頭序列(TGGAATTCTCGG),而不會預設去檢測接頭序列的型別。此選項會預設將”--length”值設定為18,如果 smallRNA 文庫是雙末端的,則 a2 將自動設定為 Illumina small RNA 5' 接頭 (GATCGTCGGACT),除非設定-a2的值
 1 #-- consider_already_trimmed <INT>
 2    設定一個閾值,在接頭自動檢測的過程中,若沒有接頭的序列序列個數達到閾值,則去接頭的程式不會繼續執行,但其他質控會繼續執行
 3 
 4 #--max_length <INT>
 5    修剪後丟棄長於 <INT> bp 的read。 這僅建議用於 smallRNA 測序以去除non-small RNA 序列。
 6 
 7 #--stringency <INT>
 8     接頭序列最小配對鹼基數:簡單來說就是最多能允許末端殘留多少個接頭序列的鹼基,預設值為極端值1;該引數與trimmomatic中ILLUMINACLIP <minAdapterLength>含義相同。
 9 
10 #-e <ERROR RATE>
11    允許的最大錯誤率,預設是0.1;即ERROR rate大於10%的read 會被捨棄,如果新增來--paired引數則會捨棄一對reads
12 
13 #--gzip
14    使用gzip格式壓縮輸出檔案,如果輸入檔案是經過gzip壓縮過的,則輸出檔案會預設使用此格式進行壓縮
15 
16 #--dont_gzip
17    此選項會重寫” --gzip”,輸出檔案不會使用gzip格式進行壓縮。
18 
19 #--length <INT>
20    設定長度閾值,若read通過質控清洗或去接頭後長度小於此閾值,則會被剔除。
21    對於雙端結果,一對reads中若一個read因為該原因被拋棄,則對應的另一個read也拋棄。不會被輸出到雙端結果檔案。
1 #--paired
2    對於雙端結果,一對reads中若一個read因為質量或其他原因被拋棄,則對應的另一個read也拋棄,但若使用--retain_unpaired選項可以保留

二、利用trim_galore對測序資料進行清洗

1.對資料名預處理

1 ls fastq | grep "_1" > gz1
2 ls fastq | grep "_2" > gz2
3 paste gz1 gz2>config_file
4 cat config_file

2.資料處理

 1 #!/bin/bash
 2 cat config_file | while read id
 3 do
 4     sample_dir="./fastq"
 5     output_dir="./fastq_clean"
 6     arr=($id)
 7     fq1=${arr[0]}
 8     fq2=${arr[1]}
 9     sample_dir1="$sample_dir/$fq1"
10     sample_dir2="$sample_dir/$fq2"
11     #為防止結束終端時命令掛掉,可以用nohub防止掛起,因為現在使用學校超算中心,所以不用擔心該問題
12     trim_galore -q 25 --phred33 --length 36 -e 0.1 --stringency 3 --paired -o $output_dir $sample_dir1 $sample_dir2
13 done