「三代組裝」使用新版Falcon進行三代測序基因組組裝

這里的新版指的是PacBio公司在2018年9月發布pb-assembly, 而這篇文章是在2018年9月30日發的。

今年早些時候在參加三代培訓時,聽說PacBio會在今年對Falcon進行一些改變。前幾天我在讀 readthedocs上的Falcon文檔時,發現了文檔頁面上方出現了這樣兩欄提醒

Attention

其中pb_assembly就是新的FALCON組裝套裝在GitHub上的使用文檔,經過了幾天的探索,我對它有了一點了解,寫一篇教程作為官方文檔的一些補充吧。

新版亮點

  1. 整合了串聯重復序列和遍在重復序列的屏蔽(之前沒有這一步)
  2. 以GFA格式存放graph文件,后續可以用Bandage進行可視化
  3. 通過算法和性能優化,提高了Associate Contigs的準確性
  4. 分析流程的性能優化

軟件安裝和數據準備

Falcon終于擁抱了bioconda, 這也就意味著我們再也不需要用到他們原本笨拙的安裝腳本,浪費時間在安裝軟件上。

conda create -n pb-assembly  pb-assembly
source activate pb-assembly
# 或者
conda create -p ~/opt/biosoft/pb-assembly pb-assembly
source activate ~/opt/biosoft/pb-assembly 

這里使用https://pb-falcon.readthedocs.io/en/latest/tutorial.html上的所用的E. coli數據集

wget https://downloads.pacbcloud.com/public/data/git-sym/ecoli.m140913_050931_42139_c100713652400000001823152404301535_s1_p0.subreads.tar.gz
tar -xvzf ecoli.m140913_050931_42139_c100713652400000001823152404301535_s1_p0.subreads.tar.gz

解壓縮后的文件夾里有三個300M的Fasta文件, 將他們的實際路徑記錄到input.fofn

ecoli.1.fasta
ecoli.2.fasta
ecoli.3.fasta

準備配置文件

為了進行組裝,需要準備一個配置文件。我的配置文件為fc_run.cfg,內容如下。你們可以先預覽一下,后面看我的解釋說明。

#### Input
[General]
input_fofn=input.fofn
input_type=raw
pa_DBdust_option=
pa_fasta_filter_option=pass
target=assembly
skip_checks=False
LA4Falcon_preload=false

#### Data Partitioning
pa_DBsplit_option=-x500 -s50
ovlp_DBsplit_option=-x500 -s50

#### Repeat Masking
pa_HPCTANmask_option=
pa_REPmask_code=1,100;2,80;3,60

####Pre-assembly
genome_size=0
seed_coverage=20
length_cutoff=3000    
pa_HPCdaligner_option=-v -B128 -M24
pa_daligner_option=-e.7 -l1000 -k18 -h80 -w8 -s100
falcon_sense_option=--output-multi --min-idt 0.70 --min-cov 2 --max-n-read 800
falcon_sense_greedy=False

####Pread overlapping
ovlp_daligner_option=-e.96 -l2000 -k24 -h1024 -w6 -s100
ovlp_HPCdaligner_option=-v -B128 -M24

####Final Assembly
overlap_filtering_setting=--max-diff 100 --max-cov 300 --min-cov 2
fc_ovlp_to_graph_option=
length_cutoff_pr=2000

[job.defaults]
job_type=local
pwatcher_type=blocking
JOB_QUEUE=default
MB=32768
NPROC=6
njobs=32
submit = /bin/bash -c "${JOB_SCRIPT}" > "${JOB_STDOUT}" 2> "${JOB_STDERR}"

[job.step.da]
NPROC=4
MB=32768
njobs=32
[job.step.la]
NPROC=4
MB=32768
njobs=32
[job.step.cns]
NPROC=8
MB=65536
njobs=5
[job.step.pla]
NPROC=4
MB=32768
njobs=4
[job.step.asm]
NPROC=24
MB=196608
njobs=1

根據注釋信息,文件分為"input", "Data partitioning", "Repeat Masking", "Pre-assembly", "Pread overlapping", "Final Assembly", 以及最后的任務調度部分,讓我們分別看下這里面的內容

輸入(Input)

#### Input
[General]
input_fofn=input.fofn
input_type=raw
pa_DBdust_option=
pa_fasta_filter_option=pass
target=assembly
skip_checks=False
LA4Falcon_preload=false

輸入這里參數比較簡單,基本不需要做任何改動,除了 pa_fasta_filter_options,用于處理一個ZMW(測序翻譯孔)有多條subread時,到底選擇哪一條的問題。

  • "pass": 不做過濾,全部要。
  • "streamed-median": 表示選擇大于中位數的subread
  • "streamed-internal-median": 當一個ZMW里的subread低于3條時選擇最長,多于單條則選擇大于中位數的subread

0.01版本pb-assembly的pa_DBdust_option有一個bug,也就是里面的參數不會傳遞給DBdust, DBdust是對read進行soft-masking,一般都用默認參數,因此這個bug問題不大。

數據分配(Data Partitioning)

pa_DBsplit_option=-x500 -s50
ovlp_DBsplit_option=-x500 -s50

這部分的設置會將參數傳遞給DBsplit,將數據進行拆分多個block,后續的并行計算都基于block。-s 50表示每個block大小為50M。 這適用于基因組比較小的物種,如果是大基因組則應該設置為-s 200或者-s 400

重復屏蔽(Repeat Masking)

#### Repeat Masking
pa_HPCTANmask_option=
pa_REPmask_code=1,100;2,80;3,60

屏蔽重復序列可以在不損失組裝準確性的同時,提高后續組裝的overlap/daligner步驟10~20倍速度,見Detecting and Masking Repeats.

pa_HPCTANmask_option的參數會傳給串聯重復步驟的HPCTANmask, 而pa_REPmask_code很復雜,它分為三次迭代,因此這里1:100;2,80;3,60 就表示第一次迭代檢測每個block中出現超過100次的序列,第二次迭代將2個block合并一起檢測超過80次的序列,第三次將3個block進行合并檢測超過60次的序列。

https://github.com/PacificBiosciences/pbbioconda/issues/20

預組裝(糾錯)pre-assembly

####Pre-assembly
genome_size=0
seed_coverage=20
length_cutoff=3000    
pa_HPCdaligner_option=-v -B128 -M24
pa_daligner_option=-e.7 -l1000 -k18 -h80 -w8 -s100
falcon_sense_option=--output-multi --min-idt 0.70 --min-cov 2 --max-n-read 800
falcon_sense_greedy=False

length_cutoff=-1時,設置genome_sizeseed_coverage會自動計算要過濾的序列。否則是過濾低于一定長度的read。

pa_HPCdalinger_option參數不需要調整,-M表示每個進程的內存為24G,一般200M的block對應16G。

pa_daligner_option的參數比較重要:

  • -e:錯誤率,低質量序列設置為0.70,高質量設置為0.80。 值越高避免單倍型的坍縮
  • -l: 最低overlap的長度,文庫比較短時為1000, 文庫比較長為5000.
  • -k: 低質量數據為14,高質量數據為18
  • -h: 表示完全match的k-mer所覆蓋的堿基數。和-l, -e有關,越大越嚴格。預組裝時最大也不要超過最低overlap長度的1/4. 最低就設置為80

糾錯后相互比對

####Pread overlapping
ovlp_daligner_option=-e.96 -l2000 -k24 -h1024 -w6 -s100
ovlp_HPCdaligner_option=-v -B128 -M24

和上面的參數類似,但是-e的范圍調整為0.93-0.96,-l范圍調整為1800-6000, -k調整為 18-24

最后組裝

overlap_filtering_setting=--max-diff 100 --max-cov 300 --min-cov 2
fc_ovlp_to_graph_option=
length_cutoff_pr=2000

這里的參數就可以隨便調整了,因為這一步速度很快。 例如length_cutoff_pr就可以從2000,提高到15000.

最后還有一部分是任務投遞系統,如果是單節點運行,需要注意設置 njobs,這是同時投遞的任務數。假如你將[job.step.cns]按照如下的方式設置,那么同時會出現 8 \times 50 = 400 個任務,如果你的內存只有128G,運行一段時間后你的所有內存就會被耗盡,那么基本上你就只能重啟服務器了。

[job.step.cns]
NPROC=8
MB=65536
njobs=50

運行結果

用上述的配置文件,以fc_run fc_run.cfg運行后,最后的2-asm-falcon/p_ctg.fa的序列數有4條,最長為4,685,024, 之后我將length_cutoff_pr調整為15k,2-asm-falcon/p_ctg.fa序列只有一條,長度為4,638,411

下載asm.gfa到本地,用Bandage可視化,可以發現組裝效果不錯。

Bandage
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,908評論 6 541
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,324評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,018評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,675評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,417評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,783評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,779評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,960評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,522評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,267評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,471評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,009評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,698評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,099評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,386評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,204評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,436評論 2 378

推薦閱讀更多精彩內容