nanopore测序技术专题(六):测序错误率太高无法使用?
作者:互联网
nanopore测序技术专题(六):测序错误率太高无法使用?
十二年前,你嫌illumina测序错误率高,不愿第一个吃螃蟹;七年前,你嫌pacbio的错误率高,觉得应该在等等;四年前,你担心国产的BGIseq错误率高,不愿尝试;现在你还是害怕nanopore测序错误率高,怕投入失败,决定还是坚守二代,等后面测序质量提高的吧。对不起,“君生我未生,我生君已老”。而且不仅为你写诗,还为你点歌:爱一个测序仪好难……
测序错误太高怎么办
按我对测序仪的评价标准,准确性第一位,测序读长第二位,然后是通量,价格,建库测序简易型。为什么准确性第一位,因为如果碱基准确,会给数据分析带来极大的便利。如果准确性高,也无需进行特别特别高深度测序了,现在数据分析中很多算法都是为了处理错误率的问题,比如利用kmer的方法进行拼,GATK中的BQSR以及VQSR,如果测序准确性高,可以省略掉这些过程,极大的节约时间和成本。然后目前,完美的测序仪是不存在的。按照大家固有的印象,一代准,二代多,三代长。有些人一听到10-15%的错误率就被吓得望而却步,其实不用这样。一个好的科学家能够根据每一种平台数据的特点,有针对性的应用,化腐朽为神奇。而不必一棒子打死一个测序平台。如果基因组能够从头测到尾部,准确性100%,你就可以长期休假了。目前测序市场上有各具特色的测序仪可供选择,其实挺好的。正所谓“一花独放不是春,百花齐放春满园”。
测序为何有错误
前面推文我们介绍过,测序仪其实是通过将化学碱基放大为光信号,溶液PH值变化信号,电信号等来进行识别。然而DNA碱基太小,同时化学结构又相似,因此不容易识别。传统的sanger测序,基于链终止反应。能够让一段长度为N的DNA,最终切割成1-N长度的序列,每个长度带一个荧光基团,然后通过跑胶并识别荧光基团来识别碱基。因为通量低,这种方法比较容易,人为即可识别出碱基,因此,准确性较高,可以答到万分之一的水平。高通量测序时代,由于一次要同时并行处理百万级别以上条数的DNA序列,需要对每一条进行多次PCR扩增,通过同时读取碱基荧光信号,最终对拍摄的照片进行处理。由于测序反应到后期,容易出现某个碱基插队(pre-phasing)或者掉队(phasing)的情况,给荧光信号带来干扰,导致碱基识别的准确性降低,因此,二代测序的准确性较一代偏低,不过依然可以达到千分之一的水平。而pacbio由于采用单分子测序,单个碱基的信号较弱,容易读取错误,不过由于采取滚环多次测序,而且测序错误随机分布,后期可以进行校正,大大提高准确性。
nanopore测序错误来自哪里
前面我们介绍过nanopore测序的原理,主要是利用一个马达蛋白穿过纳米孔,通过记录碱基穿过纳米孔时电流信号的变化来识别碱基。还是同样的道理,碱基电流太微弱,同时化学结构又相似,因此,你要知道这个技术难度很大。而且你要知道更重要的事情是,读取碱基并不是每次读取一个碱基,如果这样的话,最终只有四种电流图,那就容易识别了。像一代测序一样四种峰图,二代测序四种波长光。纳米孔的探测区的长度约4-6个bp,因此实际上记录的是:当时通过该区段的那4-6个碱基片段共同引起的电流信号改变。那么四种碱基,4-6个组合,理论上来说应该有4的4,5,6次方组合,一共5376种组合。这就给碱基识别带来了比较大的困难。碱基识别本质上就是分类器,属于有监督学习,需要开发合适的分类算法来进行识别。因此,我们来看到nanopore经常发布新的碱基识别算法,比如目前使用的基于神经网络算法(RNN)的碱基识别。
(以上说好听起来好像很有道理,其实都是我猜测的,如有雷同,可能我猜对了,哈哈哈……)
那么不能让每次读取的碱基数目相同吗,比如每次刚好4个,1个当然最好了,谁不想呢?但肯定很难做到,因为每秒钟读取碱基数目450bp并不是恒定的,没办法保证每次读取固定数目碱基组合。那么这就会对一种特殊的序列组合产生影响,例如基因组上的同聚物Homopolymer(也叫做均聚物),单一碱基重复的区域(例如AAAAAAAAAA),这样的区域基因组上还不少,读取头无法很好地判断其重复区间的长度。因此目前的纳米空测序这种小的InDel很多。
如何改进
由于纳米孔测序的错误是随机分布的,没有碱基偏好性,因此对于短小变异的检出都推荐增加测序深度来进行判断和纠正。但是目前对于碱基重复的均聚物的读取正确率缺乏好的策略。但是也不是毫无希望,目前主流的R9.4.1版Flowcell中纳米孔含1个读取头,而新研发的R10版Flowcell的纳米孔配有双读取头,探测区更长。有助于解决homopolymer区的错误率问题。
在软件算法方面,采用最新的成为flip-flop的算法。“flip-flop”原本形容穿拖鞋走路时啪嗒啪嗒的声响,这里用来比喻对重复碱基的标记的上下翻转记号。简单说,默认将序列标记为(+),而每遇到相同碱基的时候就翻转一下,给一个(-)的标记,下一个如果还是重复的就再反转回来,标记为(+)。这样在basecalling的最后阶段,根据带(+)(-)标记就能更准确区别出相同碱基的个数,从而提高Homopolymer区读取的正确率。
二代与三代错误率比较
下面我们拿真实的数据,对二代与三代的测序错误率进行比较。同样的样品分别采用illumina测序与MiniION测序,将测序数据分别比对到近源参考序列上,然后可视化数据。通过可视化,可以看每个位点测序的细节。这里面只是拿一个案例来作为演示,不同样品不同数据可能会有所不同,由于nanopore测序更新比较快,后面产出的数据可能会有很大的不同。
下图为illumina测序数据可视化,图中亮点是与参考序列不同的碱基,可能是测序错误,也可能是SNP,此图中的亮点并不多,而且可以通过高深度测序来进行排除。
下图为nanopore测序数据可视化,同理,亮点为错配位点,图中错配亮点较多,而且有很多连续的错配位点。
仔细观察这些亮点,处理错配碱基,很大一部分为空位,这就是小的InDel。
标签:读取,错误率,碱基,测序,nanopore,识别 来源: https://blog.csdn.net/u010608296/article/details/113822547