Skip to content

Visual native graph comparisons to supercede graph-diff #96

@sadielbartholomew

Description

@sadielbartholomew

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions