细菌基因组组装初探(以伯克霍尔德菌Burkholderia为例)

随着高通量测序的迅猛发展,越来越多的物种的基因组被测序解读出来。基因组是分子生物学,遗传学,进化生物学等研究的基石,如果你研究的物种没有好的参考基因组序列,就不容易开展基因功能分析,转录组学相关,群体遗传等研究。所在实验室的主要研究物种没有好的基因组,开展实验时深感基因组的重要。不过基因组测序的成本和分析难度是一个门槛,需要大量的人力物力的投入。一般来说基因组小而简单就很容易进行测序组装注释,像绝大多数细菌以及部分真菌都是比较好的例子。所以今天以一个细菌基因组作为例子尝试和了解一下基因组测序组装。


1. 软件安装

需要下列软件
FastQC v0.11.5
Trimmomatic v0.36
SPAdes v3.11.1
MegaHit v1.1.1
KmerGenie
Abyss v2.1.5
MaSuRCA
velvet
QUAST v4.5
bowtie2 v2.2.5
anvi’o v3
使用miniconda安装上述软件,miniconda的使用见我的简书教程Miniconda的安装与使用(以转录组分析软件为例)

czh@ubuntu ~/Desktop/De_novo_genome_assembly
$ conda create -n de_novo_genome fastqc trimmomatic SPAdes MegaHit QUAST bowtie2 anvio -y
2. 获取细菌基因组原始数据
czh@ubuntu ~/Desktop/De_novo_genome_assembly
$ mkdir -p De_novo_genome_assembly & cd De_novo_genome_assembly
czh@ubuntu ~/Desktop/De_novo_genome_assembly
$ wget  https://github.com/AstrobioMike/happy_belly_tutorial_data/raw/master/genomics_de_novo_working_dir.tar.gz

Length: 1086929422 (1.0G) [application/octet-stream]
Saving to: 'genomics_de_novo_working_dir.tar.gz'

genomics_de_novo_wo 100%[===================>]   1.01G  2.82MB/s    in 10m 36s 

2019-05-31 07:06:03 (1.63 MB/s) - 'genomics_de_novo_working_dir.tar.gz' saved [1086929422/1086929422]

czh@ubuntu ~/Desktop/De_novo_genome_assembly
$ wget  https://github.com/AstrobioMike/happy_belly_tutorial_data/raw/master/genomics_de_novo_working_dir.tar.gz

Length: 516473079 (493M) [application/octet-stream]
Saving to: 'genomics_de_novo_downloaded_results.tar.gz'

genomics_de_novo_do 100%[===================>] 492.55M   749KB/s    in 6m 50s  

2019-05-31 07:03:29 (1.20 MB/s) - 'genomics_de_novo_downloaded_results.tar.gz' saved [516473079/516473079]

czh@ubuntu ~/Desktop/De_novo_genome_assembly
$ tar -xzvf genomics_de_novo_working_dir.tar.gz & tar -xzvf genomics_de_novo_downloaded_results.tar.gz
3. 原始数据质控
3.1 使用fastqc对原始数据进行质控
czh@ubuntu ~/Desktop/De_novo_genome_assembly
$ cd working_dir/
czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ ls
BCep_R1_QCd_err_cor.fastq.gz  B_cepacia_raw_R2.fastq.gz
BCep_R2_QCd_err_cor.fastq.gz  processing_commands.txt
B_cepacia_raw_R1.fastq.gz     reference_genome

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ fastqc B_cepacia_raw_R1.fastq.gz B_cepacia_raw_R2.fastq.gz -t 8

fastqc对两个双端测序的原始文件的质控结果为html格式文件:B_cepacia_raw_R1_fastqc.html,B_cepacia_raw_R2_fastqc.html。



从结果中可知, 正向序列有4149343条,总共有序列读长为151。



测序每个碱基质量图的解读,Y轴是质量评分,Q = -10log10(e),e为测错的概率。

Relationship Between Sequencing Quality Score and Base Call Accuracy

Quality Score Probability of Incorrect Base Call Inferred Base Call Accuracy
10 (Q10) 1 in 10 90%
20 (Q20) 1 in 100 99%
30 (Q30) 1 in 1000 99.9%

蓝色线表示每个碱基的质量评分,红线是质量评分中位数,黄色的箱线图表示四分位差。

3.2 使用Trimmomatic切除原始数据中低质量碱基
(de_novo_genome) 
czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ trimmomatic PE B_cepacia_raw_R1.fastq.gz B_cepacia_raw_R2.fastq.gz BCep_R1_paired.fastq.gz BCep_R1_unpaired.fastq.gz BCep_R2_paired.fastq.gz BCep_R2_unpaired.fastq.gz LEADING:10 TRAILING:10 SLIDINGWINDOW:5:20 MINLEN:151 -threads 8
TrimmomaticPE: Started with arguments:
 B_cepacia_raw_R1.fastq.gz B_cepacia_raw_R2.fastq.gz BCep_R1_paired.fastq.gz BCep_R1_unpaired.fastq.gz BCep_R2_paired.fastq.gz BCep_R2_unpaired.fastq.gz LEADING:10 TRAILING:10 SLIDINGWINDOW:5:20 MINLEN:151 -threads 8
Quality encoding detected as phred33
Input Read Pairs: 4149343 Both Surviving: 598814 (14.43%) Forward Only Surviving: 657483 (15.85%) Reverse Only Surviving: 859607 (20.72%) Dropped: 2033439 (49.01%)
TrimmomaticPE: Completed successfully

参数解读
"LEADING:10" 序列开头质量评分低于10的剔除。
"TRAILING:10" 序列末端质量评分低于10的剔除。
"SLIDINGWINDOW:5:20" 滑窗参数,从第一个碱基开始,以5个碱基为滑窗计算平均质量评分低于20的位置剔。
"MINLEN:151" 检查的总序列长度不低于151。
质控结果
最后只有大约14%的双端序列剩下,大约600,000双端序列,也就是(600,000 paired reads) * (302 bps per paired read) = 181.2 Mbps数据,大多数Burkholderia菌基因组大约为 8.5 Mbps,意味着只有20X覆盖度,数据量偏少,理想的覆盖度是50-100X左右,因此需要改变质控策略,放低质控要求。

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ trimmomatic PE B_cepacia_raw_R1.fastq.gz B_cepacia_raw_R2.fastq.gz BCep_R1_paired.fastq.gz BCep_R1_unpaired.fastq.gz BCep_R2_paired.fastq.gz BCep_R2_unpaired.fastq.gz CROP:140 LEADING:10 TRAILING:10 SLIDINGWINDOW:5:20 MINLEN:140 -threads 8
TrimmomaticPE: Started with arguments:
 B_cepacia_raw_R1.fastq.gz B_cepacia_raw_R2.fastq.gz BCep_R1_paired.fastq.gz BCep_R1_unpaired.fastq.gz BCep_R2_paired.fastq.gz BCep_R2_unpaired.fastq.gz CROP:140 LEADING:10 TRAILING:10 SLIDINGWINDOW:5:20 MINLEN:140 -threads 8
Quality encoding detected as phred33
Input Read Pairs: 4149343 Both Surviving: 1484739 (35.78%) Forward Only Surviving: 638815 (15.40%) Reverse Only Surviving: 877835 (21.16%) Dropped: 1147954 (27.67%)
TrimmomaticPE: Completed successfully

再次质控得到大约36%的数据,150万个双端序列,大约450Mbps数据,足够50X的覆盖度了。
再用fastqc检测一下切割低质量序列后的数据

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ fastqc BCep_R1_paired.fastq.gz BCep_R2_paired.fastq.gz -t 4


序列被切割成140bp的长度了,低质量序列被剔除,但数据质量依然不够完美。

4. 基因组组装

纯二代测序从头组装基因组这篇文章和Happy Belly Bioinformatics网站中得知主流的组装软件MaSuRCA, IDBA-UD, SOAPdenovo2, Abyss, velvet,Spades和MegaHit,我逐个去这些软件的主页上去看了看。
MaSuRCA 在2019年5月份刚更新的版本,支持二代短序列和三代长序列的混合组装。
IDBA-UD 最近的更新是2016年7月。
SOAPdenovo2 最近的更新是2017年1月。
Abyss 最近的更新是2018年12月。
velvet 最近的更新是2018年7月。
Spades 在2019年5月份刚更新,该软件更新非常频繁。
MegaHit 在2019年5月份刚更新,该软件更新比较频繁,软件作者之一是SOAPdenovo2的第一作者,文章强调SOAPdenovo2和IDBA-UD在组装土壤宏基因组的时候内存需求巨大,所以构建了MegaHit软件去解决这个问题。
综上,打算使用Spades, MegaHit, MaSuRCA, Abyss 和velvet这5个软件去分别组装细菌基因组。

4.1 序列错误矫正

使用spades进行序列错误矫正,可以提高基因组组装质量。

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ spades.py -1 BCep_R1_paired.fastq.gz -2 BCep_R2_paired.fastq.gz -o spades_error_corrected_reads -t 12 -m 24 --only-error-correction

4.2 spades组装

尝试kmer分别为21,33,55,77,89去进行组装,--careful模式减少组装错误。

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ spades.py -1 BCep_R1_QCd_err_cor.fastq.gz -2 BCep_R2_QCd_err_cor.fastq.gz -o spades_kmers_set_careful_assembly -t 4 -k 21,33,55,77,89 --careful --only-assembler

4.3 MegaHit组装

默认参数下组装

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ megahit -1 BCep_R1_QCd_err_cor.fastq.gz -2 BCep_R2_QCd_err_cor.fastq.gz -o megahit_default_assembly -t 4

--min-count参数下组装

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ megahit -1 BCep_R1_QCd_err_cor.fastq.gz -2 BCep_R2_QCd_err_cor.fastq.gz -o megahit_min_count_3_assembly -t 4 --min-count 3
4.4 MaSuRCA组装

参考组装工具汇总(占坑用),这个软件强调双端数据不要进行质控切割序列和误差矫正,直接喂给软件原始数据就行。

#创建config.txt文件
czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ masurca -g config.txt
# 编辑config.txt中的内容
$ vim config.txt

主要分为DATA和PARAMETERS,DATA部分用来指定PE(双端illumina普通文库), JUMP(illumina大片段文库), OTHER(其他平台的测序结果)。

#config.txt文件中需要修改的行
PE= pe 350 50  /home/czh/Desktop/De_novo_genome_assembly/working_dir/B_cepacia_raw_R1.fastq  /home/czh/Desktop/De_novo_genome_assembly/working_dir/B_cepacia_raw_R2.fastq
# 350为测序时插入片段大小, 50为标准差,没有大片段文库,在JUMP前加#,将其注释掉。

产生组装程序并运行

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ masurca  config.txt
Verifying PATHS...
jellyfish OK
runCA OK
createSuperReadsForDirectory.perl OK
creating script file for the actions...done.
execute assemble.sh to run assembly

#组装运行
czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ ./assemble.sh


4.5 velvet组装

参考了velvet软件进行基因组组装使用 velvet 组装细菌基因组这两个教程。

#使用不同的Kmer值进行组装,从Kmer=31开始,以2为间隔设置Kmer值到97。
czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir/velvet
$ velveth assemble 31,97,2 -shortPaired -fastq.gz -separate BCep_R1_QCd_err_cor.fastq.gz BCep_R2_QCd_err_cor.fastq.gz
czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir/velvet
$ for dir in assemble_*; do velvetg $dir & done
czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir/velvet
#查看不同Kmer值下组装的N50, Kmer=89时,N50最大。
$ grep -P "n50 of \d+" assemble_*/Log -o
assemble_33/Log:n50 of 813
assemble_35/Log:n50 of 921
assemble_39/Log:n50 of 1183
assemble_41/Log:n50 of 1346
assemble_43/Log:n50 of 1532
assemble_45/Log:n50 of 1734
assemble_49/Log:n50 of 2283
assemble_51/Log:n50 of 2681
assemble_53/Log:n50 of 3020
assemble_57/Log:n50 of 4125
assemble_59/Log:n50 of 4851
assemble_61/Log:n50 of 5587
assemble_63/Log:n50 of 6538
assemble_65/Log:n50 of 8029
assemble_67/Log:n50 of 9756
assemble_69/Log:n50 of 12173
assemble_71/Log:n50 of 14681
assemble_73/Log:n50 of 16829
assemble_75/Log:n50 of 19888
assemble_77/Log:n50 of 20261
assemble_79/Log:n50 of 23545
assemble_81/Log:n50 of 23545
assemble_83/Log:n50 of 26101
assemble_85/Log:n50 of 25393
assemble_87/Log:n50 of 23581
assemble_89/Log:n50 of 27885
assemble_91/Log:n50 of 25776
assemble_93/Log:n50 of 24638
assemble_95/Log:n50 of 23882
assemble_97/Log:n50 of 23798

4.6 Abyss组装

Abyss组装需要你给定一个kmer值,这里用kmer=89进行组装。实际中你需要通过循环语句,实现多个kmer 梯度组装,得到最优组装结果。KmerGenie这个软件可以帮助估算最优kmer值。

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir/abyss
$ abyss-pe k=89 name=test89 in='/home/czh/Desktop/De_novo_genome_assembly/working_dir/abyss/BCep_R1_QCd_err_cor.fastq.gz /home/czh/Desktop/De_novo_genome_assembly/working_dir/abyss/BCep_R2_QCd_err_cor.fastq.gz' 

5. 不同软件组装质量的比较

QUAST是一个优秀的组装质量比较工具。QUAST 系列软件还可以比较使用不同方法组装的转录组或者宏基因组的质量。 从NCBI上下载两个关于Bulkholderia cepacia ATCC 25416 基因组的参考文件.

czh@ubuntu ~/Desktop/De_novo_genome_assembly/working_dir
$ quast.py -o quast_B_cep_out -R reference_genome/BCep_ref.fna -G reference_genome/BCep_ref.gff -l "spades_kmers_careful, megahit_default, megahit_min_count_3, MaSuRCA, velvet_89, Abyss_89" spades_kmers_set_careful_assembly/contigs.fasta megahit_default_assembly/final.contigs.fa megahit_min_count_3_assembly/final.contigs.fa masurca/CA/9-terminator/genome.scf.fasta  velvet/assemble_89/contigs.fa abyss/test89-scaffolds.fa -t 8 -m 1000

5个软件中初步看来是spades组装效果最好,但是velvet和abyss是需要给定Kmer值的,我粗略的给了Kmer=89去组装,所以我这个quast组装评估结果并不可靠。此外,只利用了350bp的小片段文库的二代数据去组装,而如今上述软件大多支持二代小片段和大片段共同组装,二代三代混合组装以及纯三代pacbio和nanopore的组装,存在不同的测序策略和不同的组装策略。细节有很多,在此只是简单过一遍分析的大体流程,存在大量问题有待探索。spades这个软件还是非常适合小基因组的组装的,推荐!

参考文献

生信小白学习系列:如何进行基因组组装?(1)
De novo genome assembly Happy Belly Bioinformatics
纯二代测序从头组装基因组
velvet软件进行基因组组装
使用 velvet 组装细菌基因组

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容