Skip to content

Super Select

v1.0.0

The Super Select LOP is an enhanced version of TouchDesigner’s built-in Select DAT. It provides flexible row and column selection by index, wildcard pattern, or unique value, along with search filtering that supports both exact and fuzzy matching. Automatic header detection keeps menus populated with meaningful labels from your source table.

This operator has no wired inputs. On the IO page, set the Input DAT parameter to reference your source table DAT.

The single output produces a table DAT containing the selected rows and columns, with any search filtering applied.

  1. On the IO page, point Input DAT at your source table.
  2. On the Settings page, set Selection Mode to “Row Selection”.
  3. On the Row Selection page, set Row Selection Mode to “By Index”.
  4. Enter the desired row indices in Row Indices — for example, 1,3,5 for individual rows or 2-5 for a range. Use * to select all rows.
  5. The output table contains only the specified rows.
  1. On the Settings page, set Selection Mode to “Column Selection”.
  2. On the Column Selection page, set Column Selection Mode to “By Pattern”.
  3. Enter a wildcard pattern in Column Pattern — for example, *name* to match any column header containing “name”.
  4. Set Row For Selection to choose which row’s values are matched against the pattern (typically row 0 for headers).
  5. The output table contains only the matching columns.
  1. On the Settings page, set Selection Mode to “Row Selection”.
  2. On the Row Selection page, set Row Selection Mode to “Single By Column”.
  3. Choose which column to identify rows by with Column For Selection — when Auto Detect Headers is enabled on the Settings page, this menu shows header labels instead of indices.
  4. Pick a value from the Select Row dropdown to isolate that row.
  5. Use the Next Row, Previous Row, and Random Row pulse buttons to step through the table. Navigation wraps around at either end.
  1. On the Settings page, set Selection Mode to “Both”.
  2. Configure row criteria on the Row Selection page and column criteria on the Column Selection page independently.
  3. The output contains only cells at the intersection of the selected rows and columns.
  4. Enable Keep First Row or Keep First Column on the Settings page to always preserve headers in the output, regardless of your selection criteria.
  1. On the Search page, toggle Enable Search Filter on.
  2. Enter a term in Search Term.
  3. Set Search Mode to “Exact Match” for substring matching, or “Fuzzy Match” to use similarity scoring.
  4. When using fuzzy mode, adjust Fuzzy Threshold (0.1 to 1.0) — higher values require closer matches.
  5. Choose Search Scope to limit where the search looks: “All Cells”, “Headers Only”, or “Data Only”.
  6. Set Search Returns to control whether the search filters “Matching Rows”, “Matching Columns”, or “Both Rows and Columns”.
  7. Search filtering is applied on top of whatever row/column selection is already configured, narrowing the results further.
  • Enable Auto Detect Headers to get human-readable labels in the selection menus rather than raw indices.
  • Use Keep First Row when your source table has a header row and you want column names preserved in every output, even when selecting specific data rows.
  • The index syntax supports combinations: 0,3-5,8 selects rows 0, 3, 4, 5, and 8 in a single expression. Use * to select everything.
  • For large tables, prefer exact search over fuzzy search. Fuzzy matching computes a similarity score for every cell in scope.
  • Empty output table — Verify that Input DAT on the IO page points to a valid table DAT with data. Also check that your selection mode and criteria actually match existing rows or columns.
  • Menus show indices instead of header names — Make sure Auto Detect Headers is enabled on the Settings page, and toggle Use Header Values for Menus on the relevant selection page.
  • Fuzzy search returns too many or too few results — Adjust the Fuzzy Threshold. A value around 0.6-0.7 works well for general use. Lower values are more permissive; higher values require closer matches.
  • Fuzzy matching quality varies — The operator uses the Levenshtein Python library when available for accurate edit-distance scoring. Without it, a simpler sequential character matching fallback is used.
Selection Mode (Page) op('super_select').par.Page Menu

Switch between row, column, or both selection modes

Default:
row_select
Options:
row_select, column_select, both
Keep First Row (Keepfirstrow) op('super_select').par.Keepfirstrow Toggle

Always include first row (header) in the output

Default:
False
Keep First Column (Keepfirstcol) op('super_select').par.Keepfirstcol Toggle

Always include first column (header) in the output

Default:
False
Auto Detect Headers (Detectheaders) op('super_select').par.Detectheaders Toggle

Automatically detect headers in first row/column

Default:
True
Row Selection Mode (Rowselectionmode) op('super_select').par.Rowselectionmode Menu

Method to select rows

Default:
all
Options:
all, index, pattern, single_by_column
Row Indices (Rowindex) op('super_select').par.Rowindex Str

Comma-separated list of indices or patterns (e.g., "0,2-5,7")

Default:
"" (Empty String)
Row Pattern (Rowpattern) op('super_select').par.Rowpattern Str

Wildcard pattern to match row values (e.g., "value*" or "*test*")

Default:
"" (Empty String)
Column For Selection (Rowcolumnindex) op('super_select').par.Rowcolumnindex Menu

Which column to match against when using pattern or single selection

Default:
0
Options:
0
Select Row (Rowsingleselect) op('super_select').par.Rowsingleselect Menu

Select a single row by column value

Default:
0
Options:
0
Use Header Values for Menus (Rowmenulabels) op('super_select').par.Rowmenulabels Toggle

When enabled, column headers are used as menu labels. When disabled, indices are used.

Default:
False
Next Row → (Rownext) op('super_select').par.Rownext Pulse

Select next row

Default:
False
← Previous Row (Rowprevious) op('super_select').par.Rowprevious Pulse

Select previous row

Default:
False
Random Row ⟳ (Rowrandom) op('super_select').par.Rowrandom Pulse

Select random row

Default:
False
Column Selection Mode (Colselectionmode) op('super_select').par.Colselectionmode Menu

Method to select columns

Default:
all
Options:
all, index, pattern, single_by_row
Column Indices (Colindex) op('super_select').par.Colindex Str

Comma-separated list of indices or patterns (e.g., "0,2-5,7")

Default:
"" (Empty String)
Column Pattern (Colpattern) op('super_select').par.Colpattern Str

Wildcard pattern to match column values (e.g., "value*" or "*test*")

Default:
"" (Empty String)
Row For Selection (Colrowindex) op('super_select').par.Colrowindex Menu

Which row to match against when using pattern or single selection

Default:
0
Options:
0
Select Column (Colsingleselect) op('super_select').par.Colsingleselect Menu

Select a single column by row value

Default:
0
Options:
0
Use Header Values for Menus (Colmenulabels) op('super_select').par.Colmenulabels Toggle

When enabled, row headers are used as menu labels. When disabled, indices are used.

Default:
False
Next Column → (Colnext) op('super_select').par.Colnext Pulse

Select next column

Default:
False
← Previous Column (Colprevious) op('super_select').par.Colprevious Pulse

Select previous column

Default:
False
Random Column ⟳ (Colrandom) op('super_select').par.Colrandom Pulse

Select random column

Default:
False
Enable Search Filter (Usesearch) op('super_select').par.Usesearch Toggle

Apply search filtering on top of row/column selection

Default:
False
Search Term (Searchterm) op('super_select').par.Searchterm Str

Text to search for in the table

Default:
"" (Empty String)
Fuzzy Threshold (Fuzzythreshold) op('super_select').par.Fuzzythreshold Float

Similarity threshold for fuzzy matching (0.1-1.0)

Default:
0.0
Range:
0.1 to 1
Slider Range:
0 to 1
Search Mode (Searchmode) op('super_select').par.Searchmode Menu

Method for searching table content

Default:
exact
Options:
exact, fuzzy
Search Returns (Searchreturn) op('super_select').par.Searchreturn Menu

Controls whether search returns matching rows, columns, or both

Default:
rows
Options:
rows, columns, both
Search Scope (Searchscope) op('super_select').par.Searchscope Menu

Where to look for matches

Default:
all
Options:
all, headers_only, data_only
Input DAT (Inputdat) op('super_select').par.Inputdat DAT

The source table DAT to select from

Default:
./in1
Output DAT (Outputdat) op('super_select').par.Outputdat DAT

The destination DAT for selected data

Default:
./table_out
v1.0.02025-03-11

Initial release