Specification - Automatic Layout
From Gephi:Wiki
Draft specification of an automatic layout feature. This feature is required mainly for headless scenarios, where user don't have layout feedback through visualization.
The aim is to build an Automatic Layout Scenario from three possible parameters:
- The number of passes
- The time the algorithm should run
- The natural end of some layout algorithms like Yifan-Hu's series
Just running any layout algorithm for a particular number of passes is not enough. Layout have significants number of properties that need to be well configured to maximize results quality.
Contents |
Metrics
The question is which metric or real-time calculation could be found to evaluate the layout status. Some layout like YifanHu manage their energy and can evaluate when to stop. That is positive but in that case how to configure these layout to run a particular number of passes.
Scenarios
Yifan-Hu
ForceAtlas
This scenario have to manage Adjust By Size parameter. This parameter cannot be enabled at the beginning when all nodes are completely overlapping and should usually be enabled with a reduced speed.
Usage
At Linkfluence, we use an Automatic Layout prototype based on Gephi and using only ForceAtlas algorithm. I put here some data to better specify this new feature.
| Nodes count (global) | Edges count (global) | Nodes count (processed) | Edges count (processed) | Edges/Nodes (processed) |
|---|---|---|---|---|
| 1 527 097 | 5 390 811 | 5 283 | 183 550 | 34,74 |
| 1 107 442 | 2 863 117 | 3 630 | 43 706 | 12,04 |
| 1 032 883 | 3 746 632 | 4 794 | 201 059 | 41,94 |
| 982 417 | 3 230 013 | 3 902 | 90 258 | 23,13 |
| 800 846 | 2 162 093 | 2 383 | 42 388 | 17,79 |
As you can see, in order to not kill the prototypal 0.6 Gephi Automatic Layout, we filter (on the in_degree) the nodes and the edges we process. I put both the real and the processed counts. We can see that we have an min of 10 edges for 1 node and a max of 40 edges (or even more) for 1 node. If we want to spatialize 10k nodes we have to imagine a graph with 400k edges 8|
Code
A prototype of these features is developed. the aim is to provide the AutoLayout utility classes to provide infrastructure to tune layout execution.
Features
- Program the layout to execute for a certain time
- Chain layouts and set pourcentage of execution for each
- Dynamic properties, set fixed or interpolated properties values within layout execution
TODO
- Set AutoLayout with number of passes instead of time duration
- Support layout stop by themselves (Yifan Hu)
- Log interpolation
- Property are found now with their real names, could be localized string. Need to find a way to link better with layout's properties

