cutcutcodec.core.compilation.tree_to_graph
Create the graph from an cutcutcodec.core.classes.node.Node.
Functions
|
Compiles a node in an existing assembly graph context. |
|
Create the graph from an implicit dynamic tree. |
Details
- cutcutcodec.core.compilation.tree_to_graph.new_node(graph: MultiDiGraph, node: Node) tuple[str, dict[str]][source]
Compiles a node in an existing assembly graph context.
Parameters
- graphnetworkx.MultiDiGraph
The graph on which we add the node.
- nodecutcutcodec.core.classes.node.Node
The node that we want to name and extract properties.
Returns
- namestr
The name of the node, this name is not already present in the graph.
- attrsdict[str]
The attributes, the state of the node allowing to complete the graph.
Notes
The graph remains unchanged, it is only used for analysis.
Examples
>>> from pprint import pprint >>> from cutcutcodec.core.classes.container import ContainerOutput >>> from cutcutcodec.core.compilation.tree_to_graph import tree_to_graph, new_node >>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise >>> node = GeneratorAudioNoise(0) >>> graph = tree_to_graph(ContainerOutput(node.out_streams)) >>> pprint(new_node(graph, node)) ('generator_audio_noise_2', {'class': <class 'cutcutcodec.core.generation.audio.noise.GeneratorAudioNoise'>, 'state': {'layout': 'stereo', 'seed': 0.0}}) >>>
- cutcutcodec.core.compilation.tree_to_graph.tree_to_graph(container_out: Node) MultiDiGraph[source]
Create the graph from an implicit dynamic tree.
The generated assembly graph abstracts and simplifies the modification of the pipeline. Gives a representation of the assembly tree in the form of a manipulable graph.
Parameters
- container_outcutcutcodec.core.classes.node.Node
The output of the dynamic graph.
Returns
- assembly_graphnetworkx.MultiDiGraph
The strictly equivalent assembly graph.
Examples
>>> from pprint import pprint >>> from cutcutcodec.core.classes.container import ContainerOutput >>> from cutcutcodec.core.compilation.tree_to_graph import tree_to_graph >>> from cutcutcodec.core.filter.audio.cat import FilterAudioCat >>> from cutcutcodec.core.filter.audio.subclip import FilterAudioSubclip >>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise >>> >>> (s_audio_0,) = FilterAudioSubclip(GeneratorAudioNoise(0).out_streams, 1, 2).out_streams >>> (s_audio_1,) = GeneratorAudioNoise(.5).out_streams >>> (s_chain_audio,) = FilterAudioCat([s_audio_0, s_audio_1]).out_streams >>> graph = tree_to_graph(ContainerOutput([s_chain_audio])) >>> >>> pprint(sorted(graph.nodes)) ['container_output_1', 'filter_audio_cat_1', 'filter_audio_subclip_1', 'generator_audio_noise_1', 'generator_audio_noise_2'] >>> pprint(sorted(graph.edges)) [('filter_audio_cat_1', 'container_output_1', '0->0'), ('filter_audio_subclip_1', 'filter_audio_cat_1', '0->0'), ('generator_audio_noise_1', 'filter_audio_subclip_1', '0->0'), ('generator_audio_noise_2', 'filter_audio_cat_1', '0->1')] >>>