Crates.io | forceatlas2 |
lib.rs | forceatlas2 |
version | 0.7.0 |
source | src |
created_at | 2021-04-03 23:34:12.001128 |
updated_at | 2024-05-02 16:30:59.636442 |
description | fast force-directed generic n-dimension graph layout |
homepage | |
repository | https://framagit.org/ZettaScript/forceatlas2-rs |
max_upload_size | |
id | 378558 |
size | 305,936 |
Implementation of ForceAtlas2 – force-directed Continuous Graph Layout Algorithm for Handy Network Visualization (i.e. position the nodes of a n-dimension graph for drawing it more human-readably)
Install Rustup and switch to nightly:
rustup toolchain install nightly && rustup default nightly
Clone repository:
git clone https://framagit.org/ZettaScript/forceatlas2-rs && cd forceatlas2-rs
The file examples/wot.csv
lists the edges of a directed graph, in two columns.
Interactive viewer. You need GTK installed.
cargo run --release -p viz -- examples/wot.csv
There is a binding for use in Python, fa2rs.
Previous versions of this crate were using hand-written AVX2 code to speed up repulsion by 16. It was however still O(N^2). Now the only implementation of repulsion uses the Barnes-Hut algorithm (quadtree/octree, O(NlogN)), which makes any kind of parallelization harder (SIMD, multithreading, GPU). Some research papers describe ways to parallelize quadtree building or even to implement it using SIMD or GPU.
GNU AGPL v3, CopyLeft 2020-2024 Pascal Engélibert (why copyleft?)
Implementation details inspired by:
The ForceAtlas2 paper was released under CC BY, Copyright 2014 Jacomy et al.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, version 3 of the License.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.