生信軟件工具-fastp


fastp

注意:軟件工具一般會定期進行迭代更新,如果使用出現問題,請查看官方文檔。

fastp是一款數據質控過濾軟件,作者是陳實富,來自深圳海普洛斯公司。他們將這款工具開源免費使用,這一點是非常值得稱贊的。其實國內很多測序公司都有自己開發的數據處理程序,不過很多都在內部使用。

1、fastp可以實現處理數據的一次性處理,包括過濾低質量,過濾adapter,截取reads,split分割大文件等操作

2、支持長reads,也就是不僅僅適用與illumina測序平台,還可以處理Pacbio和Ion torrent的測序數據

3、直接輸出質控和統計報告,包括json格式和html格式;

4、使用c++寫的,執行效率非常高;

  1. fastp官方github
  2. 下載安裝
    ## conda: 但可能不是最新版本
    conda install -c bioconda fastp
    
    ## 編譯好的二進制版本,只適用於Linux
    wget http://opengene.org/fastp/fastp
    chmod a+x ./fastp
    
    ## 源碼安裝
    # get source (you can also use browser to download from master or releases)
    git clone https://github.com/OpenGene/fastp.git
    # build
    cd fastp
    make
    # Install
    make install
    
  3. 使用方法
    ## 單末端測序數據,非壓縮格式
    fastp -i in.fq -o out.fq
    
    ## 雙末端測序數據,gzip壓縮格式
    fastp -i in.R1.fq.gz -I in.R2.fq.gz -o out.R1.fq.gz -O out.R2.fq.gz
    
    ## 使用案例: 
    fastp -i reads.1.fq.gz -I reads.2.fq.gz -o clean.1.fq.gz -O clean.2.fq.gz -z 4 -q 20 -u 30 -n 
    
    默認情況下,HTML格式報告保存在fastp.html,可以通過-h參數指定;JSON格式報告保存在fastp.json,可以通過-j參數指定
  4. 主要選項
    ## I/O 相關
    -i, --in1    輸入read1文件名  
    -o, --out1   輸出read1文件名
    -I, --in2    輸入read2文件名  
    -O, --out2   輸出read2文件名,軟件默認是根據擴展名識別壓縮文件,所以輸出文件需要加上*.gz擴展名;  
    -6, --phred64  指定質量體系是phred64。目前主流測序數據都采用phred33,如果從NCBI下載以前hiseq 2000以及之前的數據,可能是Phred 64質量體系。  
    -z, --compression 輸出壓縮格式。給定一個數字1-9,調整壓縮比率和效率的平衡;  
    
    ## adapter相關選項
    -A 關閉adapter trimming,默認軟件會切出adapter,如果設置-A,則關閉這個功能;  
    -a 給定一個adapter序列文件;
    
    ## 全局裁剪選項
    -f, --trim_front1  裁剪read1前多少個鹼基,默認0;
    -F, --trim_front2  裁剪read2前多少個鹼基,默認0,如果沒有指定,將保持與read1相同設置;
    -t, --trim_tail1   裁剪read1末尾多少個鹼基,默認0;
    -T, --trim_tail2   裁剪read2末尾多少個鹼基,默認0,如果沒有指定,將保持與read1相同設置;
    -b, --max_len1     如果read1比max_len1長,就從末尾截取一段使read1與max_len1等長,默認0,代表沒有限制;
    -B, --max_len2     如果read2比max_len2長,就從末尾截取一段使read2與max_len2等長,默認0,代表沒有限制,如果沒有指定,就保持與read1相同設置;
    
    ## polyG尾裁剪,針對NextSeq/NovaSeq數據
    -g, --trim_poly_g  截取polyG尾,對於Illumina NextSeq/NovaSeq測序數據時默認自動操作的;
        --poly_g_min_len 檢測read末尾的polyG的長度,默認10;
    -G, --disable_trim_poly_g 取消-g的功能;
    
    ## polyX tail trimming
    -x, --trim_poly_x  截取3'末端polyX
        --poly_x_min_len    檢測read末尾的polyX的長度,默認10;
    
    ## 通過質量值對每條read進行裁剪
    -5, --cut_front  從read的5'端至末尾移動窗口,去除窗口中平均質量值小於'<'閾值的鹼基;
    -3, --cut_tail   從read的3'端值至開頭移動窗口,去除窗口中平均質量值小於'<'閾值的鹼基;
    -r, --cut_right  從read的開頭到末尾移動窗口,如果某一窗口的平均質量值小於閾值,去除窗口中的鹼基及其右側部分,並停止;
    -W, --cut_window_size  滑動窗口過濾,這個類似於計算kmer,1~1000, 默認是4個鹼基;
    -M -W選擇的窗口中,鹼基平均質量值,范圍1~36,默認是Q20,如果這個區域窗口平均低於20,則認為是一個低質量區域,處理掉;
    
    ## 質量過濾選項
    -Q 控制是否去除低質量,默認自動去除,設置-Q關閉;
    -q 設置低質量的標准,默認是15,也就是質量值小於15認為是低質量鹼基,一般我們設置20,常說的Q20;
    -u 低質量鹼基所占百分比,並不是包含低質量鹼基就把一條reads丟掉,而是設置一定的比例,默認40代表40%,也就是150bpreads,包含60個以上低質量的鹼基就丟掉,只要有一條reads不滿足條件就成對丟掉;
    -n 過濾N鹼基過多的reads,如果N鹼基含量大於n,這條read/pair將被舍棄,默認5;
    
    ## 長度過濾選項
    -L 關閉reads長度過濾選項;
    -l 接一個長度值,小於這個長度reads被丟掉,默認是15,這個在處理非illumina測序數據時很有用。
    
    ## 低復雜度過濾
    -y, --low_complexity_filter    使用低復雜度過濾,這里低復雜度的定義是與其下一個鹼基不同的鹼基比例(base[i] != base[i+1]).
    -Y, --complexity_threshold    低復雜度的閾值(0~100),默認30;
    
    ## 根據indexes過濾reads--刪除可能的污染
    --filter_by_index1               specify a file contains a list of barcodes of index1 to be filtered out, one barcode per line (string [=])
    --filter_by_index2               specify a file contains a list of barcodes of index2 to be filtered out, one barcode per line (string [=])
    --filter_by_index_threshold      the allowed difference of index barcode for index filtering, default 0 means completely identical. (int [=0])
    
    ## base correction by overlap analysis options
    -c 是對overlap的區域進行糾錯,所以只適用於pairend reads。
    
    ## UMI processing 分子標簽處理
    -U, --umi                        enable unique molecular identifier (UMI) preprocessing
      --umi_loc                      specify the location of UMI, can be (index1/index2/read1/read2/per_index/per_read, default is none (string [=])
      --umi_len                      if the UMI is in read1/read2, its length should be provided (int [=0])
      --umi_prefix                   if specified, an underline will be used to connect prefix and UMI (i.e. prefix=UMI, UMI=AATTCG, final=UMI_AATTCG). No prefix by default (string [=])
      --umi_skip                       if the UMI is in read1/read2, fastp can skip several bases following UMI, default is 0 (int [=0])
    
    # overrepresented sequence analysis
    -p, --overrepresentation_analysis    enable overrepresented sequence analysis.
    -P, --overrepresentation_sampling    One in (--overrepresentation_sampling) reads will be computed for overrepresentation analysis (1~10000), smaller is slower, default is 20. (int [=20])
    
    # reporting options
    -j, --json        輸出json格式報告文件名(string [=fastp.json])
    -h, --html        輸出html 格式報告文件名,可以用瀏覽器直接查看(string [=fastp.html])
    -R, --report_title                 should be quoted with ' or ", default is "fastp report" (string [=fastp report])
    
    # threading options
    -w, --thread     使用線程數,默認是2(int [=2])
    
    # 控制split選項,有時候單條reads文件太大,可以分割為多份分別比對,在合並bam結果,這樣可以提高效率。
    -s, --split      切割數目(2~999),默認是0,不分割
    -S, --split_by_lines  split output by limiting lines of each file with this option(>=1000), a sequential number prefix will be added to output name ( 0001.out.fq, 0002.out.fq...), disabled by default (long [=0])
    -d, --split_prefix_digits    輸出前綴位數,默認是4,0001,0002這種命名,如果設置為3,就是001,002這種;
    
    # help
    -?, --help       輸出幫助信息
    
    
  5. 基本功能簡介
    • 過濾
      fastp可以對低質量序列,較多N的序列,該功能默認是啟用的,但可以使用-Q參數關閉。使用-q參數來指定合格的phred質量值,比如-q 15表示質量值大於等於Q15的即為合格,然后使用-u參數來指定最多可以有多少百分比的質量不合格鹼基。比如-q 15 -u 40表示一個read最多只能有40%的鹼基的質量值低於Q15,否則會被扔掉。使用-n可以限定一個read中最多能有多少個N。
      fastp還默認啟用了read長度過濾,但可以使用-L參數關閉。使用-l參數指定最低要求一個read有多長,比如-l 30表示低於30個鹼基的read會被扔掉。這個功能可以用於實現常用的discard模式,以保證所有輸出的序列都一樣長。
      在fastp的HTML報告中,最頭上的Summary表格很清楚地顯示了過濾的統計信息,
    • 接頭處理
      接頭(adapter)污染的處理是FASTQ文件預處理中很重要的一步。fastp默認啟用了接頭處理,但是可以使用-A命令來關掉。fastp可以自動化地查找接頭序列並進行剪裁,也就是說你可以不輸入任何的接頭序列,fastp全自動搞定了!對於SE數據,你還是可以-a參數來輸入你的接頭,而對於PE數據則完全沒有必要,fastp基於PE數據的overlap分析可以更准確地查找接頭,去得更干凈,而且對於一些接頭本身就有鹼基不匹配情況處理得更好。fastp對於接頭去除會有一個匯總的報告。
    • 滑窗質量剪裁
      很多時候,一個read的低質量序列都是集中在read的末端,也有少部分是在read的開頭。fastp支持像Trimmomatic那樣對滑動窗口中的鹼基計算平均質量值,然后將不符合的滑窗直接剪裁掉。使用-5參數開啟在5’端,也就是read的開頭的剪裁,使用-3參數開啟在3’端,也就是read的末尾的剪裁。使用-W參數指定滑動窗大小,默認是4,使用-M參數指定要求的平均質量值,默認是20,也就是Q20。
    • PE數據的鹼基校正
      fastp支持對PE數據的每一對read進行分析,查找它們的overlap區間,然后對於overlap區間中不一致的鹼基,如果發現其中一個質量非常高,而另一個非常低,則可以將非常低質量的鹼基改為相應的非常高質量值的鹼基值。該校正功能默認沒有開啟使用-c參數可以啟用,對於一些對噪聲容忍度低的應用,比如液體活檢,建議開啟。
    • 全局剪裁
      fastp可以對所有read在頭部和尾部進行統一剪裁,該功能在去除一些測序質量不好的cycle比較有用,比如151*2的PE測序中,最后一個cycle通常質量是非常低的,需要剪裁掉。使用-f和-t分別指定read1的頭部和尾部的剪裁,使用-F和-T分別指定read2的頭部和尾部的剪裁。
    • polyG剪裁
      對於兩色發光法的Illumina設備(NextSeq /NovaSeq),因為在沒有光信號情況下base calling的結果會返回G,所以在序列的尾端可能會出現較多的polyG,需要被去除。fastp會自動化地識別NextSeq / NovaSeq的數據,然后進行polyG識別和剪裁。如果你想強制開啟該功能,可以指定-g參數,如果想強制關閉該功能,則可以指定-G參數。
    • 分子標簽UMI處理
      UMI在處理ctDNA類似的超低頻突變檢測應用中是十分有用的,為了更好地對帶UMI的FASTQ文件進行預處理,fastp也很好地支持了UMI預處理功能。該功能默認沒有啟用,需要使用-U參數開啟,另外需要使用--umi_loc來指定UMI所在的位置,它可以是(index1、 index2、 read1、 read2、 per_index、 per_read )中的一種,分別表示UMI是在index位置上,還是在插入片段中。如果指定了是在插入序列中,還需要使用--umi_len參數來指定UMI所占的鹼基長度。
    • 輸出文件切分
      很多時候我們需要對輸出的FASTQ進行切分,分成大小均勻的多個文件,這樣可以使用比對軟件並行地比對,提高並行處理的速度。fastp軟件也提供了相應的功能,並且支持了兩種模式,分別是使用參數-s指定切分后文件的個數,或者使用-S參數指定每個切分后文件的行數。
  6. 質控報告解讀
    fastp的報告在單一文件中同時包含了過濾前和過濾后的統計結果,如果是PE數據,則同時包含了read1和read2的統計結果。fastp會生成HTML的報告和JSON格式的報告。HTML報告的默認文件名是fastp.html,但是可以通過-h參數修改,JSON報告的默認文件名是fastp.json,但是可以通過-j參數修改。而且fastp報告還有一個標題,默認是fastp report,這個也可以通過-R參數修改為你想要的標題。JSON格式的報告是優化過的,人機皆可讀,適合進階的用戶使用程序解析,而這里我們重點關注HTML格式的報告。
    • 質量分布曲線圖
      我們第一關注的當然是質量,所以fastp提供了質量分布曲線,即每一個cycle的平均質量值,而且fastp同時提供了A/T/C/G四種不同鹼基的平均質量,以及總的平均質量圖,從圖中我們可以看到,一共有5條曲線,分別是A/T/C/G和mean。而且HTML報告中的每一個項目和分項目都是可以點擊進行隱藏和展開的。
    • 鹼基含量分布曲線
      和質量分布曲線類似,鹼基含量分布曲線也是按照每一個cycle來的,顯示了每一個位置的鹼基含量。從圖中可以看到,fastp同時顯示了A/T/C/G/N/GC的每一個位置的比例和總的比例。而且如果你覺得頭部那里比較亂看不清的話,可以用鼠標拉一個框,它就放大了。
    • KMER統計表格
      fastp對5個鹼基長度的所有組合的出現次數進行了統計,然后把它放在了一張表格中,表格的每一個元素為深背景白字,背景越深,則表示重復次數越多。這樣,一眼望去,就可以發現有哪一些異常的信息。比如,從KMER表格中,我們可以發現,GGGGG的顏色特別深,從鼠標移上去之后顯示的信息中我們可以發現它的出現次數是平均次數的12.8倍,這是不正常的,因為GGGGG的正常倍數應該在1倍左右。幸好我們有fastp,它可以過濾掉這種polyG,讓數值較多地回歸正常。
    • 過表達序列(overrepresented sequence)
      fastp提供了overrepresetned sequence的分析,而且不但提供了這些overrepresented sequence的序列個數和占比,還提供了他們在測序cycles中的分布情況,這有利於分析各種問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM