Pythonで進化の研究
進化の研究をする際に頻繁に系統樹というものをみる.
今回はその系統樹を描画できるPythonのライブラリを見つけたのでサンプルコードをまとめる.
コードは下記.(なお,これはサンプルコードであり学術的な正確性は保証しない)
# 必要なライブラリをインストール
!pip install biopython
# ライブラリのインポート
from Bio import Phylo
from Bio.Phylo.Newick import Tree
from io import StringIO
import matplotlib.pyplot as plt
# ----------------------------
# Newick形式で系統樹を定義(分岐距離あり)
# ----------------------------
newick = "((Human:0.2, Chimpanzee:0.2):0.3, (Mouse:0.5, Rat:0.5):0.1);"
# StringIOを使って読み込む
tree = Phylo.read(StringIO(newick), "newick")
# ----------------------------
# スタイル設定('phylogram' or 'circular')
# ----------------------------
style = 'circular' # 'phylogram'に変えると普通の横型になります
# ----------------------------
# 描画と設定
# ----------------------------
fig = plt.figure(figsize=(8, 8), dpi=100)
ax = fig.add_subplot(1, 1, 1)
Phylo.draw(tree,
axes=ax,
do_show=False,
branch_labels=lambda c: f"{c.branch_length:.2f}" if c.branch_length else "",
label_func=lambda x: x.name)
plt.title(f"Phylogenetic Tree ({style.title()} Style)", fontsize=14)
plt.tight_layout()
plt.savefig("phylogenetic_tree.png") # PNGファイルとして保存
plt.show()
# ----------------------------
# Newickファイルとして保存(再利用可能)
# ----------------------------
with open("tree_output.nwk", "w") as f:
Phylo.write(tree, f, "newick")
