作者:童蒙
編輯:angelica
一、介紹
Flye是用于單分子組裝數(shù)據(jù)的denovo基因組裝的軟件畔裕。這個軟件可以用于各種數(shù)據(jù)集昧狮,從小的細(xì)菌到大的哺乳動物。
輸入是原始的PacBio或者ONT的序列文件萧诫,輸出是polished的contig斥难。Flye同時也有針對微生物組裝的模式。
二帘饶、安裝和使用
安裝非常簡單~
conda install flye
使用的話哑诊,輸入文件是FASTA或者FASTQ格式的,可以是gz壓縮或者普通文本及刻。對于raw的話镀裤,期望的錯誤率低于30%,校正之后序列的錯誤率低于3%缴饭,HiFi序列的低于1%暑劝。不過要記住,F(xiàn)lye最開始是基于raw reads開發(fā)的颗搂。
已經(jīng)不需要提供基因組的大小担猛,但是如果使用 --asm-coverage 則需要提供。
為了減少內(nèi)存的消耗,可以使用最長的reads來進(jìn)行初始化的disjointig的組裝毁习,使用--asm-coverage和--genome-size就可以了智嚷。一般而言,40x的深度已經(jīng)足夠了纺且。
可以單獨使用--polish-target進(jìn)行結(jié)果打磨盏道。
三、使用示例
針對pacbio
flye --pacbio-raw E.coli_PacBio_40x.fasta --out-dir out_pacbio --threads 4
針對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ù)錯誤率在5%-15%之間,尤其是在同聚物區(qū)域嫁艇,錯誤率更高朗伶。
PacBio HiFi:使用--pacbio-hifi的參數(shù)來選擇這個模式。期望錯誤率低于1%步咪,我們也可以用--hifi-error這個參數(shù)來指定錯誤率论皆,這樣可以獲得更完整的組裝。
PacBio CLR:使用--pacbio-raw的參數(shù)猾漫,錯誤率在15%左右点晴。注意的是,使用這個模式需要去除接頭和分開多個passes悯周。不過需要注意別拆分出了錯誤的序列粒督。
error-corrected reads:可以使用--pacbio-corr 或者 --nono-corr這個參數(shù),來支持校正后的序列禽翼,這個序列錯誤率應(yīng)該小于3%屠橄。如果組裝的結(jié)果比較碎,可能序列中的錯誤率比較高闰挡,這個時候可以考慮用raw reads锐墙。
多個contig的一致性序列:使用--subassemblies來輸入一系列的組裝好的contig序列,這個可以用其他組裝程序獲得长酗,期望的錯誤率小于1%溪北。這樣的話,用--iterations 0 可以來跳過polishing stage花枫。
由于Flye可以直接使用raw reads刻盐,因此不需要前期的糾錯掏膏。Flye會檢測嵌合序列和低質(zhì)量的序列劳翰,因此這個也不需要去除。然后馒疹,需要去除的是污染的序列佳簸。
五、參數(shù)描述
最小overlap長度
這個參數(shù)默認(rèn)是reads N90,一般不需要設(shè)置生均。如果要設(shè)置听想,可以設(shè)置到3-5k。建議設(shè)置的越高越好马胧,這樣repeat graph就更少會糾纏汉买,但是這樣會產(chǎn)生更多的gap。
Metagenome mode
這個模式用于高度不均勻覆蓋度的序列佩脊, 對于低至2x的覆蓋度的區(qū)域也可以進(jìn)行組裝蛙粘。在一些簡單的metagenome中,使用普通的模式威彰,會獲得更多的長的序列出牧,而用meta模式,序列會更加的片段化一些歇盼。對于復(fù)雜的metagenome舔痕,建議使用--meta模式。
Haplotype模式
默認(rèn)的豹缀,F(xiàn)lye會合并graph中各種結(jié)構(gòu)(bubbles伯复、superbubbles、roundabout)等耿眉,來產(chǎn)生更長的一致性contig边翼。使用--keep-haplotypes來保留更多的path,產(chǎn)生更細(xì)節(jié)的組裝結(jié)果鸣剪。
Trestle
Trestle是一個額外的模塊组底,用于解析沒有被read橋接的重復(fù)度是2的簡單重復(fù)。根據(jù)數(shù)據(jù)集筐骇,它可能解析一些額外的重復(fù)债鸡,這對小的(細(xì)菌基因組)是有幫助的。使用--trestle選項來啟用該模塊铛纬。在大型基因組上厌均,改善通常是最小的,但計算可能會花費大量時間告唆。
覆蓋度的降低
對于大基因組棺弊,當(dāng)深度過高的時候,需要較高的RAM擒悬。因此可以使用--asm-coverage來選擇特定的深度模她,一般而言使用30x比較合適。
打磨的迭代次數(shù)
程序的最后會進(jìn)行polish懂牧。默認(rèn)的只進(jìn)行一次polish侈净,進(jìn)行多次polish會矯正更多的錯誤,如果設(shè)置為0,那么就不會進(jìn)行polish畜侦。
六元扔、結(jié)果輸出
主要有三種輸出文件:
- assembly.fasta:最終的組裝的結(jié)果
- assembly_graph.gfa|gv:最終的repeat graph,不過edge序列會和contig的序列不一樣旋膳,因為contig可能會包含額外的多個邊澎语。
- assembly_info.txt:contig的額外的信息
每個contig就是圖里一個唯一的邊,同時這個唯一的contig也會進(jìn)行兩邊延伸验懊,來解決repeat區(qū)域咏连。
因此,具有相同id的contig鲁森,會比相應(yīng)的edge要長祟滴。這個同OLC算法的軟件相似。
有時候歌溉,也會將contig基于repeat graph結(jié)構(gòu)拼接成scaffolds垄懂。這些結(jié)果會輸出成以scaffold_為前綴的文件。
盡管很難估計可靠的gap大小痛垛,一般默認(rèn)是100個Ns草慧。并且assembly_info.txt文件也會輸出這些scaffold是怎么構(gòu)建的信息。
assembly_info.txt示例如下
每列信息如下:
- contig/scaffold id
- 長度
- 覆蓋度
- 是否是圈
- 是否是重復(fù)
- 重復(fù)度
- Alternative group
- 圖的路徑
用匙头?漫谷?來代表scaffold的gaps,用*代表一個終止node蹂析。
七舔示、性能比較
直接上圖,看各個數(shù)據(jù)量大小下的資源情況电抚。
八惕稻、算法說明
什么是repeat graph?
Flye算法使用repeat graph作為核心的數(shù)據(jù)結(jié)構(gòu)蝙叛,不同于de bruijn圖需要精確的kmer的匹配俺祠,repeat graph可以構(gòu)建相似的序列匹配,從而可以容忍較高的噪音借帘。repeat graph的邊代表基因組序列蜘渣,頂點代表連接情況。所有的邊要么是唯一的 肺然,要么是重復(fù)的蔫缸。整個基因組通過遍歷這個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,每個重復(fù)序列有2個拷貝它匕,相似度為99%展融;同時還有四個唯一的片段A、B豫柬、C告希、D。
根據(jù)基因組獲得和產(chǎn)生了一系列的序列(b)烧给,將這些序列進(jìn)行進(jìn)行拼接燕偶,拼接成disjointig(c),并將這些disjointig進(jìn)行連接(d)础嫡,構(gòu)建連接后disjointig通過比對獲得的repeat plot(e)指么,并將repeat plot轉(zhuǎn)換成repeat graph,即flye的核心數(shù)據(jù)結(jié)構(gòu)(f)榴鼎,然后將序列比對到repeat graph上(g)伯诬,最后根據(jù)比對結(jié)果,構(gòu)建R1的兩個拷貝和R2的兩個拷貝巫财。
repeat plot和repeat graph如何相互轉(zhuǎn)換呢盗似?
假設(shè)一條序列XABYABZBU,其中重復(fù)為AB,AB和B平项。根據(jù)局部的自身比對赫舒,可以畫出如圖a的共線性圖。如果比對的終點在對角線的投影重合闽瓢,那么分配為相通的顏色号阿,例如下圖a中的藍(lán)色。將對角線上不同的點連接起來鸳粉,形成線性的結(jié)構(gòu)(b)扔涧;將相同顏色的點合并到一起,形成圖c届谈,最后對圖進(jìn)行簡化得到圖(d)枯夜。
如何解決unbridge repeat?
假設(shè)有以下b的repeat graph艰山,有兩個拷貝的REP湖雹,長度為22kb,是處于unbridge的狀態(tài)曙搬。為了獲得REP的序列摔吏,我們首先或者IN1鸽嫂、IN2、OUT1和OUT2的接頭序列征讲,同時對IN1据某、IN2、OUT1和OUT2進(jìn)行延申诗箍。對延伸后的IN1癣籽、IN2、OUT1滤祖、OUT2再次去尋找跨越全REP區(qū)域的序列筷狼,發(fā)現(xiàn)有13條和18條,這樣匠童,我們把所有的區(qū)域都解決了埂材。
這次給大家介紹了Flye這個軟件。大家繼續(xù)關(guān)注汤求,我們后續(xù)會推出更多其他軟件楞遏。
參考文獻(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