Output nodes

set_output_node(node) marks which node’s result execute() should return. The output node defines what gets computed: any node not on a path to an output is never run.

g.set_output_node(align)
result = g.execute()     # result == align's output dict

execute() returns a list, one entry per output node, in the order they were registered. A graph may declare several outputs:

g.set_output_node(rfdiffusion)   # also keep the backbones
g.set_output_node(colabfold)     # and the predictions
rf_out, cf_out = g.execute()

Every intermediate node’s outputs are also saved under results/, so nothing produced along the way is lost even if it isn’t the declared output.

A dedicated OutputNode object also exists and collects results when used; in typical pipelines you simply pass the final tool node to set_output_node and read the returned dict.