Implement Sugiyama - #100
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #100 +/- ##
==========================================
+ Coverage 97.41% 97.47% +0.05%
==========================================
Files 10 16 +6
Lines 580 1385 +805
==========================================
+ Hits 565 1350 +785
- Misses 15 35 +20 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Let me know if I can help in any way. I’m mainly interested in getting this algorithm available for one of my packages, so if maintaining it here would be a concern, I’d also be happy to put it in a separate package instead. |
|
Made it into a separate package. |
|
Hey Bjarke, sorry for not responding here I am super busy with project work currently and havn't had time to review and then plain forgot. |
|
No worries! The package is here https://github.com/BjarkeHautop/Sugiyama.jl - and yes still the same interface. Initially I just relied on automatic routing via bezier curves if needed (in the downstream package). But I now also exposed the internal dummy nodes routing sugiyama uses, based on how LayeredLayouts does. See https://bjarkehautop.github.io/Sugiyama.jl/dev/05-quick-guide/#Edge-routing-with-CausalStructures |
Implements Sugiyama layout based on the Rust implementation https://github.com/paddison/rust-sugiyama. Also ports several fixture tests to
verify they give the same output as the source.
The algorithm needs to mutate the graph, so added the needed graph operations to Sugiyama.
Also fixed a bug in the reference implementation:
mark_type_1_conflictsruns before vertex positions are populated there, so its conflict detection is
a no-op, see paddison/rust-sugiyama#26 and paddison/rust-sugiyama#27.
Generated with the help of Claude Code, and manually modified and verified.
Fixes #20