Nodes & Connections
Everything in BioNodulo is built from two primitives: nodes and edges. Together they form a directed acyclic graph (DAG) that describes a complete analysis.
Nodes
A node is a single unit of computation — almost always a wrapper around a bioinformatics tool or a small operation. Each node has:
- A label and category (for the palette).
- Zero or more input ports, each with a name and a data type.
- One or more output ports, also typed.
- A set of parameters shown in the inspector panel.
- Resource hints (RAM/CPU) used for scheduling.
Nodes are pure with respect to their inputs and parameters: given the same inputs and params, a node produces the same outputs. This is what makes workflows reproducible and checkpointing possible.
Node states during a run
| State | Color | Meaning |
|---|---|---|
| Idle | Gray | Not yet scheduled |
| Queued | Yellow | Waiting for upstream nodes / resources |
| Running | Blue | Executing now (logs streaming) |
| Done | Green | Completed; outputs cached |
| Failed | Red | Errored; downstream nodes are blocked |
| Skipped | Dim | Reused a cached result from a checkpoint |
Edges (connections)
An edge connects one node’s output port to another node’s input port. Edges carry typed data — a file path, a dataset handle, or a small value.
Rules enforced by the editor:
- Type compatibility. You can only connect ports whose types match (or where
a defined coercion exists). A
BAMoutput won’t connect to aFASTQinput. - Acyclicity. Connections that would create a cycle are rejected — the graph must be a DAG.
- Fan-out is allowed. One output can feed many inputs.
- Fan-in depends on the port. Some input ports accept a single edge; others (e.g. a “merge” node) accept a list.
Building a graph
- Drag a node from the palette onto the canvas.
- Hover a node’s output port and drag to a compatible input port on another node. The edge snaps and turns green when valid.
- Select a node to edit its parameters in the inspector.
- Group related nodes, add comments, or collapse subgraphs to keep large pipelines readable.
Subgraphs & reuse
Frequently used sequences (e.g. align → sort → dedup) can be saved as a reusable subgraph and dropped in as a single composite node. Subgraphs keep large pipelines tidy and encourage standardization across a lab.