
系统发育相关的基因组之间既存在保守性又存在可变性。有些序列片断的数目以及顺序具备保守性,这种保守性可使用共线性(synteny)或同线性(colinearity)来进行描述。共线性主要强调两方面,一是序列的同源性,二是序列片断的排列顺序。同时即便很近缘的基因组也可能存在大量的变异和多态性,这种变异可能构成了不一样个体与群体性状差别的基础。单核苷酸多态性(single-nucleotide polymorphism,SNP)是指因为单个核苷酸位置上存在转换或颠换等变异所引发的DNA序列多态性,经常使用来研究近缘物种基因组的进化。css


tar -zxvf MUMmer3.23.tar.gzcd MUMmer3.23make install
MUMmer4的安装(https://github.com/mummer4/mummer/releases):git
tar -zxvf mummer-4.0.0beta2.tar.gzcd mummer-4.0.0beta2--prefix=/data/tengwenkai/software/MUMmer4.0 makemake install

MUMmer的核心基于Maximalexact matching算法开发的mummer。其余工具(nucmer、promer、run-mummer1、run-mummer3)都是基于mummer的开发的流程。这些流程的分析策略分为三部:github
①用mummer在两个输入中找给定长度的极大惟一匹配(Maximal exact matching)算法
②而后将这些匹配区域聚类成较大不彻底联配区域,做为锚定点(anchor)sql
③最后它从每一个匹配外部扩展联配,造成有gap的联配。shell
MUMmer核心是基于后缀树(suffix tree)数据结构的最大匹配路径。根据这个算法开发出来的repeat-match和exact-tandems能够从单个序列中检测重复,mummer则是用于联配两条或两条以上的序列。swift
概念1:suffix tree: 表示一个字符串的全部子字符串的数据结构,好比说abc的全部子字符串就是a、ab、ac、bc、abc。微信
概念2:Maximal Unique Match指的是匹配仅在两个比较序列中各出现一次。数据结构
Mummer为基于后缀树(suffix tree)数据结构,可以在两条序列中有效定位极大惟一匹配(maximal uniquematches),所以它比较适用于产生一组准确匹配(exact matches)以点图形式展现,或者用来锚定从而产生逐对联配(pair-wise alignments)编辑器
大部分状况下都不会直接用到主程序mummer,因此只要知道MUMmer历经几回升级,使得mummer能够可以只找在reference和query都惟一的匹配(初版功能),也能够找在reference惟一但不必定在query惟一的匹配(第二版新增),甚至不在意是否惟一的匹配(第三版新增),参数分别为-mum、-mumreference、-maxmatch。repeat-match和exact-tandems比较少用,毕竟参数也很少,彷佛有其余更好的工具能用来寻找序列中的重复区。
mummer最适合生成能够显示为dot plot的精确匹配列表,或者用做生成成对比对中的锚点。基于mummer,做者编写了如下4个pipeline,方便实际使用:
nucmer:由Perl写的流程,用于联配很相近(closely related)核酸序列。它比较适合定位和展现高度保守的DNA序列。注意,为了提升nucmer的精确性,最好把输入序列先作遮盖(mask)避免不感兴趣的序列的联配,或者修改单一性限制下降重复致使的联配数。
promer:也是Perl写的流程,工做原理相似nucmer。其在进行任何精确匹配以前,将输入序列被翻译成全部六种读框的氨基酸。这使得promer可以鉴定在DNA水平上可能不保守的保守蛋白质序列的区域,并所以使其具备比nucmer更高的灵敏度。注意,灵敏度的增长将致使大量输出高度类似的序列,所以建议仅当输入序列太分散难以产生合理数量的nucmer输出时才使用promer。

因为MUMmer有一个主程序和4个主流程,所以决定每种状况下最佳的MUMmer比对程序十分重要。MUMmer的使用状况可能有如下几种:
./mummer [options] <reference-file> <query-files>-mum:只寻找在reference和query都惟一的匹配-mumreference:寻找在reference惟一但不必定在query惟一的匹配(默认)-maxmatch:寻找全部匹配,不在意是否惟一-n:只匹配字符a、c、g、t,能够大写或小写,忽略掉被mask的序列-l:匹配的最短长度,默认为20-b:同时查找正向链和反向互补链的匹配-r:只查找反向互补链的匹配-s:显示匹配的子字符串-c:汇报与原始链对应的反向互补匹配的query-position-F:无论输入序列的数目,强制4列的输出结果格式-L:显示query序列的长度
使用mummer对两个基因组进行分析:
MUMmer4.0/bin/mummer -mum -b -c -n 1171_armatimo.fasta 142_armatimo.fasta > 1171_142.mums
Mummerplot使用方法以下所示:
mummerplot [options] <match file>match file:匹配文件,由mummer、nucmer、promer等程序生成(后缀.out、.cluster、.delta、.tiling)-f, --filter:只展现.delta比对中best匹配(在一对多模式中)--fat:只展现使用fattest比对的序列-p|prefix:设置输出结果的文件前缀,默认为'out'-rv:x11格式结果背景颜色反转-r|IdR:指定X轴绘制的序列ID-q|IdQ:指定Y轴绘制的序列ID-R|Rfile:经过文件Rfile指定参考序列的绘制顺序-Q|Qfile:经过文件Qfile指定查询序列的绘制顺序,Rfile/Qfile能够是fasta序列文件,也能够是序列ID的列表-s|size:输出图片的大小,可选small、medium、large,至关于--small、--medium、--large,默认为small。-S, --SNP:在比对中标出SNP位点-t|terminal:输出结果为x十一、postscript、png,至关于--x十一、--postscript、--png,默认为x11,x11是一种互动展现,postscript为矢量格式-t|title:设置图片的标题,默认为none-x|xrange:设置x轴的范围[min:max]-y|yrange:设置y轴的范围[min:max]
MUMmer4.0/bin/mummerplot -t postscript -p 1171_142 1171_142.mums
做图结果以下所示:
不一样颜色分别表明不一样方向(正向链/反向互补链)上的匹配。
MUMmer3.23/run-mummer1 142_armatimo.fasta 391_armatimo.fasta 142_391
MUMmer3.23/run-mummer1 142_armatimo.fasta 391_armatimo.fasta 142_391 -r
③有重排的高度类似序列,有时候两个序列是高度类似的,可是会出现大片断的序列重排、颠倒或插入。为了比对这些序列应该使用run-mummer3,它使用一种聚类方法,容许这些大规模突变的类型,但保留了run-mummer1的许多其余功能。为了更准确地寻找SNP,您能够编辑脚本,并将-D选项添加到combineMUMs命令行,从而产生一个仅两个序列之间差别位置的简明文件。用法以下所示:
MUMmer3.23/run-mummer3 142_armatimo.fasta 391_armatimo.fasta 142_391
重排以后gap减小。在脚本里添加-D后的align文件给出了gap处的碱基差别,以下所示:
④较类似序列的比对,run-mummer1和run-mummer3更多地关注两个序列之间的区别,而nucmer关注的是什么是相同的。它对一致性对齐的限制不多,因此从新排列,反转和重复都将被nucmer识别。nucmer的使用方法以下所示(须要预先安装Foundation.pm):
nucmer [options] <Reference> <Query>Reference:参考基因组,含有多条序列的FASTA文件名Query:要匹配的基因组,含有多条序列的FASTA文件名--mum, --mumreference(默认), --maxmatch:与mumer相同-b, --breaklen:一个比对尝试延伸的最大距离,默认为200-c, --mincluster:一个匹配聚类簇的最短长度,默认为65-D, --diagdiff:一个聚类中两个邻接匹配的最大对角差分,默认5-d, --diagfactor一个聚类中两个邻接匹配的最大对角差分与gap长度的比值,默认为0.12--noextend:不执行聚类簇延长步骤,默认关闭-f, --forward:只使用查询序列的正向链-g, --maxgap:一个聚类中两个邻接匹配的最大gap长度,默认为90-l, --minmatch:一个匹配的最短长度,默认为20-L, --minalign:一个聚类延伸后比对的最短长度,默认为0-r, --reverse:只使用查询序列的反向互补链--nosimplify:不简化比对,当使用序列与自身比对来寻找重复时能够选此选项,默认关闭-p, --prefix:输出结果delta文件的前缀,默认为out--sam-short:保存SAM短格式到文件路径--sam-long:保存SAM长格式到文件路径-t, --threads:程序运行使用的核数
使用nucmer对两个基因组进行比较分析:
MUMmer4.0/bin/nucmer --mum -g 500 -c 100 -p 1171_142 142_armatimo.fasta 1171_armatimo.fasta
MUMmer4.0/bin/show-coords -r 1171_142.delta > 1171_142.coords
其中-r表示按照参考序列的ID以及坐标进行分类,结果以下所示:
MUMmer4.0/bin/show-aligns -r 1171_142.delta 142_armatimo1 1171_armatimo1 > 1171_142.aligns
结果以下所示:
使用mummerplot进行可视化,以下所示:
MUMmer4.0/bin/mummerplot -t postscript -p 1171_142 1171_142.delta
做图结果以下所示:
⑤较不类似的序列比对,不少基因的DNA序列差别较大,但蛋白序列是保守的,所以比较蛋白序列能寻找到更多的匹配,promer能够将DNA序列翻译成蛋白序列进行比对,其使用参数与nucmer相似,以下所示:
MUMmer4.0/bin/promer --mum -p 1171_142 142_armatimo.fasta 1171_armatimo.fasta
使用delta-filter过滤掉Identity低于50%的匹配:
MUMmer4.0/bin/delta-filter -q -r -i 50 1171_142.delta > 1171_142.filter
进行可视化做图:
MUMmer4.0/bin/mummerplot -t postscript -p 1171_142 1171_142.filter
做图结果以下所示:
MUMmer4.0/bin/nucmer -p 142_391 142_armatimo.fasta 391_armatimo.fasta
重复序列可能会掩盖可能的SNP,所以使用delta-filter去除一对多、多对多中的冗余匹配:
MUMmer4.0/bin/delta-filter -r -q 142_391.delta > 142_391.filter
使用show-snps显示匹配中的SNP,以下所示:
MUMmer4.0/bin/show-snps -Clr 142_391.filter > 142_391.snps
结果以下所示:

本文分享自微信公众号 - 微生态与微进化(MicroEcoEvo)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。