Files
visualizador_instanciados/radial_sugiyama/VISUALIZATION_TIMELINE.md
2026-03-23 11:13:27 -03:00

6.3 KiB
Raw Blame History

Graph Visualization Improvement Timeline

This document records the main ways the graph visualization pipeline has been refined during the current Rust migration and tuning work.

2026-03-16 — Baseline migration and pipeline setup

  • Ported the radial Sugiyama-style layout pipeline from the Java implementation into the Rust crate radial_sugiyama.
  • Kept the overall structure:
    • hierarchy leveling
    • dummy-node insertion
    • crossing reduction
    • coordinate assignment
    • radial projection
  • Changed the leveling source on purpose for the target use case:
    • instead of centrality-based levels, levels are computed as hierarchy rings for a DAG
    • this guarantees superclass/interface nodes are placed on inner rings and subclasses on outer rings

2026-03-16 — Improve parity with the Java implementation

  • Closed Java → Rust gaps in crossing reduction:
    • restored horizontal crossing counting
    • restored mixed horizontal/vertical crossing counting
    • aligned the sifting stage more closely with the active Java implementation
  • Added richer layout artifacts so the pipeline outputs not only node coordinates, but also:
    • edge offsets
    • routed edge shapes
    • routed node information
    • layout center
  • Ported route generation logic for:
    • spiral inter-level edges
    • intra-level edges
    • straight root-level edges

2026-03-16 — Add ontology input through Turtle

  • Added a Turtle import layer using oxttl.
  • Imported only rdfs:subClassOf triples.
  • Mapped ontology class IRIs to graph nodes.
  • Preserved edge direction as:
    • superclass -> subclass
  • This made the layout pipeline usable directly from ontology data instead of requiring manual graph construction.

2026-03-16 — Add environment-based execution and layout controls

  • Added a .env-driven runner so the pipeline can be configured without recompiling.
  • Moved the main geometric drawing constants into env-backed config:
    • input file location
    • output location
    • minimum radius
    • level spacing
    • positive-coordinate shifting
    • spiral sampling quality
    • border and node-distance scaling
  • This was the first step toward making the visualization tunable instead of fixed.

2026-03-16 — Add SVG export as the final output step

  • Added SVG generation after layout execution.
  • Reused the computed graph geometry instead of inventing a separate renderer:
    • node coordinates become SVG circles
    • routed edge points become SVG paths
    • ring levels become background circles
    • labels are drawn from node IRIs
  • This made the pipeline produce a directly inspectable visual artifact.

2026-03-16 — Investigate readability problems in the first SVG output

  • Observed two major problems in the rendered output:
    • many nodes on the same level were visually packed into a small arc of the ring
    • some edges wrapped around the center with very long spiral paths
  • Determined that these were not only SVG issues:
    • node clustering came from the current radial projection rule
    • edge wrapping came from the routed edge model and its offset-based spiral construction
  • Compared this behavior with the paper and confirmed:
    • the paper intentionally allows packed angular spans
    • the paper intentionally allows winding spiral edges
    • but these choices may be undesirable for the current ontology-navigation use case

2026-03-16 — Add an SVG straight-edge mode for experimentation

  • Added RADIAL_SVG_SHORTEST_EDGES so the SVG renderer could ignore routed edge directions/offsets and draw direct shortest node-to-node segments instead.
  • This improved edge length visually, but it introduced a conceptual mismatch:
    • crossing reduction had optimized the graph for wrapped spiral edges
    • rendering direct shortest segments reintroduced many crossings
  • Result:
    • useful as a diagnostic/preview mode
    • not a principled replacement for the original routing objective

2026-03-16 — Add configurable ring distribution mode

  • Added RADIAL_RING_DISTRIBUTION with two modes:
    • packed
    • distributed
  • packed keeps the paper/Java-style projection:
    • one global width is used to derive angular positions
    • narrower levels may occupy only part of the circle
  • distributed changes only the projection step:
    • nodes on the same level are spread around the full ring
    • ring order is preserved, but the level fills the full
  • This was introduced specifically to improve readability when the packed projection makes ontology branches appear collapsed.

2026-03-16 — Restrict the ontology view to the BFO entity subtree

  • Added RADIAL_ROOT_CLASS_IRI.
  • Defaulted it to:
    • http://purl.obolibrary.org/obo/BFO_0000001
  • Added a preprocessing filter step that:
    • imports the full subClassOf graph
    • finds the configured root class by exact IRI
    • keeps only the root and its descendants
    • discards unrelated ontology branches before layout
  • This makes the visualization more focused and reduces clutter for the target ontology exploration workflow.

Current visualization controls

The current pipeline now supports these major readability/behavior controls through .env:

  • RADIAL_ROOT_CLASS_IRI — choose the ontology subtree root
  • RADIAL_RING_DISTRIBUTION — choose packed vs distributed ring projection
  • RADIAL_SVG_SHORTEST_EDGES — choose routed edges vs direct shortest SVG segments
  • RADIAL_MIN_RADIUS
  • RADIAL_LEVEL_DISTANCE
  • RADIAL_NODE_DISTANCE
  • RADIAL_SPIRAL_QUALITY

Current tradeoffs

  • packed rings are closer to the paper and Java behavior, but can visually cluster nodes.
  • distributed rings are more readable, but deviate from the original projection philosophy.
  • routed spiral edges are more consistent with the crossing-reduction objective, but can look long and unintuitive.
  • shortest SVG edges are visually direct, but may contradict the layouts crossing-minimization assumptions.
  • subtree filtering around BFO entity improves focus, but intentionally hides unrelated ontology regions.

Current direction of improvement

The visualization work is moving toward a readable ontology-browser layout rather than strict reproduction of the original paper. The main current themes are:

  1. keep the hierarchical ring semantics
  2. reduce clutter by filtering to a meaningful ontology root
  3. make projection and rendering behavior configurable
  4. improve readability without discarding the useful parts of the original radial Sugiyama pipeline