cutcutcodec.core.compilation.graph_to_tree.update_trees
- cutcutcodec.core.compilation.graph_to_tree.update_trees(graph: MultiDiGraph) None[source]
Update on each node the
treeattribute.From the assembly graph, this function reconstructs the dynamic instances and is able to perform the calculations. By adding to each node the attribute
tree, it allows not only to keep the graph structure but also to recalculate only the parts that need to be changed.The operation are applies in-place.
Parameters
- graphnetworkx.MultiDiGraph
The assembly graph who is going to have the updated
treeattributes.
Examples
>>> from pprint import pprint >>> from cutcutcodec.core.classes.container import ContainerOutput >>> from cutcutcodec.core.compilation.graph_to_tree import update_trees >>> from cutcutcodec.core.compilation.tree_to_graph import tree_to_graph >>> from cutcutcodec.core.filter.audio.subclip import FilterAudioSubclip >>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise >>> container_out = ContainerOutput( ... FilterAudioSubclip(GeneratorAudioNoise(0).out_streams, 1, 2).out_streams ... ) >>> graph = tree_to_graph(container_out) >>> update_trees(graph) >>> pprint(dict(graph.nodes("cache"))) {'container_output_1': ('b1c67b749185174850a2d5cdce2bcb82', {'tree': <cutcutcodec.core.classes.container.ContainerOutput...>}), 'filter_audio_subclip_1': ('ab86b53fe424b58e755eac50d87a77f0', {'tree': <...FilterAudioSubclip...>}), 'generator_audio_noise_1': ('4dc3de85c734bfd23024c381599bfe3f', {'tree': <...GeneratorAudioNoise...>})} >>> pprint(list(graph.edges(keys=True, data=True))) [('filter_audio_subclip_1', 'container_output_1', '0->0', {'cache': ('ab86b53fe424b58e755eac50d87a77f0|0', {'tree': <cutcutcodec.core.filter.audio.cut._StreamAudioCut...>})}), ('generator_audio_noise_1', 'filter_audio_subclip_1', '0->0', {'cache': ('4dc3de85c734bfd23024c381599bfe3f|0', {'tree': <cutcutcodec.core.generation.audio.noise._StreamAudioNoiseUniform...>})})] >>>