cylc-ui icon indicating copy to clipboard operation
cylc-ui copied to clipboard

Visual native graph comparisons to supercede graph-diff

Open sadielbartholomew opened this issue 5 years ago • 0 comments

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.)

sadielbartholomew avatar Jun 28 '19 10:06 sadielbartholomew