Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Tracking] Support for graphs (node-link diagrams) #7897

Open
22 of 33 tasks
grtlr opened this issue Oct 24, 2024 · 0 comments
Open
22 of 33 tasks

[Tracking] Support for graphs (node-link diagrams) #7897

grtlr opened this issue Oct 24, 2024 · 0 comments
Labels
feat-graph-view Everything related to the graph view 🎄 tracking issue issue that tracks a bunch of subissues

Comments

@grtlr
Copy link
Collaborator

grtlr commented Oct 24, 2024

This will touch various areas of Rerun so we will split the work up over multiple PRs. This PR is a living document and will be updated to reflect the current status of the implementation.

Must-haves for the initial release

Corresponding PR: #7500

  • Support graphs in the Rerun data model
  • Enable styling of nodes through the Rerun SDK
  • Ensure proper bindings for all languages
  • Create Python example for logging graphs
  • Remove experimental feature flag
  • Add archetypes to gen_common_index.py
  • Deal with unused lint warnings for things that we need in the future
  • Fix codegen problem related to GraphType
  • Add icon for graph view in the UI
  • Create datatype::StringPair and switch GraphNode to Utf8
  • Update Python example for Utf8Pair
  • Use VisualBounds in Viewer Properties
  • Fix binary tree example
    • Implicit nodes are currently on an escape trajectory.
    • Add entity_offset_x to C++ and Python examples
  • Entity rect box is drawn incorrectly
  • Fix lattice example (remove positions in Python and C++)

Future work

We will tackle the following things after #7500 lands.

Data Model

Graph Layout & Viewer

We decided to start with implementing force-based layouts, because they support a wide variety of use cases and allow dynamic/temporal graphs out of the box.

  • Support of external layout algorithms through the positions: Position2D component (closed by Implement graph components and archetypes #7500)
  • Investigate other layout options in the Rust ecosystem (fdg, layout-rs, graphviz-rust). All of them have some shortcoming for our use cases.
  • Re-implement force-based layout from d3-force. (⌛ Ongoing)
    • Implementation currently lives here: https://github.com/grtlr/fjadra, but will likely change to Rerun org.
    • Re-implement d3-quadtree to enable Barnes-Hut approximation 🏎️
    • Implement PositionX and PositionY force
    • Implement Collide force
    • Implement ManyBody force
    • Implement remaining forces 🦉
  • Allow dynamic configuration of forces through blueprints

Examples & SDK

@grtlr grtlr added other Generated by the "Other" issue template 👀 needs triage This issue needs to be triaged by the Rerun team labels Oct 24, 2024
@abey79 abey79 added 🎄 tracking issue issue that tracks a bunch of subissues feat-graph-view Everything related to the graph view and removed other Generated by the "Other" issue template 👀 needs triage This issue needs to be triaged by the Rerun team labels Oct 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feat-graph-view Everything related to the graph view 🎄 tracking issue issue that tracks a bunch of subissues
Projects
None yet
Development

No branches or pull requests

2 participants