CAFE5 — 遺伝子ファミリーの進化解析

CAFE のメジャーアップデート版。

ドキュメントが丁寧に書いてあるので基本的には読めば OK。

新しい機能

  • 各遺伝子ファミリーが異なる速度で進化することを仮定したパラメータ推定を行う。
  • シェルスクリプトを書く必要がなくなった。
  • エラーモデルの最適化やサマリーテーブルの出力が内部で行われるようになった。 (Python スクリプトが不要になった。)

インストール

Download

Compile

cd CAFE5
./configure
make

実行ファイルは CAFE5/bin/ にあるので、ここに PATH を通す。

macOS の場合

src/matrix_cache.cpp:2:10: fatal error: 'omp.h' file not found などコンパイラが見つからない系のエラーが出る場合があるらしい。 gcc を入れてシンボリックリンクを張る:

brew install gcc
find / -name omp.h
ln -sv path/to/omp.h /usr/local/include/

改めて、

make

遺伝研

apptainer にあるものを使うのが楽:

ls /usr/local/biotools/c/cafe:5*

Quick Start

Input

基本的に必要なファイルは以前の CAFE と同じ。

  • 種ごと、遺伝子ファミリーごとの遺伝子数のテーブル(タブ区切り)。 OrthoFinder とか OrthoMCL とかでつくる。

    gene_families.txt
    Description ID  Chicken Lizard  Mouse
    OG00001 OG00001 12  14  21
    OG00002 OG00002 9   13  5
    OG00003 OG00003 7   0   4
  • Newick 形式の系統樹。binary, rooted, ultrametric である必要がある。 (cf. Rパッケージ ape::is.binary(), ape::is.rooted(), ape::is.ultrametric())

    species_tree.txt
    (Mouse:319.00000000,(Lizard:281.10000000,Chicken:281.10000000):37.90000000);

CAFE5 の実行

想定するシナリオにより、いくつかの実行方法がある:

  • 遺伝子ファミリー間で進化速度が一定であるという仮定の下で、遺伝子ファミリーの進化速度を推定:

    cafe5 -i gene_families.txt -t species_tree.txt
  • 遺伝子ファミリーごとの進化速度が異なるという仮定の下で、遺伝子ファミリーの進化速度を推定:

    cafe5 -i gene_families.txt -t species_tree.txt -k 3
  • 特定の系統で遺伝子ファミリーの進化速度が異なることを仮定する場合、 以前のバージョンと同じように \lambda 構造を規定した Newick ファイルを用意する:

    lambda_structure.txt
    (Mouse:1,(Lizard:1,Chicken:2):1);  # Chickenの系統で進化速度が異なることを仮定。
    cafe5 -i gene_families.txt -t species_tree.txt -y lambda_structure.txt

出力ファイル

-o で出力先を指定。 指定しなくても実行ディレクトリに result/ ディレクトリが作られてその中に格納される。

model_asr.tre
各遺伝子ファミリーごとに再構成された系統樹が書かれている。
ノード名 + _ に続く形でそのノードでの推定遺伝子数が書かれており、 有意な増減があったノードには * がふってある。
model_family_results.txt
遺伝子ファミリー、P 値、変化が有意であるかどうか (y/n) がタブ区切りで記述されている。
model_clade_results.txt
各ノードごとに遺伝子数が増加/減少したファミリーの数が書いてある。
model_branch_probabilities.txt
各ノード、各遺伝子ファミリーにおける事後確率のタブ区切りリスト
ガンマモデルの場合、有意な変化があったファミリーについてのみ書かれている。
model_family_likelihoods.txt
Base モデルでは各ファミリーごとの尤度
Gamma モデルではそれに加えて事後確率がタブ区切りで書かれている。
model_result.txt
選択されたモデルの名前、そのモデルの最終的な尤度、 遺伝子数の進化速度にあたる \lambda などが書かれている。
model_change.txt
各遺伝子ファミリーについて、各ノードにおける親ノードからの遺伝子数の変化量が書いてある。
model_count.txt
各遺伝子ファミリーについて、各ノードにおける推定遺伝子数

Rapidly evolving gene famillies について

CAFE は確率的誕生-死亡モデルの下で、 ある \lambda 値 (単位時間当たりの遺伝子の増減) にしたがって インプットした系統樹上で遺伝子の増減をシミュレートする。

その結果各遺伝子ファミリーの実際の遺伝子数が得られる確率が P 値として得られる。 この P 値が事前に定めた有意水準 (例えば0.05) を下回ったものが rapidly expanded/contracted gene families として得られる。

並列化

--cores オプションで指定:

cafe5 -i gene_families.txt -t species_tree.txt --cores 5

トラブルシューティング

CAFE4 のトラブルシューティングも参照。

既知の問題

OG0000001    1    2    94    1    3    2    1

みたいに遺伝子数にとびぬけた値があると、計算が途中で止まる。 (CAFE4 のときは inf/-inf で押し通していた。)

標準エラーでどの遺伝子ファミリーが原因か教えてくれるので、そのファミリーを除いて再解析する。