annotate louvain/readme.txt @ 0:1d1b9e1b2e2f draft

Uploaded
author petr-novak
date Thu, 19 Dec 2019 10:24:45 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
1 -----------------------------------------------------------------------------
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
2
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
3 Community detection
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
4 Version 0.2 - not compatible with the previous version, see below.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
5
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
6 Based on the article "Fast unfolding of community hierarchies in large networks"
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
7 Copyright (C) 2008 V. Blondel, J.-L. Guillaume, R. Lambiotte, E. Lefebvre
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
8
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
9
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
10 This file is part of Louvain algorithm.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
11
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
12 Louvain algorithm is free software: you can redistribute it and/or modify
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
13 it under the terms of the GNU General Public License as published by
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
14 the Free Software Foundation, either version 3 of the License, or
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
15 (at your option) any later version.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
16
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
17 Louvain algorithm is distributed in the hope that it will be useful,
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
20 GNU General Public License for more details.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
21
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
22 You should have received a copy of the GNU General Public License
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
23 along with Louvain algorithm. If not, see <http://www.gnu.org/licenses/>.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
24
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
25 -----------------------------------------------------------------------------
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
26
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
27 Author : E. Lefebvre, adapted by J.-L. Guillaume
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
28 Email : jean-loup.guillaume@lip6.fr
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
29 Location : Paris, France
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
30 Time : February 2008
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
31
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
32 -----------------------------------------------------------------------------
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
33
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
34 Disclaimer:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
35 If you find a bug, please send a bug report to jean-loup.guillaume@lip6.fr
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
36 including if necessary the input file and the parameters that caused the bug.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
37 You can also send me any comment or suggestion about the program.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
38
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
39 Note that the program is expecting a friendly use and therefore does not make
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
40 much verifications about the arguments.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
41
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
42 -----------------------------------------------------------------------------
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
43
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
44
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
45 This package offers a set of functions to use in order to compute
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
46 communities on graphs weighted or unweighted. A typical sequence of
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
47 actions is:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
48
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
49 1. Conversion from a text format (each line contains a couple "src dest")
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
50 ./convert -i graph.txt -o graph.bin
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
51 This program can also be used to convert weighted graphs (each line contain
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
52 a triple "src dest w") using -w option:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
53 ./convert -i graph.txt -o graph.bin -w graph.weights
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
54 Finally, nodes can be renumbered from 0 to nb_nodes - 1 using -r option
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
55 (less space wasted in some cases):
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
56 ./convert -i graph.txt -o graph.bin -r
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
57
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
58
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
59 2. Computes communities and displays hierarchical tree:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
60 ./community graph.bin -l -1 -v > graph.tree
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
61
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
62 To ensure a faster computation (with a loss of quality), one can use
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
63 the -q option to specify that the program must stop if the increase of
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
64 modularity is below epsilon for a given iteration or pass:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
65 ./community graph.bin -l -1 -q 0.0001 > graph.tree
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
66
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
67 The program can deal with weighted networks using -w option:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
68 ./community graph.bin -l -1 -w graph.weights > graph.tree
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
69 In this specific case, the convertion step must also use the -w option.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
70
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
71 The program can also start with any given partition using -p option
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
72 ./community graph.bin -p graph.part -v
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
73
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
74
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
75 3. Displays information on the tree structure (number of hierarchical
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
76 levels and nodes per level):
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
77 ./hierarchy graph.tree
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
78
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
79 Displays the belonging of nodes to communities for a given level of
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
80 the tree:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
81 ./hierarchy graph.tree -l 2 > graph_node2comm_level2
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
82
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
83 -----------------------------------------------------------------------------
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
84
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
85 Known bugs or restrictions:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
86 - the number of nodes is stored on 4 bytes and the number of links on 8 bytes.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
87
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
88 -----------------------------------------------------------------------------
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
89
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
90 Version history:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
91 The following modifications have been made from version 0.1:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
92 - weights are now stored using floats (integer in V0.1)
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
93 - degrees are stored on 8 bytes allowing large graphs to be decomposed
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
94 - weights are stored in a separate file, which allows disk usage reduction if
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
95 different weights are to be used on the same topology
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
96 - any given partition can be used as a seed for the algorithm rather than just
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
97 the trivial partition where each node belongs to its own community
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
98 - initial network can contain loops is network is considered weighted
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
99 - graph is not renumbered by default in the convert program
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
100 - an optional verbose mode has been added and the program is silent by default
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
101 - some portions of the code have been c++ improved (type * -> vector<type>)
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
102 These modifications imply that any binary graph file created with the previous
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
103 version of the code is not comptabile with this version. You must therefore
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
104 regenerate all the binary files.
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
105
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
106 Version 0.1:
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
107 - initial community detection algorithm
1d1b9e1b2e2f Uploaded
petr-novak
parents:
diff changeset
108