Skip to main content

Experimental library to visualize complex networks

Project description

Build Test and Publish

Helios

Helios is a python library implemented in C for layouting and visualizing complex networks.

Layout

Helios implements a force layout algorithm based on the FR algorithm [1].

Install

Requires python headers and a C11 compatible compiler, such as gcc or clang.

To install it, simply run:

pip install helios

or clone this repository and install it from master by running:

pip install git+git://github.com/heliosnet/helios-core.git

Usage

Currently only the FR layout interface is implemented.

Example initialization with a small network.

import numpy as np
import helios

positions = np.random.random((4, 3))

edges = np.array([
  [0,1],
  [2,3]
],dtype=np.uint64)

# positions is required to be an contiguous float32 numpy array
positions = np.ascontiguousarray(positions,dtype=np.float32)

# edges is required to be an contiguous uint64 numpy array
edges = np.ascontiguousarray(edges,dtype=np.uint64)

# speeds is required to be an contiguous uint64 numpy array
speeds = np.zeros(positions.shape,dtype=np.float32)

layout = helios.FRLayout(edges,positions,speeds)

Two APIS are available to iterate the layouts, synchronized and aynchronous.

Example of the synchronized API:

print("Initial positions:")
print(layout.positions)
layout.iterate(iterations=100)
print("Final positions:")
print(layout.positions)

Example using the aynchronous API:

print("Initial positions:")
print(layout.positions)
if(layout.running()): #False
  print("It is running...")
else:
  print("Not running...")
layout.start()
time.sleep(1)
print("Current positions:")
print(layout.positions)
time.sleep(1)
print("Current positions:")
print(layout.positions)
if(layout.running()): #True
  print("It is running...")
else:
  print("Not running...")
layout.stop()
print("Final positions:")
print(layout.positions)

You can restart the layout once it stopped. Subsequent calls to the start method have no effect if the layout is running.

Compiling on windows:

You need m2w64 and libpython to compile it.

conda install -c anaconda libpython
conda install -c msys2 m2w64-toolchain

You can now use pip install:

pip install ./

or compile distribs:

python setup.py sdist bdist_wheel

Creating a build environment using:

conda create -n buildpy36 -c default -c anaconda -c msys2 python=3.6 numpy libpython m2w64-toolchain 

change python=3.6 and buildpy36 to the version of python you would like to use.

References

[1] Fruchterman, T. M. J., & Reingold, E. M. (1991). Graph Drawing by Force-Directed Placement. Software: Practice and Experience, 21(11).

Project details


Download files

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

Source Distribution

helios-0.2.3.tar.gz (63.7 kB view hashes)

Uploaded source

Built Distributions

helios-0.2.3-cp39-cp39-win_amd64.whl (97.1 kB view hashes)

Uploaded cp39

helios-0.2.3-cp39-cp39-manylinux2010_i686.whl (286.3 kB view hashes)

Uploaded cp39

helios-0.2.3-cp38-cp38-win_amd64.whl (97.2 kB view hashes)

Uploaded cp38

helios-0.2.3-cp38-cp38-manylinux2010_i686.whl (286.0 kB view hashes)

Uploaded cp38

helios-0.2.3-cp37-cp37m-win_amd64.whl (97.2 kB view hashes)

Uploaded cp37

helios-0.2.3-cp36-cp36m-win_amd64.whl (97.2 kB view hashes)

Uploaded cp36

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page