Latest Posts
-
Google Summer of Code 2020 - Post 9
During the last days I finished adding a directed acyclic graph layout algorithm to the Rocs graph-layout plugin. This includes an implementation of the algorithm itself, functional tests, non-functional tests, documentation and the following user interface.
-
Google Summer of Code 2020 - Post 8
It has been a long time since my last post. I am facing a personal problem, regarding the health of my dad. It has been difficult to find time to work and take care of him. When I have time, it is really difficult concentrate properly. This is the very reason why I am very happy to say that I finally got a working version of a graph layout algorithm specifically designed for directed acyclic graphs. See an example layout in the image below!
-
Google Summer of Code 2020 - Post 7
I finally tested the Rocs radial layout algorithm implementation. This includes some functional tests to check if the implementation works as expected in some cases and a non-functional test to evaluate the performance of the algorithm with respect to some aesthetic criteria.
-
Google Summer of Code 2020 - Post 6
I updated the user interface of the Rocs graph layout plugin. Now, each layout algorithm corresponds to a tab. See below the tab for the Radial Tree Layout.
-
Google Summer of Code 2020 - Week 5
I finished writing an implementation of a tree layout algorithm for Rocs. After some research, I decided to go with a radial layout. The idea is to select a node to be the placed at the center and place the other nodes in circles of different radius. The layout is computed recursively and the plane is partitioned between sub-trees in order to guarantee that no edge crosses will exist. Some layouts generated by this implementation are shown below. Tomorrow I will finish the user interface and some tests.
-
Google Summer of Code 2020 - Week 4
According to my GSoC proposal, I should be done with the general purpose graph layout capabilities for Rocs and free to start working on layout algorithms specifically designed to draw trees. This is not the case for a series of reasons, including my decision to write my own implementation of a general purpose force-based graph layout algorithm and failure to anticipate the need for non-functional tests to evaluate the quality of the layouts. I still need to document the functionalities of the plugin and improve the code documentation as well. Besides that, although it is not present in my original purpose, I really want to include the layout algorithm presented in [1], because I have high expectations about the quality of the layouts it can produce.
-
Google Summer of Code 2020 - Week 3
This week, I spent most of my time testing the Rocs graph-layout-plugin. I needed to test the method that applies the force-based layout algorithm to a graph, whose signature is the following.
-
Google Summer of Code 2020 - Week 2
Last week, I did not manage to work as much as I should, because I was not feeling very well. Now that I am feeling better, I am trying to work more to compensate. This is the post that should have been written last week.
-
Google Summer of Code 2020 - Week 1
This week, I started working on the Rocs graph layout capabilities. The Fruchtermani-Reingold [1] algorithm seems to be the most common option for drawing graphs automatically when no extra information about the graph is known. In fact, the Boost library implementation of this algorithm is currently being used by Rocs. However, the Fruchtermani-Reingold algorithm has some parameters that can change its results deeply. In order to better understand the algorithm and how different parameterizations lead to different results, I wrote my own C++ implementation directly in the Rocs’ libgraphtheory. This allowed me to generate debug information during the execution of the algorithm.
-
Google Summer of Code 2020 - Rocs
Google Summer of Code (GSoC) 2020 coding phase starts next week and I am going to participate as a student, working on the graph layout capabilities of the Graph Theory IDE Rocs. Rocs is a KDE software which provides various features for working with graphs and simulating graph algorithms in a visual way, which can be useful for students and researchers.