Class Graph
A Graph is composed of nodes and edges (i.e., Step
and
Edge
objects).
Adding Steps
- Graph.add_step(step)
Adds a Step to the graph as a node.
The name of the new Step cannot conflict with any steps that already exist in the graph. This method fails an assertion if given a duplicate step name.
- Parameters
step – A Step object
- Graph.get_step(step_name)
Gets the Step object with the given name.
- Parameters
step_name – A string representing the name of the step from
Step.get_name()
- Graph.all_steps()
Connecting Steps Together
The Graph.connect_by_name()
method is preferred when possible to
keep code clean. This requires setting up nodes such that the inputs and
outputs are name-matched (e.g., stepA has output foo and stepB has input
foo).
Parameter System
- Graph.update_params(params)
Updates parameters for all steps in the graph.
Calls
Step.update_params()
for each step in the graph with the given parameter dictionary.
- Parameters
params – A dict of parameter names (strings) and values
Advanced Graph-Building
- Graph.param_space(step, param_name, param_space)
Spins out new copies of the step across the parameter space.
For example, for a graph like this:
+-----+ +-----------+ +-----------+ | foo | -> | bar | -> | baz | | | | ( p = 1 ) | | | +-----+ +-----------+ +-----------+this call:
g = Graph() (...) g.param_space( 'bar', 'p', [ 1, 2, 3 ] )will be transformed into a graph like this:
+-----------+ +-----------+ +-> | bar-p-1 | -> | baz-p-1 | | | ( p = 1 ) | | | | +-----------+ +-----------+ +-----+ | +-----------+ +-----------+ | foo | --> | bar-p-2 | -> | baz-p-2 | | | | | ( p = 2 ) | | | +-----+ | +-----------+ +-----------+ | +-----------+ +-----------+ +-> | bar-p-3 | -> | baz-p-3 | | ( p = 3 ) | | | +-----------+ +-----------+
- Parameters
step – A string for the step name targeted for expansion
param_name – A string for the parameter name
param_space – A list of parameter values to expand to
- Returns
A list of (parameterized) steps (i.e., ‘bar-p-1’, ‘bar-p-2’, and ‘bar-p-3’).