Super Select
Overview
Section titled “Overview”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.
Input/Output
Section titled “Input/Output”Inputs
Section titled “Inputs”This operator has no wired inputs. On the IO page, set the Input DAT parameter to reference your source table DAT.
Outputs
Section titled “Outputs”The single output produces a table DAT containing the selected rows and columns, with any search filtering applied.
Usage Examples
Section titled “Usage Examples”Selecting Specific Rows by Index
Section titled “Selecting Specific Rows by Index”- On the IO page, point Input DAT at your source table.
- On the Settings page, set Selection Mode to “Row Selection”.
- On the Row Selection page, set Row Selection Mode to “By Index”.
- Enter the desired row indices in Row Indices — for example,
1,3,5for individual rows or2-5for a range. Use*to select all rows. - The output table contains only the specified rows.
Selecting Columns by Pattern
Section titled “Selecting Columns by Pattern”- On the Settings page, set Selection Mode to “Column Selection”.
- On the Column Selection page, set Column Selection Mode to “By Pattern”.
- Enter a wildcard pattern in Column Pattern — for example,
*name*to match any column header containing “name”. - Set Row For Selection to choose which row’s values are matched against the pattern (typically row 0 for headers).
- The output table contains only the matching columns.
Browsing Rows One at a Time
Section titled “Browsing Rows One at a Time”- On the Settings page, set Selection Mode to “Row Selection”.
- On the Row Selection page, set Row Selection Mode to “Single By Column”.
- 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.
- Pick a value from the Select Row dropdown to isolate that row.
- Use the Next Row, Previous Row, and Random Row pulse buttons to step through the table. Navigation wraps around at either end.
Combining Row and Column Selection
Section titled “Combining Row and Column Selection”- On the Settings page, set Selection Mode to “Both”.
- Configure row criteria on the Row Selection page and column criteria on the Column Selection page independently.
- The output contains only cells at the intersection of the selected rows and columns.
- Enable Keep First Row or Keep First Column on the Settings page to always preserve headers in the output, regardless of your selection criteria.
Using Search to Filter Results
Section titled “Using Search to Filter Results”- On the Search page, toggle Enable Search Filter on.
- Enter a term in Search Term.
- Set Search Mode to “Exact Match” for substring matching, or “Fuzzy Match” to use similarity scoring.
- When using fuzzy mode, adjust Fuzzy Threshold (0.1 to 1.0) — higher values require closer matches.
- Choose Search Scope to limit where the search looks: “All Cells”, “Headers Only”, or “Data Only”.
- Set Search Returns to control whether the search filters “Matching Rows”, “Matching Columns”, or “Both Rows and Columns”.
- Search filtering is applied on top of whatever row/column selection is already configured, narrowing the results further.
Best Practices
Section titled “Best Practices”- 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,8selects 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.
Troubleshooting
Section titled “Troubleshooting”- 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
LevenshteinPython library when available for accurate edit-distance scoring. Without it, a simpler sequential character matching fallback is used.
Parameters
Section titled “Parameters”Settings
Section titled “Settings”op('super_select').par.Keepfirstrow Toggle Always include first row (header) in the output
- Default:
False
op('super_select').par.Keepfirstcol Toggle Always include first column (header) in the output
- Default:
False
op('super_select').par.Detectheaders Toggle Automatically detect headers in first row/column
- Default:
True
Row Selection
Section titled “Row Selection”op('super_select').par.Rowindex Str Comma-separated list of indices or patterns (e.g., "0,2-5,7")
- Default:
"" (Empty String)
op('super_select').par.Rowpattern Str Wildcard pattern to match row values (e.g., "value*" or "*test*")
- Default:
"" (Empty String)
op('super_select').par.Rowmenulabels Toggle When enabled, column headers are used as menu labels. When disabled, indices are used.
- Default:
False
op('super_select').par.Rownext Pulse Select next row
- Default:
False
op('super_select').par.Rowprevious Pulse Select previous row
- Default:
False
op('super_select').par.Rowrandom Pulse Select random row
- Default:
False
Column Selection
Section titled “Column Selection”op('super_select').par.Colindex Str Comma-separated list of indices or patterns (e.g., "0,2-5,7")
- Default:
"" (Empty String)
op('super_select').par.Colpattern Str Wildcard pattern to match column values (e.g., "value*" or "*test*")
- Default:
"" (Empty String)
op('super_select').par.Colmenulabels Toggle When enabled, row headers are used as menu labels. When disabled, indices are used.
- Default:
False
op('super_select').par.Colnext Pulse Select next column
- Default:
False
op('super_select').par.Colprevious Pulse Select previous column
- Default:
False
op('super_select').par.Colrandom Pulse Select random column
- Default:
False
Search
Section titled “Search”op('super_select').par.Usesearch Toggle Apply search filtering on top of row/column selection
- Default:
False
op('super_select').par.Searchterm Str Text to search for in the table
- Default:
"" (Empty String)
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
op('super_select').par.Inputdat DAT The source table DAT to select from
- Default:
./in1
op('super_select').par.Outputdat DAT The destination DAT for selected data
- Default:
./table_out
Changelog
Section titled “Changelog”v1.0.02025-03-11
Initial release