生信 | 基因組組裝實戰(四):組裝軟件mecat2、flye、wtdbg2、Canu、Falcon

寫在前面

  • 以下內容均來自我在菲沙基因(Frasergen)暑期生信培訓班上記錄的課堂筆記

1.基因組概念

  • 基因組應該指單倍體細胞中包括編碼序列和非編碼序列在內的全部DNA分子。即核基因組是單倍體細胞核內的全部DNA分子;線粒體基因組則是一個線粒體所包含的全部DNA分子 ;葉綠體基因組則是一個葉綠體所包含的全部DNA分子。

2.三代PacBio數據準備

2.1 數據格式
  • Pacbio平臺測序出來的reads,由接頭序列, 條碼序列, 插入序列間隔線性分布,即ABIB-ABIB—ABIB-ABIB—(A: adapter, B: barcode, I: insert)
├── Sample
│ └── Library(不分文庫時文庫名為 all)
│ └── Cell
│ ├── *.subreads.bam 用于下游分析的有效數據(相當于clean data)
│ ├── *.subreads.bam.pbi subreads.bam文件的索引文件
│ └── *.xml 測序信息記錄文件
2.2 數據格式轉換(bam轉fq/fa)
conda install -c yuxiang bam2fastq -y
  • bam 轉 fastq/ fasta(后綴自動補充為.fastq/ fasta)
bam2fastq *subreads.bam –o *subreads.bam -u
bam2fasta *subreads.bam –o *subreads.bam -u

-u:輸出文件不壓縮。去掉則輸出壓縮文件,由于后續需要用到非壓縮文件,所以這里加上-u參數,且節省時間

  • 數據量統計(小工具:GNX)
#安裝與編譯
git clone https://github.com/mh11/gnx-tools.git
mkdir bin
javac -d bin/ src/uk/ac/ebi/gnx/*
ant -f package.xml
java -jar gnx.jar
#使用
java -jar gnx.jar all_subreads.bam.fasta > N50
cat N50

3.基因組組裝

3.1 使用Mecat2進行基因組組裝
  • 軟件介紹
Mecat2軟件介紹
  • 使用git安裝并編譯
git clone https://github.com/xiaochuanle/MECAT2.git 
cd MECAT2 
make 
  • 新建配置文件config_file.txt
vi config_file.txt
  • 填寫內容如下:
PROJECT=test
RAWREADS= /local_data1/all_subreads.bam.fasta #從bam轉過來的fasta文件
GENOME_SIZE= 12251230  #根據《生信 | 基因組組裝實戰(三):Kmer評估基因組》來確定
THREADS=15   #線程數
MIN_READ_LENGTH=2000 
CNS_OVLP_OPTIONS="-kmer_size 13" 
CNS_PCAN_OPTIONS="-p 100000 -k 100" CNS_OPTIONS="" 
CNS_OUTPUT_COVERAGE=30  #根據菲沙基因老師的經驗,30-45范圍較好,可以多次調整
TRIM_OVLP_OPTIONS="-skip_overhang" 
TRIM_PM4_OPTIONS="-p 100000 -k 100" 
TRIM_LCR_OPTIONS="" 
TRIM_SR_OPTIONS="" 
ASM_OVLP_OPTIONS="" 
FSA_OL_FILTER_OPTIONS="--max_overhang=-1 --min_identity=-1" 
FSA_ASSEMBLE_OPTIONS="" 
CLEANUP=0

\color{red}{注}:以上\color{red}{\#}前面的內容根據自己的需求修改,其他默認即可

  • 保存配置后,運行程序\color{green}{mecat.pl}
MECAT2/Linux-amd64/bin/mecat.pl correct config_file.txt
MECAT2/Linux-amd64/bin/mecat.pl assemble config_file.txt
  • MECAT2運行結果
    【4-fsa】目錄下的【contigs.fasta】為結果文件


    MECAT2運行結果
3.2 使用Flye進行基因組組裝
  • 軟件簡介
Flye軟件簡介
  • 使用git安裝并編譯
git clone https://github.com/fenderglass/Flye
cd Flye
make
  • 使用方法
Flye/bin/flye \
--pacbio-raw 
/local_data1/all_subreads.bam.fasta \
--out-dir test \
--genome-size 12251230 \  #根據需要請修改
--threads 10
  • 結果文件
Flye結果文件
3.3 使用wtdbg2進行基因組組裝
  • 軟件簡介
wtdbg2軟件簡介
  • 使用git安裝并編譯
git clone https://github.com/ruanjue/wtdbg2 
cd wtdbg2
make
  • 軟件使用
#quick start with wtdbg2.pl 
./wtdbg2.pl -t 16 -x rs -g 12m -o dbg reads.fa 
# Step by step commandlines # assemble long reads 
./wtdbg2 -x rs -g 4.6m -i reads.fa.gz -t 16 -fo dbg 
# derive consensus 
./wtpoa-cns -t 16 -i dbg.ctg.lay.gz -fo dbg.raw.fa 
# polish consensus, not necessary if you want to polish the assemblies using other tools 
minimap2 -t16 -ax map-pb -r2k dbg.raw.fa reads.fa.gz | samtools sort -@4 >dbg.bam 
samtools view -F0x900 dbg.bam | ./wtpoa-cns -t 16 -d dbg.raw.fa -i - -fodbg.cns.fa 
# Addtional polishment using short reads 
bwa index dbg.cns.fa 
bwa mem -t 16 dbg.cns.fa sr.1.fa sr.2.fa | samtools sort -O SAM | ./wtpoa-cns -t 16 -x 
sam-sr -d dbg.cns.fa -i - -fo dbg.srp.fa
  • 結果文件
wtdbg2結果文件
3.4 使用Canu進行基因組組裝
Canu運行流程
  • 使用conda安裝
conda install -c bioconda canu -y
  • 軟件使用,來源不同的數據使用不同代碼
#For PacBio:
canu -p ecoli -d ecoli-pacbio genomeSize=4.8m -pacbio-raw pacbio.fastq
#For Nanopore:
canu -p ecoli -d ecoli-oxford genomeSize=4.8m -nanopore-raw oxford.fasta
#Assembling PacBio HiFi with HiCanu:
canu -p asm -d ecoli_hifi genomeSize=4.8m -pacbio-hifi ecoli.fastq
#Trio Binning Assembly:
canu -p asm -d ecoliTrio genomeSize=5m \
 -haplotype K12 K12.parental.fasta \
 -haplotype O157 O157.parental.fasta \
 -pacbio-raw F1.fasta

-p 指定輸出前綴
-d 指定輸出結果目錄
genomeSize 設置一個預估的基因組大小,便于讓Canu估計測序深度,單位是K,M,G
maxThreads 設置最大線程數
-pacbio-raw 直接測序得到的原始pacbio數據
-pacbio-corrected 經過糾正的pacbio數據
-nanopore-raw 原始的nanopore數據
-nanopore-corrected 結果糾正的nanopore數據
rawErrorRate 設置兩個未糾錯read之間最大期望差異堿基數
correctedErrorRate 設置糾錯后read之間最大期望差異堿基數
minReadLength 設置最小使用的reads長度
minOverlapLength 設置Overlap的最小長度

3.5 使用Falcon進行基因組組裝
falcon軟件組裝原理
  • 使用conda安裝軟件
conda install -c conda-forge falcon -y
  • 軟件使用,和mecat2一樣,關鍵就是弄好配置文件。比較好的做法是去官網下載合適的配置文件,然后將其中的某些參數稍加修改即可。如我下載植物的fc_run_plant.cfg
wget https://pb-falcon.readthedocs.io/en/latest/_downloads/fc_run_plant.cfg
cat fc_run_plant.cfg
[General]
input_fofn = input.fofn
input_type = raw
stop_all_jobs_on_failure = False
length_cutoff = 5000
genome_size = 1400000000
seed_coverage = 30
length_cutoff_pr = 4000
sge_option_da = -pe smp 5 -q bigmem
sge_option_la = -pe smp 20 -q bigmem
sge_option_pda = -pe smp 6 -q bigmem 
sge_option_pla = -pe smp 16 -q bigmem
sge_option_fc = -pe smp 24 -q bigmem
sge_option_cns = -pe smp 12 -q bigmem
pa_concurrent_jobs = 96
cns_concurrent_jobs = 96
ovlp_concurrent_jobs = 96
pa_HPCdaligner_option =  -v -B128 -M32 -e.70 -l4800 -s100 -k18 -h480 -w8 
ovlp_HPCdaligner_option = -v -B128 -M32 -h1024 -e.96 -l2400 -s100 -k18
#下面兩行其中的參數在下面介紹
pa_DBsplit_option = -a -x500 -s400
ovlp_DBsplit_option = -s400
falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 2 --max_n_read 200 --n_core 8 
falcon_sense_skip_contained = True
overlap_filtering_setting = --max_diff 100 --max_cov 100 --min_cov 2 --n_core 12

常規參數:
input_fofn = input.fofn 指出所有輸入數據,路徑+文件名
input_type = raw ( 或preads ) 標明序列類型,即是否已經完成了錯誤修正
length_cutoff = 10000 用于錯誤修正的種子序列的最低長度
length_cutoff_pr = 10000 用于構建重疊的預組裝種子序列的最低長度
b 如果基因組組分有偏好性(例如65% AT rich)應該設置b參數。
M 參數控制內存, l默認是1000,低于這個長度的序列丌用比對
S 默認是100,輸出點也可以設置成500提高速度,也有1000
E 準確性默認是0.7一般的設置成0.75
B 參數決定一個job中包含的block之間比對的數目
T 參數是控制在一個block里一個kmer出現的最多次數,這個參數有的設置8,12,16.這個值
越小速度越快。
k(kmer) 要小于32,線程數目T默認是4.

  • 保存配置文件后,直接執行fc_run.py腳本即可
fc_run.py fc_run.cfg
  • 結果文件較多,具體在官網查看,組裝的結果文件在下面
falcon_job/
    ├── 0-rawreads/     # Raw read error correction directory
組裝報告   └── report/   # pre-assembly stats
    ├── 1-preads_ovl/   # Corrected read overlap detection
    ├── 2-asm-falcon/   # String Graph Assembly
結果文件   └── a_ctg_all.fa   # all associated contigs, including duplicates
結果文件   └── a_ctg.fa    # De-duplicated associated fasta file
    ├── mypwatcher/     # Job scheduler logs
    ├── scripts/
    └── sge_log/        # deprecated

寫在最后

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

推薦閱讀更多精彩內容