Overview

I have contributed to the Helikar Lab as a part of my program with Google Summer of Code. The main aim of the proejct was to develop the interactivity of the library ccNetViz.

  • ccNetViz was developed by Helikar Lab (Computational biology @ University of Nebraska Lincoln) and it was a lightweight graph design library based on WebGL.
  • The majority of work required to be done by me involved learning and coding in native Javascript and also for the first half of the task where I had to add touch screen capabilities to the library, I needed to develop the code myself without using any external libraries as we were designing a library with all functional capabilities on our own.
  • The most challenging was the first part of the task which was completed almost by first evaluation. I had to refer to various other libraries which had this kind of features and also there were predefined events for the mouse and scrolling on deskops/laptops.
  • I had to also use their features and also incorporate my features based on that. I could achieve it by using my oven event generators and also using web API's like requestAnimationFrame. This code was also efficient at the same time filled in with the requirements.
  • The further work needed to be done with the interactivity on touch screens for this library is that some of the functionalities do not work based on the way the library was designed prior to my entry into this. These events can be added into the respective examples while implementing so that it works but cannot be added as a part of the library.
  • The code snippet I added can be seen in the First Evaluation chapter.

Undirected Graphs:

  • This was done after my first evaluation where I was given a task to incorporate a feature such that undirected graphs can also be drawn using ccNetViz and this feature was not present previously.
  • The live example can be found here. The requirement was that adding something like an undirected:true should also be able to filter the bi-directional graphs into the undirectional ones.
  • At first I developed the code with some redundancies and a quadratic complexity. I was then asked to make it into a less complex one.
  • I did achieve it with linear complexity and an efficient one which works efficiently even when there are hundreds and thousands of nodes and edges to process.
  • After this was done there were some changes made to the library to include the layout options etc. by other contributors. The code which I generated would be slightly modified after all the changes have been made by them.
  • The code can be found in the Undirected Graphs chapter.

Working on examples and documentation:

  • For the second evaluation and after that, I was given a task to clean all examples and make them look good and also develop a documentation for ccNetViz.
  • Before these tasks I was given some time to explore the webgl part and understand the concept of how everything works so that I could improve more with the documentation meanwhile I was looking for bugs and redundancies in the examples.
  • I also displayed the code inside the script tag so that users who view a graph example can also view the way it was conceived. The magic of ccNetViz happens in the script part where everything is defined and rendered. I made sure everyone gets the examples in a simplest possible way and also I cleaned up the code of SDF fonts where The node labels were not displayed previously due to errors. I rectified those bugs and errors.
  • I also created spatial search example on the suggestion of mentors. I designed it on a suitable graph and also was told to highlight the main basic features of ccNetViz in the documentation.
  • The code for Spatial search can be found in the Spatial search chapter and also the working link for the example is linked above.
  • I also created a documentation for ccNetViz based on the briefs available before and also after understanding the features after working on them. I explained all the examples along with their modifications so that users can go through for a brief on the library.
  • I used gibook for documentation as it is the best source available where contributors can not only add to the code or library but at the same time, also can develop the documentation by keeping it updated on this open source platform. The link to the gitbook documentation is here.

results matching ""

    No results matching ""