NGS 數(shù)據(jù)質(zhì)控軟件—fastp


陳實富博士編寫的 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.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市唯竹,隨后出現(xiàn)的幾起案子乐导,更是在濱河造成了極大的恐慌,老刑警劉巖浸颓,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件物臂,死亡現(xiàn)場離奇詭異券册,居然都是意外死亡俭厚,警方通過查閱死者的電腦和手機可霎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門扫步,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人伙菊,你說我怎么就攤上這事姜钳√偈鳎” “怎么了谢鹊?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵算吩,是天一觀的道長。 經(jīng)常有香客問我佃扼,道長偎巢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任兼耀,我火速辦了婚禮艘狭,結(jié)果婚禮上挎扰,老公的妹妹穿的比我還像新娘。我一直安慰自己巢音,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布尽超。 她就那樣靜靜地躺著官撼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪似谁。 梳的紋絲不亂的頭發(fā)上傲绣,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音巩踏,去河邊找鬼秃诵。 笑死,一個胖子當著我的面吹牛塞琼,可吹牛的內(nèi)容都是我干的菠净。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼彪杉,長吁一口氣:“原來是場噩夢啊……” “哼毅往!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起派近,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤攀唯,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渴丸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體侯嘀,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年谱轨,在試婚紗的時候發(fā)現(xiàn)自己被綠了戒幔。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡碟嘴,死狀恐怖溪食,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情娜扇,我是刑警寧澤错沃,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站雀瓢,受9級特大地震影響枢析,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刃麸,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一醒叁、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦把沼、人聲如沸啊易。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽租谈。三九已至,卻和暖如春捆愁,著一層夾襖步出監(jiān)牢的瞬間割去,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工昼丑, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留呻逆,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓菩帝,卻偏偏與公主長得像咖城,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子胁附,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容