Edit and organize a graph¶
Add or insert a node¶
Search the node library by title or operation ID, then add a node to the canvas. Connect an output port to a compatible input. Drop a compatible palette item onto an existing wire to insert it without rebuilding the branch.
An Image Source card shows its current layer, sample, file, or collection
representative as a live subtitle. Hover for the complete binding. The subtitle
follows representative changes and is a quick way to catch a graph connected
to the wrong input without opening every source inspector.
If no node is compatible, inspect both port types. Converting a mask to labels
usually needs Label Connected Components; applying an image as if it were a
mask is not an acceptable type conversion.
Insert processing before a tunnel¶
To add a step before an existing named tunnel, right-click the tunnel and choose Insert node before tunnel. You can also drop a compatible palette item on the tunnel or drag a loose compatible node onto it. VIPP shows only operations that accept the tunnel source and can still supply its subscribers.
The original subscribers keep the same named tunnel. The inserted node becomes the tunnel's new source, so review whether the tunnel name still describes the processed data. The complete insertion is one undoable edit.
Select and move several nodes¶
On Windows, hold Shift while clicking to add nodes to the selection. Hold Ctrl while clicking to add or remove an individual node. Drag any selected node to move the group together. Group deletion and movement are single undoable edits; tunnels or external wires are changed only when the chosen action explicitly requires it.
Copy nodes, fragments, or values¶
- Right-click a node and choose Copy, or use Ctrl+C.
- Copying several selected nodes includes their connections to one another, relevant tunnels, notes, authored settings, and relative layout.
- Right-click blank canvas space and choose Paste here to choose the location. Ctrl+V pastes the copied node or fragment near the center of the visible canvas.
- To copy settings without creating another node, copy one node, right-click a node for the exact same operation, and choose Paste Values. VIPP validates all values first and changes the destination once; incompatible operation types are refused.
Pasted graph nodes receive fresh identities. Connections to nodes outside the copied selection are not silently recreated. Inspect the pasted fragment before using it for a consequential calculation.
Open Graph Editing Acceptance Check from Open example... for numbered notes that exercise tunnel insertion, value transfer, fragment copy/paste, group movement, and undo/redo.
Undo, duplicate, and delete¶
Use undo/redo for graph edits and parameter changes. Copy or duplicate a configured node when comparing two parameter choices, then branch both from the same upstream output. Delete a branch only after confirming that no output, tunnel, or table merge still depends on it.
Keep long graphs readable¶
- Arrange flow from left to right.
- Put alternative methods on parallel branches, not one after another.
- Keep source, QC, and output nodes visually distinct.
- Use Auto structure graph as a starting point, then preserve meaningful parallel alignment.
- Add graph notes at decisions: why a channel was selected, how a threshold was chosen, or what an exclusion means.
- Use graph search to find titles, operation IDs, tunnel names, and batch tags.
Choose a port-label mode¶
The Port labels setting has three display modes:
| Mode | Behavior |
|---|---|
Ambiguous only |
Default. Show persistent names on nodes with more than one input or output, where choosing the correct port matters. |
Show all |
Label every input and output port. Useful while learning or reviewing a workflow. |
Hide all |
Hide persistent labels for the most compact graph; hover and connection behavior are unchanged. |
Long names are elided on the card and show their full text in a tooltip. Labels reserve card space but deliberately do not reposition the graph when the mode changes. If existing cards now overlap, the VIPP message strip reports how many pairs overlap. Run Auto structure graph to rebuild a size-aware source-to-sink layout, or move those cards manually. Auto structure remains a one-shot, undoable layout edit; port-label visibility does not change the workflow's connections or scientific calculation.
Use tunnels for repeated sources¶
Named tunnels let one output feed distant nodes without long crossing wires.
Create a tunnel from an output, give it a semantic name such as nuclei_labels
or red_channel, and attach compatible inputs as subscribers.
Tunnels change graph presentation, not data. Rename a tunnel when its meaning changes; never leave a subscriber attached to a misleading name. Use Tunnels… to focus the source, reveal subscribers, rename, or remove it.
To reroute a named output tunnel, drag its source badge to another compatible output. Preview and commit use the same port-type, cycle, and topology checks; an accepted reroute is one atomic, undoable graph edit. Subscribers keep the tunnel name, so rename it as part of the review if the new source changes its scientific meaning.
Show alternatives honestly¶
Two methods being compared should share the same input and run in parallel:
flowchart LR
A["Prepared input"] --> B["Method A"]
A --> C["Method B"]
B --> D["Compare outputs"]
C --> D
Serial placement (Method A → Method B) means that B operates on A's output;
it is not a side-by-side comparison.
Save before structural changes¶
Save a named workflow checkpoint before replacing a segmentation method, changing axes, or rewiring measurement branches. Version control is preferable for important workflow JSON files because it makes parameter and connection changes reviewable.
If a node is currently being tuned in isolation, a history-backed graph edit (including layout, notes, undo/redo, loading another workflow, or structural changes) first applies the current tuning result. This prevents Cancel tuning from restoring state across two different graph revisions. The temporary isolation boundary itself is session-only and is never saved in the workflow.