系統樹

系統樹について

系統樹(フィログラムまたはクラドグラムとも呼ばれる)は、種・遺伝子・配列のグループの推定された進化史を示します。内部ノードは仮想的な共通祖先を表し、先端(チップ)は観察された分類群を表します。枝の長さは進化的距離または分岐時間をエンコードします。進化生物学者・分子生態学者・臨床微生物学者が、生命の歴史の再構築、病原体のアウトブレーク追跡、遺伝子ファミリーの進化の理解に系統樹を使用します。

Schematex は**Newick フォーマットを受け付けます — PAUP*、IQ-TREE、RAxML、BEAST、およびほぼすべての系統解析プログラムが使用する普遍的な交換標準であり、ブートストラップ値とクレードメタデータのためのNHX アノテーション**で拡張されています。手書きのツリーのためのインデントベースの DSL もサポートされています。このページでは、現在パーサーが受け付ける構文を説明します。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrate Evolution Phylogenetic tree with 12 taxa, phylogram mode, circular layout Vertebrate Evolution Primates Rodents Carnivora Cetacea Human Chimp Gorilla Mouse Rat Dog Cat Tiger Whale Dolphin Salmon Zebrafish 0.2 substitutions/site
UTF-8 · LF · 7 lines · 657 chars✓ parsed·4.6 ms·9.5 KB SVG

1. はじめての系統樹

最小限の実用的なツリー:4つの分類群、2つのクレード。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates Phylogenetic tree with 4 taxa, phylogram mode, rectangular layout Vertebrates Human Chimp Dog Cat 0.1
UTF-8 · LF · 2 lines · 84 chars✓ parsed·0.5 ms·4.3 KB SVG

以下の3つのルールで利用の80%をカバーできます。

  1. phylo で始め、オプションで引用符付きタイトルとブラケットの props を続けます。
  2. newick: フォーマットでツリートポロジーを提供します — 標準 Newick 文字列を引用符で囲み、1行に記述します。末尾の ; はオプションです。
  3. オプションで、newick 行の下にクレードハイライトグループとスケールラベルを定義します。

コメントは単独行で # で始める必要があります。末尾インラインコメントはサポートされていません。


2. 入力フォーマット

2.1 Newick フォーマット

Newick が主要な入力です。完全な文法は以下の通りです。

(A,B,(C,D));                         # topology only
(A:0.1,B:0.2,(C:0.3,D:0.4):0.5);    # with branch lengths
((A:0.1,B:0.2):0.05[&&NHX:B=98],(C,D):0.08);  # NHX bootstrap
('Homo sapiens':0.1,'Mus musculus':0.2);        # quoted names with spaces

枝の長さはコロンの後のノード名に続きます。内部ノードのサポート値はプレーンブラケット [95] または NHX [&&NHX:B=95] として表示できます。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Newick examples Phylogenetic tree with 4 taxa, phylogram mode, rectangular layout Newick examples A B C D 98 87 0.1
UTF-8 · LF · 2 lines · 98 chars✓ parsed·0.5 ms·4.6 KB SVG

パーサーが受け付ける Newick のルール:

機能構文備考
リーフ名AHomo_sapiensスペースなし — _ を使うか引用符で囲む
引用符付きリーフ名'Homo sapiens'シングルクォート。'' は内部のリテラルクォート
枝の長さ:0.035(名前の後)浮動小数点。オプション
内部ノード名(A,B)ancestor閉じ ) の後
ブートストラップ(プレーン)(A,B)[95]ブラケット内の整数または浮動小数点
ブートストラップ(NHX)(A,B)[&&NHX:B=95]B= フィールド。他の NHX フィールドは格納されるが描画されない
セミコロン;(末尾)オプション — パーサーが削除
ポリトミー(A,B,C)3つ以上の子

2.2 インデント DSL

手書きまたは小さなツリーには、生の Newick より読みやすく編集しやすいインデントベースの代替手段を提供します。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates (indent DSL) Phylogenetic tree with 1 taxa, phylogram mode, rectangular layout Vertebrates (indent DSL) root 0.2 substitutions/site
UTF-8 · LF · 9 lines · 145 chars✓ parsed·0.8 ms·3.1 KB SVG

インデント DSL のルール:

構文意味
Name: length枝の長さを持つリーフノード
: length枝の長さを持つ無名内部ノード
Name枝の長さなしのリーフノード(クラドグラム)
Name [N]サポート値 N を持つノード
深いインデント浅いインデントの上のノードの子
#コメント、無視される

スペースなしで : で終わる最初の行がインデントツリーモードをトリガーします(例:root:)。コロンの前の名前がルートラベルになり、その下のすべてのインデント行が子になります。


3. レイアウト

ヘッダーブラケットでレイアウトを設定します:phylo "Title" [layout: rectangular]

レイアウト説明
矩形rectangularデフォルト。L字形の枝。ルートが左、先端が右
斜めslanted親から子への斜線。よりコンパクト
円形circularルートが中心、先端が円周に広がる
無根unrooted等角放射状。距離を重視し、祖先関係を重視しない

[unrooted] を単独フラグとして使うと [layout: unrooted] と同等です。

円形 — ルートが中心、先端が外側に広がります。クレードハイライトを持つ多分類群ツリーで最も視覚的に印象的です。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates — circular Phylogenetic tree with 8 taxa, phylogram mode, circular layout Vertebrates — circular Primates Carnivora Human Chimp Gorilla Dog Cat Wolf Salmon Zebrafish 0.2
UTF-8 · LF · 4 lines · 356 chars✓ parsed·0.8 ms·6.5 KB SVG

矩形 — L字形の枝。ルートが左、先端が右。発表用図のための古典的なフィログラム形式です。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Bacterial Diversity Phylogenetic tree with 10 taxa, phylogram mode, rectangular layout Bacterial Diversity Ecoli Salmonella Vibrio Bacillus Staph Listeria Myco_tb Myco_leprae Strepto Lactobacillus 98 92 100 0.2 substitutions/site
UTF-8 · LF · 5 lines · 503 chars✓ parsed·0.9 ms·8.4 KB SVG

斜め — 親から子への斜線。矩形よりコンパクトで、同じ左から右への読み方向です。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates — slanted Phylogenetic tree with 8 taxa, phylogram mode, slanted layout Vertebrates — slanted Human Chimp Gorilla Dog Cat Wolf Salmon Zebrafish 0.2 substitutions/site
UTF-8 · LF · 5 lines · 347 chars✓ parsed·1.6 ms·5.5 KB SVG

無根 — 等角放射状レイアウト。ルートを重視せず、すべての分類群間のペアワイズ距離を強調します。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Vertebrates — unrooted Phylogenetic tree with 8 taxa, phylogram mode, rectangular layout Vertebrates — unrooted Human Chimp Gorilla Dog Cat Wolf Salmon Zebrafish 0.2
UTF-8 · LF · 4 lines · 314 chars✓ parsed·0.7 ms·5.7 KB SVG

4. モード

ヘッダーで [mode: …] を使って設定します(または本文の任意の場所に style [mode: …] 行を置きます)。

モード枝の長さの意味
フィログラムphylogramデフォルト。進化的距離に比例(塩基置換/サイト)
クラドグラムcladogram無視 — 先端が整列。トポロジーのみ重要
クロノグラムchronogram分岐時間に比例。すべての先端が「現在」に整列
デンドログラムdendrogram枝の長さは融合高さ — 2つのクラスターが結合する距離

クロノグラムには、時間単位の枝の長さと、ヘッダーに [mrsd: "YYYY"](最新サンプリング日)が必要です。レンダラーが先端を現在に整列させるために使用します。

phylo "SARS-CoV-2 variants" [mode: chronogram, mrsd: "2023"]
  newick: "((Alpha:0.5,Delta:0.4):0.3,Omicron:0.8);"
  scale "years"

デンドログラム — 階層的凝集クラスタリングの標準的な出力であり、進化ではありません。各内部ノードはその融合高さ(2つの子クラスターが融合するコフェネティック距離)に配置され、すべての葉が共通のベースラインに整列し、枝は矩形のエルボーコネクターです。高さ軸が描画されるため、任意の2つの葉が最初にクラスターを共有する距離を読み取れます。同じ Newick/インデントツリーが系統ではなくクラスタリング結果を説明する場合に使用してください。たとえば、遺伝子発現クラスター、サンプル類似度、調査回答グループなどです。

cut <value> 行を追加すると、選択した高さでツリーを切断します。融合高さがしきい値を下回るすべてのサブツリーが1つのフラットクラスターになり、それぞれが異なる色で着色され、その高さに破線のしきい値ラインが描画されます。これは scipy の fcluster に相当するデンドログラムの操作 — 連続ツリーを離散グループのセットに変換します。

phylogenetic·§ Newick / NHX
↘ preview
100%
Dendrogram: Gene expression clusters Dendrogram with 5 taxa, dendrogram mode, rectangular layout, cut at 4 into 2 clusters Gene expression clusters A B C D E 0 1 2 3 4 5 cluster distance cut = 4
UTF-8 · LF · 4 lines · 127 chars✓ parsed·1.8 ms·5.6 KB SVG

cut を省略すると、フラットクラスターの着色なしの純粋なデンドログラムが表示されます。

phylogenetic·§ Newick / NHX
↘ preview
100%
Dendrogram: Sample clustering Dendrogram with 5 taxa, dendrogram mode, rectangular layout Sample clustering A B C D E 0 1 2 3 4 5 cluster distance
UTF-8 · LF · 3 lines · 114 chars✓ parsed·0.7 ms·4.7 KB SVG

5. クレードのハイライト

clade 行は単系統群を色、オプションのラベル、オプションのハイライトモードでマークします。

clade ID = (member1, member2, ...) [color: "#hex", label: "text", highlight: mode]
プロパティ効果
color:16進文字列 例:"#1E88E5"枝および/または背景色
label:引用符付き文字列右マージンに表示されるクレードラベル
highlight:branchbackgroundbothbranch はラインを着色、background は領域をシェード、both は両方

メンバーは Newick 文字列からの先端(葉)の ID です。レンダラーはリストされた先端の MRCA を計算し、そこをルートとするサブツリー全体をハイライトします。

phylogenetic·§ Newick / NHX
↘ preview
100%
Phylogenetic Tree: Mammal clades Phylogenetic tree with 7 taxa, phylogram mode, rectangular layout Mammal clades Primates Human Chimp Gorilla Mouse Dog Cat Tiger 0.2
UTF-8 · LF · 4 lines · 346 chars✓ parsed·0.5 ms·6.7 KB SVG

6. スケールバーとアウトグループ

スケールバー: scale "label" — 下部にバーを追加します。ラベルは単位を説明します(例:"substitutions/site""Mya")。枝の長さに意味がないクラドグラムモードでは省略してください。

アウトグループ: outgroup: taxonId — ドキュメント用にアウトグループを記録します。レンダラーがアウトグループの分類群を視覚的にマークするために使用することがあります。

phylo "Vertebrates"
  newick: "((Human:0.1,Chimp:0.08):0.03,Lamprey:0.8);"
  outgroup: Lamprey
  scale "substitutions/site"

7. ヘッダー props リファレンス

すべてのオプションは phylo ヘッダー行の […] 内、または本文の任意の場所の style […] 行に記述します。

プロパティデフォルト効果
layout:rectangularslantedcircularunrootedrectangularツリーレイアウト
mode:phylogramcladogramchronogramdendrogramphylogram枝の長さのセマンティクス
unrooted(フラグ)layout: unrooted と同等
branch-width:数値1.5枝のストローク幅
openAngle:数値(度)0円形レイアウトのファンギャップ(0 = 360° 全体)
mrsd:引用符付き年文字列クロノグラムの最新サンプリング日

8. ラベルとコメント

  • タイトル: phylo "Tree of Life" — 最初の行のみ。
  • スケールラベル: scale "substitutions/site" — ドキュメントごとに1つ。
  • クレードラベル: clade 行内の [label: "Primates"]
  • コメント: 行頭(先頭スペースの後)の #。末尾インラインコメントはサポートされていません。

9. よくある間違い

書いた内容パーサーの応答修正方法
newick: (A,B,C);(引用符なし)PhyloParseError: Phylo document must start with 'phylo'Newick 文字列を引用符で囲む:newick: "(A,B,C);"
スペースを含む先端名:Homo sapiens:0.1Homo としてパースされる — スペースが引用符なしの名前を終了させるアンダースコアを使う(Homo_sapiens)またはシングルクォートで囲む('Homo sapiens'
clade の葉 ID が Newick 名と一致しないクレードはサイレントに0メンバーになり、ハイライトなしNewick 文字列に表示されているとおりの名前をコピーする
newick: またはインデントツリーなしの clade X = (A, B)PhyloParseError: No tree definition foundnewick: 行またはインデントツリーブロックを追加する
枝の長さなしの mode: chronogramレンダラーはすべての長さを0として扱い、先端がルートで重なるNewick 文字列のすべてのエッジに :length を追加する
root: 行が検出されないroot: 行の名前にスペースがある場合(例:My root:)、インデントツリーがトリガーされない単語1つのルートラベルまたは root: を使用する
内部ノード名を持つ Newick:(A,B)ancestor:0.5正常にパースされる — ancestor は内部ノードラベルサポート済み。内部ノードに内部名が表示される

10. 文法(EBNF)

document        = header (blank | comment | newick-line | scale-line
                    | outgroup-line | clade-line | style-line | cut-line | indent-line)*

header          = "phylo" ( WS quoted-string )? ( WS "[" props "]" )? NEWLINE
quoted-string   = '"' any-char-but-quote* '"'

newick-line     = "newick:" WS quoted-newick NEWLINE
scale-line      = "scale" ( WS quoted-string )? NEWLINE
outgroup-line   = "outgroup:" WS id NEWLINE
cut-line        = "cut" WS number NEWLINE       // dendrogram mode: flat-cluster threshold height
clade-line      = "clade" WS id WS "=" WS "(" id ("," id)* ")"
                    ( WS "[" clade-props "]" )? NEWLINE
style-line      = "style" WS "[" props "]" NEWLINE

// Indent tree — triggered by a line ending in ":" with no spaces
indent-tree     = root-line indent-node*
root-line       = id ":" NEWLINE
indent-node     = INDENT ( id ":" length | ":" length | id ) ( WS "[" number "]" )? NEWLINE

props           = prop ("," prop)*
prop            = "layout:" layout-value
                | "mode:" mode-value
                | "unrooted"
                | "branch-width:" number
                | "openAngle:" number
                | "mrsd:" quoted-string

clade-props     = clade-prop ("," clade-prop)*
clade-prop      = "color:" quoted-string
                | "label:" quoted-string
                | "highlight:" ( "branch" | "background" | "both" )

layout-value    = "rectangular" | "slanted" | "circular" | "unrooted"
mode-value      = "phylogram" | "cladogram" | "chronogram" | "dendrogram"

// Newick grammar (embedded, parsed separately)
newick          = subtree ";"?
subtree         = leaf | internal
internal        = "(" subtree ("," subtree)* ")" name? nhx? length?
leaf            = name nhx? length?
name            = unquoted-name | "'" single-quoted "'")
length          = ":" number
nhx             = "[" number "]"                     // plain bootstrap
                | "[&&NHX:" nhx-pair (":" nhx-pair)* "]"
nhx-pair        = key "=" value

id              = [a-zA-Z] [a-zA-Z0-9_-]*
number          = /[+-]?[0-9]+(\.[0-9]+)?([eE][+-]?[0-9]+)?/
comment         = INDENT "#" any NEWLINE

権威ある情報源:src/diagrams/phylo/parser.ts。このドキュメントとパーサーが乖離している場合、パーサーが優先されます。Issue を立ててください。


11. 標準準拠

Schematex の系統樹は、コアのツリーシリアライゼーションに**Newick フォーマット仕様(PHYLIP パッケージに記載)に従い、ブートストラップサポート値にはNHX(New Hampshire Extended)**の慣習を使用します。NHX ブラケットの B= フィールドのみが現在視覚的に描画されます。他のすべてのフィールドはパースされて格納されますが表示されません。

現在実装済みのもの:

  • ✅ Newick トポロジー、枝の長さ、引用符付き名前、ポリトミー
  • ✅ ブートストラップ値 — プレーン [95] と NHX [&&NHX:B=95]
  • ✅ 矩形、斜め、円形、無根のレイアウト
  • ✅ フィログラム、クラドグラム、クロノグラムのモード
  • ✅ クレードハイライト(枝の色、背景シェーディング、両方)
  • ✅ スケールバー
  • ✅ インデント DSL の代替手段
  • ⏳ 複数ツリードキュメント(フォレスト)— §12参照
  • ⏳ クロノグラムの時間較正軸(地質スケール)
  • ⏳ 先端ごとのアイコンまたは画像
  • B= 以外の NHX フィールド(種、分類、重複イベント)

参考文献:

  • Felsenstein, J. (1986). The Newick tree format. PHYLIP documentation.
  • Zmasek, C.M. & Eddy, S.R. (2001). ATV: Display and manipulation of annotated phylogenetic trees. Bioinformatics, 17(4), 383–384. (NHX specification)
  • Felsenstein, J. (2004). Inferring Phylogenies. Sinauer Associates.

12. 関連サンプル

phylo·§ Newick/NHX
Phylogenetic Tree: Bacterial Diversity Phylogenetic tree with 10 taxa, phylogram mode, rectangular layout Bacterial Diversity Ecoli Salmonella Vibrio Bacillus Staph Listeria Myco_tb Myco_leprae Strepto Lactobacillus 98 85 92 100 78 0.2 substitutions/site
Bacterial diversity (ten-taxon tree)
Ten-taxon bacterial phylogenetic tree from a Newick/NHX string with bootstrap support values, three colored clade arcs, and a branch-length scale bar.
research & analysis

13. ロードマップ

計画中 — 現在はパース不可。 生成する DSL でこれらを使用しないでください。パーサーが拒否または無視します。

  • 複数ツリードキュメント — 複数の newick: ブロックを持つ phylo ファイル(例:遺伝子ツリーと種ツリー)。
  • クロノグラムの地質時間軸 — 平坦な数値スケールの代わりに、エポックラベル付きの X 軸(新生代/中生代など)。
  • 先端ごとのメタデータ — クレード全体を宣言せずに個々の先端に形質や色付きマーカーを付ける(例:tip Ecoli [color: "#F00", shape: star])。
  • ブートストラップ以外の NHX フィールド — 種(S=)、重複(D=)、転移イベント(Tr=)を枝記号として描画。
  • タングルグラム — 対応する先端を結ぶ接続線を持つ2つのツリーを並べて表示。

早急に必要な場合は GitHub の Issue でトラッキングしてください。

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.