Do not be afraid of anything. If you are afraid, failure goes after you. Fear is an emotion that can be with us every day; but in our life we must to conquer fear at the most crucial monents. Having doubts even for a moment, you will be defeated.Takuan Soho.
Hello! I want to tell you a little about the "summer internship" for students and what I did this summer :)
I worked on the project from Computational Biology @ University of Nebraska-Lincoln. My mentors were David Tichy, Tom Helikar.
During this summer I needed to perform two designs for library ccNetViz. You can see my code here in this repository https://github.com/Znbiz/HelikarLab. And there are the commits.
I have got a task: to develop an algorithm that capable to draw graphs are on a rectangular grid. One of requirements of is that clusters be clearly visible. An algorithm for automatic drawing of biochemical networks is a basis of offers. I have carried out it, you can see it here. However we had to refuse to this algorithm because his operating speed on graphs with the number of vertices is more than 10 exp fall. This happened by reason of that the algorithm was based on a complicated enumeration method.
I suggested to go away from this method and to develop my own. My option was a search of a special number for each vertex, which would be allow for one pass the vertices at a certain distance from each other. This number has become the number of optimal ways extending through the top. Below you can see the advantages and disadvantages of this approach, and I will present some examples of the algorithm.
Advantages:
Disadvantages:
Count "HGF" drawn not on the grid by the force algorithm
The drawing the graph has taken мс
Count "HGF" drawn on grid by my algorithm
The drawing the graph has taken мс
Count "Bronchiseptica" drawn not on the grid by the force algorithm
The drawing the graph has taken мс
Count "Bronchiseptica" drawn on grid by my algorithm
The drawing the graph has taken мс
Now the library ccNetViz draws signatures of vertices in one texture. It makes the rendering of the text with increasing the graph slower, and it also does not give an opportunity to work with a variety of effects for text.
To achieve the goal, it was decided to split task into several ones of subproblems.
SDF implements a simple algorithm in pure JavaScript to get the results which could not be incorporated into ccNetViz library. Since the processing time atlas containing 250 symbols occupied a more than 10 seconds. After I have made a suggestion to make all the calculations algoritma using WebGL The result of this decisions was the reduction in the processing time of the atlas 250 symbols to a few tenths of a second ~ 0.6 seconds. A working generator SDF is below.
Also, the possibility has been implemented in libraries to use the pre-generated on the server atlases.
All three methods of displaying the names of vertices have included in the library. Advantages and disadvantages of these three approaches are displaying text.
Rendering the vertex the names on the same texture (as it was before)
Advantages:
When the vertex of drawing names for each symbols it uses its own texture. Texture is taken from the SDF atlas that generated on the client
Advantages:
When the vertex of drawing names for each symbol it uses its own texture. Texture is taken from the SDF atlas advance generated on the server
Advantages:
Rendering the vertex the names on the same texture (as it was before)
The rendering graphics has taken мс
When the vertex of drawing names for each character it uses its own texture. Texture is taken from the SDF atlas generated on the client
The rendering graphics has taken мс
When the vertex of drawing names for each character it uses its own texture. Texture is taken from the SDF atlas advance generated on the server
The rendering graphics has taken мс