graph.GraphHolder

class graph.GraphHolder(input_nodes: SetList[GraphNode], output_nodes: SetList[GraphNode], name: str, computational_module: Any)[source]

Bases: GraphModuleBase

A GraphModule that encapsulates other graphs

This module is used to simply encapsulate a graph, and has no computational function. This module can be removed from the graph by wiring up its submodules directly, without modifying the computational structure of the graph.

GraphHolder modules contain only input_nodes and input_nodes attributes that are connected to other modules. A GraphHolder module should never be the sink or source of a GraphNode.

See also

Use the as_GraphHolder() helper function to encapsulate another GraphModule.

For an overview of computational graphs in Rockpool, see Computational graphs in Rockpool.

Attributes overview

input_nodes

The input nodes attached to this module

output_nodes

The output nodes attached to this module

name

An arbitrary name attached to this specific GraphModule

computational_module

The computational module that acts as the source for this graph module

Methods overview

__init__(input_nodes, output_nodes, name, ...)

add_input(node)

Add a GraphNode as an input source to this module

add_output(node)

Add a GraphNode as an output of this module

clear_inputs()

Remove all GraphNode s as inputs of this module

clear_outputs()

Remove all GraphNode s as outputs of this module

remove_input(node)

Remove a GraphNode as an input of this module

remove_output(node)

Remove a GraphNode as an output of this module

__init__(input_nodes: SetList[GraphNode], output_nodes: SetList[GraphNode], name: str, computational_module: Any) None
classmethod _factory(size_in: int, size_out: int, name: str | None = None, computational_module: Any | None = None, *args, **kwargs) GraphModuleBase

Build a new GraphModule or GraphModule subclass, with new input and output GraphNode s created automatically

Use this factory method to construct a new GraphModule from scratch, which needs new input and output GraphNode s created automatically. This helper method will be inherited by new GraphModule subclasses, and will act as factory methods also for your custom GraphModule subclass.

Parameters:
  • size_in (int) – The number of input GraphNode s to create and attach

  • size_out (int) – The number of output GraphNode s to create and attach

  • name (str, optional) – An arbitrary name to attach to this GraphModule, defaults to None

  • computational_module (Optional[Module], optional) – A rockpool computational module that forms the “generator” of this graph module, defaults to None

Returns:

The newly constructed GraphModule or GraphModule subclass

Return type:

GraphModuleBase

add_input(node: GraphNode) None

Add a GraphNode as an input source to this module

Parameters:

node (GraphNode) – The node to add as an input source. This node will be appended after the last current input node.

add_output(node: GraphNode) None

Add a GraphNode as an output of this module

Parameters:

node (GraphNode) – The node to add as an output channel. This node will be appended after the last current output node.

clear_inputs() None

Remove all GraphNode s as inputs of this module

clear_outputs() None

Remove all GraphNode s as outputs of this module

computational_module: Any

The computational module that acts as the source for this graph module

Type:

Module

input_nodes: SetList[GraphNode]

The input nodes attached to this module

Type:

SetList[GraphNode]

name: str

An arbitrary name attached to this specific GraphModule

Type:

str

output_nodes: SetList[GraphNode]

The output nodes attached to this module

Type:

SetList[GraphNode]

remove_input(node: GraphNode) None

Remove a GraphNode as an input of this module

Parameters:

node (GraphNode) – The node to remove. If this node exists as an input to the module, it will be removed.

remove_output(node: GraphNode) None

Remove a GraphNode as an output of this module

Parameters:

node (GraphNode) – The node to remove. If this node exists as an output of the module, it will be removed.