annotate louvain/readme.txt @ 5:7e55ef6f9a05 draft

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