LINTRE
2012 年 3 月 12 日 改訂
井上 潤

LINTRE は,相対速度テストを行うプログラムです.NJ tree を推定して枝長を比較します.two cluster test と branch length test を行うことができます.

Two cluster test は,多数の配列間ので行う相対速度テストです.ある分岐から派生した 2 系統間の進化速度 (各クレード内部の樹長を平均して代表値として用いています) を比較します.2 つの娘クレードを比較するのですが,実際にはクレードだけでなく Leaf 間の比較も行ってくれます.

Branch length test はそれぞれの Leaf 間で行う相対速度テストです.すべての OTU について根幹から末端までの枝長を求め,この平均値から有意に異なる OTU を選びます.

Readme に割と詳細な説明と例題があります.すべてターミナルにコピー & ペーストするだけで例題が解けるはずです.Two cluster test も Branch length test も njboot というプログラムで NJ tree を 推定して解析に用います.read.me にもあるように,MP や ML など他のプログラムで推定された系統樹を用いることもできますが,tree file の形式が newick ではないので独自に書き換える必要があります.

Intel Mac では posttree というプログラムがコンパイルされませんでしたが,動作に問題はありませんでした [2012 年 3 月].

Takezaki N, Rzhetsky A, Nei M: Phylogenetic test of the molecular clock and linearized trees. Mol Biol Evol 1995, 12:823– 833. PDF.

ペンシルバニア州立大学のサイトからもダウンロードできますが,コンパイルなどがうまく動きませんでした.香川大学のサイトにある LINTRE の方が最新版で,改善されています [2012 年 3 月].


コンパイルに関する注意事項
Mac OS X のターミナルを用いて LINTREE Unix バージョンを使う場合は,以下の点に注意して下さい.なお,DOS version はデータの量により、うまく動かない場合があるようです.

1) developmenter's kit をインストールする.

インストールの方法は,multidistribute の使い方を参照して下さい.

2) コンパイルする前に,ソースコード内部にある #include <malloc.h> という行を削除する.[最近は malloc.h 行はすでにコメントアウトされているようなので,この作業は不要です.2012 年 3 月]

この操作を行わないでコンパイルを行うと,以下のようなエラーメッセージが出ます.

njboot.c:3:20: malloc.h
tpcv.c:2:20: malloc.h: No such file or directory
branch.c:4:20: malloc.h: No such file or directory
branbst.c:4:20: malloc.h: No such file or directory

作者に問い合わせて解決方法を伺いました.まず,

njboot.c の 3 行目
tpcv.c の 2 行目
branch.c の 4 行目
branchbst.c の 4 行目

にある

#include <malloc.h>

という行をそれぞれ削除します.これらの行を削除してから,

source compile.gcc.sh

を実行して下さい.以下のようなメッセージがたくさん出ますが,うまく作動します.ただし Intel Mac では,G4 と同じようなメッセージが得られましたが,postree のコンパイルが行われませんでした.

branbst.c:3470: warning: incompatible implicit declaration of built-in function ‘exit’



Two cluster test


付属の例題を使って説明します.
まず NJ tree を推定します.

njboot crab.dat -d1 > crab.nj

系統樹を ps ファイルに絵として描きます.

postree crab.nj -o 1 -i

Two cluster test を行います.creb.nj は枝長付きの tree file ですが,ここに書かれている枝長は Two cluster test には使われず,test で改めて推定されています.実際に crab.nj の枝長をすべてなくしても,同じ結果が得られました.

tpcv crab.dat -tcrab.nj -d2 -o 1 > crab.tc



例題として配布されている crab.nj (NJ tree) と crab.tc (Two cluster test で用いられている tre) を図にすると以下のようになっています.

crab.tc では,ある分岐から末端までの枝長を合計して書かれています.Internal node の枝長ではありません.

よく見ると,Node 2 と 3 以外の枝長はすべて異なっています.Two cluster test で樹長を計算し直したときに,何らかの処理で入力ファイルである crab.nj と異なる樹長が得られているようです.





Perl script: NEWICK 形式を LINTRE 形式にする

Newick tree format を LINTRE で使われている tree format に書き換える Perl script を書きました.付属の crab.dat および RAxML のアウトファイルには対応しています.ただし,外群は 1 種で,配列が保存されている .dat ファイルの最初に配置してください.
newickToLintre.tar.gz

ダウンロードして得られる 000_command.sh を以下のように使って操作してください.

sh 000_command.sh


Branch length test

例題 blTestLintre.tar.gz に沿って説明します.多少のエラーメッセージが出たので (2010 年購入の Intel Mac で解析),完全に信用できる値が得られたか微妙な部分もあります.

ダウンロード・解凍して得られたフォルダにターミナルで入ってください. そして,

njboot crab.dat -d1 > crab.nj1

と入力し,NJ tree を求めます.得られる tree file は独特の形式です.続いて,

branch crab.dat -tcrab.nj1 -d2 -o 1 > crab.br

によって,Branch length test を行います.どうも,NJ tree の topology は使うようですが,改めて樹長や標準誤差は,指定したモデルを用いて推定されるようです.原著論文 (Takezaki et al. 1995) を読んでみたところ,標準誤差は分散・共分散行列などを使って配列を解析して得ているようです.

以下のようなエラーメッセージが出ましたが,一応結果は crab.br に保存されていました.

[JunInoue:blTestLintre]$ branch crab.dat -tcrab.nj1 -d2 -o 1 > crab.br
branch(1773) malloc: *** error for object 0x100106190: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap

自分自身のデータを解析してみた感触としては,少し枝長が異なると,分子時計の一定性が棄却されるように思えました.infile2 一連のデータをご覧下さい [2011 年 11 月].