Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Hyperbolic Graph Neural Networks in JAX

This repository contains a full implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz (Hyperboloid) Model in JAX. It's designed for modeling hierarchical data structures (like knowledge graphs) and features a Host-to-Device paging strategy for scaling on single-GPU hardware.

  • Docs: Read the comprehensive Documentation Directory for deep dives into Riemannian optimization, the Lorentz model, hyperbolic InfoNCE loss, and attention aggregation.
  • Walkthrough: See the Implementation Walkthrough for a guide bridging the math with the Python codebase, along with training visualizations showcasing the clustered hierarchy.

Installation

This project utilizes uv for dependency management and requires Python 3.12+.

The main dependencies are:

  • jax and jaxlib for hardware-accelerated, differentiable tensor operations.
  • matplotlib for stereographic projection visualizations to the Poincaré disk.
  • scipy for logging and stable metric computations.
  • networkx and pyyaml for structural graph processing and configuration parsing.

System Dependencies

Before syncing the Python environment, ensure you have the following system-level dependencies installed. These are required by certain development packages (like pygraphviz) and are not automatically installed via uv sync:

  • Graphviz: Required for graph layout computing and rendering.
    • macOS (Homebrew): brew install graphviz
    • Ubuntu/Debian: sudo apt-get install graphviz libgraphviz-dev

Setup Instructions

  1. Ensure you have uv installed. You can install it via the official standalone script:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    macOS Alternative (Homebrew): If you prefer using Homebrew for package management on Mac, you can install it via:
    brew install uv
  2. Clone the repository and navigate into it:
    git clone <repository_url>cd hyperbolic
  3. Sync the environment and install dependencies using uv:
    uv sync

Running the Demos

The repository includes demonstration scripts to showcase the capabilities of the engine.

End-to-End Demo (demo.py)

This script synthesizes hierarchical data, initializes the network, trains on a single GPU using host-to-device paging, and renders the before/after visualizations.

API Demo (api_demo.py)

This script demonstrates the end-to-end usage of the HyperbolicEngine API on a standard NetworkX graph. It proves that the engine can consume an arbitrary string-labeled graph, automatically extract node relationships (Markov Blankets) without explicit hierarchical tags, and map these nodes onto the Lorentz Manifold. It also shows how to query the continuous space using Riemannian distance to find structurally homologous nodes. To see how nested hierarchical string architectures (like org-charts) can be parsed directly into these NetworkX graphs dynamically, see the YAML Interface Documentation.

To run the demos, navigate to the demo directory:

cd demo
uv run api_demo.py
uv run demo.py

Running api_demo.py will save its visualization to demo/api_poincare_viz.png. Running demo.py will output the training logs and save the final clustered embedding representation to demo/poincare_viz_final.png.

Running Tests

To ensure the core geometric functions maintain mathematical correctness and testing against rank-collapse bugs, you can run the provided Pytest suite:

uv run pytest

License

This project is licensed under the MIT License - see the LICENSE file for details.

Author

Citation

If you use this library in your research, please cite:

@software{jones2026hyperbolic,
author = {Robert Jones},
title = {Hyperbolic Graph Neural Networks in JAX},
url = {https://github.com/rljonesiii/hyperbolic},
year = {2026},
}

About

A full JAX implementation of Hyperbolic Graph Attention Networks (HGATs) using the Lorentz Model for scalable hierarchical data modeling.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages