Skip to content

fury-gl/helios

Repository files navigation

Helios Networks [WIP]

helios

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 InformationKey FeaturesInstallationUsageHistoryCredits

General Information

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:

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.

Credits

Please, go to contributors page to see who has been involved in the development of Helios.