Visualize and navigate networks using a distributed GPGPU implementation of ForceAtlas2, and a rendering approach in which each GPU renders the part of the layout displayed on the monitors attached to it. The (single-GPU) ForceAtlas2 implementation this project is based on, is available from https://github.com/govertb/GPUGraphlayout.
-
The code depends on a number of git submodules (
lib/colormap
,lib/glm
andlib/pngwriter
). Make sure to rungit submodule init && git submodule update
from the root of this repository to checkout this code before compiling. The code also depends onlibpng
and its development headers, which should be installable via the package manager of the OS. -
Run
make graph_viewer
frombuild/linux
to compile.
Disable Xinerama for optimal performance:
-
Edit the X configuration file (
/etc/X11/xorg.conf
), changingOption "Xinerama" "1"
toOption "Xinerama" "0"
. If the former option isn't present, add the latter. -
After changing the configuration, restart X for the changes to take effect using
sudo systemctl restart lightdm
.
Run ./graph_viewer gui gpu sg|wg scale gravity approximate edgelist_path
to start the visualization.
The different options can be used to as follows.
wg|sg
: choose between weak gravity or strong gravity
scale
: scale repulsive force
gravity
: scale gravitational force
edgelist_path
: ASCII file containing node IDs for each edge on a separate line (whitespace separated)
XWiimote
should be configured on BigEye, so binding the WiiMote should
be enough to use it as the input device. If XWiiMote
is not installed or confiugred, see install XWiimote.
To bind the WiiMote,
-
Position the WiiMote in front of middle column of displays (for calibration) at a distance of approximately 2m, pointed towards the displays.
-
Put the WiiMote in binding mode (by holding the 1+2 buttons for some seconds). The LEDs will blink.
-
Bind the WiiMote via the Bluetooth menu (topright of the display).
Interaction using the WiiMote is through keyboard/mouse simulation.
Arrow keys
: opcacity of nodes and edges.left-right
controls edge opacity.up-down
conrols node opacity.
A button
: stop/start layout algorithm.B button
: left-mouse+/- buttons
: zoom in/out.home button
: reset view.1 button
: activate/deactivate local repulsion.2 button
: activate/deactivate local heat.
Navigating around the layout is possible by dragging the mouse. The mouse follows the position pointed to by the WiiMote and the button on the back of the WiiMote functions as the left mouse button. Navigate through click-drag-release interactions.
-
Ensure the
hid-wiimote
kernel module is installed (should be included with recent Linux kernels) and loaded (e.g. by adding it to/etc/modules
or by usingmodprobe
). -
Install XWiiMote and the corresponding X input driver. For Ubuntu:
sudo apt install xwiimote xserver-xorg-input-xwiimote
. -
Update the configuration of the input driver (
/usr/share/X11/xorg.conf.d/60-xorg-xwiimote.conf
) according to thexwiimote.conf
file.
The mouse movements produced by WiiMote aren't fluid.
Check that the batteries are charged sufficiently (> 50%) or move closer to the display/Bluetooth receiver.
The mouse movements using the WiiMote are completely random / uncontrollable.
Try rebinding the WiiMote after disconnecting through the Bluetooth menu (top-right of the display).