二代质控
二代测序中,每测一个碱基会给出一个相应的质量值,这个质量值是衡量测序准确度的。碱基的质量值13,错误率为5%,20的错误率为1%,30的错误率为0.1%。行业中Q20与Q30则表示质量值≧20或30的碱基所占百分比。例如一共测了1G的数据量,其中有0.9G的碱基质量值大于或等于20,那么Q20则为90%。
Q20值是指的测序过程碱基识别(Base Calling)过程中,对所识别的碱基给出的错误概率。
质量值是Q20,则错误识别的概率是1%,即错误率1%,或者正确率是99%;
质量值是Q30,则错误识别的概率是0.1%,即错误率0.1%,或者正确率是99.9%;
质量值是Q40,则错误识别的概率是0.01%,即错误率0.01%,或者正确率是99.99%;
![质量值.png](https://upload-images.jianshu.io/upload_images/19194855-037387c0d6bd1ae5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
首先,碱基质量值是衡量测序质量的重要指标,质量值(Q)越高代表碱基被测错的概率(P)越小,其计算公式为Q=-10lgP。例如,Q20和Q30分别代表碱基被测错的概率为1%和1‰。Illumina官方一般以Q30作为评价标准,以目前最常用的HiSeq 2000平台2×100PE测序为例,Illumina官方保证大于80%碱基准确度达Q30,而千年基因在合同中严格保证大于85%碱基准确度达Q30。
总结:
测序时每个碱基都会有质量值,我们设定一个阈值:20或30,如果低于这个阈值就表示碱基基本是测序错误的碱基,对测序的每个碱基做统计,如果
测序时每个碱基都会有质量值,如碱基质量值为20则表示该碱基的错误率为,10^(20/(-10))=0.01=1%(根据Q=-10lgP计算)
行业中,为了评估下机reads测序的准确度,我们会评估Q20或Q30(及所有碱基质量值大于20或30所占的比例),一般合同中要严格保证Q30至少达到85%。
二代质控:去接头,去Q平均<20;N>2,去PCR重复,去插入序列较短的序列。
3‘端质量会降低----测序酶活降低
5‘端质量不好----测序仪刚运行
二代纠错,kmer(一段重复序列)显示较低质量值,读取数量异常,把异常碱基替换为其它碱基看是否正常,但错误碱基太多则无法纠错。
三代质控
三代指控不同于二代碱基质量标准Q20和Q30,三代由于其随机分布的碱基错误率,其单碱基的准确性不能直接用于衡量数据质量。
三代纠错是用二代辅助(二代短reads比对到三代上,如果某一位点二代测得A,三代测T,三代可能测错了),或者自纠错,
组装算法
基因组组装的基本思路:无论是一代sanger、二代短reads、三代长Pacbio,我们得到的测序数据相较于整个基因组而言仍然是极小的;我们的任务就是将这些小片段连接起来;序列之间的联系因为重复序列的存在变得非常复杂,通过overlap我们最终都会构建Graph,所有的算法都会从Graph中得到最优路径,从而得到最初的contig。
目前,构建Graph的主流方法有3种,Overlap-Layout-Consensus(Celera Assembler、PBcR),de Bruijn Graph(SOAPdenovo ) 和 String Graph(Falcon)。
1 OLC算法(Overlap-Layout-Consensus)
适用于reads读长较大的测序数据,如一代和三代的reads。
主要分为三步:
(1)Overlap:,对所有reads进行两两比对,找到片段间的重叠信息;
(2)Layout:根据得到的重叠信息将存在的重叠片段建立一种组合关系,形成重叠群,即Contig;
(3)根据构成Contig的片段的原始质量数据,在重叠群中寻找一条权重最重的序列路径,并获得与路径对应的序列,即Consensus。
OLC算法最初成功的用于Sange测序数据的组装,比如Celera Assembler,Phrap,Newbler等均采用该算法进行拼接组装。
2 DBG算法(德布莱英图 de Bruijn graph SOAPdenovo)
适用于reads比较短的测序数据,二代数据。缺点:难以对重复序列区域进行分析,更依赖于建库。
首先将reads打断成长度为K的核酸片段,即Kmer,在利用Kmer间的overlap关系构建DBG,再通过DBG得到基因组序列。
DBG算法最早应用于如细菌类小的基因组的组装上,直到李瑞强等(2010)开发SOAPdenovo 算法,成功的组装了采用二代测序的黄瓜及熊猫的基因组,DBG算法开始普遍运用。
假设我们获得的reads是20bp,图1a中,生成6个片段,每个片段长度(L)是10bp,至少重叠长度(O)为5bp,然后各个片段建立OLC图。图1b的Kmer为5,建立DBG图。
DBG算法相比于OLC的优势是什么?
由于二代测序得到的reads长度较短,包含的信息量较少,因此完成基因组拼接需要较高的覆盖度。OLC算法适用于读长较长的序列组装,通过构成的OLC图寻找Consensus sequence的过程,实际上是哈密顿通路寻找的问题,算法非常复杂。
若采用OLC算法,会大大增加拼接的复杂性以及运算量。而采用DBG算法,通过K-1的overlap关系,构建DBG图,通过寻找欧拉路径得到Contig序列,从算法的角度极大的简化了组装的难度。
注意:N50只是能看出来连续性好坏,不能说组装效果好,contig拼错了scaffold N50也会提高。
SOAPdenovo 软件的组装过程
(1)通过Kmer之间K-1的overlap关系构建contig(重叠群),如图2
实际测序过程中,contig的组装过程要比上图复杂,根据K-mer之间的关系进行连接。
reads(read1:AGATCTTGTTATT;read2:GTTATTGATCTCC)逐bp的打断成长度为5bp的Kmer,根据Kmer间的overlap关系进行连接。可以看到两条reads中 GATCT 和 GTTATT 是两个重复的片段,在构建De Bruijn图中,会形成如上图的泡状结构以及多个分支的情况,面对这种很复杂的图,如何才能找到那一条正确的路径呢?
①对De Bruijn图进行化简
简化De Bruijn图需要去掉无法继续连接的分支、低覆盖度的分支,并且利用序列信息化简重复序列在De Bruijn图的分叉通路,对于少量的杂合位点,采用随机选择策略,合并杂合位点。通常需要考虑如下几种情况:
②得到一个简化的De Bruijn图后,仍然会因有很多分叉位点无法确定真正的连接关系,因此接下来在每个分叉位点将序列截断,得到了最初contigs。
(2)利用pair-end信息,将无overlap关系的contigs搭建成scaffold(脚手架),需要将将测序得到的reads比对回得到的contigs,利用reads之间的连接关系和插入片段大小信息,将contigs组装成scaffolds。,如图3:
(3)补洞
得到的scaffold中间会有较多的gap,为了使组装的序列更完整,需再次利用测序的双末端数据之间的配对关系连接contigs,并利用测序数据与已经组装的contig之间的覆盖关系对contig之间空隙进行补洞,延长contigs,补洞后的contigs长度相比补洞之前一般增加2-7倍。
3 string graph算法
有利于组装散列重复序列。
string graph中的节点是长度不一的序列,这些序列是由overlapping reads生成,需要设置一个最小overlap大小。