Command Reference
Illuminator has a built-in command system accessible through the console. Commands can also be stored in script files and replayed with execute. Every command supports a help argument for inline documentation.
load
Load a graph from file
import
Add attributes from CSV/TSV
select
Manipulate the selection
set
Apply style changes
map
Data-driven style mapping
create
Create subsets
execute
Run a script file
Loads a graph from a file. Supports native .ilu files and CSV/TSV with edge definitions.
load <path> target=(tail, head, [type,] name) [delimiter="<char>"] [header=true|false] [attributes=[(source, type, name), ...]]
| Parameter | Required | Description |
|---|---|---|
| path | Yes | File path. Extension determines format: .ilu, .csv, or .tsv |
| target | CSV/TSV | Edge definition tuple. tail and head name the source and target columns: either header names (when header=true, the default) or 0-based column indices (when header=false). type is the attribute type (default: string). name is the node identifier attribute name. |
| delimiter | No | Column separator. Defaults to , for CSV and \t for TSV. Accepts tab, \t, or a single character. |
| header | No | Defaults to true: first line is a header with column names. Set header=false when the file has no header; then tail, head, and each source in attributes must be non-negative integer column indices (first column is 0). |
| attributes | No | List of additional edge attribute definitions: (source_column, type, name) |
Attribute Types
float, int32, uint32, string, shared_string
Examples
// Load a native Illuminator file
load my_graph.ilu
// Load a CSV with edge definitions
load edges.csv target=(source, target, name)
// Load a TSV with a custom delimiter and edge attributes
load data.tsv target=(from, to, string, id) delimiter=tab attributes=[(weight, float, weight), (type, string, category)]
// No header row: columns 0 and 1 are endpoints, column 2 is an edge weight
load edges.csv header=false target=(0, 1, name) attributes=[(2, float, weight)]
Adds attributes to an already-loaded graph by joining a CSV/TSV file against an existing node attribute.
import <path> target=(graph_attr, csv_column) [delimiter="<char>"] [header=true|false] attributes=[(source, type, name), ...]
| Parameter | Required | Description |
|---|---|---|
| path | Yes | Path to a .csv or .tsv file |
| target | Yes | Join key: graph_attr is the name of an existing node attribute. csv_column is either a header name (header=true) or a 0-based column index (header=false). |
| delimiter | No | Column separator (same options as load) |
| header | No | Defaults to true. When header=false, the file has no header row and csv_column plus each attribute source must be a non-negative integer index. |
| attributes | Yes | One or more (source_column, type, attribute_name) tuples to import |
Examples
// Import score and label from a CSV, matching on the "name" attribute
import metadata.csv target=(name, node_id) attributes=[(score, float, score), (label, string, label)]
// No header: join on graph "name" to column 0, import column 1 as score
import scores.csv header=false target=(name, 0) attributes=[(1, float, score)]
Manipulates the current node selection. There are four variants for set operations:
| Command | Description |
|---|---|
| select | Replaces the selection (clears first for where queries) |
| +select | Adds matching nodes to the existing selection |
| -select | Removes matching nodes from the selection |
| ^select | Intersects — keeps only nodes in both the current selection and the query result |
Operations
| Operation | Arguments | Description |
|---|---|---|
| all | None | Select all nodes |
| invert | None | Invert the current selection |
| none / clear | None | Clear the selection |
| expand | <depth> | BFS expansion of the selection by the given depth |
| where | <expression> | Select nodes matching a logical expression (see Query Language) |
Examples
select all
select invert
select none
select expand 3
// Select nodes where the "score" attribute is above 0.5
select where (score > 0.5)
// Add nodes with ID between 5 and 10 to the current selection
+select where (nodeID > 5 && nodeID < 10)
// Remove nodes matching a name
-select where (name == "Alice")
// Keep only nodes that are also high-scoring
^select where (score >= 0.9)
Applies a style change to the current selection.
set <target> <property> <value>
Node Properties
| Property | Value | Description |
|---|---|---|
| size | 0–63 | Node radius |
| shape | Index | Shape index (circle, square, etc.) |
| rotation | 0–360 | Rotation in degrees |
| colour | Hex | Node fill colour (e.g. FF0000) |
| border_size | 0–63 | Border thickness |
| border_colour | Hex | Border colour |
Edge Properties
| Property | Value | Description |
|---|---|---|
| width | 0–63 | Edge line width |
| colour | Hex | Edge colour |
Label Properties
| Property | Value | Description |
|---|---|---|
| content | Attribute name | Which string attribute to display as label text |
| anchor | edge / center | Where the label is anchored relative to the node |
| size | 0–63 | Font size |
| distance | 0–63 | Distance from the node |
| offset_rotation | 0–360 | Angle of the offset direction |
| label_rotation | 0–360 | Rotation of the label text itself |
| colour | Hex | Text colour |
| highlight_colour | Hex | Colour when highlighted |
Examples
set node size 20
set node colour 3fb950
set node shape 1
set node border_size 3
set node border_colour 000000
set edge width 2
set edge colour 58a6ff
set label content name
set label anchor center
set label size 12
set label colour ffffff
Interpolates a style property across the selection based on a numeric attribute. Values are linearly mapped from the attribute range [min, max] to the style range [value_a, value_b].
map <target> <property>[.channels] <attribute> <min> <max> <value_a> <value_b>
The optional .channels suffix lets you target specific colour channels: r, g, b, a, or combinations like rgb, rgba. Without a suffix, all channels are affected.
Mappable Node Properties
| Property | Value Range |
|---|---|
| size | 0–63 |
| border_size | 0–63 |
| colour[.channels] | Hex colours |
| border_colour[.channels] | Hex colours |
Mappable Edge Properties
| Property | Value Range |
|---|---|
| width | 0–63 |
| colour[.channels] | Hex colours |
Mappable Label Properties
| Property | Value Range |
|---|---|
| size | 0–63 |
| colour[.channels] | Hex colours |
| highlight_colour[.channels] | Hex colours |
Examples
// Map node size from score range [0, 1] to sizes [5, 40]
map node size score 0 1 5 40
// Map node colour from blue to red based on a "temperature" attribute (0-100)
map node colour temperature 0 100 0000ff ff0000
// Map only the red channel of node colour
map node colour.r intensity 0 255 000000 ff0000
// Map edge width based on a weight attribute
map edge width weight 0 10 1 8
// Map label size by importance
map label size importance 0 100 8 32
Creates new objects from the current selection.
create subset <name>
Creates a named subset from the currently selected nodes. Subsets can be recalled in the Subset window to quickly restore selections.
Example
select where (group == "cluster_a")
create subset cluster_a
Runs a script file containing one command per line.
execute <path>
Each line is processed as if typed into the console. Text after // is treated as a comment. Empty lines are skipped. If any line throws an error, execution stops and the error is reported with the line number.
Example
execute scripts/setup.txt
You can also run scripts from Script > Execute... in the menu bar, which opens a file picker. Recently run scripts appear in the Script menu for quick re-execution.
See Script Files for syntax details and a full example script.