This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
[License: LGPL v3] [build]
Multi-criteria community detection library
This library makes the Louvain community detection system
significantly easier to use. Example code:
#include "louvain_communities/louvain_communities.h" #include
<iostream>
int main(int /*argc*/, char** /*argv*/) { LouvainC::Communities
graph;
//First community graph.add_edge(1, 2, 2L);
graph.add_edge(1, 3, 2L); graph.add_edge(1, 4, 2L);
graph.add_edge(2, 3, 2L); graph.add_edge(2, 4, 2L);
graph.add_edge(3, 4, 2L);
//Second community graph.add_edge(4, 5, 2L);
graph.add_edge(4, 6, 2L); graph.add_edge(4, 7, 2L);
graph.add_edge(5, 6, 2L); graph.add_edge(5, 7, 2L);
graph.add_edge(6, 7, 2L);
//Weak connection between 1st and 2nd communities
graph.add_edge(1, 4, 0.1L);
//Calculate communities gplain.calculate(true);
//Get community mapping auto r = gplain.get_mapping();
for(auto& vert_to_comm: r) { std::cout << "Vertext " <<
vert_to_comm.first << " is in community " << vert_to_comm.second <<
std::endl; } }
How to build
To build:
git clone https://github.com/meelgroup/louvain-community cd
louvain-community mkdir build && cd build cmake .. make -j4 sudo
make install
In case you are going to use the system in another cmake based
project, you don’t even need to install. In these cases, you can
look for the library in your CMakeLists.txt file via:
find_package(louvain_communities CONFIG) if
(louvain_communities_FOUND) message(STATUS "Found Louvain
Communities library") message(STATUS "Louvain Communities dynamic
lib: ${LOUVAIN_COMMUNITIES_LIBRARIES}") message(STATUS "Louvain
Communities include dirs: ${LOUVAIN_COMMUNITIES_INCLUDE_DIRS}")
else() message(FATAL_ERROR "Cannot find Louvain Communities
libraries. Please install it! Exiting.") endif()
To compile a static library simply do:
git clone https://github.com/meelgroup/louvain-community cd
louvain-community mkdir build && cd build cmake -DSTATICCOMPILE=ON
.. make -j4 sudo make install
Testing
To test:
pip install python-louvain
git clone https://github.com/jlguillaume/louvain cd louvain make
-j4
git clone https://github.com/meelgroup/louvain-community cd
louvain-community mkdir build && cd build ln -s ../scritps/* . ln
-s ../../louvain/louvain . ./mytest.py 50-10-9-q.cnf.gz.no_w.cnf
awk '{print "gplain.add_edge(" $1 ", " $2 ", " $3 "L);"}' graph.txt
> ../src/mygraph.cpp cmake -DENABLE_TESTING=ON .. make -j4
> ./test.sh 50-10-9-q.cnf.gz.no_w.cnf
To check how well the communities fit a graph generated via VIG
(“Variable Incidence Graph”) graph-generation from a DIMACS CNF and
a layout engine using the spring method:
pip install python-louvain git clone
https://github.com/meelgroup/louvain-community cd louvain-community
mkdir build && cd build ln -s ../scritps/* . ./mytest.py
50-10-9-q.cnf.gz.no_w.cnf --draw
References
Based on Community Detection “Louvain”, version 0.3, from
SourceForge
Based on the article “Fast unfolding of community hierarchies in
large networks” Copyright (C) 2008 V. Blondel, J.-L. Guillaume, R.
Lambiotte, E. Lefebvre
And based on the article Copyright (C) 2013 R. Campigotto, P. Conde
Céspedes, J.-L. Guillaume
Authors: E. Lefebvre, adapted by J.-L. Guillaume and R. Campigotto,
Mate Soos