轉(zhuǎn)自:http://www.itdecent.cn/p/efbd1998db69
一、介紹
Flye是用于單分子組裝數(shù)據(jù)的denovo基因組裝的軟件。這個(gè)軟件可以用于各種數(shù)據(jù)集,從小的細(xì)菌到大的哺乳動(dòng)物。
輸入是原始的PacBio或者ONT的序列文件,輸出是polished的contig。Flye同時(shí)也有針對(duì)微生物組裝的模式。
二、安裝和使用
安裝非常簡(jiǎn)單~
conda install flye
使用的話,輸入文件是FASTA或者FASTQ格式的,可以是gz壓縮或者普通文本。對(duì)于raw的話,期望的錯(cuò)誤率低于30%,校正之后序列的錯(cuò)誤率低于3%,HiFi序列的低于1%。不過要記住,F(xiàn)lye最開始是基于raw reads開發(fā)的。
已經(jīng)不需要提供基因組的大小,但是如果使用 --asm-coverage 則需要提供。
為了減少內(nèi)存的消耗,可以使用最長(zhǎng)的reads來進(jìn)行初始化的disjointig的組裝,使用--asm-coverage和--genome-size就可以了。一般而言,40x的深度已經(jīng)足夠了。
可以單獨(dú)使用--polish-target進(jìn)行結(jié)果打磨。
三、使用示例
針對(duì)pacbio
flye --pacbio-raw E.coli_PacBio_40x.fasta --out-dir out_pacbio --threads 4針對(duì)nanopore數(shù)據(jù)
flye --nano-raw Loman_E.coli_MAP006-1_2D_50x.fasta --out-dir out_nano --threads 4
四、輸入數(shù)據(jù)的類型
Oxford Nanopore:使用--nano-raw,ONT的數(shù)據(jù)錯(cuò)誤率在5%-15%之間,尤其是在同聚物區(qū)域,錯(cuò)誤率更高。
PacBio HiFi:使用--pacbio-hifi的參數(shù)來選擇這個(gè)模式。期望錯(cuò)誤率低于1%,我們也可以用--hifi-error這個(gè)參數(shù)來指定錯(cuò)誤率,這樣可以獲得更完整的組裝。
PacBio CLR:使用--pacbio-raw的參數(shù),錯(cuò)誤率在15%左右。注意的是,使用這個(gè)模式需要去除接頭和分開多個(gè)passes。不過需要注意別拆分出了錯(cuò)誤的序列。
error-corrected reads:可以使用--pacbio-corr 或者 --nono-corr這個(gè)參數(shù),來支持校正后的序列,這個(gè)序列錯(cuò)誤率應(yīng)該小于3%。如果組裝的結(jié)果比較碎,可能序列中的錯(cuò)誤率比較高,這個(gè)時(shí)候可以考慮用raw reads。
多個(gè)contig的一致性序列:使用--subassemblies來輸入一系列的組裝好的contig序列,這個(gè)可以用其他組裝程序獲得,期望的錯(cuò)誤率小于1%。這樣的話,用--iterations 0 可以來跳過polishing stage。
由于Flye可以直接使用raw reads,因此不需要前期的糾錯(cuò)。Flye會(huì)檢測(cè)嵌合序列和低質(zhì)量的序列,因此這個(gè)也不需要去除。然后,需要去除的是污染的序列。
五、參數(shù)描述
最小overlap長(zhǎng)度
這個(gè)參數(shù)默認(rèn)是reads N90,一般不需要設(shè)置。如果要設(shè)置,可以設(shè)置到3-5k。建議設(shè)置的越高越好,這樣repeat graph就更少會(huì)糾纏,但是這樣會(huì)產(chǎn)生更多的gap。
Metagenome mode
這個(gè)模式用于高度不均勻覆蓋度的序列, 對(duì)于低至2x的覆蓋度的區(qū)域也可以進(jìn)行組裝。在一些簡(jiǎn)單的metagenome中,使用普通的模式,會(huì)獲得更多的長(zhǎng)的序列,而用meta模式,序列會(huì)更加的片段化一些。對(duì)于復(fù)雜的metagenome,建議使用--meta模式。
Haplotype模式
默認(rèn)的,F(xiàn)lye會(huì)合并graph中各種結(jié)構(gòu)(bubbles、superbubbles、roundabout)等,來產(chǎn)生更長(zhǎng)的一致性contig。使用--keep-haplotypes來保留更多的path,產(chǎn)生更細(xì)節(jié)的組裝結(jié)果。
Trestle
Trestle是一個(gè)額外的模塊,用于解析沒有被read橋接的重復(fù)度是2的簡(jiǎn)單重復(fù)。根據(jù)數(shù)據(jù)集,它可能解析一些額外的重復(fù),這對(duì)小的(細(xì)菌基因組)是有幫助的。使用--trestle選項(xiàng)來啟用該模塊。在大型基因組上,改善通常是最小的,但計(jì)算可能會(huì)花費(fèi)大量時(shí)間。
覆蓋度的降低
對(duì)于大基因組,當(dāng)深度過高的時(shí)候,需要較高的RAM。因此可以使用--asm-coverage來選擇特定的深度,一般而言使用30x比較合適。
打磨的迭代次數(shù)
程序的最后會(huì)進(jìn)行polish。默認(rèn)的只進(jìn)行一次polish,進(jìn)行多次polish會(huì)矯正更多的錯(cuò)誤,如果設(shè)置為0,那么就不會(huì)進(jìn)行polish。
六、結(jié)果輸出
主要有三種輸出文件:
- assembly.fasta:最終的組裝的結(jié)果
- assembly_graph.gfa|gv:最終的repeat graph,不過edge序列會(huì)和contig的序列不一樣,因?yàn)閏ontig可能會(huì)包含額外的多個(gè)邊。
- assembly_info.txt:contig的額外的信息
每個(gè)contig就是圖里一個(gè)唯一的邊,同時(shí)這個(gè)唯一的contig也會(huì)進(jìn)行兩邊延伸,來解決repeat區(qū)域。
因此,具有相同id的contig,會(huì)比相應(yīng)的edge要長(zhǎng)。這個(gè)同OLC算法的軟件相似。
有時(shí)候,也會(huì)將contig基于repeat graph結(jié)構(gòu)拼接成scaffolds。這些結(jié)果會(huì)輸出成以scaffold_為前綴的文件。
盡管很難估計(jì)可靠的gap大小,一般默認(rèn)是100個(gè)Ns。并且assembly_info.txt文件也會(huì)輸出這些scaffold是怎么構(gòu)建的信息。
assembly_info.txt示例如下
每列信息如下:
- contig/scaffold id
- 長(zhǎng)度
- 覆蓋度
- 是否是圈
- 是否是重復(fù)
- 重復(fù)度
- Alternative group
- 圖的路徑
用??來代表scaffold的gaps,用*代表一個(gè)終止node。
七、性能比較
直接上圖,看各個(gè)數(shù)據(jù)量大小下的資源情況。
八、算法說明
什么是repeat graph?
Flye算法使用repeat graph作為核心的數(shù)據(jù)結(jié)構(gòu),不同于de bruijn圖需要精確的kmer的匹配,repeat graph可以構(gòu)建相似的序列匹配,從而可以容忍較高的噪音。repeat graph的邊代表基因組序列,頂點(diǎn)代表連接情況。所有的邊要么是唯一的 ,要么是重復(fù)的。整個(gè)基因組通過遍歷這個(gè)repeat graph,可以得到。因此unique的graph是只在遍歷中出現(xiàn)一次。repeat graph可以用AGB或者Bandage進(jìn)行可視化,如下所示。https://github.com/almiheenko/AGB https://github.com/rrwick/Bandage
Flye的主要流程
以下圖為例,假設(shè)基因組A中有重復(fù)序列R1和R2,每個(gè)重復(fù)序列有2個(gè)拷貝,相似度為99%;同時(shí)還有四個(gè)唯一的片段A、B、C、D。
根據(jù)基因組獲得和產(chǎn)生了一系列的序列(b),將這些序列進(jìn)行進(jìn)行拼接,拼接成disjointig(c),并將這些disjointig進(jìn)行連接(d),構(gòu)建連接后disjointig通過比對(duì)獲得的repeat plot(e),并將repeat plot轉(zhuǎn)換成repeat graph,即flye的核心數(shù)據(jù)結(jié)構(gòu)(f),然后將序列比對(duì)到repeat graph上(g),最后根據(jù)比對(duì)結(jié)果,構(gòu)建R1的兩個(gè)拷貝和R2的兩個(gè)拷貝。
repeat plot和repeat graph如何相互轉(zhuǎn)換呢?
假設(shè)一條序列XABYABZBU,其中重復(fù)為AB,AB和B。根據(jù)局部的自身比對(duì),可以畫出如圖a的共線性圖。如果比對(duì)的終點(diǎn)在對(duì)角線的投影重合,那么分配為相通的顏色,例如下圖a中的藍(lán)色。將對(duì)角線上不同的點(diǎn)連接起來,形成線性的結(jié)構(gòu)(b);將相同顏色的點(diǎn)合并到一起,形成圖c,最后對(duì)圖進(jìn)行簡(jiǎn)化得到圖(d)。
如何解決unbridge repeat?
假設(shè)有以下b的repeat graph,有兩個(gè)拷貝的REP,長(zhǎng)度為22kb,是處于unbridge的狀態(tài)。為了獲得REP的序列,我們首先或者IN1、IN2、OUT1和OUT2的接頭序列,同時(shí)對(duì)IN1、IN2、OUT1和OUT2進(jìn)行延申。對(duì)延伸后的IN1、IN2、OUT1、OUT2再次去尋找跨越全REP區(qū)域的序列,發(fā)現(xiàn)有13條和18條,這樣,我們把所有的區(qū)域都解決了。
這次給大家介紹了Flye這個(gè)軟件。大家繼續(xù)關(guān)注,我們后續(xù)會(huì)推出更多其他軟件。
參考文獻(xiàn)
- https://github.com/fenderglass/Flye/blob/flye/docs/USAGE.md
- Kolmogorov, M., Yuan, J., Lin, Y. et al. Assembly of long, error-prone reads using repeat graphs. Nat Biotechnol 37, 540–546 (2019). https://doi.org/10.1038/s41587-019-0072-8