由于二代测序序列长度短(~300 bp),错误率低(<0.02%),其测序错误主要为替换错误,可通过哈希查找或数据压缩等方法直接查询每条序列在基因组中的准确比对区域,得到比对结果。而三代测序序列一方面错误率较高(~15%),且错误类型主要为插入或删除错误,难以通过文本查找直接找到序列在基因组中的比对区域,需要采用针对性的查询策略找到比对区域。另一方面,在比对阶段,由于三代序列读段长(平均长度超过10kbp),直接采用全局比对(Needleman-Wunsch,NW)或局部比对(Smith-Waterman,SW)比对算法需构建L×L大小的得分矩阵(其中L表示序列长度),计算空间复杂度较高。基于以上两方面分析,目前绝大多数针对二代测序的比对方法不适合处理三代测序数据。因此, 需要开发针对三代测序数据的序列比对算法。
minimap2算法是Heng Li大牛2018年在Bioinformatics期刊上发表的一篇三代序列比对算法文章。目前谷歌引用次数已经达到431次(截止时间2019.11.3日),可谓是三代序列处理一大利器。当时正好我也在研究三代序列比对,发现minimap2方法确实好用,最大的优势就是速度快,是真的快。而且比对结果比较不错,要说缺点,那主要的缺点就是耗内存,是牺牲内存换速度,毕竟二者不可兼得嘛。
minimap2主要思想
minimap2的主要思想是:首先将基因组序列的minimizer存储在哈希表中(minimizer指一段序列内最小哈希值的种子);然后对于每一条待比对序列, 找到待比对序列所有的minimizer,通过哈希表找出其在基因组中的位置, 并利用chaining算法寻找待比对区域;最后将非种子区域用动态规划算法