01Megahit基因组装
1、背景
每一个物种的参考基因组序列(reference genome)的产生都要先通过测序的方法,获得基因组的测序读段(reads),然后再进行从头拼接或组装(英文名称为do novo genome assembly),最后还原测序物种的各条染色体的序列,即ATGC四种碱基的排列顺序。
之所以要进行基因组拼接,是因为现在的测序技术还只能测较短的序列,无法直接获取一整条染色体的序列。如一代测序(Sanger测序)一般可测1kb左右的序列;二代测序(next-generation sequencing),一般可测50~500bp;三代测序虽然可测100kb甚至更长的序列,但现在三代测序技术还不是很成熟,还有较高的测序错误率。
宏基因组组装,即把短的reads拼装成连续的序列contig,再根据PE等关系将contig拼装成scaffold。与单个基因组组装不同,宏基因组组装最终得到的是环境样品中全部微生物的混合scaffold。理想情况下一条scaffold对应一个物种的全基因组。但由于序列太短或者覆盖度不够,很难拼出一条完整的基因组。针对高通量测序数据,出现了多种拼接算法和软件。
在生物测序中,contig和reads分别指以下概念:
reads:测序过程中获取的原始实验数据,通常是短片段的dna或rna序列。每个read的长度通常在50到500个碱基对之间。在高通量测序中,可以生成数百万到数十亿个read。
contig:在组装(reads assembly)阶段中,将相互重叠的reads拼接起来形成的更长的序列。contig大小取决于拼接这些reads的算法以及将哪些reads组装在一起。contig与基因组中的染色体区域类似,但相比于染色体,contig可能会有断裂和缺失。较大的contig表示已经组装好的较长序列,而较小的contig则反映了未被完全组装的序列。
2、简介
基因组装的一般过程:reads---->contig---->scaffold---->chromosome
基因组组装:将测序短片段根据重叠(overlap)信息组装成长大片段。
首先基因组测序产生reads,然后对reads进行组装产生长片段Contigs,再确定Contig的方向和顺序,组装产生更长的片段Scaffolds,最后再组装连接Scaffold得到完整的染色体序列。
Scaffold:为多条contig序列连接形成更长片段,这些contig方向和顺序已经确定,且contig间未知序列(一般用NNNN表示)的长度也获知。
Scaffold的获得一般主要通过双端测序(如paired-end sequecing或mate-pair sequencing)来确定contig的顺序和方向,以及contig之间的间隔距离,具体如下示意图所示。
3、特点
Megahit是一个超快和超高内存使用的NGS组装软件,尤其适用宏基因你组数据组装,也适用于通用的单基因组组装,例如单菌小基因组、哺乳动物大基因组以及单细胞数据
Megahit是一个二代测序从头组装工具, 用于以时间和成本有效的方式组装大型和复杂的宏基因组数据,和其他基因组组装软件相比,Megahit在计算时间和内存消耗方面有着巨大优势,适用于土壤等复杂环境样本的组装和大量样本的混合组装。
MEGAHIT将数据整体组装在一起,即不需要像分区和规范化那样的预处理。 与以前组装土壤数据的方法相比,MEGAHIT产生了三次更大的组装,具有更长的重叠群N50和平均重叠群长度; 此外,55.8%的读数与组装结果可对齐,较之前提高了四倍。
4、组装原理
de Bruijn Graph算法
基于DeBruijn组装思想:使用不同kmer迭代,选择最优结果输出
(1) Megahit执行多个k-mer大小组装策略,迭代构建了从小kmer到大kmer的多个SdBG组装图
(2) 较小的k-mer有利于过滤错误的边缘并填充地覆盖区域中的间隙,较大的K-mer可用于解决重复序列
(3) 在每次迭代中,Megahit都会通过去除tips,合并气泡并去除低局部覆盖率的边缘来清理潜在错误组装
Megahit尤其适用于宏基因组学测序,因为宏基因组学的物种预测深度极不均匀
5、使用
(1)conda安装
conda install -c bioconda megahit
(2)查看安装版本
megahit -v
(3)输入文件
Megahit输入文件:fastq格式的测序文件(单端或双端),可以是gz/bz2压缩文件
Fastq,这是目前存储测序数据最普遍、最公认的一个数据格式, FASTQ存的是产生自测序仪的原始测序数据,它由测序的图像数据转换过来,也是文本文件,文件大小依照不同的测序量(或测序深度)而有很大差异,小的可能只有几M,大的则常常有几十G上百G,文件后缀通常都是.fastq,.fq或者.fq.gz(gz压缩)。
(4)基本命令
megahit --presets meta-large -t 30 --12 B1W10_1.fq,B1W101_2.fq -o ./megahit
--presets meta-large 这个函数是专门为宏基因组分析设计的,加上这个命令的话,它会组装几十遍,从中选出最好的那个,不加的话就组装一遍 这个非常重要,不能忽略,别人经常会忽略,这样显得专业
--12 双端
-o ./megahit新建一个文件夹,把结果输入进去
6、输入文件
这是一段FASTQ文件(Fastq格式),它包含了每个DNA序列片段的质量信息和相应的碱基序列。让我来解释这个样本。
第一行@E00488:222:HFMH2CCXY:1:1101:13798:2610 1:N:0:TCACCTCA 是描述DNA的标识符,其中E00488:222:HFMH2CCXY
是机器的名字和流水号,1
是pair number,:1101:13798:2610
表示run, lane和tile information,后面的1:N:0:TCACCTCA
则是用于矫正测序误差和分辨reads mapping方向的信息。
下一个行由碱基序列(CATCGACTTCGCCACCCTGACCTGCGCCGCCCGCGTCGCGCTCGGGCCGGATCTGCCGGCGATGTTCGCCAACGACGACCAGCTGGCCAGCGATCTCGAAAACGCGGCCAAGGAGGTCGCCGACCCGATTGGGCGAATGCCTCTGTGGGA)组成,它告诉我们基因组的DNA序列。
接下来是一个+
,它告诉我们后面的数据是关于质量得分的信息。
最后一行则是关于质量得分的信息,其长度与碱基序列长度相同,在这种情况下,每个字符都对应一个碱基,用来描述该位置基因对序列的可靠性,不同的字符代表不同的亮度(可靠程度),例如,A
通常表示较高可信度,而#
则代表非常低的质量得分。
7、输出文件
这段话是指Megahit软件在拼接 contigs 时生成的一个片段的相关信息,具体涵义如下:
- k127_1:表示这个 contigs 的编号为 k127_1。
- flag=1:表示这个 contigs 在组装中的状态,1 表示正常组装完成,0 表示异常终止。
- multi=2.0000:表示这个 contigs 在组装中被多少条 reads 拼接而成,2.0000 表示由两条 reads 组成。
- len=320:表示这个 contigs 的长度为 320 bp(碱基对)。
- CGTCGACGTGGCGCAGGACGTCATCATTGCCGAGCAGGACTGCGGCACGCTCGATGGCATCGAGGCGAGGGCCATTGTCGAAGGTGGCGAGATCATCGAGCCGTTGCGTGACCGAATCGTGGGTCGCGTGACCCTCGAGCGGCTGATCGATCCGTTCAACAATGAAATCATCCTCGATGCCAACGGTGAGATCACCGAAGACCTCGCGTCGGAGAACCAGGATGCCGTTATCGAGAAGGTGAAGATTCGCTCGGTGCTGACGTGTGCGACGCGGCGCGGTTGCTGCGCCCGTTGCTACGGGCGCGATCTGGCGACGGGCC:表示这个 contigs 的序列。