使用NextDenovo組裝Nanopore數據

NextDenovo是武漢未來組胡江博士團隊開發的一個三代組裝工具,能夠用於PacBio和Nanopore數據的組裝。但是從官方的介紹而言,此工具在組裝Nanopore上優勢更大一些。

NextDenovo包括兩個模塊,NextCorrect用於原始數據糾錯,NextGraph能夠基於糾錯後的進行組裝。使用修改版的minimap2進行序列間相互比對。v2.0-beta.1版中在處理高度重複序列上可能存在錯誤組裝,可以通過HiC和BioNano進行糾錯。

軟件安裝

NextDenovo的軟件安裝非常簡單, 下載解壓縮即可使用。考慮到NextDenovo需要用Python2.7,我們可以用conda新建一個環境

conda create -n python2 python=2.7
conda activate python2

然後下載解壓縮(我習慣把軟件放在~/opt/bisofot下)

mkdir -p ~/opt/biosoft/
cd ~/opt/biosoft/
wget https://github.com/Nextomics/NextDenovo/releases/download/v2.0-beta.1/NextDenovo.tgz
tar -zxvf NextDenovo.tgz

測試下軟件是否可以使用

~/opt/biosoft/NextDenovo/nextDenovo -h

實戰

以發表在NC上的擬南芥數據爲例, 簡單介紹下軟件的使用

第一步: 新建一個分析項目

mkdir NEXT && cd NEXT

然後從EBI上下載該數據,在run.fofn中記錄文件的實際位置。

# 三代測序
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/ERR217/003/ERR2173373/ERR2173373.fastq.gz
realpath ERR2173373.fastq.gz > run.fofn

第二步: 複製和修改配置文件

cp ~/opt/biosoft/NextDenovo/doc/run.cfg .

我的配置文件修改如下,參數說明參考官方文檔

[General]
job_type = local
job_prefix = nextDenovo
task = all # 'all', 'correct', 'assemble'
rewrite = yes # yes/no
deltmp = yes
rerun = 3
parallel_jobs = 5
input_type = raw
input_fofn = input.fofn
workdir = 01_rundir
# cluster_options = -l vf={vf} -q all.q -pe smp {cpu} -S {bash} -w n

[correct_option]
read_cutoff = 1k
seed_cutoff = 3k
blocksize = 3g
pa_correction = 20
seed_cutfiles = 20
sort_options = -m 20g -t 8 -k 40
minimap2_options_raw = -x ava-ont -t 8
correction_options = -p 8

[assemble_option]
random_round = 20
minimap2_options_cns = -x ava-ont -t 8 -k17 -w17
nextgraph_options = -a 1

配置文件的幾個重要參數說明(v2.0-beta.1)

  • job_type 設置運行環境,可以使用(local, sge, pbs等)
  • 運行線程數設置,線程數計算爲parallel_jobs分別與sort_option, minimap_options_*-t數乘積,和correction_options-p的乘積,量力而行。
  • seed_cutfiles 如果在集羣上運行,建議設置爲可用的節點數,同時設置correction_options-p爲各個節點可用的核數,保證每個節點只有一個correction任務,減少運行時的內存和IO。 如果local上運行, 建議設置爲總可用的核除以correction_options-p值.
  • parallel_jobs建議設置至少要大於pa_correction
  • blocksize 是將小於seed_cutfiles的數據拆分成的多個文件時單個文件的大小, 總的比對任務數等於基於該參數切分的文件數乘以seed_cutfiles + seed_cutfiles * (seed_cutfiles - 1)/2, 因此對於10g以內的數據量, 建議設置小於1g, 避免總的任務數小於parallel_jobs的值。
  • 測序數據類型相關: 對於PacBio而言,要修改minimap2_options_*中的-x ava-ont-x ava-pb
  • 數據量相關參數: read_cutoff = 1k過濾原始數據中低於1k的read,seed_cutoff = 30k則是選擇大於30k以上的數據來矯正。關於seed_cutoff的設置,可以通過~/opt/biosoft/NextDenovo/bin/seq_stat來獲取參考值,不建議直接使用默認值,因爲改值會受到測序深度和測序長度影響,而且一個不合適的值會顯著降低組裝質量。對於基因組大於200m以上的物種,-d建議默認。
  • correction_options中的-dbuf可以顯著降低矯正時的內存,但會顯著降低矯正速度。
  • random_round參數,建議設置20-100. 該參數是設置隨機組裝參數的數量,nextGraph會基於每一套隨機參數做一次組裝, 避免默認參數效果不好。

seq_stat能夠根據物種大小和預期用於組裝的深度確定seed_cutoff

~/opt/biosoft/NextDenovo/bin/seq_stat -g 110Mb -d 30 input.fofn

第三步: 運行NextDenovo

~/opt/biosoft/NextDenovo/nextDenovo run.cfg &

運行時間如下

real	64m5.356s
user	1827m37.890s
sys	264m48.246s

默認參數結果是存放在01_rundir/03.ctg_graph/01.ctg_graph.sh.work/ctg_graph00, 可以將其複製到當前目錄,用於後續的分析。

cat 01_rundir/03.ctg_graph/01.ctg_graph.sh.work/ctg_graph00/nextgraph.assembly.contig.fasta > nextgraph.assembly.contig.fasta

但是在01.ctg_graph.sh.work目錄下除了ctg_graph00以外,還有其他隨機參數的在組裝結果。隨機參數結果只輸出了統計結果,用戶如需要輸出組裝序列,可以修改01_rundir/03.ctg_graph/01.ctg_graph.sh,將裏面的-a 0替換成-a 1

每個目錄下都有shell輸出,可以挑選基於nextDenovo.sh.e這裏面的結果挑選組裝指標較好的,再輸出序列,比如說比較下N50

grep N50  01_rundir/03.ctg_graph/01.ctg_graph.sh.work/ctg_graph*/*.e

默認情況下,最終組裝出20條contig,總大小116M,N50 12M.

使用minimap2將組裝結果和比對到TAIR10上,用dotplotly進行可視化

minimap2 -t 100 -x asm5 Athaliana.fa nextgraph.assembly.contig.fasta > next.paf
dotPlotly/pafCoordsDotPlotly.R  -i next.paf -o next  -l -p 6 -k 5

共線性

不難發現,兩者存在高度的共線性。大部分TAIR10的染色體對應的都是2條或者3條contig。

此外這篇NC的擬南芥提供了BioNano光學圖譜,我使用BioNano Hyrbrid Scaffold 流程進行了混合組裝

cp /opt/biosoft/Solve3.3_10252018/HybridScaffold/10252018/hybridScaffold_config.xml .
# 修改xml中fasta2cmap的enzyme爲BSPQI
perl /opt/biosoft/Solve3.3_10252018/HybridScaffold/10252018/hybridScaffold.pl \
    -n nextgraph.assembly.contig.fasta \
    -b kbs-mac-74_bng_contigs2017.cmap \
    -c hybridScaffold_config.xml \
    -r /opt/biosoft/Solve3.3_10252018/RefAligner/7915.7989rel/RefAligner \
    -o nextgraph \
    -B 2 -N 2 \
    -f

組裝結果如下,從原來的20的contig下降到了16個contig。

Count  = 16
Min length (Mbp) = 0.026
Median length (Mbp) = 7.224
Mean length (Mbp) = 7.301
N50 length (Mbp) = 13.013
Max length (Mbp) = 14.965
Total length (Mbp) = 116.811

此外還通過BioNano Access進行可視化,以其中一個結果爲例。光學圖譜和NextDenovo的組裝結果存在很高的一致性。

示例

綜上,在Nanopore上組裝上,我們又多了一個比較好用的工具。

最後非常感謝胡江博士對於本文的指導!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章