MAFFT
2015 年 5 月 12 日 改訂
MAFFT はアライメントを行うソフトウェアです.input と output file の両方が fasta 形式なので OTU 名が変更されたりせず,しかも非常に高速です.Unix のためコマンドラインになれない人は使いにくいかも知れませんが,Mac でも Win でも動かすことが可能です.

インストール

Mac に インストール

こちらからダウンロードして得られた .pkg をダブルクリックして,表示される指示に従ってください.


ソースコードをコンパイル

root user でなくてもインストールできるようになりました.詳しくはこちらを参照してください.

mafft の Source ファイルをダウンロード・解凍して core というフォルダに入ります.「Makefile」の最初の行を以下のように書き換えます.

From:
PREFIX = /usr/local
To:
PREFIX = /home/your_home/somewhere

(私の場合は,「/home/j/jun-inoue」としました)

そして

make
make install

と入力して,エラーメッセージが出なければ OK です.やり直す場合は,make clean してから make をやり直す必要があります.


Mac に source からインストールできないエラー
こちらから mafft-7.050-with-extensions-src.tgz をダウンロードしてこちらの手順でインストールを試みたところ,以下のようなエラーが得られました.

[i2:core]$ make
gcc -Denablemultithread -O3 -c mtxutl.c
gcc -Denablemultithread -O3 -c io.c
In file included from mltaln.h:287,
from io.c:1:
dp.h:7: error: thread-local storage not supported for this target
dp.h:8: error: thread-local storage not supported for this target
///
make: *** [io.o] Error 1

制作している方に伺ったところ,マルチスレッドの部分が Mac のデフォルトの gcc と非整合的に書いてあるからだそうです.Makefile の 8 行を以下のようにコメントアウトすれが良いそうです.実際コンパイルに成功しました [2013 年 7 月].

#ENABLE_MULTITHREAD = -Denablemultithread



使い方
一般的な使い方

mafft infile > outfile


アライメント済みのデータセットに新たな配列を加える
詳しくはこちらをご覧ください.

mafft --add new_sequences --reorder existing_alignment > output

mafft --addfragments fragments --reorder --thread -1 existing_alignment > output


User defined tree などオプションを使う

mafft --auto --treein NumTree.mafft --treeout infile > outfile


-- mafft auto
このオプションは小規模テータを丁寧に,大規模データはそれなりに計算するそうです.もしメモリサイズなどに余裕がある場合は,linsi や ginsi を試すこともできます.以下のコラムをご覧下さい.
[2009 年 10 月].


--treein
NumTree.mafft をこちらに従って作成します.Newick 形式の tree は,OTU を番号に置き換える必要があります.sequence file の一番目の OTU を 1,2 番目の OTU を 2 にします.系統樹は樹長付きである必要があるようです.そして,ruby を使って,tree file を mafft の形式に置き換えます.

ruby newick2mafft.rb NumTree > NumTree.mafft

newick フォーマットの tree は,最後にセミコロンがついていても,問題なく変換されました.例題を参照してください.

* 作者の加藤さんに伺ったところ,user tree オプションはまだ問題があるかもしれない,ということでした [2009 年 10 月].


--treeout
output として得られるアライメントの OTU の順番が,系統樹に基づいた並びになります.私はうまく使うことができなかったので (.tree というファイルができました),perl script で後から並べ直しています.



例題: mafft 形式の user tree を作成
樹長付きの newick 形式 tree があれば,perl script を使って tree 内部の名前を番号に変更できます.

ReplaceList.pl という検索置換リストを作成します.sequence file の最初の OTU を 1 として番号を付けます.

perl OTUreplaceListMaker.pl infile

上で作成した ReplaceList.pl を使って tree の OTU 名を番号に置き換えます.

perl -p ReplaceList.pl tree > NumTree

mafft の HP に従って,ruby を使って tree を mafft の形式にします.

ruby newick2mafft.rb NumTree > NumTree.mafft


linsi と ginsi オプションを使う

mafft-linsi --treein tree.mafft input > output

によって,常に丁寧な計算をさせることもできるそうです.
また,入力配列の全長にわたってホモロジーがあると仮定できるときは,

mafft-ginsi --ep 0.123 --treein tree.mafft input > output

の方が,少しだけよい結果を与えるそうです.

加藤さんに伺ったところ,哺乳類のタンパク質転写遺伝子のアミノ酸配列をアライメントする場合は,ginsi で問題ないそうです.ただ,真核生物全体を含むようなアライメントでは,ドメイン構造の変化などややこしい問題がありそうなので,ginsi が良いかどうかわからないそうです [2009 年 10 月].

これらは通常の方法とは多少異なるコンパイル (コマンド?) が必要です
(この問題は解決されたようです.非ルートアカウントで MAFFT をインストールする方法がこちらに書かれているそうです).
私の場合は研究室のクラスターで使いたかったので,non-root user としてインストールしました.こちらに従って Makefile の一行目を

PREFIX = /d/home7/jun/mafft-6.714_MyFile

に書き換えました.この場合,あらかじめルートディレクトリに「mafft-6.714_MyFile」というフォルダを作成しておく必要があります.すると,core, bin, man というフォルダが mafft-6.714_MyFile 内部に作成されます.その後,bin のなかに mafft や mafft-ginsi が作成されています.mafft-ginsi は通常のアプリケーションとは異なるようです.エイリアスでしょうか? 解析時には,

~/mafft-6.714_MyFile/bin/mafft-ginsi --ep 0.123 --treein Tree.mafft infile > Outfile_ginsi

のように,mafft-ginsi のパスをコマンドにつけて,なんとか動かすことができました.パスは pwd で調べることができます.
Ginsi_Ex_fol.tar.gz です.


気づいた点
  • -addfull オプションにはエラーがあったそうです.バージョン 7.213-7.220 の間です.7.221 からは問題ないようです (2015 年 4 月).
  • 700 種,600 残基のアミノ酸配列を Mac G4 でアライメントを行ったところ,2 分ぐらいでアライメントが終わりました.Clustal W だとアライメントの結果が明らかにおかしかったのですが,MAFFT は納得のいく結果を出してくれました.

  • 以前は OTU 名だけで sequnece がないと,解析が止まってしまいました.最近のバージョンでは,その場合は全部ギャップの配列を出力するようになったようです [2009 年 10 月].

エラー対策

libgcc_s.1.dylib がない
(この問題は version 7.150 以降では改善されたそうです.制作者の加藤さんからご連絡いただきました [2014 年 4 月].)
MAFFT v7.012b (2012/12/06) をインストールして走らせたら,以下のようなエラーが出ました.

[JunInoue:~]$ mafft
dyld: Library not loaded: /usr/local/lib/libgcc_s.1.dylib
Referenced from: /usr/local/libexec/mafft/version
Reason: image not found

---------------------------------------------

そこで find によってファイルを探しました.

[JunInoue:~]$ sudo find / -name libgcc_s.1.dylib
....
/usr/lib/libgcc_s.1.dylib

このファイルを /usr/local/lib にコピーしたら,mafft がうまく動きました.

sudo cp /usr/lib/libgcc_s.1.dylib /usr/local/lib/

 

Perl script: 複数の fast ファイルを一気にアライメントする

ファイル名の先頭は英数字にしてください [2010 年 12 月].
MultiMafft_fol.tar.gz