MUMmer4 基因组比对入门:从安装到看懂第一个比对结果
2026/8/22 1:28:33 网站建设 项目流程

MUMmer4 基因组比对入门:从安装到看懂第一个比对结果

【免费下载链接】mummerMummer alignment tool项目地址: https://gitcode.com/gh_mirrors/mu/mummer

你手里有两个基因组——一个参考基因组,一个新组装出来的 contigs 文件。想知道它们差在哪:多少 SNP、哪里发生了倒位或缺失、组装质量如何。MUMmer4 就是为这类"两份 DNA 序列找不同"的工作设计的:它是基于精确匹配锚点的基因组比对工具,先找出所有完全相同的锚点,再用 Smith-Waterman 把锚点延伸成完整比对。

它不是单条命令,而是一条流水线:nucmer负责比对,show-coordsshow-snpsshow-diffdelta-filter负责从结果里提取不同粒度的信息,mummerplot负责画出来。下面按"装→跑→读懂输出→调参"的顺序过一遍。

从源码安装 MUMmer4

MUMmer4 需要 g++ 4.7 以上,运行 perl 脚本(mummerplotdnadiff等)还需要 perl 5.6+;要出图的话再装一个 gnuplot(4.0 以上)。Debian/Ubuntu 上先装build-essentials

执行以下命令,从源码克隆并安装到默认路径/usr/local

git clone https://gitcode.com/gh_mirrors/mu/mummer cd mummer ./configure make sudo make install

装完后which nucmer能找到可执行文件即成功。注意nucmer会覆盖同名输出文件,每次跑完记得换输出前缀。

第一个比对命令:nucmer

MUMmer 自带的示例数据是最快的上手材料:鼠疫杆菌的参考序列片段和它的 contigs 片段,真实序列但经过裁剪,几秒内就能跑完。执行这条命令,输入两个 multi-FASTA 文件:

nucmer -p anthrax docs/web/examples/data/B_anthracis_Mslice.fasta \ docs/web/examples/data/B_anthracis_contigs.fasta

运行结束后你会得到anthrax.delta,这就是整个工具的"中间产物"——所有后续分析(坐标、SNP、结构变异、画图)都只依赖这一个文件。所以它不是"跑完看一眼就扔"的输出,建议留存。

想看人类可读的比对列表,再执行:

show-coords -T anthrax.delta > anthrax.coords

输出是一张制表符分隔的表。官方示例的输出 docs/web/examples/data/nucmer.coords 长这样(节选):

[S1] [E1] | [S2] [E2] | [LEN 1] [LEN 2] | [% IDY] | [COV R] [COV Q] | [TAGS] 19959 52829 | 32872 1 | 32871 32872 | 99.98 | 10.52 100.00 | B_anthracis_Mslice 138291 52816 75314 | 22500 1 | 22499 22500 | 99.99 | 7.20 100.00 | B_anthracis_Mslice 138388

三个读法要点:

  • [S1]/[E1]是参考序列上的起止坐标,[S2]/[E2]是查询序列上的。若[S2] > [E2](如第一行的 32872→1),说明这段比对在查询序列的反向互补链上。
  • [% IDY]是这段比对区的同一性百分比,这里 99.98 说明该片段几乎完全一致。
  • [COV Q]是查询 contig 被覆盖的比例,100.00 表示整条 contig 都落到了参考基因组上;低于 100% 说明这条 contig 有片段找不到归属,值得留意。

从 delta 文件里挖 SNP 和结构差异

.delta文件本身用"delta 编码"记录插入和缺失:每行一个有符号整数,正数是参考序列上到下一个插入的距离,负数代表删除。README 里的例子可以帮你建立直觉:

A = acgtagctgag B = cggtagtgag Delta = (1, -3, 4, 0) A = acg.tagctgag B = .cggtag.tgag

你不需要手算这些,直接用配套工具。执行以下命令:先用delta-filter做 1-to-1 全局过滤(去掉重复区引起的冗余比对),再提取 SNP:

delta-filter -1 anthrax.delta > anthrax.1delta show-snps -rlTHC anthrax.1delta

-1保证每条序列只取一个最优位置,是找 SNP 时的推荐模式;-C让 SNP 只报在唯一比对区,避免重复区里的假阳性。每行输出一个 SNP 或 indel,含参考/查询两侧的坐标和碱基。

想知道更大的尺度——哪里断了、哪里倒位了——用show-diff

show-diff -rH anthrax.1delta

它把比对断点分类成六种事件:GAP(插入/缺失)、DUP(重复拷贝数差异)、BRK(参考侧来源不明的插入)、JMP(片段换位)、INV(倒位,会在倒位两端各报一条断点)、SEQ(跨 contig/染色体易位)。比如你在参考侧连续看到两条 INV,基本可以确认中间是一段倒位区。

如果懒得一个个敲,dnadiff脚本一条命令跑完上面全部流程,输出.report汇总文件和 SNP、断点、未比对区等一整套结果,适合对比同一物种的两个组装。

用 mummerplot 画点图

数据是表格式的最好,但基因组比对的共线性结构,画出来才直观。mummerplot会生成 gnuplot 脚本并直接出图,需要系统里装了 gnuplot。执行:

mummerplot -l anthrax.delta -p plot

-l表示同时生成点图和覆盖图,-p指定输出前缀,最终得到plot.ps(或-p配合 png 终端的位图)。效果类似官方文档里这张:

对角线是最关键的信息:落在主对角线上的段代表正向共线性区域;从对角线折向另一方向的线段就是倒位或易位;平行于主对角线的多条线通常对应重复序列。覆盖图则直接告诉你参考序列哪些区间没被覆盖到。

多 contig 比对时,官方教程里的 mapview 输出长这样(contig 在参考序列上的平铺定位):

MUMmer4 mapview 基因组 contig 平铺比对图,显示 contig 在参考序列上的位置

图里每根竖线代表一条 contig 的比对位置,线的长短和断口能直接暴露组装缺口和错位。

调参:4 个常用参数及其默认值

默认参数为"同物种或同源序列"设计。遇到大基因组、富重复基因组或跑得太慢时,重点调这 4 个:

参数默认值作用调大/调小的影响
-l, --minmatch20锚点最短长度调小更敏感但引入噪声匹配,运行时间显著增加;大基因组建议调大
-c, --mincluster65簇的最小长度(簇内匹配总长)调大减少碎片比对,结果更"确信"
-g, --maxgap90同一簇内相邻匹配的最大间隔调大 → 更大但更少的簇;调小 → 更碎
-b, --breaklen200延伸时愿意跨越的最低分区域长度调大容忍更多错误,但内存和时间开销上升

另一个常问的是"为什么有比对结果却没看到某条 contig":默认情况下nucmer只用在参考序列中唯一的锚点,重复区里的匹配会被跳过。富重复的基因组可以加--mumreference(仅要求参考侧唯一)或--maxmatch(全部最大精确匹配都用上)来换回灵敏度,代价是输出里多出重复区间的"影子比对",记得接delta-filter过滤。

性能预期参考 README 的说法:细菌或小型真核基因组在秒到分钟级;两个哺乳动物基因组约 3 小时(32 核以上、64GB 内存的工作站)。比对整个基因组前,文档建议先用nsegdust屏蔽低复杂度区,能明显减少无效匹配。

DNA 差异太大时:换 promer

当两条 DNA 序列的同一性已经低到锚点找不齐,但蛋白层面还相似(比如远缘物种、古老基因家族的共线性分析),换promer

promer -p pro_out ref.fa qry.fa

它把两侧序列在 6 个阅读框下全部翻译,在蛋白水平找锚点,再用和nucmer相同的方式聚类延伸,输出的.delta同样能被show-coordsshow-snpsmummerplot解析。注意两点:delta整数单位是氨基酸(1 个 delta 整数 = 3 个核苷酸),坐标仍按核苷酸计;show-coords会多出一列阅读框[FRM]

典型分工:同物种组装比对、SNP 挖掘用nucmer;跨属、跨科甚至更远物种的共线性分析、比较注释用promer。拿不准时可以先用nucmer跑一遍,看[% IDY]普遍低于 70-80% 再考虑切换。

下一步:跑一遍官方示例

仓库自带完整示例数据,都在 docs/web/examples/ 下,包含参考序列、contigs 序列以及预先生成的.delta.coords.snps等全套输出,可以直接对照自己跑的结果检查是否正确。建议现在就执行:

nucmer -p anthrax docs/web/examples/data/B_anthracis_Mslice.fasta \ docs/web/examples/data/B_anthracis_contigs.fasta show-coords -T anthrax.delta | head -20

把输出的前 20 行和仓库里的 nucmer.coords 对比一遍——坐标、同一性、覆盖率三列能对得上,说明你的安装和用法都没问题,可以放手跑自己的数据了。更详细的参数语义在 docs/nucmer.README 里逐条写清楚了。

【免费下载链接】mummerMummer alignment tool项目地址: https://gitcode.com/gh_mirrors/mu/mummer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询