ほぼ中立ブログ

少しだけ百合に偏った雑記ブログ

IQ-Treeの使い方まとめ

【スポンサーリンク】

IQ-Treeは最尤法による系統樹作成プログラムです。コマンドラインから簡単に実行することができ、計算時間もはやいため便利です。

また、配列をパーティションに区切った解析を行うことができる他、塩基・アミノ酸配列以外にも、幾つかの形式の配列データに対応しているなど多様な解析をカバーしています。

ほぼ、公式のチュートリアルの要約ですが備忘録として残しておきます。

インストールはUbuntuならaptを利用すると簡単です。最新版を利用したい場合や、その他のOSの場合でも、公式サイトでWindows版、Mac版、Linux版がダウンロードできますので特に問題ないと思います。

sudo apt install iqtree

とりあえず実行したかった「マルチスレッドで、与えられた配列ファイルを基に最適置換モデル推定と最尤系統樹探索を行い、ノンパラメトリックブートストラップ検定を1000回行う」コマンドは次のようになります。

iqtree -s [配列ファイル] -b 1000 -nt AUTO  -m MFP

なお、iqtreeのバージョンは1.6系です。1.5系まではマルチスレッド対応版とシングルスレッド版が分かれており、iqtreeの部分をiqtree-ompに変更する必要があるためご注意ください。

よく使いそうなオプションを表にまとめてみました。

オプション 設定項目
-s 配列ファイル
-st 配列の種類(デフォルト:自動推定)
-spp, -sp, -q パーティションファイル
-m 置換モデル
-bb Ultrafast bootstrap 回数
-b nonparametric bootstrap 回数
-nt スレッド数(デフォルト:1)
-redo 前回の解析結果を上書きして再解析

-sオプションで指定する入力ファイルはPHYLIP形式の他に、FASTA、NEXUS、CLUSTALW形式など主要なものにはすべて対応していますが、アライメント済みの配列長が揃っているデータでないとエラーが出ますのでご注意ください。

-mで最尤系統樹探索に用いるモデルを指定でき、バージョン1.5.4以降ではMFPと入力することで自動推定してくれます。ただし、同バージョンからデフォルト値がMFPになったため、モデルを指定しなければ自動で推定が行われます。

ブートストラップ検定の回数を指定するオプションは、-bと-bbの2種類ありますが、-bbはultrafast bootstrapと呼ばれる新しい手法のブートストラップ検定のようです。従来のnonparametric bootstrapを行う場合は、-bオプションで回数を指定します。

計算時間は圧倒的にultrafast bootstrapの方が速いため、大量の配列データを用いた解析では-bbオプションを利用した方が良いかもしれません。

またその他、計算時間に関わってくるオプションとしてはスレッド数を指定する-ntオプションがあります。AUTOと入力することにより最適なスレッド数を計算してくれるようですが、配列の長さなどの条件によっては、利用可能な数よりも少ない値が選ばれることがあります。

実行ディレクトリ下に作られた「*.treefile」が最尤法で推定された系統樹です。出力ディレクトリを指定するオプションが見当たらなかったので、あらかじめ解析ディレクトリを作成し、その中で作業する必要があると思われます。

パーティションわけ

-q、-spp、-sp、オプションで配列のパーティションを記載したファイルを指定できます。公式のチュートリアルに3者の違いが説明されていますので、参照ください。一般的には-sppが推奨されるようです。

パーティションファイルについてはあまり理解できませんでしたが、以下のようなNEXUS形式で記述できるようです。

#nexus
begin sets;
    charset part1 = 1-100;
    charset part2 = 101-384;
    charpartition mine = HKY+G:part1, GTR+I+G:part2;
end;

charpartition mineの行で各パーティションのモデルを指定していますが、この行がない場合は各パーティションごとに自動でモデル推定を行ってくれるようです。

また以下のようにパーティションファイル中に配列ファイル名を記載することで、あらかじめ作成済みの複数の配列ファイルを組み合わせて系統樹作成を行うことも可能です。OTU名が揃っていないとエラーが出るためご注意ください。

#nexus
begin sets;
    charset part1 = prot1.phy: 1-100;
    charset part2 = prot2.phy: 1-200;
    charset part3 = prot3.phy: 1-300;
end;

第三コドンの指定など、もう少し詳細なパーティション分けが必要な方は、公式のチュートリアル(Advanced)こちらの方のサイトが参考になります。

参考リンク
バイオインフォマティクス関連書籍