Minimap:高效的长序列比对工具
项目介绍
Minimap 是一款实验性的工具,旨在高效地找到两组长序列之间的多个近似映射位置。这些序列可以是读取与参考基因组、基因组之间,或者是长噪声读取之间的比对。Minimap 默认情况下具有高灵敏度,能够在 20% 的差异下找到 2kb 的匹配,但特异性较低。与主流比对工具不同,Minimap 目前不生成比对结果,因此其速度通常比主流比对工具快数十倍。例如,使用四个 CPU 核心,Minimap 可以在 2.5 分钟内将 1.6Gbp 的 PacBio 读取映射到人类基因组,在 3 分钟内将 1Gbp 的 PacBio E. coli 读取映射到预索引的 9.6Gbp 细菌基因组,或在约 1 小时内映射到预索引的 >100Gbp nt 数据库。
Minimap 并不替代主流比对工具,但它在你需要快速识别大量序列之间的长近似匹配时非常有用。对于这项任务,它比大多数现有工具都要快得多。
项目技术分析
算法概述
-
索引构建:Minimap 收集目标序列中所有 (w,k)-minimizers,并将其存储在哈希表中。标记最频繁的 0.1% 的 minimizers 为重复项。Minimap 使用可逆哈希函数来避免将 poly-A 作为 minimizers。
-
查询匹配:对于每个查询序列,收集所有 (w,k)-minimizers,并在哈希表中查找匹配项 (qi,ti,si),其中 qi 是查询位置,ti 是目标位置,si 表示匹配是否在同一条链上。
-
匹配聚类:对于同一条链上的匹配,按 {qi-ti} 排序,并在 500bp 窗口内聚类匹配。Minimap 合并两个窗口,如果 50% 的 minimizer 匹配重叠。对于不同链上的匹配,按 {qi+ti} 排序,并应用类似的聚类过程。这一过程受到 Hough 变换的启发。
-
最长递增序列:对于每个聚类,按 qi 排序 (qi,ti),并解决 ti 的最长递增序列问题。这找到了最长的共线匹配链。如果存在大于 10000 的间隙,则中断链。
-
输出结果:如果链包含 4 个或更多的 minimizer 匹配,并且匹配长度不小于 40,则输出链的起始和结束位置。
-
循环处理:如果还有更多目标序列,则返回到第一个查询记录并继续处理;否则停止。
项目及技术应用场景
Minimap 适用于以下场景:
- 基因组比对:在基因组之间进行快速的长序列比对,尤其是在需要高灵敏度的情况下。
- 读取映射:将长读取映射到参考基因组,尤其是在读取包含噪声或差异较大的情况下。
- 自我比对:用于 PacBio 读取的自我比对,以支持 miniasm 等工具的组装过程。
- 大规模数据库比对:在处理大规模序列数据库时,Minimap 的快速索引和比对能力使其成为理想选择。
项目特点
- 高效性:Minimap 的速度通常比主流比对工具快数十倍,能够在短时间内处理大量数据。
- 高灵敏度:默认情况下,Minimap 能够在 20% 的差异下找到 2kb 的匹配,适用于需要高灵敏度的场景。
- 低特异性:虽然特异性较低,但这一特点使其在处理噪声数据时表现出色。
- 灵活性:Minimap 支持多种比对模式,包括读取与参考基因组的比对、基因组之间的比对以及自我比对。
- 可扩展性:Minimap 支持预构建索引,适用于处理大规模、重复使用的数据库。
通过这些特点,Minimap 成为处理长序列比对任务的理想工具,尤其是在需要快速、高效地识别近似匹配的情况下。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考