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")

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です