comparison env/lib/python3.7/site-packages/networkx/linalg/spectrum.py @ 0:26e78fe6e8c4 draft

"planemo upload commit c699937486c35866861690329de38ec1a5d9f783"
author shellac
date Sat, 02 May 2020 07:14:21 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:26e78fe6e8c4
1 """
2 Eigenvalue spectrum of graphs.
3 """
4 # Copyright (C) 2004-2019 by
5 # Aric Hagberg <hagberg@lanl.gov>
6 # Dan Schult <dschult@colgate.edu>
7 # Pieter Swart <swart@lanl.gov>
8 # All rights reserved.
9 # BSD license.
10 import networkx as nx
11 __author__ = "\n".join(['Aric Hagberg <aric.hagberg@gmail.com>',
12 'Pieter Swart (swart@lanl.gov)',
13 'Dan Schult(dschult@colgate.edu)',
14 'Jean-Gabriel Young (jean.gabriel.young@gmail.com)'])
15
16 __all__ = ['laplacian_spectrum', 'adjacency_spectrum', 'modularity_spectrum',
17 'normalized_laplacian_spectrum', 'bethe_hessian_spectrum']
18
19
20 def laplacian_spectrum(G, weight='weight'):
21 """Returns eigenvalues of the Laplacian of G
22
23 Parameters
24 ----------
25 G : graph
26 A NetworkX graph
27
28 weight : string or None, optional (default='weight')
29 The edge data key used to compute each value in the matrix.
30 If None, then each edge has weight 1.
31
32 Returns
33 -------
34 evals : NumPy array
35 Eigenvalues
36
37 Notes
38 -----
39 For MultiGraph/MultiDiGraph, the edges weights are summed.
40 See to_numpy_matrix for other options.
41
42 See Also
43 --------
44 laplacian_matrix
45 """
46 from scipy.linalg import eigvalsh
47 return eigvalsh(nx.laplacian_matrix(G, weight=weight).todense())
48
49
50 def normalized_laplacian_spectrum(G, weight='weight'):
51 """Return eigenvalues of the normalized Laplacian of G
52
53 Parameters
54 ----------
55 G : graph
56 A NetworkX graph
57
58 weight : string or None, optional (default='weight')
59 The edge data key used to compute each value in the matrix.
60 If None, then each edge has weight 1.
61
62 Returns
63 -------
64 evals : NumPy array
65 Eigenvalues
66
67 Notes
68 -----
69 For MultiGraph/MultiDiGraph, the edges weights are summed.
70 See to_numpy_matrix for other options.
71
72 See Also
73 --------
74 normalized_laplacian_matrix
75 """
76 from scipy.linalg import eigvalsh
77 return eigvalsh(nx.normalized_laplacian_matrix(G, weight=weight).todense())
78
79
80 def adjacency_spectrum(G, weight='weight'):
81 """Returns eigenvalues of the adjacency matrix of G.
82
83 Parameters
84 ----------
85 G : graph
86 A NetworkX graph
87
88 weight : string or None, optional (default='weight')
89 The edge data key used to compute each value in the matrix.
90 If None, then each edge has weight 1.
91
92 Returns
93 -------
94 evals : NumPy array
95 Eigenvalues
96
97 Notes
98 -----
99 For MultiGraph/MultiDiGraph, the edges weights are summed.
100 See to_numpy_matrix for other options.
101
102 See Also
103 --------
104 adjacency_matrix
105 """
106 from scipy.linalg import eigvals
107 return eigvals(nx.adjacency_matrix(G, weight=weight).todense())
108
109
110 def modularity_spectrum(G):
111 """Returns eigenvalues of the modularity matrix of G.
112
113 Parameters
114 ----------
115 G : Graph
116 A NetworkX Graph or DiGraph
117
118 Returns
119 -------
120 evals : NumPy array
121 Eigenvalues
122
123 See Also
124 --------
125 modularity_matrix
126
127 References
128 ----------
129 .. [1] M. E. J. Newman, "Modularity and community structure in networks",
130 Proc. Natl. Acad. Sci. USA, vol. 103, pp. 8577-8582, 2006.
131 """
132 from scipy.linalg import eigvals
133 if G.is_directed():
134 return eigvals(nx.directed_modularity_matrix(G))
135 else:
136 return eigvals(nx.modularity_matrix(G))
137
138
139 def bethe_hessian_spectrum(G, r=None):
140 """Returns eigenvalues of the Bethe Hessian matrix of G.
141
142 Parameters
143 ----------
144 G : Graph
145 A NetworkX Graph or DiGraph
146
147 r : float
148 Regularizer parameter
149
150 Returns
151 -------
152 evals : NumPy array
153 Eigenvalues
154
155 See Also
156 --------
157 bethe_hessian_matrix
158
159 References
160 ----------
161 .. [1] A. Saade, F. Krzakala and L. Zdeborová
162 "Spectral clustering of graphs with the bethe hessian",
163 Advances in Neural Information Processing Systems. 2014.
164 """
165 from scipy.linalg import eigvalsh
166 return eigvalsh(nx.bethe_hessian_matrix(G, r).todense())
167
168
169 # fixture for pytest
170 def setup_module(module):
171 import pytest
172 scipy.linalg = pytest.importorskip('scipy.linalg')