0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GTDBの系統樹からphylumを抽出し、iTOLで表示する

Posted at

背景

以前の記事で、GTDBで提供されている系統樹をiTOLで開く方法を紹介しました。この系統樹は、10万近くの細菌種からなり、非常に重いです。種の系統樹を門(phylum)にまとめると、見やすくなります。この記事では、GTDBの系統樹からphylumを抽出し、iTOLで表示する方法を紹介します。

実行環境

  • Windows11
  • Ubuntu 22.04.3 LTS
  • ete4 (以前の記事で環境構築を紹介)

入力ファイル

入力するGTDBの系統樹は、以前の記事によるbac120_to_itol_noboot.treeを想定しています。

サンプルプログラム

ete4を使用して、系統樹から門のみを抽出するプログラム例はこちらです。
実行の際はこのようなコマンド($ python prune_phylum.py > phylum.tree)を入力し、ファイル出力しました。

prune_phylum.py
from ete4 import PhyloTree

def prune_phylum(file_path,parser=1):
    phylum_list = []
    t = PhyloTree(open(file_path),parser=parser)
    for node in t.traverse():
        full_name = node.name
        if full_name is None:
            continue
        if 'p__' in full_name:
            # 以下のノード名に対応し、phylum(p__)を抽出
            # p__Desulfobacterota_B|c__Binatia
            print(full_name)
            phylum = full_name.split("|")[0]
            # ノード名はphylumに置き換える
            node.name = phylum
            phylum_list.append(phylum)
    t.prune(phylum_list)
    return t

if __name__ == '__main__':
    t = prune_phylum('bac120_to_itol_noboot.tree',1)
    # t.show()
    print(t.write(parser=1))

結果

系統樹の門のみ抽出し、iTOLで表示できました。
スクリーンショット 2024-07-27 025123.png

まとめ

門のみを抽出した系統樹はAnnoTreeでも表示できますが、iTOLの方が自由度高く系統樹にアノテーションできると思っています(個人の意見です)。また、コードではコメントアウト(t.show())していますが、ete4でも系統樹を描画できます。この書き方についても紹介していきたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?