ggtreeで外部情報のついた系統樹を書く

系統樹を書く必要が出てきたので練習します!

1. まずは系統樹そのものを書いてみる

Netwik形式の系統樹でテストしたいので、まずはtree.dndというタイトルのテキストファイルに以下の文字列を入れて保存(練習なので枝が5本だけの超シンプルな系統樹にしました)

(((genome1:0.3,genome2:0.2):0.4,genome3:0.6):0.6,((genome4:0.3,genome5:0.2):0.3):0.2);

今回は円形 (circular) の系統樹を想定しているので、で系統樹を書けるかチェックします

> library(tidyverse)
> library(ggtree)
> tree <- read.tree("./tree.dnd")
> ggtree(tree, layout="circular")
シンプルすぎ?まあテストだからいいか

geom_tiplab() を付けると各枝にdndファイルに入っている名前がつきます

> ggtree(tree, layout="circular") + geom_tiplab()
genome1とかの名前が付きました
> ggtree(tree, layout="circular") + geom_tiplab() + geom_treescale()
geom_treescale()でスケールをつけれます

必須ではありませんが、後半の処理のためにノード番号を可視化しておきます

> ggtree(tree, layout="circular") + geom_tiplab() + geom_treescale() + geom_text(aes(label=node), hjust = -1.5)
ノードに番号がつきました

2. 系統樹の枝に色をつける

ノード指定で枝に色を付けてみようと思います

groupClade() で10番ノード以下をグルーピングして系統樹を書きます

> tree <- groupClade(tree, .node=c(10))
> ggtree(tree, layout="circular", aes(color=group)) + geom_tiplab() + geom_treescale() + geom_text(aes(label=node), hjust = -1.5)
色が付きました

色を指定することもできます。青と黒で指定してみます

> ggtree(tree, layout="circular", aes(color=group)) + geom_tiplab() + geom_treescale() + geom_text(aes(label=node), hjust = -1.5) + scale_color_manual(values=c("black", "blue"))
青と黒で枝をグループ分けすることができました

3. 系統樹をグラデーションにする

ゲノムの存在比によって色付けしたいので、新しく存在比データを読み込みます

まず練習用に2列のcsvファイルを作成 (rate.csv)

label,rate
genome1,0.28
genome2,0.50
genome3,0.20
genome4,0.01
genome5,0.01

ではこのデータを系統樹にのせていきます!

以下リンクで紹介されているツールfsatAnc() を用いる方法で描いてみます (リンク:http://www.phytools.org/eqg2015/asr.html)

> library(phytools)
> rate <- read.csv("./rate.csv", row.names = 1)
> rate <- as.matrix(rate)[,1]
> fit<-fastAnc(tree,rate,vars=TRUE,CI=TRUE)
> obj<-contMap(tree,rate, plot=TRUE,type="fan")
グラデーションがつきました

4. 系統樹にヒートマップをアノテーションする

遺伝子発現/有無情報を系統樹にアノテーションします

↓これもcsvファイルで作成

label,geneA,geneB,geneC
genome1,200,0,500
genome2,200,0,30
genome3,200,0,500
genome4,0,400,300
genome5,0,300,800

まずは系統樹、次に枝名がインデックスになるようにcsvを読み込みます

> p <- ggtree(tree, layout="circular", aes(color=group)) + geom_tiplab() + geom_treescale() + scale_color_manual(values=c("black", "blue"))
> h <- read.csv("./genes.csv", row.names = 1)
> gheatmap(p, h)
かんたんに遺伝子情報を載せることができました!!

参考

https://github.com/YuLab-SMU/ggtree

https://guangchuangyu.github.io/ggtree-book/chapter-ggtree.html#methods-and-materials-1

https://github.com/katholt/plotTree

https://yulab-smu.top/treedata-book/chapter4.html#fig:colortree

http://www.phytools.org/eqg2015/asr.html

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA