如何使用MUMmer比对大片段序列
测序技术刚开始发展的时候,大家得到的序列都是单个基因的长度,所以一般都是逐个基因的比较,用的都是BLAST或FASTA通过逐个基因联配的方式搜索数据库。但是1999年后,越来越多的物种全基因组出现,比如说在1999年出现了Helicobacter pylori的第二类菌株的基因组序列,就需要研究同一物种不同品系进化过程的基因组变化,比如说基因倒置现象。传统的BLAST/FASTA就用不了,就需要用到新的工具,这就是MUMmer出现的历史背景。
那么MUMmer能用来研究什么呢?比如说细菌的不同菌株基因组中倒置现象,人和老鼠的基因组在进化上的重排现象。还有比较同一物种的不同组装结果等。MUMmer的算法基础(suffix tree)使得它的速度比BLASTZ(k-mers)快得多,但是灵敏度低,也就是检测不到比较弱的匹配,但是作者说这都是可以通过修改参数进行改善.
安装
MUMmer是开源软件,因此可以通过下载源码编译的方式进行安装,同时biconda上已经有编译好的二进制版本方便用conda进行安装。目前,我个人比较推荐使用源码编译的方式进行安装。目前MUMmer已经更新到第四版,但是还在测试中,所以文章也没有发,求稳还是用3.23.
多说一句,如果在bioconda频道上搜索mummer, 会发现一个pymummer,不要以为这是mummer的源代码用python改写,它仅仅做到了通过调用系统安装的MUMmer的工具的方式运行而已,并且功能目前实在是太弱了。
# MUMmer3.23
wget https://gigenet.dl.sourceforge.net/project/mummer/mummer/3.23/MUMmer3.23.tar.gz
tar -xf MUMmer3.23.tar.gz
cd MUMmer3.23
make install
# MUMmer4.00-beta2
wget https://github.com/mummer4/mummer/releases/download/v4.0.0beta2/mummer-4.0.0beta2.tar.gz
tar xf mummer-4.0.0beta2.tar.gz
cd mummer-4.0.0beta2
./configure --prefix=$HOME/biosoft/mummer-4.0.0beta2 && make && make install
为了方便使用记得将软件路径加入PATH。
MUMmer使用方法
MUMmer的核心基于 Maximal exact matching 算法开发的mummer
。其他工具(nucmer
,promer
,run-mummer1
.run-mummer3
)都是基于mummer
的开发的流程。这些流程的分析策略分为三部:
- 用
mummer
在两个输入中找给定长度的极大唯一匹配( Maximal exact matching ) - 然后将这些匹配区域聚类成较大不完全联配区域, 作为锚定点(anchor)
- 最后它从每个匹配外部扩展联配, 形成有gap的联配。
Maximal exact matching
MUMmer核心是基于后缀树(suffix tree)数据结构的最大匹配路径。 根据这个算法开发出来的repeat-match
和exact-tandems
可以从单个序列中检测重复,mummer
则是用于联配两条或两条以上的序列。由于MUMmer的其他工具基本都是基于mummer开发的,于是理解mummer就变得非常重要。
概念1:suffix tree: 表示一个字符串的所有子字符串的数据结构,比如说abc的所有子字符串就是a,ab,ac,bc,abc.
概念2:Maximal Unique Match: 指的是匹配仅在两个比较序列中各出现一次
mummer: 基于后缀树(suffix tree)数据结构,能够在两条序列中有效定位极大唯一匹配(maximal unique matches),因此它比较适用于产生一组准确匹配(exact matches)以点图形式展示,或者用来锚定从而产生逐对联配(pair-wise alignments)
大部分情况下都不会直接用到mummer
,所以只要知道MUMmer历经几次升级,使得mummer
可以能够