Helios: graph layout viz and streaming
Helios is a Python library aiming to provide an easy way to visualize huge networks dynamically. Helios also provides visualizations through an interactive Stadia-like streaming system in which users can be collaboratively access (and share) visualizations created in a server or through Jupyter Notebook/Lab environments. It incorporates state-of-the-art layout algorithms and optimized rendering techniques (powered by FURY).
General Information • Key Features • Installation • Usage • History • Credits
General Information
- Website and Documentation: https://heliosnetwork.io/
- Examples: https://heliosnetwork.io/examples_gallery/index.html
- Blog: https://heliosnetwork.io/blog.html
- Free software: MIT license
- Community: Come to chat on Discord
Key Features
- Force-directed layout using octrees
- Minimum-distortion embeddings
- ForceAtlas2 using cugraph
- Interactive local and Remote rendering in Jupyter Notebooks
- WebRTC or MJPEG interactive streaming system
Installation
Use pip install pointed to this repository:
pip git+https://github.com/fury-gl/helios.git
As an alternative, Helios can be installed from the source code through the following steps:
-
Step 1. Get the latest source by cloning this repo:
git clone https://github.com/fury-gl/helios.git
-
Step 2. Install requirements:
pip install -r requirements.txt
-
Step 3. Install Helios
As a local project installation using:
pip install .
Or as an “editable” installation using:
pip install -e .
-
Step 4: Enjoy!
For more information, see also installation page on heliosnetwork.io
Dependencies
Helios requires Python 3.7+ and the following mandatory dependencies:
- numpy >= 1.7.1
- vtk >= 8.1.0
- fury
To enable WebRTC streaming and enable optimizations to the streaming system, install the following optional packages:
-
Required for WebRTC streaming
- aiohttp
- aiortc
-
Optional packages that may improve performance
- cython
- opencv
Testing
After installation, you can install test suite requirements:
pip install -r requirements_dev.txt
And to launch test suite:
pytest -svv helios
Usage
There are many ways to start using Helios:
- Go to Getting Started
- Explore our Examples or API.
Example usage:
from helios import NetworkDraw
from helios.layouts import HeliosFr
import numpy as np
vertex_count = 8
edges = np.array([
[0,1],
[0,2],
[1,2],
[2,3],
[3,4],
[3,5],
[4,5],
[5,6],
[6,7],
[7,0]
]);
centers = np.random.normal(size=(vertex_count, 3))
network_draw = NetworkDraw(
positions=centers,
edges=edges,
colors=(0.25,0.25,0.25),
scales=1,
node_edge_width=0,
marker='s',
edge_line_color=(0.5,0.5,0.5),
window_size=(600, 600)
)
layout = HeliosFr(edges, network_draw)
layout.start()
network_draw.showm.initialize()
network_draw.showm.start()
History
Helios project started as a replacement to the desktop version of the Networks 3D tools. The project evolved quickly along the summer of 2021 due to the GSoC’21 under the responsibility of the Python Software Foundation and the FURY team. The majority of the initial work has been done by @devmessias mentored by @filipinascimento and @skoudoro. The GSoC’21 project associated with Helios is “A system for collaborative visualization of large network layouts using FURY”. Check out the final report for more information.