高通量測序數據下機后得到了fastq的raw_data,通常測序公司在將數據返還給客戶之前會做“clean”處理,即得到clean_data。然而,這些clean_data是否真的“clean”呢?
首先,我們應該做一下質控。如果質控不合格,就需要一些處理,比如去接頭、去除量的reads。
(1)去除測序數據中的接頭(用到的是fastx_toolkit里面的fastx_clipper工具):
Usage: fastx_clipper [-h] [-a ADAPTER] [-D] [-l N] [-n] [-d N] [-c] [-C] [-o] [-v] [-z] [-i INFILE] [-o OUTFILE] #去掉接頭序列
[-a ADAPTER] =接頭序列(默認為CCTTAAGG)
[-l N] = 忽略那些鹼基數目少於N的reads,默認為5
[-d N] = 保留接頭序列后的N個鹼基默認 -d 0
[-c] = 放棄那些沒有接頭的序列.
[-C] = 只保留沒有接頭的序列.
[-k] = 報告只有接頭的序列.
[-n] = 保留有N多序列,默認不保留
[-v] =詳細-報告序列編號
[-z] =壓縮輸出.
[-D] = 輸出調試結果.
[-M N] =要求最小能匹配到接頭的長度N,如果和接頭匹配的長度小於N不修剪
[-i INFILE] = 輸入文件
[-o OUTFILE] = 輸出文件
Example: fastx_clipper -a AGATCGGAAGAGCACACG -l 25 -d 0 -Q 33 -i SRR306394_1.fastq -o SRR306394_1_trimmed.fastq
(注:-l參數,即忽略那些鹼基數目少於N的reads。默認的是5,而對於tophat來說,如果reads長度小於20,就會發出警告。因此,考慮到充分利用這些測序數據同時不損失比對的特異性,這里-l參數,取值為25。-Q參數,對於illumina測序來說,這個參數也是必須要加的,因為illumina測序在給單個鹼基作質量打分的時候,加上了33,然后才轉成的ASC II, 因此在這里需要加 -Q 33. 否則就會報這樣的錯誤“fastx_clipper: Invalid quality score value (char '#' ord 35 quality value -29) on line 4.”)
(2)去除測序數據中的低質量reads(用到的是fastx_toolkit里面的fastq_quality_filter工具):
Usage:fastq_quality_filter [-h] [-v] [-q N] [-p N] [-z] [-i INFILE] [-o OUTFILE]過濾低質量序列
[-q N] = 最小的需要留下的質量值
[-p N] = 每個reads中最少有百分之多少的鹼基需要有-q的質量值
[-z] =壓縮輸出
[-v] =詳細-報告序列編號,如果使用了-o則報告會直接在STDOUT,如果沒有則輸入到STDERR
Example: fastq_quality_filter -q 20 -p 80 -Q 33 -i SRR306394_1.fastq -o SRR306394_1_filtered.fastq
(注:-q參數,即是指最小需要留下的質量值,這里需要保留Q20(99.99%)以上的,所以對應的是20。-p參數,即是指每個reads中最少有百分之多少的鹼基需要有-q的質量值,這里我們要求的是一條reads中最少有80%以上的鹼基質量值達到Q20我們才作保留,因此對應的是80. -Q參數,對於illumina測序來說,這個參數也是必須要加的,因為illumina測序在給單個鹼基作質量打分的時候,加上了33,然后才轉成的ASC II, 因此在這里需要加 -Q 33. 否則就會報這樣的錯誤“fastx_clipper: Invalid quality score value (char '#' ord 35 quality value -29) on line 4.”)
(注:如果在做fastq_quality_filter之后,QC結果仍然可以看到reads的尾部有低質量的reads,此時可以將-p參數調大,比如調至90或者99)。