GSoC/GCI Archive
Google Summer of Code 2009 Association Gephi

Vectorial Preview

by Jérémy Subtil for Association Gephi

Gephi is able to export its network as SVG or PDF format. Using vectorial drawings for graph have many benefits like infinite zooming or clear shapes. The aim of this proposal is to develop a preview module in Gephi for seeing how the output will exactly looks like with the given parameters. Whereas the embedded 3D engine is designed for efficient network exploration the vectorial export concentrate on clarity, readability and outstanding design. This module has many different settings like edge thickness, arrow size, white borders around labels, node border and so on. In the vein of WYSIWYG editors we would like to see direct setting change on a Vectorial Preview window. The module must be scalable to support large networks. To resume there are two requirements, previewing the network exactly how it will looks-like in output and support huge graphs efficiently. An approach proposed by the mentors consists in using the output generated by the Gephi Rich SVG Export module to reconstruct and display the network. By importing the demo input "celegans.gexf", the generated SVG file has size 1.8MB. Building the preview from an SVG file generated each time an option is (un)checked seems to be a too loud process appearing not to be scalable for large networks, especially on old computers. Moreover, there does not seem to be a "transitory" state of data: data is directly exported to SVG in the ExporterSVG class. Finally, my approach is to generalize the vectorial transformation process into a class called ExporterVectorial, for instance, in which the final shape of rendering is abstracted: it will create a new transitory data set designed for a vectorial output. By (un)checking any option, ExporterVectorial will be called, generating the vectorial data that a new class VectorialPreview will render on the SVG export panel using Java 2D. When the "Finish" button will be pressed, ExporterVectorial will be called again and then ExporterSVG will use the output data to render it into the SVG format. In fact, SVG and preview outputs will come from a same data input designed especially for vectorial rendering. In addition, an idea could be to implement a "Preview" checkbox on each vectorial export panel, which would allow people using old computers to choose if they want an automatic preview or not. Nevertheless, the main interrogations are: * will the graph be displayed entirely or partially? * if displayed partially, how to browse it and make the preview readable? About the development method, a new Bazaar branch will be created from a "rather stable" Gephi development version, and the work will be done on it. Once the GSOC ended, it is hoped that it will be merged into the trunk branch. Here is the planning schedule: * April 20th - May 23rd: understanding of existing Gephi code, following of current development evolution; * May 23rd - June 26th: class diagram design, Java 2D API discovering, rendering few nodes in the preview window then thousands/millions to test performance; * June 27th - August 17th: proper development of the proposed approach.