Software and Algorithmic Details

 

  We developed a layout algorithm where nodes are put randomly (with weighted edges) on a sphere

centered at the origin. The node positions are then evolved as a dynamical system based on harmonic

springs representing the weighted edges and a repulsive ’electrostatic’ force. In addition the nodes are

restrained to the sphere surface. The energy function is given by:






where rij is the distance between nodes i and j , N is the number of nodes, Φ i is the set of nodes

connected to node i by an edge, wij is the weight of the edge connecting nodes i and j , lr is a preferred

minimum inter-node distance, e r is the electrostatic constant, ksp is the sphere restraint coefficient, sr is

the sphere radiu
s and rk is the norm of the

position vector or node i.

The first term in the equation describes the harmonic springs, the second term the

electrostatic repulsion and the third term the restraint to the sphere surface. The node positions typically would be evolved

using a Monte-Carlo method (using the Metropolis criterion for Canonical sampling), however we evolve  it as a dynamical system using the Langevin Leapfrog method. This gives solutions that are weakly 2nd order.                                                                                   



 
 

Our software framework is written in the Java programming language and performs 3D rendering using  OpenGL to take advantage of the ever increasing computational capabilities of graphic processor units (GPU). In order to provide the hardware-supported 3D graphics in Java we use Java Binding for OpenGL (JOGL, https://jogl.dev.java.net/). JOGL gives access to APIs in the OpenGL  specification. Using JOGL we can create a super class that we call Jviewer that allows the user to  build a generic 3D viewer application. The class Jviewer provides generic display modes, mouse and  button events, 3D navigation (panning, zoom in, zoom out, rotation), snapshot creation, movie creation for current views, window management and most importantly 3D rendering of network objects. The class Jviewer permits the creation of interactive geometrical objects with lighting and coloring that can be  manipulated with mouse movements and events (click, dragging, etc). This base class is also responsible for coordinate manipulation and transformations as well as generating views that are compatible with 3D viewing hardware, e.g. anaglyph views and stereo views.  The figure below shows the class hierarchy where application specific viewers can be created. Each of  these classes inherit from Jviewer all the capabilities mentioned before, and the developer should only concentrate in developing modules or methods specific to the features of the networks analyzed in hand.












 


Visualization Framework in OpenGL

3D Layout Implementation

We have recently extended our Java OpenGL viewer technology to render in 3D. Initial work centered on Red/Cyan anaglyphs, images rendered onto the same scene from the perspective of each eye but dropping some of the color channels in each image.  Recent investments at the Center for Research Computing have provided 3D rendering hardware based on circularly polarized LCDs, where the two eye images are interlaced. The pictures below are from one of the sessions by members of the CRC Cyberinfrastructure group. The subject of the discussion is a Fibrin Network, the study of which is important in the investigation of blood clotting dynamics.












3D Hardware at CRC