Skip to main content

yFiles Jupyter Graphs for Kuzu

[!NOTE] KuzuDB has been discontinued. LadybugDB and RyuGraph are successor projects, and this widget works with both.

A screenshot showing the yFiles graph widget for Kuzu in a jupyter lab notebook

PyPI version

Easily visualize a Kuzu database as a graph in a Jupyter Notebook. Explore the Kuzu integration guide for more details.

This packages provides an easy-to-use interface to the yFiles Graphs for Jupyter widget to directly visualize Cypher queries.

Installation

Just install it from the Python Package Index

pip install yfiles_jupyter_graphs_for_kuzu

or see README_DEV.md to build it yourself.

Usage

from yfiles_jupyter_graphs_for_kuzu import KuzuGraphWidget

conn = <kuzu or ladybug database connection>

g = KuzuGraphWidget(conn)

g.show_cypher("MATCH (s)-[r]->(t) RETURN s,r,t LIMIT 20")

See the ladybug example notebook for a running example.

Supported Environments

The widget uses yFiles Graphs for Jupyter at its core, and therefore runs in any environment that is supported by it, see supported environments.

AI Coding Assistant

Working with an AI coding agent? Our agent guide contains instructions and best practices for coding agents working with this Kuzu widget.

Example start prompt:

Read the instructions at https://raw.githubusercontent.com/yWorks/yfiles-jupyter-graphs-for-kuzu/refs/heads/main/agent-guide.md.
Then, create a Jupyter notebook that connects to a Kuzu database and visualizes an insightful subset of the graph using `yfiles_jupyter_graphs_for_kuzu`.

Documentation

The main class KuzuGraphWidget provides the following API:

Constructor

  • KuzuGraphWidget: Creates a new class instance with the following arguments
Argument Description Default
driver The Kuzu driver that is used to execute Cypher queries. None
widget_layout Can be used to specify general widget appearance through css attributes. See ipywidget's layout for more information. None
overview_enabled Enable graph overview component. Default behaviour depends on cell width. None
context_start_with Start with a specific side-panel opened in the interactive widget. Starts with closed side-panel by default. None
layout Can be used to specify a general default node and edge layout. Available algorithms are: "circular", "hierarchic", "organic", "interactive_organic", "orthogonal", "radial", "tree", "map", "orthogonal_edge_router", "organic_edge_router" organic

Methods

  • show_cypher(cypher: str, layout: Optional[str] = None, **kwargs: Dict[str, Any]) -> None
    • cypher (str): The Cypher query that should be visualized.
    • layout (Optional[str]): The graph layout that is used. This overwrites the general layout in this specific graph instance. The following arguments are supported:
      • hierarchic
      • organic
      • interactive_organic
      • circular
      • circular_straight_line
      • orthogonal
      • tree
      • radial
      • map
      • orthogonal_edge_router
      • organic_edge_router
    • **kwargs (Dict[str, Any]): Additional parameters that should be passed to the Cypher query.

The default behavior is to only show the nodes and relationships returned by the Cypher query.

The Cypher queries are executed by the provided Kuzu driver. If you have not specified a driver when instantiating the class, you can set a connection afterward. The connection is available as a property:

widget.connection = connection

The graph visualization can be adjusted by adding configurations to each node label or edge type with the following functions:

  • add_node_configuration(label: Union[str, list[str]], **kwargs: Dict[str, Any]) -> None

    • label (Union[str, list[str]]): The node label(s) for which this configuration should be used. Supports * to address all labels.
    • **kwargs (Dict[str, Any]): Visualization configuration for the given node label. The following arguments are supported:
      • text: The text that displayed at the node. By default, the node's label is used.
      • color: A convenience color binding for the node (see also styles argument).
      • size: The size of the node.
      • styles: A dictionary that may contain the following attributes color, shape (one of 'ellipse', ' hexagon', 'hexagon2', 'octagon', 'pill', 'rectangle', 'round-rectangle' or 'triangle'), image.
      • property: Allows to specify additional properties on the node, which may be bound by other bindings.
      • type: Defines a specific "type" for the node as described in yFiles Graphs for Jupyter which affects the automatic positioning of nodes (same "type"s are preferred to be placed next to each other).
      • parent_configuration: Configure grouping for this node label.
  • add_relationship_configuration(type: Union[str, list[str]], **kwargs: Dict[str, Any]) -> None

    • type (Union[str, list[str]]): The relationship type for which this configuration should be used. Supports * to address all types.
    • **kwargs: Visualization configuration for the given relationship type. The following arguments are supported:
      • text: The text that displayed at the relationship. By default, the relationship's type is used.
      • color: The relationship's color.
      • thickness_factor: The relationship's stroke thickness factor. By default, 1.
      • styles: The style of the edge.
      • property: Allows to specify additional properties on the relationship, which may be bound by other bindings.
  • add_parent_relationship_configuration(type: Union[str, list[str]], reverse: Optional[bool] = False) -> None

    • type: The relationship type that should be visualized as node grouping hierarchy instead of the actual relationship.
    • reverse: By default the target node is considered as parent. This can be reverted with this argument.

To remove a configuration use the following functions:

  • del_node_configuration(label: Union[str, list[str]]) -> None: Deletes configuration for the given node label(s). Supports * to address all types.
  • del_relationship_configurations(type: Union[str, list[str]]) -> None: Deletes configuration for the given relationship type(s). Supports * to address all labels.
  • del_parent_relationship_configuration(type: Union[str, list[str]]) -> None: Deletes configuration for the given parent relationship type(s).

How configuration bindings are resolved

The configuration bindings (see add_node_configuration or add_relationship_configuration) are resolved as follows:

If the configuration binding is a string, the package first tries to resolve it against the item's properties and uses the property value if available. If there is no property with the given key, the string value itself is used as a constant binding.

In case you want to create a constant string value as binding, which also happens to be a property key, use a binding function with a constant string as return value instead.

If the configuration binding is a function, the return value of the function is used as value for the respective configuration.

yFiles Graphs for Jupyter

The graph visualization is provided by yFiles Graphs for Jupyter, a versatile graph visualization widget for Jupyter Notebooks.

It can import and visualize graphs from various popular Python packages (e.g. NetworkX, PyGraphviz, igraph) or just structured node and edge lists.

And provides a rich set of visualization options to bring your data to life (see the example notebooks).

Feature Highlights

Heatmap visualizationHeatmap visualization Geospatial data visualizationGeospatial data visualization
Data-driven item visualizationData-driven item visualization node nestingGroup items

For a detailed feature guide, check out the main widget example notebooks

Code of Conduct

This project and everyone participating in it is governed by the Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to contact@yworks.com.

Feedback

This widget is by no means perfect. If you find something is not working as expected we are glad to receive an issue report from you. Please make sure to search for existing issues first and check if the issue is not an unsupported feature or known issue. If you did not find anything related, report a new issue with necessary information. Please also provide a clear and descriptive title and stick to the issue templates. See issues.

Dependencies

License

See LICENSE file.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yfiles_jupyter_graphs_for_kuzu-2.0.0.tar.gz (16.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yfiles_jupyter_graphs_for_kuzu-2.0.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file yfiles_jupyter_graphs_for_kuzu-2.0.0.tar.gz.

File metadata

File hashes

Hashes for yfiles_jupyter_graphs_for_kuzu-2.0.0.tar.gz
Algorithm Hash digest
SHA256 eb438d6a52bbfa6233be0d7aa202a3c26d098e60726c395577940e678aeebd1d
MD5 b0136f4e4860c42df325523f97e50979
BLAKE2b-256 5e27bf37ef895089c32deab5f2d21c2eab828c71b403ff6d3016499f61ec44ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for yfiles_jupyter_graphs_for_kuzu-2.0.0.tar.gz:

Publisher: publish.yml on yWorks/yfiles-jupyter-graphs-for-kuzu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file yfiles_jupyter_graphs_for_kuzu-2.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for yfiles_jupyter_graphs_for_kuzu-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b3c3cef06b50d25385b04ef81be5fc6364f65718c514ac24923d917db8b0bf7
MD5 2b33538c92172f01ea617f8dd63af30e
BLAKE2b-256 97d6aa20f017c718d1d998c68055a62e4856bf3aa9de31ea466b1c469f879e7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for yfiles_jupyter_graphs_for_kuzu-2.0.0-py3-none-any.whl:

Publisher: publish.yml on yWorks/yfiles-jupyter-graphs-for-kuzu

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.0

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page