summaryrefslogtreecommitdiffstats
path: root/academic/louvain-community/README
diff options
context:
space:
mode:
Diffstat (limited to 'academic/louvain-community/README')
-rw-r--r--academic/louvain-community/README98
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