Skip to content

poloclub/atlas-algorithm

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Atlas Edge Decomposition Algorithm

This is the fast, scalable implementation of edge decomposition based on fixed points of degree peeling used in Atlas.

For the main Atlas visualization repository, see github.com/fredhohman/atlas.

Installation

Download or clone this repository.

git clone https://github.com/fredhohman/atlas-algorithm.git

From the directory, compile the code by

 g++ -o atlas-decomposition -g -fopenmp -O3 parallelkcore.cpp

Usage

We first convert a plain text edge list file to a .bin to use for algorithm. Input text files should be comma (or tab) separated where each row contains a source and target (these must be numbers). For example, a graph with three edges would look like:

1, 2
1, 3
2, 4

Convert the text edge list to a .bin using the mmap.jar file available here: http://poloclub.gatech.edu/mmap/MMap.zip

java -jar mmap.jar Convert <myGraph>

The algorithm takes in this .bin file to perform the decomposition. It outputs a myGraph-decomposition.csv file where each row contains three values: the source, target, and peel. The source and target columns together form the original edge list, and the new column peel contains the peel assignment, i.e., what layer an edge belongs to. To run the algorithm, use:

./atlas-decomposition <myGraph>.bin <# of edges> <# of vertices> 

It also outputs a myGraph-decomposition-info.json file that contains metadata such as the number of vertices in the graph, number of edges in the graph, time taken to preprocess the data, and time taken to run the algorithm.

Example

For an example of what the output looks like, see github.com/fredhohman/atlas/data

License

MIT License. See LICENSE.md.

Contact

For questions or support open an issue or contact Fred Hohman.

About

Atlas Edge Decomposition Algorithm

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 97.5%
  • C 2.5%