diff options
Diffstat (limited to 'academic/louvain-community/README')
-rw-r--r-- | academic/louvain-community/README | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/academic/louvain-community/README b/academic/louvain-community/README new file mode 100644 index 0000000000..8a989dc3f4 --- /dev/null +++ b/academic/louvain-community/README @@ -0,0 +1,98 @@ +[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 |