diff --git a/src/graph_scheduler/utilities.py b/src/graph_scheduler/utilities.py index 12debc39..af48641b 100644 --- a/src/graph_scheduler/utilities.py +++ b/src/graph_scheduler/utilities.py @@ -9,6 +9,7 @@ __all__ = [ 'dependency_dict_to_networkx_digraph', 'disable_debug_logging', 'enable_debug_logging', 'networkx_graph_to_dependency_dict', + 'output_graph_png', ] @@ -184,3 +185,26 @@ def networkx_graph_to_dependency_dict(graph: nx.Graph) -> typing_graph_dependenc res_graph[rec] = set() res_graph[rec].add(sender) return res_graph + + +def output_graph_png(graph: typing_graph_dependency_dict, filename: str = None): + """ + Writes an image representation of **graph** to file **filename** + + Args: + graph: a graph in dependency dict form + filename (str, optional): full path of image to write. Appends + '.png' if not present. Defaults to + 'graph-scheduler-figure-.png' in the current + directory. + """ + ext = '.png' + if filename is None: + filename = f'graph-scheduler-figure-{id(graph)}{ext}' + elif not filename.endswith(ext): + filename += ext + + nx_graph = dependency_dict_to_networkx_digraph(graph) + pd = nx.drawing.nx_pydot.to_pydot(nx_graph) + pd.write_png(filename) + print(f'graph_scheduler.output_graph_png: wrote {ext[1:]} to {filename}')