cutcutcodec.core.compilation.tree_to_graph.tree_to_graph

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')]
>>>