💻

ggtreeで描図した系統樹のラベルを上から順に取得しファイルに書き出す(get the tree order using ggtree)

2025/04/13に公開

はじめに

自身への備忘録も兼ねて記載します。
R言語のggtreeで描図した系統樹のラベル(株名)を上から順に取得してファイルに保存します。

ggtreeの使い方は以下が参考になります。

解析環境 (Hardware)

-MacBook Pro
-チップ Apple M1
-macOS Ventura 13.6.6
-メモリ 16GB

解析環境 (Software)

-R version 4.4.1
-ggtree 3.12.0

手順

1.パッケージのインストール

Rを起動して以下のパッケージをインストールします。

R
install.packages("tidyverse")
install.packages("ggnewscale")
install.packages("ape")

if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")
BiocManager::install("ggtree")

パッケージを読み込みます。

R
library(ggplot2)
library(dplyr)
library(ggnewscale)
library(ape)
library(ggtree)

2.treeオブジェクトの作成

アライメント済みのツリーファイルをread.tree関数を使って読み込み、treeオブジェクトに代入します。

R
tree <- read.tree('/path_to/treefile')

今回使用した例では被験株50株と参照配列の計51株で作成したcore genome SNP treeのnewick形式のファイルを使用しています。

treeオブジェクトを確認してみます。

R
tree

3.描図

R
p <- ggtree(tree) + geom_tiplab(size=4) + geom_treescale(width=0.0005)
plot(p)

geom_tiplabでラベル(株名)を表示、
geom_treescaleでscale barを表示します(それぞれの値は適宜調整)。

今回の例では以下のような系統樹になっています。

今回、ラベル(株名)を上から順に (S-48, S-19, S-46, S-33, ......, S-50, S-49, S-3, Reference) 取得したファイルが欲しいので、ggtreeのfortify関数を利用します。

4.tree_dataオブジェクトを作成

treeオブジェクトからfortify関数を使ってtree_dataオブジェクトを作成します。
この操作によって系統樹のデータがデータフレーム化されます。

R
tree_data <- fortify(tree)

確認します。

R
tree_data

続けて以下のコマンドで目的のデータを抽出します。
最初の行でisTip列がTRUEの値を持つデータでフィルタリングして、次の行で y列の値の降順でlabel列(株名)を並びかえてordered_tipsオブジェクトに代入します。

R
tip_order <- tree_data[tree_data$isTip, ]
ordered_tips <- tip_order$label[order(tip_order$y, decreasing = TRUE)]

確認します。

R
print(ordered_tips)


系統樹のラベルを上から順に取得することができました。

5.csvファイルに書き出す

R
write.csv(ordered_tips, "order.csv", row.names = FALSE) 

カレントディレクトリに order.csv ファイルができます。

描図した系統樹も画像ファイルとして書き出しておきます。解像度やサイズは一例です。

R
ggsave("tree.png", plot = p, dpi = 100, width = 12, height = 12)

おわりに

書くのが不慣れな上に拙い内容ですが、少しでも参考になれば幸いです。

Discussion