cylc-ui
cylc-ui copied to clipboard
Visual native graph comparisons to supercede graph-diff
For Cylc 8, use of new advanced graphing technologies (to pygraphviz
) opens up the possibility to support the ability to apply a variety of built-in graph operations. Popular graph/network libraries such as Cytoscape & NetworkX appear to support basic unary & binary operations.
In the context of cylc graph
for graphing scheduling dependencies & runtime hierarchies, I cannot foresee that many of these would be particularly useful, but one that clearly will is a 'difference' (graph A "minus" graph B, & vice versa), whereby:
- users can easily see how these have have changed during development of a workflow; or
- (possibly within our long-term installation vision) see differences between multiple source versions of the same workflow;
- compare these across different (similar) workflows.
Basic support for 'graph comparison' was raised in an old Issue that led to the creation of the graph-diff
utility, however that is just a primitive diff
-command based comparison, returning text-based output. I would like to enhance this, towards eventual incorporation into the UI, so that:
- it is based on the native operations on the objects representing the graphs rather than a
diff
command; - the output is visual rather than textual, displaying a new graph with nodes & edges that:
- belong to a single workflow only (distinguishing across each input workflow);
- are shared amongst multiple workflows; distinguishing them in some way, e.g. by colour, or with some grouping or arrangement.
- an arbitrary number (more than two) graphs can be compared;
- perhaps provide some basic statistics to indicate the extent to which graphs differ (e.g. graph A & B have X nodes & Y edges in common, U & V uncommon across both.)