tips007

データとツリー④
— Data Tree

Params ▸ Util ▸ Param Viewer

GH がデータを入れておく形の呼び名。
項目(Item)がリスト(List)にまとまり、リストが集まってツリー(Tree)になる

何をつなぐか

  • 中身を見たい出力から Param Viewer(つないだデータの構造だけを表示するコンポーネント)につなぐ。
    ダブルクリックすると、テキストの表示と図の表示が入れ替わる(右クリックの Draw Tree でも同じ)
  • まとめたいデータは MergeD1D2 につなぐ。
    入力は2つから始まり、D2 をつなぐと D3 が自動で増える(空のままなら結果は変わらない)
①②が Addition、③④が Merge、⑤が Param Viewer。元の2つのリストは左のグレーの枠で、②だけ B 側に 1・2 の2リストを使っている。クリックで拡大。

パスの読み方

{0}段が1つ。リストが1本しかないときの形。図のグレーの枠の、左端の2つのパネルの見出し
{0;0}段が2つ。上の段が 0 で、下の段が 0。Graft(パスを1段増やすコンポーネント・tips006)を通した右のパネルの 10
{0;1}段が2つ。上の段は {0;0} と同じ 0 で、下の段だけ 1。同じパネルの 20

リスト1本ごとに付く番号がパス(Path)。
; で段を区切って書き、左が上の段・右が下の段。どの段も 0 から数える。

同じパスどうしが組み合わされる

コンポーネントは、入ってきた2つのデータを同じパスの中身どうしで組み合わせる。
図の①は、パスをそろえた2つのツリーを Addition につないだもの。

{0;0}A の 10 と B の 111
{0;1}A の 20 と B の 222
{0;2}A の 30 と B の 333

片方のリストが足りないときは、足りない側の最後のリストが繰り返し使われる
図の②は B が2リストしかない形で、{0;2}30 と B の最後の 2 が足されて 32 になる。

Merge はパスごとに合流する

Merge(Sets ▸ Tree)は、D1D2 につないだデータを1つにまとめるコンポーネント。
まとめ方はパスが決める。

同じパス — 3リストのまま、中身が2項目ずつ

{0;0}101
{0;1}202
{0;2}303

違うパス — 合流せず、4リストが並ぶ

{0}1, 2, 3
{0;0}10
{0;1}20
{0;2}30

同じパスに入ってきたものは、1本のリストにつながる。
{0}{0;0} は段の数が違うので別のパス。だから混ざらずに並ぶ。

Param Viewer で確かめる

  • Data with 3 branches(図の⑤) — ツリーに入っているリストが3本という意味
  • {0;0} の右の N = 2 — そのリストに項目が2つ入っている
  • 図の表示は、中心から線が分かれて先端に点が付く形。
    点1つが1リストで、リストが増えれば点も増える

使いどころ

  • 結果の数が思ったのと違うとき、つないだ両側のパスを見比べる。
    段の数がそろっていなければ、そこが原因。
  • ばらばらのリストを1つに集めるときは Merge。
    混ぜたくないものは、先にパスを分けておく。
  • パスの段を増やす・減らすのは Graft と Flatten(tips006)。

注意

Param Viewer に出るのはパスと項目の数だけ。
値そのものは出ないので、中身を読むときは Panel をつなぐ。
足りないリストを繰り返すのは、Addition のように2つを組み合わせるコンポーネントの振る舞い。
Merge は繰り返さないので、3リストと2リストをつなぐと {0;2}30 だけになる。

数の範囲を表す Domain は、用語ひとこと辞典②で扱う。

#用語