
概要 📖 – テーブル各セルを Python 式として評価し新テーブルを生成
Evaluate DATは、入力テーブルの各セルを Python 式として評価し、計算結果を新しいテーブルに出力する DATです。第 1 入力にデータを、第 2 入力に数式を渡せば「データ × 数式」のマトリックス評価ができ、Output Table Size でどちらのテーブル形状を採用するかを切替えられます。Output を Input Data にすると評価を止めて入力をそのままパススルーするため、運用中に評価機構を簡単に無効化できます。
主な用途 🎯
- 設定テーブルの各セルを Python 式として一括評価し、計算結果を新しい DAT に出力
- 第 2 入力に Formula DAT を渡してデータと式を分離し、テーブル × 数式のマトリックス計算を実現
- Expression パラメータの式テンプレートで
op('constant1')['chan']やabsTime.frameを参照し動的テーブルを生成 - Input Data モードでセル評価を停止し、入力テーブルをそのままパススルーする運用切替
- Convert Backslash Characters で
\n/\t等のエスケープシーケンスを実数の制御文字に展開
データフロー 🔄
入力 1: データ DAT (テーブル / テキスト)
[+ 入力 2: 数式 DAT (各セルが式)]
↓
各セルを Python 式として評価 (eval相当、コンパイル済み)
↓
出力 DAT: 同サイズの新テーブル (評価結果文字列)
初心者の方は、以下日本語書籍も手元にあると安心です。

実際の案件事例まで踏み込んで紹介されていて、効率よくスキルアップするなら必携の二冊です!
パラメータ解説 ⚙️
Evaluate Page 📋
入力データと数式 DAT 📥
Input Data DAT .dat 📋
– 第 1 入力 (ワイヤ接続) の代わりに使う データ DAT をパス指定
– 未指定の場合は第 1 入力のテーブルがデータソースとして使われる
Expressions DAT .datexpr 🧮
– 第 2 入力の代わりに使う 数式 DAT をパス指定
– 各セルが Python 式の文字列で、データ DAT の対応セルに対し評価される
出力モード .output 🎚️
DAT から出力する内容の形式を決定するメニュー
| 項目 | 内部名 | 説明 |
|---|---|---|
| Evaluate | .evaluate |
入力データを Python 式としてコンパイル評価し、結果を出力 (通常運用) |
| Input Data | .data |
第 1 入力をそのままパススルー (評価機構を一時的に無効化したいとき) |
Expression (式テンプレート) .expr ✏️
Expressions DAT が未指定のときに、入力データ DAT の各セルに適用される Python 式:
- Expression 文字列: Expressions DAT (第 2 入力) を渡さない場合に、全セルに適用される単一の Python 式 を直接書く。
op('constant1')['chan0']/absTime.frame/ セル参照me.inputCell.val等を利用可能
出力テーブルサイズ .outputsize 📐
Output が Evaluate のとき、出力テーブルの行数・列数をどちらの入力から取るかの選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input 1 (Data) | .in1 |
出力サイズを第 1 入力 (データ DAT) のサイズに合わせる (データ寄りの運用) |
| Input 2 (Expressions) | .in2 |
出力サイズを第 2 入力 (数式 DAT) のサイズに合わせる。数式 DAT がデータ DAT より大きい場合、データ DAT の最終セルが残りの式評価に再利用される |
※ 注意: Formula DAT が Input DAT より大きい場合、入力データの各行・各列の最終セルが残りの式評価に繰り返し使われます。意図しない値の使い回しに注意。
依存監視と文字エスケープ 🔁
Monitor Data Dependencies .dependency 🔍
– On (デフォルト) 時、式中で参照されたノード (op(...) 等) や時刻依存 (absTime 等) を監視し、それらが変化した瞬間に DAT を cook
– Off 時は入力 DAT の変化のみを cook 契機とし、無駄な再計算を抑制 (式が静的なときの高速化)
Convert Backslash Characters .backslash 🔣
– On 時、出力文字列中の \n を改行・\t をタブ等の実数の制御文字に展開
– 入力 DAT がテーブル形式の場合、\n / \t は空白に置換される (テーブルの行・列区切りと衝突しないため)
Common Page 🔧
Language .language 📝
DAT が動作するスクリプト言語の決定方法
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT のスクリプト言語を使用 |
| Node | .node |
この DAT 自身のスクリプト言語を使用 |
Edit/View Extension .extension 📄
外部エディタに公開するファイル拡張子の選択
| 項目 | 内部名 | 説明 |
|---|---|---|
| dat | .dat |
汎用的なファイル拡張子 dat を使用 |
| From Language | .language |
DAT のスクリプト言語に応じた拡張子を自動選択 |
| Custom Extension | .custom |
Custom Extension で指定したカスタム拡張子を使用 |
Custom Extension .customext 🔤
Edit/View Extension が Custom Extension のときに適用される拡張子:
- Custom Extension 文字列:
Edit/View Extensionがcustomのときに使用される任意のファイル拡張子
Word Wrap .wordwrap 🔁
ノード表示でのワードラップ (折り返し) の有効化
| 項目 | 内部名 | 説明 |
|---|---|---|
| Input | .input |
入力 DAT の Word Wrap 設定を継承 |
| On | .on |
Word Wrap を有効化 (ノード上の長い行を折り返し表示) |
| Off | .off |
Word Wrap を無効化 (折り返さずそのまま表示) |
実践アイデア 💡
Example 1: 設定テーブルの Python 式を一括評価して数値テーブルへ 🧮
Table DAT (式入りセル) → Evaluate DAT (Output=Evaluate) → Select DAT / CHOP
- Table DAT に
3*4/op('constant1')['chan0']/absTime.frame % 60等の式文字列を埋めたテーブルを作成 - Evaluate DAT を後段に接続し、
OutputをEvaluateに設定 - 各セルが Python 式として評価され、計算結果の数値文字列が出力テーブルに並ぶ
- DAT to CHOP や Select DAT で必要なセルだけを CHOP / 別 DAT へ引き渡す
Example 2: Formula DATとデータの行列計算 🔀
Table DAT (data) ─┐
├→ Evaluate DAT (outputsize=in2) → 出力 DAT
Table DAT (formulas) ─┘
- 第 1 入力に数値のみのデータ DAT (例: センサー値や時系列値)、第 2 入力に各セル
op('me').inputCell.val * 2等の式 DAT を接続 - Evaluate DAT で
Output Table SizeをInput 2 (Expressions)に設定し、式 DAT のサイズを基準に出力 - 各セルで Python 式が評価され、データセルと式セルのペアごとに計算結果が並ぶ
- Formula DAT がデータ DAT より大きい場合は、データの最終セルが残りの式評価に再利用されるので、サイズ合わせは事前に Insert DAT 等で揃えておく
Example 3: Expressionで動的テーブルを生成 ⏱️
Constant CHOP → (参照) → Evaluate DAT (expr テンプレート) → Text TOP / Table DAT
- Expressions DAT (第 2 入力) を未接続にし、Evaluate DAT の
Expressionパラメータに単一の式 (例:op('constant1')['chan0'] * absTime.frame) を直接書く Monitor Data Dependenciesを On のままにし、参照中の Constant CHOP の値変化やabsTimeの進行で再評価をトリガー- 全セルに同じ式が適用されるため、テンプレ的に動的値を全行に展開できる
- 出力 DAT を Text TOP や別 DAT に渡して UI 表示・ロジック分岐に使う
関連オペレータ 🔗
類似機能OP 🔍
- Substitute DAT — テキスト中の変数を式評価で置換する版 (セル単位ではなく文字列置換)
- Script DAT — Python スクリプトで DAT を自由に加工できる汎用変換 DAT
- Convert DAT — テーブル ⇄ テキスト変換や delimiter 変換に特化
組み合わせ推奨OP 🔄
- Table DAT — データ・数式どちらの入力にも使う標準ペア
- Text DAT — 単一式の Expression source や、出力をテキスト形式で扱うときに併用
- Constant CHOP — Expression 中で
op('constant1')['chan0']として参照、Monitor Dependencies で値変化に追随 - DAT to CHOP — Evaluate DAT の数値出力を CHOP チャンネルとして取り出す定番後段
- Insert DAT — データ DAT と Formula DAT のサイズを事前に揃える前処理
前処理・後処理DAT 🎯
- 前処理: Table DAT、Text DAT、Insert DAT
- 後処理: Select DAT、Convert DAT、Null DAT
Info DAT情報 📊
Evaluate DAT は Info DAT による詳細情報取得に対応しています (num_rows / num_cols / total_cooks / cook_time 等の共通 DAT Info チャンネルを参照可能)。
DAT 固有情報 📋
num_rows: DAT の行数num_cols: DAT の列数type: DAT の型 (table / text)is_table: テーブル形式の場合 1、テキスト形式の場合 0
汎用オペレータ情報 🔄
total_cooks: プロセス開始からのクック回数cook_time: 最後のクック時間 (ミリ秒)cook_frame: 最後にクックされたフレーム番号warnings: 警告数errors: エラー数
トラブルシューティング ⚠️
よくある問題と解決策 🔧
❌ Problem: 出力テーブルが空、または NameError / SyntaxError が出る
✅ Solution:
OutputがEvaluateになっているか確認 (Input Dataではセル評価は走らずパススルーになる)- 各セルが有効な Python 式かを確認 (文字列リテラルなら
'foo'のようにクォートで囲む) - 式中で参照しているノード (
op('constant1')等) のパス・チャンネル名が現存するか確認 - Textport / Console でエラースタックトレースを確認し、該当行・列のセル内容を修正
❌ Problem: Formula DAT がデータ DAT より大きく、末尾セルが繰り返し使われる
✅ Solution:
- Insert DAT でデータ DAT 側に空行・空列を追加し、Formula DAT とサイズを揃える
Output Table SizeをInput 1 (Data)に切替えて、データ側のサイズで出力を確定 (Formula DAT の余剰行・列が無視される)- 前段で Convert DAT や Script DAT を使ってデータ DAT のサイズを動的に拡張
❌ Problem: \n / \t が改行・タブにならず空白に変わる
✅ Solution:
- 入力 DAT が テーブル形式 の場合、
Convert Backslash Charactersは\n/\tを空白に置換する仕様 (公式仕様) - 改行・タブを保持したい場合は Text DAT 形式の入力に変更してから Evaluate DAT に渡す
- 後段で Convert DAT を使い、明示的に区切り文字を再付与する
❌ Problem: 毎フレーム不要に再計算が走り重い
✅ Solution:
Monitor Data Dependenciesを Off にし、入力 DAT 変化のみを cook 契機に限定- 式中で
absTime.frame/absTime.seconds等の時刻依存関数を多用していないか確認 (依存があれば毎フレーム再評価される) - 重い式は前段の Script DAT に逃がし、必要なときだけ Python で計算
参考資料 📚
その他 🔗
- TouchDesigner Wiki — DAT 概要
- TouchDesigner Wiki — Category:DATs
- TouchDesigner Wiki ホーム
- TouchDesigner 公式 Forum
- Facebook — TouchDesigner Help Group
公式リソース 📖
- TouchDesigner公式ドキュメント – Evaluate DAT
- TouchDesigner公式ドキュメント – EvaluateDAT Class
- TouchDesigner公式ドキュメント – Category:Python

