(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でも可)。
#!/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
#!/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を指定可能
###アライメント付きの系統樹
newickファイルに加えて、mafftなどでアライメントしたfastaファイルを準備します。mafftの使い方は以下のサイトを参考にしました。
http://qiita.com/MaedaTaro_Umiushi/items/2d05225677ded15b19a7
通常の系統樹のスクリプトに加えて、link_to_alignment
のオプションを使うことで、簡単に系統樹とアライメントを結合し、可視化することができます。
#!/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を指定可能
###その他の機能
ツリーに使った遺伝子リストを以下のようにして取得できます。
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) 、ヒートマップから画像ファイルの付加まで様々なことができることが示されています。今後更に使用法が分かってきたら追加していこうと思っています。