MAFFTでアラインメントの距離行列を得る
MAFFTのTipsに
"How to get a distance matrix, instead of alignment"
の記述があるものの、まだドキュメントが作成されていないようだったので調査。
mafftのドキュメントにはないが、binaryの中に"mafft-distance"(source)と言うものがあったので使ってみた。
mafft-distance (aa) Version 7.222
$ mafft-distance protein.faa Calculating i-j scores ... 1-2 d=0.00 l=241,240 1-3 d=0.00 l=241,240 1-4 d=0.02 l=241,240 1-5 d=0.00 l=241,240 1-6 d=0.01 l=241,240
というような感じで出てくる。各カラムは左から、i番目とj番目の配列、距離スコア、アライメントの長さ(i,j)であろう。
小数点第2位までしか出してくれないのはそれでいいのかという思いと、Protein alignmentのScoreはどうなっているのかという疑問があるが、とりあえずこれをパースして距離行列を作ることはできそう。
ただし、このツール自体はアラインメントを取っていないので、アライメントを取った後の配列で計算したほうが良さそう。
("instead of alignment" ではなくて "after alignment" になってしまっているが)
$ mafft --globalpair --maxiterate 1000 protein.faa > protein.faa.mafft $ mafft-distance protein.faa.mafft
追記
ソースコードをよく見たら(ヘルプには出てないが)"-p"というオプションを付けると小数点6位まで(8.6fで)、かつ行列に変形しやすい形で出してくれた。
$ mafft-distance -p protein.faa.mafft > protein.faa.mafft.dist