phylogenetics について
phylogenetics は、相同な遺伝子またはタンパク質配列を解析する研究者向けのワークフロースキルです。MAFFT、IQ-TREE、FastTree、ETE3 を組み合わせ、アラインメントから系統樹推定、支持度の確認、可視化まで行います。
主な機能
- 01MAFFT による配列アラインメント
- 02IQ-TREE または FastTree による樹形推定
- 03枝の支持度の計算
- 04樹形の枝統計の集計
- 05ETE3 による系統樹の描画
活用シーン
- 01相同配列からの遺伝子系統樹の作成
- 02IQ-TREE と FastTree の推定結果の比較
- 03枝の支持度の確認と樹形図の作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ k-dense-ai/ scientific-agent-skills --skill phylogeneticsインストール後、Claude Code で/phylogeneticsを入力して読み込まれたか確認します。
同梱ファイルreferences/iqtree_inference.mdscripts/phylogenetic_analysis.py
詳細
系統解析
使用する場面
このワークフローは、相同な遺伝子座またはタンパク質のアラインメント、遺伝子系統樹、 分岐支持率、および解釈可能な系統樹図に使用します。マルチローカスの分割、 コンコーダンスファクター、祖先状態、および年代推定については、 IQ-TREE リファレンスで扱います。
遺伝子系統樹は、それ自体では種系統樹、伝播方向、または水平伝播を 証明するものではありません。サンプリング日だけでは分子時計を正当化できません。
バージョンとインストール
2026-10-01 時点の最新の公式ドキュメントに対して確認済みです。実行した
スモークワークフローでは、Python 3.12 上で MAFFT 7.526、IQ-TREE 3.1.4、FastTree 2.2.0、
ETE3 3.1.3 を使用しました。ETE3 はこのヘルパーでは意図的に選択されています。ETE4 は
別の API であり、ドロップイン置換ではありません。ETE3 は cgi をインポートしますが、これは
Python 3.13 で削除されました。ネイティブ実行ファイルは Python パッケージではありません。
インストールコマンドの例です。インストール後に実行ファイルのバージョンを確認してください:
conda create -n phylo -c conda-forge -c bioconda mafft iqtree fasttree trimal
conda activate phylo
uv venv --python 3.12 .venv-phylo
uv pip install --python .venv-phylo/bin/python ete3==3.1.3 numpy six
# Optional rendering backend; it can require a working Qt platform plugin.
uv pip install --python .venv-phylo/bin/python PyQt5
ヘルパーはデフォルトで iqtree3 と FastTree を使用します。既存の IQ-TREE 2 インストールを
使用する場合は --iqtree-bin iqtree2 を、インストール名がその場合は --fasttree-bin fasttree を
使用します。バージョン 2 の互換性はソースで確認済みであり、この更新では
実行時テストは行われていません。すべての解析はローカルです。このスキルは HTTP API や
リモート推論エンドポイントを呼び出しません。
ワークフロー
1. 生物学的入力を確立する
- 適切な分類群カバレッジを持つ相同配列を選択してください。単一の履歴がすべてのサイトを 説明すると仮定する前に、パラログ、コンタミネーション、および組換えを調査してください。
- 一意で空白を含まない FASTA ID を使用し、別のサンプルメタデータテーブルを保持してください。 ヘルパーは空のレコードまたはすべて欠損のレコード、および ID 内の Newick 句読点を拒否します。
--type ntまたは--type aaを指定してください。ヘルパーは-st DNAまたは-st AAを IQ-TREE に送信し、ヌクレオチド/タンパク質の FastTree フラグを明示的に選択します。- コドンモデルを使用する場合、コーディング DNA にはコドンを考慮したアラインメントが必要です。 通常の MAFFT ヌクレオチドアラインメントはリーディングフレームを自動的に保持しません。
- 元の配列、アクセッションバージョン、フィルター、アラインメント、および正確な コマンドを保持してください。アラインメントの長さ、ギャップ、組成、および分類群の同一性を確認してください。
2. アラインメントと検査
これらの MAFFT コマンドは、小さな合成 FASTA データで実行されました:
mafft --auto --thread 1 --inputorder sequences.fasta > aligned.fasta
# L-INS-i: locally alignable homologs, typically small datasets.
mafft --localpair --maxiterate 1000 --thread 1 --inputorder sequences.fasta > linsi.fasta
# E-INS-i: homologs with large internal gaps.
mafft --genafpair --maxiterate 1000 --thread 1 --inputorder sequences.fasta > einsi.fasta
# FFT-NS-i (two refinement cycles), then FFT-NS-2 (progressive).
mafft --retree 2 --maxiterate 2 --thread 1 --inputorder sequences.fasta > fftnsi.fasta
mafft --retree 2 --maxiterate 0 --thread 1 --inputorder sequences.fasta > fftns.fasta
auto は選択を MAFFT に委ねます。配列数だけが精度の基準ではありません。シングルスレッド実行は
再現性を簡素化します。マルチスレッドでの MAFFT 反復改善は、実行間で異なる結果を
生成する可能性があります。
トリミングはオプションであり、すべての系統樹を改善すると仮定するのではなく、 アラインメント品質によって正当化される必要があります。以下の trimAl コマンドは ドキュメントで確認された例です。trimAl はこのレビューではインストールされていません:
trimal -in aligned.fasta -out trimmed.fasta -automated1 -fasta
保持されたカラム/分類群を記録し、トリミングに対する感度を比較してください。失敗したトリムは トリミングステップを停止する必要があります。「トリミング済み」ファイル名で未トリミングの 入力を黙ってコピーしないでください。バンドルされたヘルパーは自動的にトリミングしません。
3. 系統樹を推論する
サブプロセスラッパーを再作成する代わりに、保守されているヘルパーを使用してください。スキル
ディレクトリから、実行ファイル名が PATH にある状態で:
python scripts/phylogenetic_analysis.py sequences.fasta --type nt --threads 1 \
--bootstrap 1000 --seed 42 --output-dir results --no-visualization
# Use a reviewed alignment (including any explicit trimming) without realigning.
python scripts/phylogenetic_analysis.py aligned.fasta --aligned --type nt \
--threads 1 --output-dir reviewed --no-visualization
# Protein FastTree alternative; --threads applies to MAFFT/IQ-TREE, not FastTree.
python scripts/phylogenetic_analysis.py proteins.fasta --type aa --fasttree \
--threads 1 --output-dir fast_protein --no-visualization
標準的な IQ-TREE コマンドは -m MFP(FreeRate モデルを含む ModelFinder)、
-B 1000(UFBoot)、および --alrt 1000 を使用します。-m TEST は引き続きサポートされていますが、
より狭いモデルセットを検索します。科学的に正当化された固定モデルには --model を
使用してください。IQ-TREE チェックポイントは保持されます。--redo は明示的に再起動し、
結果を置き換えます。データまたはモデルの仮定が変更された場合は、新しい出力プレフィックスを
使用してください。
FastTree は DNA には -nt -gtr -gamma を、タンパク質には -lg -gamma を使用します。その検索は
Gamma20 再スケーリングの前に CAT 近似を使用します。完全な Gamma モデル
ML 検索ではありません。JTT は FastTree のタンパク質デフォルトです(-jtt フラグなし)。
ヌクレオチド JC は -gtr なしの -nt で選択されます。FastTree はデフォルトで
SH ライクなローカル支持率を 0〜1 の範囲で使用し、UFBoot パーセンテージではありません。
推論ツールを選択するには、普遍的な分類群しきい値ではなく、ワークロードベースの
ベンチマークを使用してください。
4. サポート、ルート、出力の解釈
画像だけでなく、.iqtree と .log も読み取ってください。デフォルトの統合テストでは、
IQ-TREE はスラッシュ区切りの SH-aLRT/UFBoot ラベルを書き出すため、レポート内でその順序を確認してください。
UFBoot >=95 および SH-aLRT >=80 は一般的なスクリーニングのしきい値であり、正確性の証明や事後確率ではありません。
UFBoot に標準ブートストラップの 70% ルールを適用しないでください。モデルの誤指定、アラインメントの誤り、サンプリングによって、
強く支持された誤った分岐が生じることがあります。モデル違反と UFBoot の過大評価を評価する際は -bnni を検討してください。
可逆置換モデルは進化的ルートを推定しません。ヘルパーは、明示的な --outgroup または
--midpoint の表示選択が行われない限り、提供されたツリーの向きを保持します。外群は生物学的に選択してください。 midpoint
ルーティングは十分に時計のような経路長を仮定しており、単なるヒューリスティックです。
--outgroup は 1 つの分類群を IQ-TREE に渡し、それが存在することを検証します。表示上の再ルーティングは、
その分岐上のサポートラベルを保持します。どちらの表示オプションも、日付付き系統樹を作成したり、
元の推定ツリーを上書きしたりしません。
主要な出力は <prefix>.treefile (IQ-TREE) または <prefix>.tree (FastTree)、
アラインメント、および IQ-TREE の .iqtree、.log、.ckp.gz、さらにオプションのサポート
ファイルです。.model.gz はモデル選択の作業をキャッシュします; これは推定されたモデル
パラメータのレポートではありません。これらの成果物は一緒に保管してください。
5. 要約と可視化
ETE は統合された IQ-TREE ラベルを format=1 の内部 names として読み取る必要があります;
そのデフォルトの数値サポートパーサーは 95.2/99 を解析できません。ヘルパーは
ETE のデフォルトのサポート値ではなく、元のテキストラベルをレンダリングします。分岐統計は、
再ルーティングせずに、ゼロ長のエッジを含むすべての元の非ルートエッジを使用します。
# Run from the skill directory in the ETE3 environment.
import sys
sys.path.insert(0, "scripts")
from phylogenetic_analysis import load_tree, tree_summary
tree = load_tree("results/sequences.treefile")
print(tree.get_leaf_names())
print(tree_summary("results/sequences.treefile"))
レンダリングを要求するには、--no-visualization を省略してください。ETE3 には PyQt5 が必要です; ヘッドレス
ホストでは、適切な Qt プラットフォームプラグインが利用可能でなければなりません。レンダリング
サポートが欠けている場合、推定ツリーはそのまま残り、明示的に報告されます。Qt レンダリング
はこのレビューでは実行されませんでした。FigTree または iTOL も Newick を表示できます; ビューアが
サポートラベルと分岐長スケールを保持していることを確認してください。