tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
description の原文を見る
Phylogenetic tree visualization and formatting with ggtree (R) or iTOL (web). Use when rendering a phylogenetic tree as a figure, choosing tree layout, coloring branches or labels by taxonomy, collapsing clades, displaying support values, or adding overlays to a tree. Do NOT load for tree inference (use protein-phylogeny skill) or domain annotation (future separate skill).
SKILL.md 本文
ツリーフォーマット & ビジュアライゼーション
ggtree (R/Bioconductor) または iTOL (Interactive Tree of Life、ウェブベース) を使用した系統樹のレンダリング規約。
ステップ 0: レンダリングバックエンドを選択
ユーザーのニーズに基づいて、使用するバックエンドについてユーザーに尋ねます。
| バックエンド | 最適な用途 | 出力 | 言語 |
|---|---|---|---|
| ggtree | 出版用図版、完全なプログラム制御、オフライン使用 | PDF/PNG/SVG | R (.qmd スクリプト) |
| iTOL | インタラクティブな探索、迅速なイテレーション、ウェブ共有、UI 調整 | ウェブ + PDF/SVG/PNG エクスポート | R (.qmd アノテーション) + Python (.qmd アップロード) |
バックエンド比較
| 機能 | ggtree | iTOL |
|---|---|---|
| インタラクティブな探索 | いいえ | はい (ウェブ UI) |
| ラベル配置制御 | 完全 (プログラマティック) | 限定的 (UI トグルのみ、API 経由ではない) |
| 三角形ラベルの折りたたみ | 手動 geom_text() | 内部ノード用の組み込み LABELS |
| 円形ラベルの配置 | 複雑 (手動角度計算) | 自動 |
| 枝の長さ表示 | はい (系統図/クラドグラム切り替え) | はい (UI 経由) |
| オフライン/再現可能 | 完全オフライン | iTOL API + インターネット必須 |
| 2 スクリプト ワークフロー | いいえ (単一 .qmd) | はい (R .qmd アノテーション + Python .qmd アップロード) |
ステップ 1: ツリータイプを選択
ユーザーが適切なビジュアライゼーションを選択できるように支援します。目的とツリーサイズについて質問した後、以下のオプションから推奨します。
ツリータイプオプション
| タイプ | 最適な用途 | ヒント | 主要機能 |
|---|---|---|---|
| 折りたたみ矩形系統図 | 大型の遺伝子ファミリーツリー; 枝の長さ変動と遺伝子ファミリー構造を表示 | 250-2000+ | 純粋なクレード折りたたみ、枝の長さ、選別ラベル |
| 折りたたみ矩形クラドグラム | 大型の遺伝子ファミリーツリー; トポロジー重視、より整理されたラベル | 250-2000+ | 系統図と同じだが枝の長さなし、ページ幅が狭い |
| 折りたたみ円形 | 大型のツリー; 全体構造を示すコンパクトな概要 | 250-2000+ | 円形レイアウト、折りたたみクレード、オプション選別ラベル |
| シンプル矩形系統図 | すべての末端が読める小〜中型ツリー | < 250 | すべての末端にラベル、折りたたみ不要 |
| 非根付き | ネットワーク、根の仮定なしに関係性を表示 | 任意 | 方向性なし |
判定フロー
- 末端はいくつですか?
- < 250: シンプル矩形 (すべての末端にラベル)
- 250+: 折りたたみ矩形または円形 — ユーザーの好みを尋ねる
- 枝の長さは意味がありますか?
- はい -> 系統図オプション利用可能
- いいえ/トポロジーのみ -> クラドグラム
- レイアウト: 矩形か円形? 多くの場合、両方を提供すると有用です。
- 系統図とクラドグラムの両方? 矩形ツリーでは両方を提供するのが有用なことが多いです。
- どの種を強調しますか? -> 焦点種リスト (ステップ 2 参照)
ステップ 2: ユーザープロンプト (コード作成前に質問)
コードを書く前に、以下の判定を集めます。
- レンダリングバックエンド: ggtree または iTOL? (ステップ 0 参照)
- ツリータイプ: 末端数に基づいて、上記の表から関連オプションを提示
- 折りたたみ戦略: 「純粋なクレードは折りたたみますか?
(末端数が 100 を超えるツリーでは推奨されます。)」
- どのグループを折りたたむか?
collapse_groupsパラメータは、どの分類学的グループが折りたたみの対象であるかを制御します。一般的な選択肢:c("Bilateria")— 左右相称動物のみ折りたたみ (海綿とイシサンゴ類は展開)c("Bilateria", "Protostomia", "Deuterostomia")— 特定のグループを折りたたみNULL— すべてのグループが折りたたみの対象
- 純粋性閾値: 100% 純粋 (厳密) または 90%+ (緩い)?
- 三角形にモデル種を表示: 折りたたまれた三角形は自動的に、モデル種 (ヒト、マウス、ハエ、線虫) の遺伝子名を含む、例えば
"Bilateria (36 tips: LAMA1, LAMA2, LAMB1)"のように表示します。これにより、クレードが折りたたまれても、重要な遺伝子ファミリーメンバーが見える状態を保ちます。 - 遺伝子ファミリーで折りたたまない — eggNOG オーソロググループデータが利用可能でない限り
- どのグループを折りたたむか?
- ラベリングレベル: 「末端ラベルはどの程度表示しますか?」
- ラベルなし — 枝の色のみ (概要図に適しています)
- すべての末端にラベル — すべての見える末端がラベルを取得 (小さなツリーに適しています)
- 選別 — モデル種 + 焦点種のみ (大型のツリーに推奨)
- 焦点種リスト (選別ラベリングの場合): 「どの非モデル種を個別にラベル付けすべきですか? 通常は海綿類およびシングルセルデータを持つ種 (Hydra、Nematostella など)。完全な種名を提供してください。」
- ルーティング戦略: 「中点ルーティング、それとも外群を指定しますか?」
- 遺伝子名解析: 「末端には、非 Swiss-Prot ソース (tr| エントリ、Ensembl、FlyBase、WormBase など) からのモデル種が含まれていますか? その場合、遺伝子シンボルを検索する必要があります。」 -> gene-lookup スキルのデータベース固有ワークフローを参照してください。
- iTOL プロジェクト (iTOL バックエンドの場合): 「ツリーはどの iTOL プロジェクトに入れるべきですか? 既存のプロジェクト名を指定するか、iTOL ウェブ UI (My Trees > New Project) で新しいプロジェクトを作成して名前を教えてください。」
ITOL_PROJECT環境変数として設定するか、アップロードスクリプトにハードコードします。
ステップ 3a: ggtree でビルド
すべての ggtree テンプレートは Quarto .qmd ドキュメントで、プロジェクトのデータサイエンス規約に従います (ステータスフィールドを含む YAML フロントマター、git ハッシュ、BUILD_INFO.txt)。
折りたたみ矩形 (系統図/クラドグラム)
参考テンプレート: ~/.claude/skills/tree-formatting/templates/ggtree/collapsed_rectangular.qmd
このテンプレートは、すべてのチューニングされたスタイルパラメータを備えた完全で実行可能な .qmd です。プロジェクトの scripts/ ディレクトリにコピーして、PROJECT-SPECIFIC とマークされたセクションを適応させます:
- ファイルパス
- 末端ラベル解析関数 (ツリーの実際のラベル形式と一致する必要があります)
- 分類学的マッピング (種 -> グループ)
- モデル種と焦点種リスト
collapse_groupsパラメータ (折りたたみの対象となる分類学的グループ)
テンプレートは以下を処理します: ツリーローディング、中点ルーティング、分類学的グループごとの純粋クレード折りたたみ、分類学による枝の色付け、すべての見える末端のラベリング、折りたたまれた三角形ラベル上のモデル種遺伝子名、式ベースのページサイジング、PDF 出力。
主要機能:
- 枝のキャッピングなし — 枝の長さは決して操作されません (これはハード ルールです)
- 式ベースのページサイジング —
INCHES_PER_TIP = 0.12、高さ =max(8, n_visible * INCHES_PER_TIP) collapse_groupsパラメータ — 折りたたみの対象となる分類学的グループを制御します (例:c("Bilateria")で左右相称動物のみ折りたたみ、またはNULLをすべて対象)- 三角形上のモデル種遺伝子名 — 折りたたまれたラベルは
"Group (N tips: GENE1, GENE2, ...)"を表示して、重要な遺伝子ファミリーメンバーが見える状態を保ちます - 折りたたみラベルの配置 —
max(pre_data$x[tip_ids])のラベル (三角形の先端)、内部ノード x ではなく (三角形の底部)
折りたたみ円形 (概要および/またはラベル付き)
参考テンプレート: ~/.claude/skills/tree-formatting/templates/ggtree/collapsed_circular.qmd
矩形と同じ構造 — PROJECT-SPECIFIC セクションを適応させます。以下を生成します:
- 円形概要 (ラベルなし): 20" 正方形ページ、枝の色のみ
- 円形ラベル付き (選別ラベル): 28" 正方形ページ、手動配置ラベル
重要な円形の落とし穴: ラベルは collapse() が呼ばれる前に配置する必要があります。テンプレートはこれを y 位置から角度を計算することで処理します (y / max_y * 360)、円の左半分のテキストをフリップし、geom_tiplab2() の代わりに geom_text() を明示的な角度/hjust 値で使用します。
その他のツリータイプ
シンプルな矩形または非根付きツリーの場合、テンプレートはまだ存在しません。ggtree の基本からビルドします:
# シンプル矩形 (すべての末端にラベル)
p <- ggtree(tree) + geom_tiplab(size = 2)
# 非根付き
p <- ggtree(tree, layout = "unrooted")
すべてのスタイルパラメータは各テンプレートの最上部で名前付き定数として定義されています (例: BRANCH_LINE_WIDTH、LABEL_SIZE、INCHES_PER_TIP)。コード全体にマジックナンバーを散らかさないでください。
ステップ 3b: iTOL でビルド
2 スクリプト ワークフロー
iTOL は別々の R と Python ステップが必要です (1 つの .qmd で混ぜないこと):
- R スクリプト — アノテーションファイル + 再ラベル付け Newick ツリーを生成
- Python スクリプト — ツリー + アノテーションを iTOL にアップロード、レンダリング画像をエクスポート
アノテーション生成 (R)
参考テンプレート: ~/.claude/skills/tree-formatting/templates/itol/annotations.R
プロジェクトにコピーして PROJECT-SPECIFIC セクションを適応させます。以下のファイルを生成します:
GENE.tree— Newick を再ラベル付け (短い表示ラベル、|文字なし)GENE_branch_colors.txt— クレード + 枝エントリを含む TREE_COLORSGENE_label_colors.txt— TREE_COLORS ラベル色エントリGENE_collapse.txt— 純粋なクレード用 COLLAPSE エントリGENE_collapse_labels.txt— 折りたたまれたクレード内部ノード用 LABELS
アップロードと エクスポート (Python)
参考テンプレート: ~/.claude/skills/tree-formatting/templates/itol/upload_export.py
2 つのバージョンをアップロードします:
- 折りたたみなし — ツリー + 枝色 + ラベル色 (すべての末端が見える)
- 折りたたみ — ツリー + すべてのアノテーション (折りたたみファイルを含む)
複数のレイアウト/形式の組み合わせをエクスポートします (円形 PDF/SVG/PNG、矩形 PDF/SVG、非根付き PDF)。
iTOL API セットアップ
- API キー: iTOL > My Account > API access ->
ITOL_API_KEY環境変数として設定 - プロジェクト:
ITOL_PROJECT環境変数を設定 (デフォルト: "misc")。プロジェクトはすでに存在していなければなりません — iTOL API はプロジェクトを作成できません、ウェブ UI でのみ可能です (My Trees > New Project)。必要に応じてユーザーに作成するよう促します。 - 有料サブスクリプション — 完全なバッチエクスポート API アクセスに必須
アップロード後: 常にリンクをレポート
アップロードスクリプトをレンダリングした後、常に BUILD_INFO.txt を読んで iTOL URL をチャットでユーザーに報告します。これらのクリック可能なリンクは迅速なイテレーションに不可欠です。フォーマット:
**折りたたみなし:** http://itol.embl.de/external.cgi?tree=TREE_ID&restore_saved=1
**折りたたみ:** http://itol.embl.de/external.cgi?tree=TREE_ID&restore_saved=1
末端ラベル解析 (一般的なガイダンス)
末端ラベル形式はデータソースに応じて大きく異なります。固定形式を仮定しないでください。 実際の末端ラベルを最初に検査してから、存在するものに合わせたカスタム解析関数を書きます。
一般的な形式
| ソース | 例 | 種の部分 | ID 部分 |
|---|---|---|---|
| UniProt (sp) | sp|O95631|NET1_HUMAN | サフィックス: HUMAN | 遺伝子: NET1 |
| UniProt (tr) | tr|Q23158|Q23158_CAEEL | サフィックス: CAEEL | アクセッション: Q23158 |
| Species|taxid.acc | Mus_musculus|10090.Q9R1A3 | | の前 | taxid. の後 |
| Species|acc | Nematostella|XP_032238380.2 | | の前 | | の後 |
| BLAST アノテーション | Hydra|8692.t25743aep_EHBP1_HUMAN_... | | の前 | トランスクリプト ID のみ |
主要ルール
- モデル種 (ヒト、マウス、ハエ、線虫): sp| ラベルまたは他のデータベース用の gene-lookup スキルを使用して遺伝子名に解析
- 非モデル種: 実際のタンパク質/トランスクリプト ID のみを使用 — BLAST アノテーションから遺伝子名を推定しない
- 表示形式:
G._species_GENE_OR_ID(例:H._sapiens_SPTB1、E._muelleri_Em0014g869a)
分類学的色スキーム
| 分類学的グループ | 16 進数 |
|---|---|
| 普通海綿 | #2ca02c |
| 石灰海綿 + ホモスクレロモルファ | #98df8a |
| クテノフォラ | #9467bd |
| イシサンゴ類 + プラコゾア | #ff7f0e |
| 後口動物 | #d62728 |
| 前口動物 | #1f77b4 |
| 非動物真核生物 | #555555 |
| 混合 (内部ノード) | #999999 |
一般的に誤分類される種:
| 種 | 正しいグループ | 注記 |
|---|---|---|
| Thelohanellus_kitauei | イシサンゴ類 + プラコゾア | 粘液胞子虫 = イシサンゴ類 |
| Meara_stichopi, Waminoa | 後口動物 | キサコエロモルファ |
| Spadella_cephaloptera | 前口動物 | 矢虫類 |
| Monosiga, Salpingoeca | 非動物 | 襟鞭毛虫 |
ggtree の主要な落とし穴
これらは苦労して得た教訓です — スキップしないでください:
-
collapse()の前にラベル位置を事前計算 — collapse はp$data座標を変更します。最初にp$dataから x/y を抽出します。これは矩形と円形の両方のレイアウトに適用されます。 -
行インデックスではなく node 列で一致 —
p$data行は node ID で順序付けられていない可能性があります。常にmatch(tip_node_ids, pre_data$node)を使用します。 -
折りたたみラベルの x 位置: node x ではなく
max(pre_data$x[tip_ids])を使用 — 内部ノードは折りたたまれた三角形の底部にありますが、ラベルは三角形の先端 (子孫の末端が伸びる場所) に表示されるべきです。node x を使用すると、ラベルは三角形の底部に配置され、見た目が悪くなります。 -
枝の長さをキャップしない — 枝の長さは実際の進化距離を表しています。キャッピングや切り詰めはデータ操作です。長い枝が内部構造を圧縮する場合は、正直な代替案としてクラドグラムを提供します。
-
円形ラベル:
geom_tiplab2()ではなく、手動角度でgeom_text()を使用 — 角度をy / max_y * 360として計算し、左半分のテキストをフリップ (angles > 90 & < 270)、angle/hjust をaes()の外に渡します。 -
geom_textにshow.legend = FALSE— 色凡例に "a" 文字のアーティファクトが表示されるのを防ぎます。 -
cladogram 用
branch.length = "none"—NULLを渡すことはできません。この引数を条件付きで含めるには if/else を使用する必要があります。 -
coord_cartesian(clip = "off")— プロット領域を超えて拡張する矩形ラベルに必須です。広い右マージンと組み合わせます。円形では不要です。 -
デイライトレイアウト — 大型のツリーでは使用不可の出力を生成します (枝が交差し、三角形が重なる)。これを避けてください。
-
ページサイジング式 —
INCHES_PER_TIP = 0.12をPAGE_HEIGHT = max(8, n_visible * INCHES_PER_TIP)で使用します。ここでn_visibleは、折りたたまれていない末端と折りたたまれた三角形をカウントします。この式は、ラベルを読みやすく保ちながら、余分な空白を避けます。ハードコードされたページサイズは常に調整が必要になります。 -
遺伝子ファミリーで折りたたまない — eggNOG オーソロググループデータが利用可能で、インテリジェントにオーソロググループを定義できない限り、分類学的グループのみで折りたたみます。ツリー内の遺伝子ファミリーは研究対象であり、隠すべきノイズではありません。
iTOL の主要な落とし穴
iTOL アノテーションファイル開発からの苦労して得た教訓:
-
末端ラベルに
|文字を含めてはいけません — iTOL は TREE_COLORS クレードエントリ (tipA|tipB clade ...) で|を MRCA セパレータとして使用します、COLLAPSE エントリ、および LABELS 内部ノードエントリ。末端ラベルに|が含まれている場合、すべてのクレード/折りたたみ仕様は静かに壊れます (誤った MRCA が選択されるか、エントリが完全に無視される)。解決策: Newick ツリーを書く前に、末端を短い表示名に再ラベル付けします。 -
ape::write.tree()はスペースをアンダースコアに変換 — 表示ラベルは最初からアンダースコアを使用する必要があります (H._sapiens_SPTN2ではなくH. sapiens SPTN2)、またはアノテーションファイル ID はツリーと一致しません。 -
itol.toolkitR パッケージは|を含むラベルと互換性がない — ツールキットも内部で|を使用し、エスケープできません。代わりにアノテーションファイルを手動で書きます (TAB セパレータを含むプレーンテキスト)。 -
MRCA ペアの選択: 内部ノードを指定するには、各子の部分木から 1 つのヒントを提供します (
tipA|tipB)。配列インデックスの最初/最後のtips[1]とtips[N]を使用すると、同じ子から 2 つのヒントが得られ、異なる MRCA が指定されます。 -
ラベル配置はバッチエクスポート API 経由で制御できません — 「末端ラベルを配置」トグルは UI のみです。
label_displayエクスポートパラメータは可視性を制御します (0=非表示、1=表示) ですが、配置は制御しません。ユーザーは iTOL ウェブインターフェイスで配置トグルを手動で切り替える必要があります。 -
折りたたまれた三角形ラベル — MRCA 仕様 (
tipA|tipB\tLabel text) で LABELS アノテーションタイプを使用します。これらは折りたたまれた三角形の表示名として レンダリングされます。 -
折りたたみ対応、折りたたみなしの 2 つのアップロード — アノテーションファイルはアップロード時にツリーに組み込まれます。折りたたまれていないバージョンと折りたたまれたバージョンの両方を持つには、2 回アップロードします: 折りたたみファイルなしで 1 回、すべてのファイル付きで 1 回。
関連スキル
- protein-phylogeny: ツリーを生成する推論パイプライン
- gene-lookup: アクセッションをデータベース全体の遺伝子シンボルに解析 (UniProt、Ensembl、FlyBase、WormBase など)
- Pfam ドメインアノテーション (将来): ツリーへのオーバーレイ用のドメインアノテーション
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- majiayu000
- ライセンス
- MIT
- 最終更新
- 2026/5/4
Source: https://github.com/majiayu000/claude-skill-registry / ライセンス: MIT