You are viewing archived messages.
Go here to search the history.

Paul Tarvydas 2025-07-23 19:56:04

Inspiration from today's demo meetup: @Nilesh Trivedi casually tossed out the idea that there are 2 kinds of edges between software units: edge (visible line) and containment (invisible(?), but, easy to calculate using bounding boxes). I think that containment is important, but, I've been avoiding it because I could only think of complicated ways to represent it. If it's "just" an edge, then the problem is solved 🤦. I've used Prolog (exhaustive search using backtracking) in the past to infer edge information from JSON (SWIPL even knows how to inhale and exhale JSON). Now that backtracking is no longer a verbotten technique (OhmJS, Prolog, miniKanren, Nils Holm's Scheme code & transpilations of that code to other PLs, cl-holm, etc.) it should be straight-forward to create DPLs that use "containment" visual syntax. Hmmm...

Nilesh Trivedi 2025-07-24 03:14:08

Relevant for visual layout of such graphs: arxiv.org/abs/2408.04045

📝 An Overview + Detail Layout for Visualizing Compound Graphs

Compound graphs are networks in which vertices can be grouped into larger subsets, with these subsets capable of further grouping, resulting in a nesting that can be many levels deep. In several applications, including biological workflows, chemical equations, and computational data flow analysis, these graphs often exhibit a tree-like nesting structure, where sibling clusters are disjoint. Common compound graph layouts prioritize the lowest level of the grouping, down to the individual ungrouped vertices, which can make the higher level grouped structures more difficult to discern, especially in deeply nested networks. Leveraging the additional structure of the tree-like nesting, we contribute an overview+detail layout for this class of compound graphs that preserves the saliency of the higher level network structure when groups are expanded to show internal nested structure. Our layout draws inner structures adjacent to their parents, using a modified tree layout to place substructures. We describe our algorithm and then present case studies demonstrating the layout's utility to a domain expert working on data flow analysis. Finally, we discuss network parameters and analysis situations in which our layout is well suited.