陳實富博士編寫的 fastp 軟件能實現(xiàn) FASTQ 數(shù)據(jù)自動化過濾青责、剪裁、錯誤校正等功能,因其多樣的功能和高效的速度受到了許多用戶的歡迎沸枯,已成為 NGS 質(zhì)控領(lǐng)域不可或缺的軟件无宿。fastp 本身采用C++編寫的茵汰,代碼規(guī)范,我希望通過學習 fastp 文章增加對質(zhì)控及 C++ 源代碼的理解孽鸡。
1 摘要
NGS 原始下機數(shù)據(jù)為 FASTQ 格式蹂午,原始數(shù)據(jù)需要經(jīng)過QC和預(yù)處理步驟才能用于后續(xù)的分析。預(yù)處理步驟通常會使用不同的軟件分別進行QC彬碱、接頭去除豆胸、低質(zhì)量序列過濾等步驟。因為各處理軟件的功能比較單一巷疼,各步驟需要進行反復(fù)的 I/O 讀寫晚胡,而且這些工具本身采用Java/Python 等高級語言編寫運行效率較低。因此嚼沿,這篇文章開發(fā)了一種超快速的 FASTQ 預(yù)處理工具 fastp 估盘,在遍歷FASTQ 文件時可以同時完成QC、接頭去除骡尽、質(zhì)量過濾遣妥、低質(zhì)量reads修剪等步驟。fastp 軟件使用 C++ 語言開發(fā)攀细,支持多線程箫踩,它的速度要比功能單一的FASTQ處理軟件Trimmomatic 和 Cutadapt 軟件快2-5倍,而且具有更多的功能谭贪。 文章的源代碼見:https://github.com/OpenGene/fastp.
2 引言
測序數(shù)據(jù)可能會存在接頭污染境钟、堿基偏倚、測序錯誤故河,這些因素會都影響下游的變異分析吱韭。例如,ctDNA測序常需要檢測超低頻的變異鱼的,而且ctDNA測序背景噪音較高理盆,測序數(shù)據(jù)的質(zhì)量控制和預(yù)處理步驟對低頻突變的檢出、減少假陽性和假陰性非常關(guān)鍵凑阶。典型的生信處理步驟是用FASTQC軟件進行質(zhì)控猿规、Cutadapt 軟件去除接頭、Trimmomatic 軟件進行read 裁剪和過濾宙橱。這些驟需要進行反復(fù)的 I/O 讀寫姨俩,目前沒有一個軟件能有效實現(xiàn)所有的功能蘸拔。這篇文章介紹的 fastp 軟件可以對FASTQ文件快速實現(xiàn) QC、接頭去除环葵、質(zhì)量過濾调窍、堿基校正等步驟,包括了FASTQC + Cutadapt + Trimmomatic 的大部分功能张遭,同時 fastp 軟件還具有 UMI 預(yù)處理邓萨、polyG錯誤去除、分隔輸出等功能菊卷。
3 材料與方法
3.1 整體設(shè)計
fastp 采用的是多線程處理方式缔恳。從 FASTQ 文件加載的 reads 會被分成1000個包,每個包會分配至一個線程進行處理洁闰,在處理過程中會記錄各種統(tǒng)計指標歉甚,包括堿基質(zhì)量、堿基比例扑眉、接頭去除結(jié)果纸泄、k-mer 統(tǒng)計結(jié)果等指標。當所有reads都處理完成后襟雷,所有包的統(tǒng)計結(jié)果最終會進行合并統(tǒng)計刃滓。fastp 最終會輸出過濾前和過濾后的統(tǒng)計數(shù)據(jù),方便使用者進行對比耸弄。fastp 同時支持單端(SE)和雙端(PE)測序數(shù)據(jù),SE 和 PE 數(shù)據(jù)的處理過程在很多步驟都是一樣的卓缰,PE 數(shù)據(jù)處理有一些額外的步驟计呈,比如重疊序列分析等。PE 數(shù)據(jù)具體處理過程詳見圖1征唬。圖1 a 是整體的處理過程捌显,圖1b 是每個包內(nèi)reads的詳細處理步驟。
3.2 接頭去除
fastp 程序可以自動檢測并去除接頭序列总寒,針對 SE 和 PE 測序數(shù)據(jù)會采用不同的測序算法進行接頭的去除扶歪。
對于單端測序數(shù)據(jù),會采用reads 末端高頻序列組裝的方法檢測接頭序列摄闸。接頭序列檢測算法是基于兩個假設(shè):第一善镰,一組測序數(shù)據(jù)中只存在一種接頭序列;第二年枕,接頭序列只存在于reads的末尾炫欺;這兩個假設(shè)適用于一系列 Illumina 測序儀。在檢測接頭序列時熏兄,首先品洛,選取前 N 條(N=1M) reads 末尾的 k-mer(k=10)序列树姨,并統(tǒng)計各 k-mer 出現(xiàn)的頻率。如果 k-mer 序列出現(xiàn)的頻率較高桥状,為接頭序列的種子帽揪。然后,對 k-mer 序列的頻次由高到底進行排序辅斟,采用樹型算法擴展接頭種子序列转晰,得到完整的接頭序列。算法1中列出了樹型算法的偽代碼砾肺,整體思路就是對每個種子序列進行遍歷挽霉,獲取種子序列的前、后的序列变汪,對前侠坎、后序列的堿基頻率逐個進行統(tǒng)計,如果含有占支配地位的堿基序列(>90%)則不斷延伸種子序列裙盾。圖2列出了向前实胸、向后延伸種子序列的過程。
對于雙端測序數(shù)據(jù)番官,會根據(jù)重疊區(qū)域及配對reads的偏移量來確定確定接頭序列(如下截圖17所示庐完,來自陳實富博士論文)。當被測序的DNA模板的長度小于測序的周期的時候徘熔,就會在read的末尾處到3‘端產(chǎn)生接頭门躯。當對配對 reads 進行overlap分析時,當有接頭序列存在酷师,Read2(read2已經(jīng)進行反向互補操作)相對于Read1會往左偏移的長度就是接頭的長度讶凉。依賴于接頭序列匹配的去除接頭工具通常需要 3bp 堿基的限制,不同去除 reads 末端1-2bp的接頭序列山孔。與Cutadapt懂讯、Trimmomatic 等軟件相比,fastp 一大優(yōu)勢是可以檢測去除 reads 末尾幾 bp 的接頭序列台颠。
盡管 fastp 可以自動檢測接頭序列褐望,它也提供了直接輸入已知接頭序列,采用序列匹配進行去除接頭的功能串前。對于單端測序數(shù)據(jù)瘫里,輸入已知接頭序列后會就不會采用自動檢測接頭的功能。對于雙端測序數(shù)據(jù)酪呻,只有沒有檢測到合格的overlap序列時减宣,才會采用序列匹配方法進行接頭去除。
3.3 堿基校正
對于配對數(shù)據(jù)玩荠,如果一對 reads 能檢測到重疊區(qū)域漆腌,那么重疊區(qū)域的堿基就可以相互比較校正贼邓。理論上如果重疊區(qū)域的堿基質(zhì)量足夠高,那么它們通常能完全的互補配對闷尿。但是塑径,如果重疊區(qū)域的堿基出現(xiàn)了錯配,fastp 軟件可以對不匹配堿基進行校正填具,通常采用高質(zhì)量值的堿基(>Q30)校正低質(zhì)量的堿基(<Q15)统舀。為了避免錯誤校正,fastp 也設(shè)定了閾值T (T=5), 只有堿基錯配低于閾值時才進行校正劳景。
3.4 滑動窗質(zhì)量裁剪
為了提高 read 的質(zhì)量誉简,fastp 提供了采用滑動窗去除 read 頭尾低質(zhì)量堿基的功能。程序會統(tǒng)計滑動窗范圍內(nèi)的平均堿基質(zhì)量值盟广,如果低于一定的閾值闷串,會將其標記為低質(zhì)量并進行裁剪。
3.5 polyG 和 polyX 末尾裁剪
PolyG尾是 Illumina NextSeq 和 NovaSeq 測序平臺(兩色化學發(fā)光)常見的現(xiàn)象筋量。這些測序平臺采用兩種顏色(紅光和綠光)來代表 4 種堿基:只檢測到紅光信號時代表堿基 C 烹吵;只檢測到綠光信號時代表堿基 T;同時檢測到紅光和綠光信號時代表堿基 A桨武;沒有檢測到任何信號時代表堿基 G肋拔;由于Illumina 平臺采用邊合成邊測序策略,DNA 的測序信號在測序循環(huán)后期會逐漸變?nèi)跹剿帷T?read 的末尾凉蜂,T 和 C 的信號會錯誤的當做 G,這就導致了reads 尾部的 polyG 現(xiàn)象性誉。
fastp 軟件可以檢測并裁剪掉 read 末尾的 ployG跃惫。軟件會檢測下機數(shù)據(jù) flowcell 的標識符,如果確定數(shù)據(jù)來自于Illumina 的NextSeq 和 NovaSeq 測序儀艾栋,就會自動進行polyG 尾的裁剪。ployG 尾可以導致嚴重的堿基分離現(xiàn)象蛉顽,圖片3 顯示了ployG 尾去除前后堿基含量的變化蝗砾。fastp 也可以進行 polyX 末尾的去除,去除3' 端末尾連續(xù)的低復(fù)雜度堿基携冤。
3.6 UMI預(yù)處理
UMI 技術(shù)在ctDNA檢測中應(yīng)用廣泛悼粮,它可以在高深度測中提高低頻突變檢測的靈敏度。UMI 方法可以去除重復(fù)獲得高質(zhì)量 consensus 序列曾棕。對于Illumina 平臺扣猫,UMI 可以被整合入樣品的 index 序列或者插入的DNA序列中。在處理過程中翘地,UMI序列應(yīng)該被轉(zhuǎn)移到read的名稱中申尤,它可以在比對工具BWA 或 Bowite 的輸出結(jié)果中保留癌幕。
目前有許多工具支持處理FASTQ數(shù)據(jù)中的UMI,例如昧穿,UMI-tools 和 umis 勺远。但是,這些工具需要單獨執(zhí)行时鸵,不夠高效胶逢。fastp 也支持UMI 預(yù)處理,它的運行速度大約是其軟件的3倍饰潜。
3.7 分隔輸出
并行計算式 NGS 處理的新趨勢初坠,特別是這個云計算的時代。原始下機的FASTQ序可以被分隔成多個小的文件彭雾,分別進行后續(xù)的比對操作碟刺,生成小的BAM文件,再進行合并成最終的BAM文件冠跷,進行后續(xù)的變異檢測南誊。fastp 支持兩種分隔模式:按照行分隔,按照文件大小進行分隔蜜托。
3.8 重復(fù)率估計
重復(fù)率水平對于評估測序文庫的多樣性非常重要抄囚。FASTQC 軟件評估重復(fù)率時會選取前100,000條記錄, 每條 read 的前 50bp 序列會被用于評估重復(fù)性評估橄务。FASTQC 采用的方法有一個主要的缺點幔托,它不支持雙端重復(fù)率分析。它只能反應(yīng)read1 和 read2 各自的重復(fù)率蜂挪,不能反應(yīng)整個DNA插入序列的重復(fù)率水平重挑。這樣就會導致重復(fù)率水平會被過高估計,因為對于長度不同的DNA插入片段來說棠涮,在高深度測序條件下谬哀,出現(xiàn)相同的前端序列是非常普通的現(xiàn)象。
fastp 同時支持雙端和單端重復(fù)率評估严肪。在一個測序深度10000X ctDNA 數(shù)據(jù)中史煎,F(xiàn)ASTQC給出的read1 和read2 的重復(fù)率分別是79.99% 和 77.75%,但 fastp 軟件給出的雙端重復(fù)率僅為16.22%驳糯。當fastp采用單端模式進行評估時篇梭,read1 和read2 的重復(fù)率分別為79.23% 和 79.06%,與FASTQC的結(jié)果接近酝枢,可見采用單端模式進行評估時恬偷,重復(fù)率被顯著高估了。
3.9 過量序列分析
如果有某個序列在FASTQ中大量出現(xiàn)帘睦,就叫做overrepresented袍患。overrepresented 序列的出現(xiàn)多是因為人工合成序列坦康,例如 PCR 造成的過度重復(fù),polyG 尾和接頭污染协怒。FASTQC 提供了過量序列分析模塊涝焙,根據(jù)作者的介紹,F(xiàn)ASTQC 只是評估前1M 的reads孕暇。但是仑撞,如果想獲得 FASTQ 數(shù)據(jù)中準確的過量序列分布信息,只評估前1M reads 會不可靠妖滔,因為Illumina FASTQ 前面的數(shù)據(jù)經(jīng)常來源于flowcells lanes 的邊緣隧哮,這些數(shù)據(jù)質(zhì)量一般較低。
fastp 采用了更均衡的reads 抽樣方法座舍,來消除抽樣誤差沮翔。fastp 設(shè)計了兩步法進行抽樣,第一步分析輸入FASTQ的前1.5 M base pairs 數(shù)據(jù)曲秉,得到出現(xiàn)頻率較高的序列列表采蚀;第二步對整個FASTQ文件進行采樣,統(tǒng)計每條序列出現(xiàn)的次數(shù)承二。最終榆鼠,報告出總體出現(xiàn)頻率較高的序列。如圖5所示亥鸠,fastp 除了報告 overrepresented 序列出現(xiàn)的頻率妆够,也記錄了序列在 reads 中出現(xiàn)的位置,這對于分析過量序列的形成很有幫助负蚊。
3.10 質(zhì)控結(jié)果和報告
fastp 提供過濾前數(shù)據(jù)和過濾后數(shù)據(jù)的統(tǒng)計結(jié)果神妹,有助于使用者對比過濾前后的特征。fastp 提供 JSON 和 HTML 格式的報告家妆。HTML 格式報告示例詳見 http://opengene.org/fastp/fastp.html
4 結(jié)果
這部分進行了多種實驗評估 fastp 軟件運行速度和質(zhì)量過濾的表現(xiàn)鸵荠。本部分選取了 FASTQC,Cutadapt,Trimmomaitc,SOAPnuke 和 AfterQC 軟件進行對比,最終結(jié)果顯示 fastp 的速度更快伤极,質(zhì)量過濾表現(xiàn)一致或更好腰鬼。
4.1 速度評估
文章利用中國臨床中心實驗室的 B17NCB1 數(shù)據(jù)集對 6 種軟件的運行速度進行了評估。 B17NCB1 數(shù)據(jù)集共9316 Mb塑荒,采用雙端測序。分別評估了一個線程下姜挺,PE 和 SE 模式的各軟件運行速度齿税。如表1 所示,fastp 軟件的速度最快炊豪,顯著優(yōu)于其他軟件凌箕,并且fastp 同時執(zhí)行了QC拧篮、數(shù)據(jù)過濾等多項操作。fastp 設(shè)計之初就是為了執(zhí)行多線程任務(wù)牵舱,在多線程條件下速度可以預(yù)見會更快串绩。由于所選的有些測試軟件不能執(zhí)行多線程任務(wù),沒有進行軟件多線程的對比芜壁。
4.2 質(zhì)量過濾評估
為了評估 fastp 與其他軟件(i.e. AfterQC, SOAPnuke, Trimmomatic礁凡,Cutadapt)接頭去除和低質(zhì)量裁剪的表現(xiàn),選用了Illumina NextSeq PE150(NS_PE150) 數(shù)據(jù)集進行測試慧妄。在這些工具種顷牌,只有 fastp 和 AfterQC 能利用 overlap 序列進行接頭的去除,其他工具需要輸入已知接頭序列進行去除塞淹。文章對各個軟件過濾接頭后的數(shù)據(jù)進行了評估窟蓝,在幾bp 容錯的條件下,搜索 33bp 接頭序列在過濾后數(shù)據(jù)中含有接頭堿基的潛在reads 數(shù)量饱普。結(jié)果如圖6 所示运挫,fastp 和 Trimmomatic 軟件的表現(xiàn)最好,fastp 在大于4bp 容錯時才有少量的可疑接reads套耕,而Cutadapt,SOAPnuke,AfterQC在大于4bp 容錯時會出現(xiàn)大量可疑接頭reads谁帕。
為了整體評估各軟件過濾后的表現(xiàn),文章將軟件過濾后的數(shù)據(jù)比對到了人參考基因組hg19上(比對方法為BWA-MEM),使用Samtools 軟件評估了比對結(jié)果箍铲。統(tǒng)計的比對指標為錯配堿基數(shù)目雇卷、clips 數(shù)目、不一致比對數(shù)颠猴。根據(jù)文章的觀點关划,未校正的測序錯誤會造成更多錯配,殘留的接頭序列會導致更多的 clips 和不一致比對翘瓮。如下表 2 所示贮折,fastp 軟件在比對之后,錯配堿基數(shù)目资盅,含有 clip 的reads數(shù)目调榄、單端reads 比對數(shù)量都是最低的。Trimmomatic, Cutadapt 及 SOAPnuke 軟件都是以接頭序列匹配為基礎(chǔ)進行接頭的去除呵扛,在接頭只有幾bp時每庆,不能有效的去除接頭,導致比對后 clip reads數(shù)目較高今穿。
4.3 UMI 評估
UMI 技術(shù)在腫瘤ctDNA 測序過程中廣泛使用缤灵。為了分析整合UMI的NGS數(shù)據(jù),在FASTQ預(yù)處理階段會將 UMI 從 reads 序列轉(zhuǎn)移至 reads 名稱中。文章使用 4Gb Illumina PE150 的FASTQ數(shù)據(jù)腮出,評估了fastp帖鸦,umis 和 UMI-tools 工具處理 UMI 的性能。如下表3 所示胚嘲,fastp 的速度是比 umis 快2.7 倍作儿,比 UMI-tools 快6.1倍。
4.4 下游數(shù)據(jù)分析評估
為了評估 fastp 軟件預(yù)處理過程對下游數(shù)據(jù)分析的影響馋劈,文章選擇了 NA12878 (SRR952827) 標準數(shù)據(jù)集評估了 fastp, Trimmomatic,Cutadapt 和 SOAPNuke 等軟件減少假陽變異的表現(xiàn)攻锰。首先使用各個軟件過濾原始FASTQ數(shù)據(jù),過濾后數(shù)據(jù)采用SpeedSeq 軟件進行變異分析侣滩。不在 NA12878 標準變異數(shù)據(jù)集中的變異被標記為假陽口注。采用 Trimmomatic,SOAPNuke, Cutadapt 和 fastp軟件過濾數(shù)據(jù)后的假陽個數(shù)分別為 7174,7040君珠,6942寝志,6708 。fastp 的假陽數(shù)最少策添,證明它可以提高下游變異檢測的特異性材部。
5 參考文獻
[1] Chen S , Zhou Y , Chen Y , et al. fastp : an ultra-fast all-in-one FASTQ preprocessor. 2018.