summaryrefslogtreecommitdiff
path: root/python/README.md
blob: cc196b5d77ed96cb475b3bc6f9618eacfff0bccb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# multired
/**
*
* Copyright (C) 2015 Vincenzo (Enzo) Nicosia <katolaz@yahoo.it>
*
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.  
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* long with this program.  If not, see  <http://www.gnu.org/licenses/>.
*
*/

This is multired-0.1.


This is a Python implementation of the algorithm for structural
reduction of multi-layer networks based on the Von Neumann Entropy 
and on the Quantum Jensen-Shannon divergence of graphs, as explained 
in:

  M. De Domenico. V. Nicosia, A. Arenas, V. Latora
  "Structural reducibility of multilayer networks", 
  Nat. Commun. 6, 6864 (2015) doi:10.1038/ncomms7864

If you happen to find any use of this code please do not forget to
cite that paper ;-)


--------------------
       INFO
--------------------

The module "multired.py" provides the class "multiplex_red", which
implements the algorithm to reduce a multilayer network described in
the paper cited above. 

In order to use it, you just need to 

 import multired as mr

in your python script and create a multiplex_red object. Please make
sure that "multired.py" is in PYTHONPATH. The constructor requires as
its first argument the path of a file which in turn contains a list of
files (one for each line) where the graph of each layer is to be
found.

The class provides one set of methods which perform the exact
evaluation of the Von Neumann entropy, and another set of methods
(those whose name end with the suffix "_approx") which rely on a
polynomial approximation of the Von Neumann entropy. By default the
approximation is based on a 10th order polynomial fit of x log(x) in
[0,1], but the order of the polynomial can be set through the
parameter "fit_degree" of the constructor.

Several sample scripts can be found in the "test/" directory. You also
find a sample data set in the folder "sample_data/". That is the 4-layer 
Noordin Top Terrorist multiplex network, originally provided in:

  N. Roberts, S. F. Everton, Roberts and Everton "Terrorist
  Data: Noordin Top Terrorist Network" (Subset) (2011).

and extensively studied in:

  F. Battiston, V. Nicosia, V. Latora,
  "Structural measures for multiplex networks",
  Phys. Rev. E 89, 032804 (2014).

Please consider citing those papers if you use that data set in a
scientific work. 

--------------------
    DEPENDENCIES
--------------------

The only strict dependencies are a recent version of Python, Numpy and
SciPy. The methods "draw_dendrogram" and "draw_dendrogram_approx" will
work only if matplotlib is installed.

The module has been tested on a Debian GNU/Linux system, using:

 - Python 2.7.8,  
 - SciPy 0.13.3
 - Numpy 1.8.2
 - matplotlib 1.3.1

but it will almost surely work on other platforms and/or with other
versions of those packages. If you would like to report a working
configuration, just email me (the address is at the beginning of this
file).