Oxford Nanopore鹼基識別(basecalling)軟體效能大比拼

wangchuang2017發表於2020-10-05

Oxford Nanopore鹼基識別(basecalling)軟體效能大比拼

本論文除了評測了ONT開發的4個basecaller以及1個第三方的basecaller以外,還對不同方法的自訓練模型進行了較為系統的評估,是目前最詳細的對Nanopore鹼基識別軟體(basecaller)的橫向評測的研究,非常值得仔細閱讀。文章於今年2月在預印本線上期刊bioRxiv上發表,作者是澳大利亞Monash University的Ryan Wick。

研究背景

1. ONT識別鹼基的原理

  • 膜兩端存在電壓差。
  • 通過nanopore的單鏈DNA分子的核苷酸會產生不同的電阻。
  • 測量的電流訊號隨時間的變化可以識別對應的鹼基。

2. 其中的難點

  • ONT為單分子測序,因此噪音訊號和隨機序列對basecalling的準確性影響大。
  • 一次通過孔有多個鹼基(以R9.4為例大約5個鹼基),因此存在大量可能的狀態(45=1024)。
  • 由於鹼基修飾的存在,會導致情況更復雜(假設把5mC當作第5類鹼基,就會有55=3125種可能的狀態)。

3. 目前Nanopore basecaller的現狀

  • ONT公司和獨立的研究者都在開發basecalling方法。
  • 如今的basecaller都使用神經網路解決這個問題,需要使用真實資料訓練。因此basecaller的效果會受到訓練集的影響——是否有鹼基修飾、序列motif存在。

4. basecalling的準確性

  • basecalling準確性評估通常關注兩個方面:原始read水平的準確性和consensus(一致性序列)的準確性。
  • 其中兩者可能相關,也並不一定如此,這取決於錯誤是隨機錯誤還是系統性錯誤。
  • 通常我們更關注consensus的準確性,當然在使用低深度測序的應用中,read的準確性很重要。

5. 研究內容和目的

基於ONT的R9.4對多種basecalling軟體進行效能上的比較,並探索了模型訓練對basecalling準確性的影響。本研究可能對希望最大限度挖掘ONT測序訊號的研究者提供指導,以及幫助讀者決定是否有必要用新的軟體或自訓練模型重新對訊號資料進行re-basecalling。

研究方法

1. 受測的basecaller

包含4個ONT開發的basecaller(測試了所有相容R9.4的版本),以及一個第三方開發的:

  • Albacore:通用的basecaller,通過CPU運算,目前由於Guppy效能更優已停止開發。
  • Guppy:Albacore的繼任者,通過GPU提高了執行速度(包含最新的flip-flop)。
  • Scrappie:包含Scrappie events和Scrappie raw。“技術先驅”,總是嘗試使用新的方法,隨後加入到Albacore和Guppy中。
  • Flappie:最近替代了Scrappie,使用CTC(Connectionist temporal classification)識別鹼基
  • Chiron:第三方basecaller,相比ONT的basecaller使用了更深層的神經網路。
  • 其他不再開發的軟體排除在測試之外:Nanonet,DeepNano,basecRAWller。

2. 模型訓練

為研究訓練集對basecaller(這裡主要是對Guppy)效能的影響,使用50個基因組構建了針對Klebsiella pneumoniae(肺炎克雷伯氏菌)的訓練集——包括30個K. pneumoniae、10個Enterobacteriaceae(腸桿菌科)的其他物種,以及10個Proteobacteria(變形菌門)物種。使用ONT的神經網路訓練工具集Sloika進行訓練。Illumina reads用SKESA組裝contig。

流程如下:

  1. 原始ONT reads,在fast5水平(基於電訊號)進行trimming、丟棄短reads。
  2. 使用Albacore進行basecalling,再根據長度、比對illumina contig的完整性,sliding window的質量進行過濾。
  3. 多次針對“原始訊號對參考基因組比對”的質量進行過濾(參照Sloika的訓練流程)。
  4. 每個基因組選20條reads作為驗證集,剩下的作為神經網路的訓練集,使用Sloika訓練。

3. 用於評估basecaller的read資料集

  • DNA來源於K. pneumoniae,選該物種做評估的依據是高ONT reads產量、無質粒使得更易於組裝。
  • 物種與訓練資料為相同物種,但是lineage不同(isolate INF032)。
  • 資料為原始DNA,因此包含鹼基修飾。最主要型別為Dcm甲基化。
  • 除了ONT reads,還測了illumina reads用於混合組裝構建INF032的參考基因組(Unicycler)。
  • ONT reads通過拆barcode、Guppy basecalling、minimap2比對、長度篩選後選取的子集用於作為評估basecaller的資料集(後稱評估集)。
  • 準備了另外9個基因組的資料集作為附加資料集用於細緻評估不同版本的Guppy。

4. Read準確性以及consensus準確性評估

為了評估各basecaller的執行速度,basecalling在同一臺電腦上執行。

Read準確性評估方法:

  1. Read準確性評估通過minimap2比對到構建的INF032參考基因組,並計算“BLAST identity”,未比對上的記作0%。
  2. 將identity的中位數定義為每個basecaller的總體read準確性。

Consensus準確性評估方法:

  1. 使用Rebaler生成consensus基因組序列。
  2. 將consensus基因組序列打斷成10kb的片段,與上述ONT reads相同方法評估準確性。
  3. 使用NUCmer比對reference鑑定consensus序列的錯誤型別。如果在Dcm甲基化motif(CCAGG或CCTGG)中出現,就分類為“Dcm”;如果序列在≥3個連續鹼基的位置出現1個鹼基的增加或缺失則定義為“homopolymer insertion”或“homopolymer deletion”;其他的則對應分類為“insertion”、“deletion”、“substitution”。

5. 關於Polishing:

本研究主要關注於評估basecaller的效能,因此polishing在主題之外。但很多使用者做純Nanopore組裝後會用原始read訊號執行Nanopolish糾錯,所以引入了另一個問題:評估如果用Nanopolish的話,basecaller的選擇還有那麼重要嗎?為了回答這個問題,文章對Rebaler得到的consensus序列又做了Nanopolish並評估了consensus的準確性

結果和討論

1. 預設模型下的效能比較

各basecaller及模型的read準確性、consensus準確性以及執行速度的比較

(圖1:各basecaller及模型的read準確性、consensus準確性以及執行速度的比較)

準確性的比較:

  • Albacore兩次read準確性和consensus準確性都比較明顯的提升是在2017年4月(v1.0.1)和2017年8月(v2.0.1)。然而後續的版本中準確性沒有變化,受測的最新版read準確性為Q9.2,consensus準確性為Q21.9(v2.3.4)。
  • Guppy準確性一直比較恆定,於Albacore的大部分版本近似。最新版的Guppy(v2.2.3,2019年1月)read準確性較差(Q8.9),但是consensus準確性較好(Q22.8)。但是這個版本中引入的“flip-flop”有相似的consensus準確性但是好得多的read準確性(Q9.7)。
  • Scrappie events是受測basecaller中最差的一款,但是Scrappie raw表現更好,在最新一版中(v1.4.1)已經和Albacore表現相似(read和consensus準確性分別為Q9.3和Q22.4)。Scrappie的繼任者Flappie(2018年11月)read準確性更好(Q9.6),但是consensus準確性較差(Q22.0)。
  • 相比ONT開發的basecaller,第三方的Chiron的read準確性很差。但是Chiron v0.3是所有basecaller中預設模型下consensus準確性最高的一款(Q25.9)。最新的Chiron(v0.4.2)表現下滑。

執行速度的比較:

  • Albacore和Guppy準確性相似,但是Guppy因為使用GPU運算加速所以快得多(1,500,000 bp/s vs 120,000 bp/s)。
  • 雖然Chiron也使用GPU加速,但是卻是所有basecaller中最慢的一個(~2,500 bp/s)。完成MiniION典型產量(10 Gb)的basecalling需要大約一個月時間,除了很小的資料集,否則基本上沒法用。
  • Flappie執行速度也很慢(~14,000 bp/s)

2. 自訓練模型下的效能比較

  • 相比預設模型,通過50個基因組訓練的custom-Kp模型在read準確性上有中等提升(Q9.5),在consensus準確性上有很大提升(28.5),說明使用分類特異性的訓練資料對提高準確性有幫助。此外執行速度方面和預設模型相比相似。
  • custom-Kp-big-net模型在read準確性和consensus準確性上表現更好(分別為Q10.4和Q31.6)。更復雜的神經網路可以提高準確性,但是執行速度下降了。custom-Kp-big-net模型不能使用GPU是因為使用到了沒有在Guppy中預編譯的神經網路層,因此只能使用CPU執行,導致比Guppy的預設模型和custom-Kp模型慢得多(~13,000 bp/s)。

此外還使用遠源的9個基因組的附加資料集詳細評估Guppy各模型的表現:

詳細評估Guppy v2.2.3各模型的表現

(圖2:詳細評估Guppy v2.2.3各模型的表現)

  • flip-flop模型在read和consensus準確性的表現比預設都要好(質量值分別+0.71和+0.36)。
  • custom-Kp模型比預設模型在腸桿菌科基因組的表現要好得多(質量值分別+0.63和+4.72),但是在非腸桿菌科基因組中沒有幫助(0.00和-1.64)。分類特異性的準確性提高可能是因為custom-Kp模型提高了腸桿菌科中Dcm甲基化motif的basecalling準確性。
  • custom-Kp-big-net模型相比custom-Kp模型不是分類依賴的,而是在所有的基因組中都有提高(read和consensus質量值分別平均提高了1.01和3.15)。在絕大多數情況,custom-Kp-big-net模型都得到了最準確的reads和consensus序列,除了S. aureus中flip-flop的準確性更好。
  • custom-Kp和custom-Kp-big-net模型都沒有用到Guppy中新的神經網路架構flip-flop模型。理論上同時基於flip-flop架構和自訓練的模型可以同時獲得兩者的優勢,但是目前版本的Sloika(v2.1.0)還不能使用flip-flop架構進行模型訓練。

3. Consensus錯誤概述

各軟體、模型Consensus錯誤型別佔比

(圖3:各軟體、模型Consensus錯誤型別佔比)

Dcm甲基化位點錯誤:

  • 所有ONT的basecaller在使用預設模型時在Dcm甲基化位點的準確性都很差,使得這類錯誤在consensus序列總錯誤中佔了很大比例(佔參考基因組的~0.4%)。說明使用缺乏Dcm甲基化的資料訓練的模型沒有學會可靠地call出這些位點的鹼基。
  • 相反,使用自訓練模型的幾乎沒有Dcm錯誤(~0.002%),因為訓練集中包含Dcm甲基化位點。
  • 由於Chiron v0.2和v0.3基於包含Dcm修飾的E. coli reads訓練,因此Dcm錯誤很少(<0.025%)。但是Chiron v0.4.2顯示出0.29%的Dcm錯誤(整體錯誤也更多),說明它與之前版本使用了不同的資料集進行訓練。

Homopolymer長度錯誤(包含homopolymer insertion和deletion):

  • Dcm motif之外,homopolymer的長度錯誤是最主要的錯誤型別。
  • Albacore隨著新版本的釋出在homopolymer長度錯誤有著最顯著的改善(從v0.8.4的0.53%下降到v2.3.4的0.13%),顯示出ONT在這方面有明顯的進步。
  • 最新的Guppy(v2.2.3)有更進一步的改善,使得Homopolymer長度錯誤下降到0.07%。
  • 自訓練的custom-Kp模型相比預設模型表現較差(0.10%),而custom-Kp-big-net表現較好(0.05%)。

4. Nanopolish的表現

Nanopolish的表現評估

(圖4:Nanopolish的表現評估)

  • 除了custom-Kp-big-net以外,Nanopolish在所有版本和Guppy的各模型中都提高了consensus的準確性。
  • Nanopolish前的consensus準確性和Nanopolish後的準確性相關(R2=0.580),說明即使用了Nanopolish,basecaller的準確性依然重要。
  • Nanopolish可以統計Dcm甲基化(使用--methylation-aware引數),但通常僅能糾正~70~80%的Dcm錯誤。據此,Nanopolish前的Dcm錯誤就成了Nanopolish後準確性的最好預測值(R2=0.809)。
  • Guppy v2.2.3的組裝結果多輪Nanopolish只有很小的準確性提高(4輪後從Q27.5提高到Q28.3)。
  • 各版本組裝的基因組中單鹼基替換最少仍有337個(使用Guppy v2.2.3、custom-Kp-big-net模型外加Nanopolish),這些假陽性在食物傳播和其他傳染疾病等研究應用中是不可接受的。雖然使用定製的策略進行ONT reads的SNP calling可以降低假陽性,但是基於組裝的序列比對的basecalling準確性亟待很大提高。

結論

使用Guppy v2.2.3並通過大部分來自同一物種的序列進行自訓練的方式在read和consensus序列都有最高的準確性。這似乎主要是因為可以準確處理Dcm甲基化。由於不同分類有不同的DNA修飾模式,因此更普適化的結論是:當使用擁有相似DNA修飾的同一個物種或者足夠近緣物種的原始DNA(未經過擴增)進行訓練後的basecalling,原始DNA的準確性更高。

對於絕大多數basecaller,用於模型訓練的DNA的分類和DNA型別(擴增與否)的完整資訊都沒有公開,我們鼓勵開發者在這方面更加透明並如果可能的話,考慮提供更多樣化的訓練模型(擴增的、人類的,為擴增的E.coli DNA等)。這樣使用者可以選擇一個與他們物種更接近的模型。而對於擁有足量訓練資料、帶GPU的高效能運算機、以及計算機技能的使用者,我們建議通過自訓練模型最大可能提高basecalling的準確性。文章中的custom-Kp-big-net說明當使用更多層的神經網路,還能進一步提高準確性。

近幾年ONT測序技術已經在產量和準確性上有了長足的進步,但是文章的結果顯示仍舊有很大的進步空間。測試的所有basecaller、模型和基因組中,最好的consensus準確性是Q32.2(99.94% identity)。這相當於在一個5 Mb的基因組中平均存在~3000個錯誤。其中很多錯誤是單鹼基替換,這會使得可能產生很多假陽性SNP而成為暴發調查的主要障礙。為了得到完美的細菌基因組組裝,consensus準確性需要幾個數量級的提高,比如Q70(1個錯誤/10 Mb)。可能需要在這些方面提高:技術和化學試劑上的變化,basecalling的進步,組裝後polishing工具的開發。在實現這些目標之前,混合組裝或使用Illumina reads進行polishing對需要高準確性序列的研究者來說仍舊有必要。

附錄

相關連結:

推薦Ryan Wick的其他比較有名的專案:

  • 將基因組de novo組裝的graph通過互動式影像視覺化:Bandage
  • Nanopore接頭trimming:Porechop
  • 同時支援短reads、長reads以及混合組裝的細菌組裝流程:Unicycler

相關文章