Wiki

Clone wiki

insitunet / DeveloperDocs / Home

Developer Documentation

Compilation

mvn install

If it fails run it again.

Conceptual walkthrough

CSV -> TRANSCRIPTS -> KDTREE -> NETWORK The tissue view is used to generate the network and the network is used to control the tissue view.

External Resources Used:

InsituNet relies on a slightly modified version of Professor Levy's Java KDTree implementation to find nearest neighbours and make range queries. The modified version increases the speed of the nearestEuclidean() method, and can be found packaged as a JAR including source code under the lib/ folder.

InsituNet uses JOGL for OpenGL rendering, here is how to load JOGL within the Cytoscape OSGi bundle.

Apache Commons Math is used for Matrix and Hypergeometric purposes.

General Notes

  • Use Eclipse to do debugging: link.
  • When launching on certain Linux distributions Cytoscape freezes, launching from a terminal prevents this (I have no idea why)
  • Easiest way to develop is by making a symlink to dev target from ~/CytoscapeConfiguration/3/apps/installed/ (ln -s source target)
  • Make sure to implement proper shutdown methods or you'll quickly use up memory when rebuilding
  • Make sure not to not block the GUI thread waiting for a result from a TaskIterator, otherwise the progress dialog box won't appear.
  • Setting distance to zero for the kdtree euclidean distance search will break everything, don't do it.

OpenGL Rendering

The tissue reconstruction window uses 3 matrices to keep track of transformation of the view, a translation, rotation, and scale matrix, found in Renderer.java. These are finally combined with an orthographic projection matrix, in ProgramData.java. All symbols of one type are drawn with a single call of glDrawArraysInstanced(), in which the symbol geometry is only uploaded once, then combined with each vertex in the array of transcript coordinates. OpenGL 3.3 is used mainly to take advantage of instancing. Originally an OpenGL 2.1 method was written which used point sprites with symbol textures instead of instancing. This method had various drawbacks that are sidestepped with the new method.

Updated