
系統發育相關的基因組之間既存在保守性又存在可變性。有些序列片斷的數目以及順序具備保守性,這種保守性可使用共線性(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源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。