bwa 的核心算法,用的是Burrows-Wheeler 变换这一套压缩思路,巧妙又高效。原理不难,核心就在于先压再比,省内存、快得多,适合现在测序搞出来那种超长的 DNA 序列。
算法思路比较像排序里的“先把问题变得规整”,它把序列预后搞成个压缩结构,再用个叫FM-index的玩意来快速比对。说白了,就是用最少的资源,把事办了。你要是搞过大规模比对,肯定知道内存和速度有多要命。
bwa
里还有个操作挺妙,叫“后缀数组配合 BWT”。听着拗口,其实本质就是节省空间用法,适合上百 GB 的基因数据那种场景。对了,它对长读长支持也不错,不是那种只适配短片段的。
哦对,文章里提到的是《Fast and accurate long-read alignment with Burrows-Wheeler transform》,想了解设计细节的话,建议你直接去翻原文看看,里面讲得蛮细。
如果你是搞生物信息学或者做测序相关的前端展示,建议你了解下这个算法。虽说它是后端算法,但前端要展示结果,理解逻辑还是蛮重要的。