-
Notifications
You must be signed in to change notification settings - Fork 0
GSoC 2017 final evaluation
Within this GSoC project, we implemented a number of graph layout algorithms for ccNetViz and performed some tweaks to ccNetViz that concerned the layouts.
These implementations are all in the repositories:
- https://github.com/HelikarLab/ccNetViz/ (MAIN, ORIGINAL)
- https://github.com/ttm/ccNetViz/ (FORK)
These added files are all in src/layout/ and each perform a different graph/network layout:
- circular.js
- grid.js
- hierarchical.js
- hierarchical2.js
- hive.js
- spectral.js
- spectral2.js
- tree.js
- treeT.js
- versinus.js
- utils.js (this is an exeption: it does not implement a layout but hold auxiliary functions used by more than one layout)
These added files are all in examples/ and each one is an example usage of the layouts developed:
- circular.html (various settings for the circular layout)
- tree.html (for using the tree layouts)
- layouts.html (for choosing different graphs and layouts from the ccNetViz repertoire)
The files modified are:
- src/layout/force.js (modified to accept layout options and comply to layout.js modifications)
- src/layout/layout.js (modified to perform normalization with a specified margin and flip left-right to top-down, right-left or bottom-up)
- src/layer.js (modified to handle layout options and arbitrary layout classes given by the user)
- packages.json (modified to add the dependency ml-matrix used for the eigendecomposition, ml-matrix was the only library we found in JS that did not rise errors in the big and sparse adjacency matrices and was found to be faster than the other libraries we tested. It still takes a very long time if compared to the eigendecomposition performed by Numpy/Python).
These (redmine) issues have further information on the implementation goals and choices made.
Resolved/Closed:
- Hive plot: http://helikarlab.org/redmine/issues/1768
- Circular layout: http://helikarlab.org/redmine/issues/1769
- hierarchical: http://helikarlab.org/redmine/issues/1770
- grid layout: http://helikarlab.org/redmine/issues/1771
- Spectral layout: http://helikarlab.org/redmine/issues/1857
- understand implementation choices optimization: http://helikarlab.org/redmine/issues/1859
- review the code written by fabbri: http://helikarlab.org/redmine/issues/1861
- merge layouts from ttm to Helikarlab: http://helikarlab.org/redmine/issues/1862
- Tree layout on graph with circles: http://helikarlab.org/redmine/issues/1869
- versinus layout: http://helikarlab.org/redmine/issues/1874
- implement post apply() routines in layout's default class: http://helikarlab.org/redmine/issues/1895
- implement layout option routes (for e.g. ability to transform directions in layouts): http://helikarlab.org/redmine/issues/1868
- enhance layouts: http://helikarlab.org/redmine/issues/1885
- Circular layout issue: http://helikarlab.org/redmine/issues/1894
Worked on:
- Enhance generation of eigenVectors performance: http://helikarlab.org/redmine/issues/1872
Being worked on:
- make tables to compare ccNetViz to JS alternatives (benchmarks) Added: http://helikarlab.org/redmine/issues/1884
- Understand if and why ccNetViz takes so long to render: http://helikarlab.org/redmine/issues/1858
Pending:
- final documentation and examples: http://helikarlab.org/redmine/issues/1886
- Elaborate on the hive plots. This might be done e.g. by further visiting the literature.
- The pending issue above: make a nice final documentation.
- The "worked on" issue above: the eigendecomposition is far from what we achieve in Python and that would get us satisfied.
- Understand if and how we should collaborate further: me, Ales, Tomas within ccNetViz and Helikar Lab/UNL.
I should work on the pending issue and finish it ASAP. Then, IMHO the final documentation is the most urgent issue. I think that I might be of some help in reporting this endeavor to the academic community with Thomas and Ales. Anyway, I have some knowledge e.g. in complex networks, text mining, audiovisual synthesis and processing, pattern recognition, scientific programming, and these might be of some use in better collaborating with them, if we all understand that it is a good idea.
Anyway, I hope to be able to help beyond GSoC deadline because I think that it is useful for everyone that these open technologies have a good documentation, which includes good description of the algorithms and example usages (HTML+JS files in our case).
The scripts needed for a comparative synthesis are in: https://github.com/ttm/networkTests/
The table is not yet finished, but we can assume from the data already inserted, that ccNetViz has the greatest set of layouts and that it should be faster that the other solutions of network drawing on a web browser (in ES6) for large enough networks.
- renato (DOT) fabbri [{AT}] gmail %DOT% com