ETE Toolkitを使ってPythonで色々な形の系統樹を書く

  • 1
    いいね
  • 2
    コメント

(2017/2/22, OS X El Capitan)

はじめに

系統解析をしていて、アライメント情報などを統合した系統樹を書きたくなったので、ETE Toolkitを導入しました。ETE Toolkitでは、Pythonを用いてアライメント、ドメイン、ヒートマップなどを統合した系統樹の作成ができます。今回は単純な系統樹とアライメント付きの系統樹、その他便利そうな機能についてご紹介しようと思います。
現在公式サイト以外にまとまった情報がない状態ですので、良い使い方などありましたら教えてください。

参考サイト

http://etetoolkit.org

インストール

  • ete3
  • ete3_external_apps

以上の2つをインストールする必要があります。OSはMacもしくはLinuxで利用可能です。
公式サイトではPythonの環境構築によく使われているanacondaを用いてETE Toolkitを導入することを推奨しています。以下のページ等を参考に、anacondaを導入してください。
http://qiita.com/y__sama/items/5b62d31cb7e6ed50f02c

anacondaが導入できたら、仮想環境を作ってcondaで入れてください。注意点としてはPython3.5以降ではインストールエラーが起こるようなので、Python3.4として仮想環境を構築したほうがベターです(2017/2/23現在)。

$conda install -c etetoolkit ete3 ete3_external_apps

最後に正しくインストールされたかチェックしてください。

$ete3 version
$ete3 build check

なお、公式サイトによると、ソースからビルドもできるとのことです。
http://etetoolkit.org/download/

使い方

シンプルな系統樹

neick形式のツリーファイルを準備します(拡張子は.txtでも可)。

phylotree.py
#!/usr/bin/env python
import sys
from ete3 import PhyloTree

t = PhyloTree(sys.argv[1]) #newicファイルを引数で指定。
t.render("motifs.png", w=2000, dpi=500) # 書き出しファイル指定。wで幅、hで高さ、unitで単位(“px”: pixels, “mm”: millimeters, “in”: inches)、dpiを指定可能

画像

円形の系統樹

TreeStyle()で"c"を指定することで、円形のスタイルにすることができます。それ以外にもTreeStyleではノードの色や、形状(ドットや太線など)など、様々なものを指定できます。以下の公式サイトを参考にしてください。
http://etetoolkit.org/docs/latest/reference/reference_treeview.html?highlight=treestyle#treestyle

phylotree_circular.py
#!/usr/bin/env python
import sys
from ete3 import Tree, PhyloTree, TreeStyle

t = PhyloTree(sys.argv[1])
circular_style = TreeStyle() #TreeStyle()で系統樹の形を指定できる
circular_style.mode = "c" #"c"を指定してcircular_styleのツリーにする
circular_style.scale = 60 #ノードのスケールを指定できる
t.render("circular_tree_3.png", w=800, dpi=200, tree_style=circular_style)  # 書き出し。wで幅、hで高さ、unitで単位(“px”: pixels, “mm”: millimeters, “in”: inches)、dpiを指定可能

sample.png

アライメント付きの系統樹

newickファイルに加えて、mafftなどでアライメントしたfastaファイルを準備します。mafftの使い方は以下のサイトを参考にしました。
http://qiita.com/MaedaTaro_Umiushi/items/2d05225677ded15b19a7
通常の系統樹のスクリプトに加えて、link_to_alignmentのオプションを使うことで、簡単に系統樹とアライメントを結合し、可視化することができます。

phylotree_align
#!/usr/bin/env python
import sys
from ete3 import Tree, PhyloTree, SeqMotifFace, TreeStyle

t = PhyloTree(sys.argv[1]) #newicファイルを引数で指定
t.link_to_alignment(sys.argv[2])   # alignment fileをツリーにリンクさせる。
t.render("motifs_align.png", w=2000, dpi=500) # 書き出し。wで幅、hで高さ、unitで単位(“px”: pixels, “mm”: millimeters, “in”: inches)、dpiを指定可能

画像

その他の機能

ツリーに使った遺伝子リストを以下のようにして取得できます。

gene_list.py
import sys
from ete3 import Tree

t = Tree(sys.argv[1]) #ツリーを読み込む
gene_list = t.get_leaf_names() #遺伝子名の取得 (葉の名前)
print(gene_list)

終わりに

ETE Toolkit公式サイトの"The Programmable Tree Drawing Engine"のページでは(http://etetoolkit.org/docs/latest/tutorial/tutorial_drawing.html?highlight=heatmap) 、ヒートマップから画像ファイルの付加まで様々なことができることが示されています。今後更に使用法が分かってきたら追加していこうと思っています。