hifiasm是一個能有效利用PacBio HiFi測序技術(shù),在分型組裝圖(pahsed assembly gprah)中可靠的表示單倍體信息的算法宪潮。
流程介紹
hifiasm的分析流程如下,主要分為3個階段
第一階段:通過所有序列的相互比對,對前在測序錯誤進行糾正。如果一個位置只存在兩種堿基類型趾断,且每個堿基類型至少有3條read支持,那么這個位置會被當作雜合位點吩愧,否則芋酌,視作測序錯誤,將被糾正耻警。
第二階段:根據(jù)序列之間的重疊關(guān)系隔嫡,構(gòu)建分型的字符串圖(phased string graph)甸怕。其中調(diào)整朝向的序列作為頂點(vertex),一致重疊作為邊(edge)腮恩。字符串圖中的氣泡(bubble)則是雜合位點梢杭。
第三階段:如果沒有額外的信息,hifiasm會隨機選擇氣泡的一邊構(gòu)建primary assembly秸滴,另一邊則是alternate assembly. 該策略和HiCanu武契,F(xiàn)alcon-Unzip一樣。對于雜合基因組而言荡含,由于存在一個以上的純合haplotype咒唆,因此primary assembly可能還會包含haplotigs。HiCanu依賴于第三方的purge_dups, 而hifiasm內(nèi)部實現(xiàn)了purge_dups算法的變種释液,簡化了流程全释。如果有額外的信息,那么hifiasm就可以正確的對haplotype進行分型误债。
安裝
hifiasm僅僅依賴 g++和zlib浸船,以及git
# 依賴g++和zlib
git clone https://github.com/chhylp123/hifiasm
cd hifiasm && make
# bioconda
conda install -c bioconda hifiasm
通過源碼編譯的方式安裝,需要將hifiasm移動到你的軟件目錄下寝蹈,或者將hifiasm的路徑加入到環(huán)境變量PATH中李命。
如果是 trio-binning模式,需要額外安裝yak
#source code
git clone https://github.com/lh3/yak
cd yak && make
# bioncda
conda install -c bioconda yak
案例展示
hifiasm的使用非常簡潔明了箫老,根據(jù)已有的數(shù)據(jù)分為封字,僅HiFi數(shù)據(jù)模式,有雙親二代測序的Trio-binning模式和有Hi-C數(shù)據(jù)的Hi-C模式耍鬓。
僅有HiFi數(shù)據(jù)
最基本的用法阔籽,會得到兩個部分分型的組裝
wget https://github.com/chhylp123/hifiasm/releases/download/v0.7/chr11-2M.fa.gz
hifiasm -o test -t 32 chr11-2M.fa.gz 2> test.log
其中 -o
定義輸出文件的文件名前綴, -t
是線程數(shù)
運行結(jié)束后生成的一系列文件中界斜,我們只需要關(guān)注如下幾項 (prefix表示前綴)
prefix.bp.r_utg.gfa
: haplotype-resolved raw unitig graph仿耽,記錄所有的單倍型信息prefix.bp.p_utg.gfa
: 在raw unitig graph基礎(chǔ)上過濾小的bubble合冀,prefix.bp.p_ctg.gfa
: 主要contig的assembly graphprefix.bp.hap1.p_ctg.gfa
: haplotype1的部分分型的contig graphprefix.bp.hap2.p_ctg.gfa
: haplotype2的部分分型的contig graph
如果并不需要部分分型的組裝各薇,而只想要primary和alternate的組裝結(jié)果,可以在之前的命令的基礎(chǔ)上君躺,加上 --primary
參數(shù)峭判。
hifiasm --primary -o test -t 32 chr11-2M.fa.gz 2> test.log2
由于hifiasm運行時會將步驟中糾錯和相互比對的結(jié)果保存成 bin 文件,因此重新這一次運行速度會很快
primay模式下輸出的文件和之前的類似棕叫,唯一的不同在于沒有 bp
``prefix
.r_utg.gfa
: haplotype-resolved raw unitig graph``prefix
.p_utg.gfa
: haplotype-resolved processed unitig graph without small bubbles.``prefix
.p_ctg.gfa
: assembly graph of primary contigs.``prefix
.a_ctg.gfa
: assembly graph of alternate contigs.
我們關(guān)心的林螃,可能就是 主要的contig,通過awk進行提取
awk '/^S/{print ">"$2;print $3}' test.p_ctg.gfa > test.p_ctg.fa
Trio-binning模式
如果測了雙親俺泣,則可以使用trio-binning方法進行更加可靠的分型疗认。分為兩步完残,先用yak統(tǒng)計k-mers, 然后用hifiasm進行組裝
案例代碼如下
yak count -k31 -b37 -t16 -o pat.yak paternal.fq.gz
yak count -k31 -b37 -t16 -o mat.yak maternal.fq.gz
hifiasm -o NA12878.asm -t 32 -1 pat.yak -2 mat.yak NA12878.fq.gz
輸出的文章和之前類似横漏,主要關(guān)心其中文件名帶 dip 的輸出gfa文件
prefix.dip.hap1.p_ctg.gfa
: 完成分型的父源單倍體 contig圖.prefix.dip.hap2.p_ctg.gfa
: 完全分型的母源單倍體contig圖.
整合Hi-C數(shù)據(jù)
由于Hi-C數(shù)據(jù)能夠提供遠距信息谨设,因此也能用于單倍體分型。只需要加上兩個參數(shù)缎浇, h1接受Hi-C的read1, h2 接受Hi-C的read2
hifiasm -o NA12878.asm -t32 --h1 read1.fq.gz --h2 read2.fq.gz HiFi-reads.fq.gz
在該模式下扎拣,每個contig要么是來自于父親,要么是來自于母親素跺。hifiasm會將同一來源的contig放在同一個組裝中二蓝。需要注意的是,hifiasm未必能夠處理好著絲粒附近的區(qū)域指厌,另外hifiasm中Hi-C也不會用于進行scaffold刊愚。
輸出結(jié)果中,我們重點關(guān)注其中名字帶hic的文件
prefix.hic.p_ctg.gfa
: 主要contig的組裝圖prefix.hic.hap1.p_ctg.gfa
: 完全分型的haplotype1的contig圖prefix.hic.hap2.p_ctg.gfa
: 完全分型的haplotype2的contig圖prefix.hic.a_ctg.gfa
: 如果設(shè)置了--primary
參數(shù)踩验,還會輸出該次要contig的組裝圖
日志和參數(shù)調(diào)整
絕大部分的時候百拓,我們只需要使用默認參數(shù)即可得到相對比較好的結(jié)果。但是當默認參數(shù)無法達到自己的目的晰甚,那我們就需要檢查日志信息衙传,閱讀相關(guān)參數(shù)從而優(yōu)化結(jié)果。
日志信息主要分為三項
k-mer圖: 純合樣本只有一個peak厕九,雜合樣本則會有2個peak蓖捶。
純合峰的覆蓋度:
[M::purge_dups] homozygous read coverage threshold: X
, 一般會由hifiasm自動推斷。雜合/純合堿基數(shù)目(Hi-C模式): 在Hi-C模式下扁远,如果純合的堿基數(shù)超過雜合堿基數(shù)俊鱼,那么hifiasm就不容易找對純合read的所在峰。
對于日志信息畅买,我們最主要關(guān)注的就是k-mer圖并闲,從而判斷hifiasm是否能夠正確的找到純合峰,雜合峰的所在位置谷羞。如果hifiasm沒有找對純合峰所在的位置帝火,就需要我們根據(jù)k-mer圖手動指定 --hom-cov
。
對于一個組裝結(jié)果湃缎,最直接的評估標準就是基因組大小是否符合預(yù)期犀填,分型的兩套基因組是否相差不大,序列是否足夠長嗓违,是否存在錯誤組裝的情況九巡。
如果基因組大小不符合預(yù)期,一般都是hifiasm找錯了純合峰的位置蹂季,我們需要手動指定 --hom-cov
冕广;如果分型的兩套基因組差別過大疏日,則通過降低 -s
調(diào)整。如果序列不夠長撒汉,片段化明顯制恍,則可以嘗試增加 -D
和 -N
, 雖然會增加運行時間,但是會提高重復(fù)區(qū)域的分辨率神凑。如果后續(xù)的Hi-C净神,或者BioNano發(fā)現(xiàn)hifiasm組裝結(jié)果有比較多錯誤組裝,則可以適當降低 --purge-max
, -s
和 -O
溉委【槲ǎ或者設(shè)置 -u
關(guān)閉post-join 步驟,hifiasm通過該步驟提高組裝的連續(xù)性瓣喊。
參考資料
https://github.com/chhylp123/hifiasm