scikit-network 0.31.0__cp310-cp310-win_amd64.whl → 0.33.0__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of scikit-network might be problematic. Click here for more details.
- {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/AUTHORS.rst +3 -1
- {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/METADATA +27 -5
- scikit_network-0.33.0.dist-info/RECORD +228 -0
- {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/WHEEL +1 -1
- sknetwork/__init__.py +1 -1
- sknetwork/classification/base.py +1 -1
- sknetwork/classification/base_rank.py +3 -3
- sknetwork/classification/diffusion.py +25 -16
- sknetwork/classification/knn.py +23 -16
- sknetwork/classification/metrics.py +4 -4
- sknetwork/classification/pagerank.py +12 -8
- sknetwork/classification/propagation.py +25 -17
- sknetwork/classification/tests/test_diffusion.py +10 -0
- sknetwork/classification/vote.cp310-win_amd64.pyd +0 -0
- sknetwork/classification/vote.cpp +14549 -8668
- sknetwork/clustering/__init__.py +3 -1
- sknetwork/clustering/base.py +1 -1
- sknetwork/clustering/kcenters.py +253 -0
- sknetwork/clustering/leiden.py +242 -0
- sknetwork/clustering/leiden_core.cp310-win_amd64.pyd +0 -0
- sknetwork/clustering/leiden_core.cpp +31564 -0
- sknetwork/clustering/leiden_core.pyx +124 -0
- sknetwork/clustering/louvain.py +118 -83
- sknetwork/clustering/louvain_core.cp310-win_amd64.pyd +0 -0
- sknetwork/clustering/louvain_core.cpp +21876 -16332
- sknetwork/clustering/louvain_core.pyx +86 -94
- sknetwork/clustering/postprocess.py +2 -2
- sknetwork/clustering/propagation_clustering.py +4 -4
- sknetwork/clustering/tests/test_API.py +7 -3
- sknetwork/clustering/tests/test_kcenters.py +60 -0
- sknetwork/clustering/tests/test_leiden.py +34 -0
- sknetwork/clustering/tests/test_louvain.py +2 -3
- sknetwork/data/__init__.py +1 -1
- sknetwork/data/base.py +7 -2
- sknetwork/data/load.py +20 -25
- sknetwork/data/models.py +15 -15
- sknetwork/data/parse.py +57 -34
- sknetwork/data/tests/test_API.py +3 -3
- sknetwork/data/tests/test_base.py +2 -2
- sknetwork/data/tests/test_parse.py +9 -12
- sknetwork/data/tests/test_toy_graphs.py +33 -33
- sknetwork/data/toy_graphs.py +35 -43
- sknetwork/embedding/__init__.py +0 -1
- sknetwork/embedding/base.py +23 -19
- sknetwork/embedding/force_atlas.py +3 -2
- sknetwork/embedding/louvain_embedding.py +1 -27
- sknetwork/embedding/random_projection.py +5 -3
- sknetwork/embedding/spectral.py +0 -73
- sknetwork/embedding/svd.py +0 -4
- sknetwork/embedding/tests/test_API.py +4 -28
- sknetwork/embedding/tests/test_louvain_embedding.py +13 -13
- sknetwork/embedding/tests/test_spectral.py +2 -5
- sknetwork/embedding/tests/test_svd.py +7 -1
- sknetwork/gnn/base_layer.py +3 -3
- sknetwork/gnn/gnn_classifier.py +41 -87
- sknetwork/gnn/layer.py +1 -1
- sknetwork/gnn/loss.py +1 -1
- sknetwork/gnn/optimizer.py +4 -3
- sknetwork/gnn/tests/test_base_layer.py +4 -4
- sknetwork/gnn/tests/test_gnn_classifier.py +12 -39
- sknetwork/gnn/utils.py +8 -8
- sknetwork/hierarchy/base.py +27 -0
- sknetwork/hierarchy/louvain_hierarchy.py +55 -47
- sknetwork/hierarchy/paris.cp310-win_amd64.pyd +0 -0
- sknetwork/hierarchy/paris.cpp +27667 -20915
- sknetwork/hierarchy/paris.pyx +11 -10
- sknetwork/hierarchy/postprocess.py +16 -16
- sknetwork/hierarchy/tests/test_algos.py +5 -0
- sknetwork/hierarchy/tests/test_metrics.py +4 -4
- sknetwork/linalg/__init__.py +1 -1
- sknetwork/linalg/diteration.cp310-win_amd64.pyd +0 -0
- sknetwork/linalg/diteration.cpp +13916 -8050
- sknetwork/linalg/{normalization.py → normalizer.py} +17 -14
- sknetwork/linalg/operators.py +1 -1
- sknetwork/linalg/ppr_solver.py +1 -1
- sknetwork/linalg/push.cp310-win_amd64.pyd +0 -0
- sknetwork/linalg/push.cpp +23187 -16973
- sknetwork/linalg/tests/test_normalization.py +3 -7
- sknetwork/linalg/tests/test_operators.py +2 -6
- sknetwork/linalg/tests/test_ppr.py +1 -1
- sknetwork/linkpred/base.py +12 -1
- sknetwork/linkpred/nn.py +6 -6
- sknetwork/path/distances.py +11 -4
- sknetwork/path/shortest_path.py +1 -1
- sknetwork/path/tests/test_distances.py +7 -0
- sknetwork/path/tests/test_search.py +2 -2
- sknetwork/ranking/base.py +11 -6
- sknetwork/ranking/betweenness.cp310-win_amd64.pyd +0 -0
- sknetwork/ranking/betweenness.cpp +5256 -2190
- sknetwork/ranking/pagerank.py +13 -12
- sknetwork/ranking/tests/test_API.py +0 -2
- sknetwork/ranking/tests/test_betweenness.py +1 -1
- sknetwork/ranking/tests/test_pagerank.py +11 -5
- sknetwork/regression/base.py +18 -1
- sknetwork/regression/diffusion.py +30 -14
- sknetwork/regression/tests/test_diffusion.py +8 -0
- sknetwork/topology/__init__.py +3 -1
- sknetwork/topology/cliques.cp310-win_amd64.pyd +0 -0
- sknetwork/topology/cliques.cpp +23528 -16848
- sknetwork/topology/core.cp310-win_amd64.pyd +0 -0
- sknetwork/topology/core.cpp +22849 -16581
- sknetwork/topology/cycles.py +243 -0
- sknetwork/topology/minheap.cp310-win_amd64.pyd +0 -0
- sknetwork/topology/minheap.cpp +19495 -13469
- sknetwork/topology/structure.py +2 -42
- sknetwork/topology/tests/test_cycles.py +65 -0
- sknetwork/topology/tests/test_structure.py +2 -16
- sknetwork/topology/triangles.cp310-win_amd64.pyd +0 -0
- sknetwork/topology/triangles.cpp +5283 -1397
- sknetwork/topology/triangles.pyx +7 -4
- sknetwork/topology/weisfeiler_lehman_core.cp310-win_amd64.pyd +0 -0
- sknetwork/topology/weisfeiler_lehman_core.cpp +14781 -8915
- sknetwork/utils/__init__.py +1 -1
- sknetwork/utils/format.py +1 -1
- sknetwork/utils/membership.py +2 -2
- sknetwork/utils/values.py +5 -3
- sknetwork/visualization/__init__.py +2 -2
- sknetwork/visualization/dendrograms.py +55 -7
- sknetwork/visualization/graphs.py +261 -44
- sknetwork/visualization/tests/test_dendrograms.py +9 -9
- sknetwork/visualization/tests/test_graphs.py +63 -57
- scikit_network-0.31.0.dist-info/RECORD +0 -221
- sknetwork/embedding/louvain_hierarchy.py +0 -142
- sknetwork/embedding/tests/test_louvain_hierarchy.py +0 -19
- {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/LICENSE +0 -0
- {scikit_network-0.31.0.dist-info → scikit_network-0.33.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env python3
|
|
2
2
|
# -*- coding: utf-8 -*-
|
|
3
|
-
"""tests for visualization
|
|
3
|
+
"""tests for visualization of graphs"""
|
|
4
4
|
|
|
5
5
|
import tempfile
|
|
6
6
|
import unittest
|
|
@@ -10,7 +10,7 @@ from scipy import sparse
|
|
|
10
10
|
|
|
11
11
|
from sknetwork.data.test_graphs import test_disconnected_graph, test_bigraph_disconnect
|
|
12
12
|
from sknetwork.data.toy_graphs import karate_club, painters, movie_actor, bow_tie, star_wars
|
|
13
|
-
from sknetwork.visualization.graphs import svg_graph, svg_bigraph, svg_text, rescale
|
|
13
|
+
from sknetwork.visualization.graphs import visualize_graph, visualize_bigraph, svg_graph, svg_bigraph, svg_text, rescale
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
# noinspection DuplicatedCode
|
|
@@ -21,74 +21,77 @@ class TestVisualization(unittest.TestCase):
|
|
|
21
21
|
adjacency = graph.adjacency
|
|
22
22
|
position = graph.position
|
|
23
23
|
labels = graph.labels
|
|
24
|
+
image = visualize_graph(adjacency, position, labels=labels)
|
|
25
|
+
self.assertEqual(image[1:4], 'svg')
|
|
26
|
+
# alias
|
|
24
27
|
image = svg_graph(adjacency, position, labels=labels)
|
|
25
28
|
self.assertEqual(image[1:4], 'svg')
|
|
26
|
-
image =
|
|
29
|
+
image = visualize_graph(adjacency, position, labels=list(labels))
|
|
27
30
|
self.assertEqual(image[1:4], 'svg')
|
|
28
|
-
image =
|
|
31
|
+
image = visualize_graph(adjacency, position, display_edges=False)
|
|
29
32
|
self.assertEqual(image[1:4], 'svg')
|
|
30
|
-
image =
|
|
33
|
+
image = visualize_graph(adjacency, position, height=None)
|
|
31
34
|
self.assertEqual(image[1:4], 'svg')
|
|
32
|
-
image =
|
|
35
|
+
image = visualize_graph(adjacency, position, height=300, width=None)
|
|
33
36
|
self.assertEqual(image[1:4], 'svg')
|
|
34
|
-
image =
|
|
37
|
+
image = visualize_graph(adjacency, position, height=None, width=200)
|
|
35
38
|
self.assertEqual(image[1:4], 'svg')
|
|
36
39
|
n = adjacency.shape[0]
|
|
37
40
|
edge_labels = [(0, 1, 0), (1, 1, 1), (3, 10, 2)]
|
|
38
|
-
image =
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
image = visualize_graph(adjacency, position=None, names=np.arange(n), labels=np.arange(n), scores=np.arange(n),
|
|
42
|
+
seeds=[0, 1], width=200, height=200, margin=10, margin_text=5, scale=3,
|
|
43
|
+
node_order=np.flip(np.arange(n)),
|
|
44
|
+
node_size=5, node_size_min=2, node_size_max=6, display_node_weight=True,
|
|
45
|
+
node_weights=np.arange(n),
|
|
46
|
+
node_width=2, node_width_max=5, node_color='red', edge_width=2, edge_width_min=2,
|
|
47
|
+
edge_width_max=4, edge_color='blue', edge_labels=edge_labels, display_edge_weight=True,
|
|
48
|
+
font_size=14)
|
|
46
49
|
self.assertEqual(image[1:4], 'svg')
|
|
47
|
-
image =
|
|
50
|
+
image = visualize_graph(adjacency, position=None, labels={0: 0})
|
|
48
51
|
self.assertEqual(image[1:4], 'svg')
|
|
49
|
-
image =
|
|
52
|
+
image = visualize_graph(adjacency, position=None, scores={0: 0})
|
|
50
53
|
self.assertEqual(image[1:4], 'svg')
|
|
51
|
-
image =
|
|
54
|
+
image = visualize_graph(adjacency=None, position=position)
|
|
52
55
|
self.assertEqual(image[1:4], 'svg')
|
|
53
|
-
image =
|
|
56
|
+
image = visualize_graph(adjacency=None, position=position, edge_labels=edge_labels)
|
|
54
57
|
self.assertEqual(image[1:4], 'svg')
|
|
55
|
-
image =
|
|
58
|
+
image = visualize_graph(adjacency, position, labels, label_colors={0: "red", 1: "blue"})
|
|
56
59
|
self.assertEqual(image[1:4], 'svg')
|
|
57
|
-
image =
|
|
60
|
+
image = visualize_graph(adjacency, position, labels, label_colors=["red", "blue"])
|
|
58
61
|
self.assertEqual(image[1:4], 'svg')
|
|
59
|
-
image =
|
|
62
|
+
image = visualize_graph(adjacency, position, labels, node_weights=np.arange(adjacency.shape[0]))
|
|
60
63
|
self.assertEqual(image[1:4], 'svg')
|
|
61
|
-
image =
|
|
64
|
+
image = visualize_graph(adjacency, position, scores=list(np.arange(n)))
|
|
62
65
|
self.assertEqual(image[1:4], 'svg')
|
|
63
|
-
image =
|
|
66
|
+
image = visualize_graph(adjacency, position, seeds={0: 1, 2: 1})
|
|
64
67
|
self.assertEqual(image[1:4], 'svg')
|
|
65
|
-
image =
|
|
68
|
+
image = visualize_graph(adjacency, position, labels=np.arange(n), name_position='left')
|
|
66
69
|
self.assertEqual(image[1:4], 'svg')
|
|
67
|
-
image =
|
|
70
|
+
image = visualize_graph(adjacency, position, scale=2, labels=np.arange(n), name_position='left')
|
|
68
71
|
self.assertEqual(image[1:4], 'svg')
|
|
69
72
|
with self.assertRaises(ValueError):
|
|
70
|
-
|
|
73
|
+
visualize_graph(adjacency, position, labels=[0, 1])
|
|
71
74
|
with self.assertRaises(ValueError):
|
|
72
|
-
|
|
73
|
-
|
|
75
|
+
visualize_graph(adjacency, position, scores=[0, 1])
|
|
76
|
+
visualize_graph(adjacency, position, scale=2, labels=np.arange(n), name_position='left')
|
|
74
77
|
|
|
75
78
|
def test_directed(self):
|
|
76
79
|
graph = painters(True)
|
|
77
80
|
adjacency = graph.adjacency
|
|
78
81
|
position = graph.position
|
|
79
82
|
names = graph.names
|
|
80
|
-
image =
|
|
83
|
+
image = visualize_graph(adjacency, position, names=names)
|
|
81
84
|
self.assertEqual(image[1:4], 'svg')
|
|
82
|
-
image =
|
|
85
|
+
image = visualize_graph(adjacency, position, display_edges=False)
|
|
83
86
|
self.assertEqual(image[1:4], 'svg')
|
|
84
87
|
n = adjacency.shape[0]
|
|
85
|
-
image =
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
88
|
+
image = visualize_graph(adjacency, position=None, names=np.arange(n), labels=np.arange(n), scores=np.arange(n),
|
|
89
|
+
name_position='below', seeds=[0, 1], width=200, height=200, margin=10, margin_text=5,
|
|
90
|
+
scale=3, node_order=np.flip(np.arange(n)),
|
|
91
|
+
node_size=5, node_size_min=2, node_size_max=6, display_node_weight=True,
|
|
92
|
+
node_weights=np.arange(n),
|
|
93
|
+
node_width=2, node_width_max=5, node_color='red', edge_width=2, edge_width_min=2,
|
|
94
|
+
edge_width_max=4, edge_color='blue', display_edge_weight=True, font_size=14)
|
|
92
95
|
self.assertEqual(image[1:4], 'svg')
|
|
93
96
|
|
|
94
97
|
def test_bipartite(self):
|
|
@@ -96,54 +99,57 @@ class TestVisualization(unittest.TestCase):
|
|
|
96
99
|
biadjacency = graph.biadjacency
|
|
97
100
|
names_row = graph.names_row
|
|
98
101
|
names_col = graph.names_col
|
|
102
|
+
image = visualize_bigraph(biadjacency, names_row, names_col)
|
|
103
|
+
self.assertEqual(image[1:4], 'svg')
|
|
104
|
+
# alias
|
|
99
105
|
image = svg_bigraph(biadjacency, names_row, names_col)
|
|
100
106
|
self.assertEqual(image[1:4], 'svg')
|
|
101
|
-
image =
|
|
107
|
+
image = visualize_bigraph(biadjacency, display_edges=False)
|
|
102
108
|
self.assertEqual(image[1:4], 'svg')
|
|
103
|
-
image =
|
|
109
|
+
image = visualize_bigraph(biadjacency, reorder=False)
|
|
104
110
|
self.assertEqual(image[1:4], 'svg')
|
|
105
111
|
n_row, n_col = biadjacency.shape
|
|
106
112
|
position_row = np.random.random((n_row, 2))
|
|
107
113
|
position_col = np.random.random((n_col, 2))
|
|
108
114
|
edge_labels = [(0, 1, 0), (1, 1, 1), (3, 10, 2)]
|
|
109
|
-
image =
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
115
|
+
image = visualize_bigraph(biadjacency=biadjacency, names_row=np.arange(n_row), names_col=np.arange(n_col),
|
|
116
|
+
labels_row=np.arange(n_row), labels_col=np.arange(n_col), scores_row=np.arange(n_row),
|
|
117
|
+
scores_col=np.arange(n_col), seeds_row=[0, 1], seeds_col=[1, 2],
|
|
118
|
+
position_row=position_row, position_col=position_col, color_row='red', color_col='white',
|
|
119
|
+
width=200, height=200, margin=10, margin_text=5, scale=3, node_size=5,
|
|
120
|
+
node_size_min=1, node_size_max=30, node_weights_row=np.arange(n_row),
|
|
121
|
+
node_weights_col=np.arange(n_col), display_node_weight=True, node_width=2, node_width_max=5,
|
|
122
|
+
edge_labels=edge_labels, edge_width=2, edge_width_min=0.3, edge_width_max=4,
|
|
123
|
+
edge_color='red', display_edge_weight=True, font_size=14)
|
|
118
124
|
self.assertEqual(image[1:4], 'svg')
|
|
119
125
|
|
|
120
126
|
def test_disconnect(self):
|
|
121
127
|
adjacency = test_disconnected_graph()
|
|
122
128
|
position = np.random.random((adjacency.shape[0], 2))
|
|
123
|
-
image =
|
|
129
|
+
image = visualize_graph(adjacency, position)
|
|
124
130
|
self.assertEqual(image[1:4], 'svg')
|
|
125
131
|
biadjacency = test_bigraph_disconnect()
|
|
126
|
-
image =
|
|
132
|
+
image = visualize_bigraph(biadjacency)
|
|
127
133
|
self.assertEqual(image[1:4], 'svg')
|
|
128
134
|
|
|
129
135
|
def test_probs(self):
|
|
130
136
|
adjacency = bow_tie()
|
|
131
137
|
probs = np.array([[.5, .5], [0, 0], [1, 0], [0, 1], [0, 1]])
|
|
132
|
-
image =
|
|
138
|
+
image = visualize_graph(adjacency, probs=probs)
|
|
133
139
|
self.assertEqual(image[1:4], 'svg')
|
|
134
140
|
probs = sparse.csr_matrix(probs)
|
|
135
|
-
image =
|
|
141
|
+
image = visualize_graph(adjacency, probs=probs)
|
|
136
142
|
self.assertEqual(image[1:4], 'svg')
|
|
137
143
|
biadjacency = star_wars()
|
|
138
144
|
probs_row = sparse.csr_matrix([[.5, .5], [0, 0], [1, 0], [0, 1]])
|
|
139
145
|
probs_col = sparse.csr_matrix([[.5, .5], [0, 0], [1, 0]])
|
|
140
|
-
image =
|
|
146
|
+
image = visualize_bigraph(biadjacency, probs_row=probs_row, probs_col=probs_col)
|
|
141
147
|
self.assertEqual(image[1:4], 'svg')
|
|
142
148
|
|
|
143
149
|
def test_labels(self):
|
|
144
150
|
adjacency = bow_tie()
|
|
145
151
|
names = ["aa", "bb", "<>", "a&b", ""]
|
|
146
|
-
image =
|
|
152
|
+
image = visualize_graph(adjacency, names=names)
|
|
147
153
|
self.assertEqual(image[1:4], 'svg')
|
|
148
154
|
|
|
149
155
|
def test_text(self):
|
|
@@ -160,11 +166,11 @@ class TestVisualization(unittest.TestCase):
|
|
|
160
166
|
graph = karate_club(True)
|
|
161
167
|
adjacency = graph.adjacency
|
|
162
168
|
position = graph.position
|
|
163
|
-
_ =
|
|
169
|
+
_ = visualize_graph(adjacency, position, filename=filename)
|
|
164
170
|
with open(filename + '.svg', 'r') as f:
|
|
165
171
|
row = f.readline()
|
|
166
172
|
self.assertEqual(row[1:4], 'svg')
|
|
167
|
-
_ =
|
|
173
|
+
_ = visualize_bigraph(adjacency, position, filename=filename)
|
|
168
174
|
with open(filename + '.svg', 'r') as f:
|
|
169
175
|
row = f.readline()
|
|
170
176
|
self.assertEqual(row[1:4], 'svg')
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
sknetwork/__init__.py,sha256=kBpEmTMrIJ3j_joqBDtQZvyALtCVOc41FnSvwUNMtCQ,554
|
|
2
|
-
sknetwork/base.py,sha256=_63mkwqXFDke_0ve9DIZJiMHboMYqBONa7B08gao440,2018
|
|
3
|
-
sknetwork/log.py,sha256=qDR-dnlzJC0ETlotPAy_IbLiQPgu8Vn90mgkqfvT5W0,462
|
|
4
|
-
sknetwork/sknetwork.py,sha256=Qtq3EpSkdAFqQNQPDXTAouXS784LkR8Rh2D5s5w5_tc,47
|
|
5
|
-
sknetwork/test_base.py,sha256=hdbe2ldftbPp6Y0-bAWehKy9cyyd3Adj9UX6NgYq0QQ,947
|
|
6
|
-
sknetwork/test_log.py,sha256=ucX3w138eDyD0Wnpk9QEsPoQgAPTJNPy9twzMf5TjQ8,334
|
|
7
|
-
sknetwork/classification/__init__.py,sha256=QoS3fTnCZ0nFdlDkEphEYqj1NDEf23_aqsfP0G4zLMM,483
|
|
8
|
-
sknetwork/classification/base.py,sha256=JyRplfH2EdmXLMkE65HE-Oes8qpAyicZG8pL7_-vvnU,4424
|
|
9
|
-
sknetwork/classification/base_rank.py,sha256=pAEbkFJWg_6iJTe37PPTQf0FTlzb4NyYhFC-DG-gTPg,4660
|
|
10
|
-
sknetwork/classification/diffusion.py,sha256=gHa07SeI07LIRBhhUY1EZPJaAUb-8To5b699bp3_BWI,5146
|
|
11
|
-
sknetwork/classification/knn.py,sha256=-a0Uny_yyGoc4JZ-dPqzouoCMCWQLzEkqcSceuEgnok,5128
|
|
12
|
-
sknetwork/classification/metrics.py,sha256=1sPqOqliIexvL6ozNy9QTDKfHLV9Sqz5rGoSr3Gjv0M,7012
|
|
13
|
-
sknetwork/classification/pagerank.py,sha256=1B5V-l7pYa4Bvl4o58VByYqxanDA6qKGJ71IS_EXMnI,2485
|
|
14
|
-
sknetwork/classification/propagation.py,sha256=eHEG4plzQwxIXvp7mEMJVv23uhUn35iEWTVKjELtsWI,5614
|
|
15
|
-
sknetwork/classification/vote.cp310-win_amd64.pyd,sha256=hA1WHQgi0nPO4Hg7IHwEaVUOSXQti21PtIW_Mbt7O_M,126464
|
|
16
|
-
sknetwork/classification/vote.cpp,sha256=nX38hIU5dURwY9okIosSpp36JCN7SVD9f9YabRrjBEY,794586
|
|
17
|
-
sknetwork/classification/vote.pyx,sha256=-mNsL96aaA1UL-qfeUgZlbdvKZUK9R4MLmq0BNFWVKA,1640
|
|
18
|
-
sknetwork/classification/tests/__init__.py,sha256=Per0oy1Frnm5jB7dnpod1g_xbgYhqkNteWQV5cemcH0,32
|
|
19
|
-
sknetwork/classification/tests/test_API.py,sha256=WV5cY8yhTHBHYRbDE3InZ4v-agymxLPMKxa2NqjbWZo,1154
|
|
20
|
-
sknetwork/classification/tests/test_diffusion.py,sha256=lokZLSmvAw0unEWQ6IDPz5DjyEo2uWbmCbX18uzUxK0,2816
|
|
21
|
-
sknetwork/classification/tests/test_knn.py,sha256=EWuWiJJSsfthfvb3x0ejUjdccRBZIFpmG6nv7F8VkOk,807
|
|
22
|
-
sknetwork/classification/tests/test_metrics.py,sha256=9eqBvRiMdVUHf7WhjfwzMcUJFALt4Ufmx5LhBzou8Ww,2356
|
|
23
|
-
sknetwork/classification/tests/test_pagerank.py,sha256=8ywBVzfJOtz_gTIn7XYr0nvHlVwvmZERLrG3LkQHeTU,640
|
|
24
|
-
sknetwork/classification/tests/test_propagation.py,sha256=GzhpCpg0ijLvXuWtABolq02k0-Yh3UHJ2rAKpdQlTxI,874
|
|
25
|
-
sknetwork/clustering/__init__.py,sha256=HAWSDCezfp1FkAQPIxOinB84G_L4cOlrjwnLyqPUths,343
|
|
26
|
-
sknetwork/clustering/base.py,sha256=_4VBTkhqk11UuL_TCrdUARJ5Q4RTRQvaQ36sB-RF61s,6107
|
|
27
|
-
sknetwork/clustering/louvain.py,sha256=9OJX0KcjVyO-BtNTIRCQJZejriS2dsMzAPoYk6YHYE0,9961
|
|
28
|
-
sknetwork/clustering/louvain_core.cp310-win_amd64.pyd,sha256=g_zEYAs70vmBQp1bQgshyK-4WJWYZlwUitsR9B4M5aM,162304
|
|
29
|
-
sknetwork/clustering/louvain_core.cpp,sha256=BJ09lz5YcgfzH1k5DUqk5mtQ9eDGU_DY3tRkXub5m4E,955083
|
|
30
|
-
sknetwork/clustering/louvain_core.pyx,sha256=SQMoZxV2t7CRKShc16aC0Ry-_ZSMl-Gm-91B1fvbrjY,4617
|
|
31
|
-
sknetwork/clustering/metrics.py,sha256=ptLLtUpFtdKLZ4lcx_MN-PpOrzv--PWhAcEFoFghccM,3151
|
|
32
|
-
sknetwork/clustering/postprocess.py,sha256=Xk9FOPPBLemoROd--qgd9gc4I6xgMOXPKG-LSXqfEZQ,2101
|
|
33
|
-
sknetwork/clustering/propagation_clustering.py,sha256=HMTZB_kuwoSOrPgzSTJ-sC0y9PRcm6TLQwE5O5nX8Dc,3840
|
|
34
|
-
sknetwork/clustering/tests/__init__.py,sha256=tCA27jkL3pdstka9XWQEA1NbC6ZqL7Rf-1V1UcySCEE,28
|
|
35
|
-
sknetwork/clustering/tests/test_API.py,sha256=0bDJZkcLQc8HkASnEgV89-OJ2-W02etjqUHPzflRH8I,1518
|
|
36
|
-
sknetwork/clustering/tests/test_louvain.py,sha256=nkYC0zHd0n5eUhZxbLpKZPP-J1gZyn2jtuFAWPgBmq0,4811
|
|
37
|
-
sknetwork/clustering/tests/test_metrics.py,sha256=ZTr4T-d-g6kQJinei9VH6Teb_rOScmj5XLG168EI5LQ,1868
|
|
38
|
-
sknetwork/clustering/tests/test_postprocess.py,sha256=41l4coS_1CHqGOCnnucqxU6UkXws89YVMjef162ZTEQ,1417
|
|
39
|
-
sknetwork/data/__init__.py,sha256=QScOMfOfm2j7rPaNLPGNc9TwHQGebWRZCBHHbmZarO8,265
|
|
40
|
-
sknetwork/data/base.py,sha256=O_EN3j1hoSbHc96qxx-dAe5SsLGdLE1cqiX9fl0xjAw,658
|
|
41
|
-
sknetwork/data/load.py,sha256=XJ6vcSh09O1hNI82k40nRJJF674npeG9DHk5wjzvsJE,14931
|
|
42
|
-
sknetwork/data/models.py,sha256=luDuvYYcruOEw94iXNEnl5IbYJCVGtxB6jhDWVBmJH0,13615
|
|
43
|
-
sknetwork/data/parse.py,sha256=-EgABauVkJ2EJS0NOp7_H5wNdqw6WPfZYAHs-6Fhtfg,26329
|
|
44
|
-
sknetwork/data/test_graphs.py,sha256=KRRok5ElYWh1NV3i_2enLLjdeKe8zBg_3xqFXgOOY6I,2568
|
|
45
|
-
sknetwork/data/timeout.py,sha256=mXSqgKFRc6AVZBlIobN2xPYJjAyQOClKH3KQJ5M_4Sw,1085
|
|
46
|
-
sknetwork/data/toy_graphs.py,sha256=xdgNQjzwswpkCVioUR0_EzoQiS6QbuOAD0mgTs3Fphg,25654
|
|
47
|
-
sknetwork/data/tests/__init__.py,sha256=LtUcKFe5CeBpspRwa6A2uX2cVEf_uPpOo2mGkH7W8cI,20
|
|
48
|
-
sknetwork/data/tests/test_API.py,sha256=aytP2cJV9px-d-SogJn4SYPnTFJ1Xt2coEW7-EiljjM,987
|
|
49
|
-
sknetwork/data/tests/test_base.py,sha256=h1-1fEyWuVpAOnZDFmkSuhngrQdv3N2vEMa_Wpt8dVU,322
|
|
50
|
-
sknetwork/data/tests/test_load.py,sha256=wuLVlJ-lquoIrsr0UBI-gakW7BjGBZaSyEPavxX0NVY,3645
|
|
51
|
-
sknetwork/data/tests/test_models.py,sha256=_2y5xZrWbE3XZltd4n-z84YwyJhPcpaBa2TxXMvhXF4,1967
|
|
52
|
-
sknetwork/data/tests/test_parse.py,sha256=jJtOu9oQ920a8hzce_p0PPfBmjWtt6yfxPH-Azs0SV0,13006
|
|
53
|
-
sknetwork/data/tests/test_test_graphs.py,sha256=3QWshIikkBtRl3C7ATc_zO5UkwOh1wZwD7gYm0CEj8o,878
|
|
54
|
-
sknetwork/data/tests/test_toy_graphs.py,sha256=wQ2X-CVv9oycBUAaB68aJqg-0o3yMlaVtZ9D4thZJrc,2205
|
|
55
|
-
sknetwork/embedding/__init__.py,sha256=XvDQcRkxf5Kbf51Ai6X74AgSAXMarFgP8_AGxeIZY7Q,479
|
|
56
|
-
sknetwork/embedding/base.py,sha256=cupvrObiI19invfNBrfQtUqtMgYyKMb_gCUF-c3da_k,2851
|
|
57
|
-
sknetwork/embedding/force_atlas.py,sha256=D1UOepcBnAXGleC-kCxIIRY1o5kPj-jLRUWw15IagR4,7626
|
|
58
|
-
sknetwork/embedding/louvain_embedding.py,sha256=eU6THTLBqTokRwhj7q7lztXpXjla5LazGbgAHagleP8,7127
|
|
59
|
-
sknetwork/embedding/louvain_hierarchy.py,sha256=PYfBgOyN6Bi61PNlbQIW6dD-6-fz5m7v2UMvy5lYKpo,5850
|
|
60
|
-
sknetwork/embedding/random_projection.py,sha256=enjMO6sltf4zBLmavqS17X0iknrir5GkDWe8Rfgx7gQ,5053
|
|
61
|
-
sknetwork/embedding/spectral.py,sha256=wZspZ9MvjwK9G-b3ys7gr8fD4goeWigYwd7mXMDcTUM,8335
|
|
62
|
-
sknetwork/embedding/spring.py,sha256=Cl1airI_mSWmV1isKmcxqjY1uxw7NcH7xMwHc8ADmHA,7349
|
|
63
|
-
sknetwork/embedding/svd.py,sha256=isI2y9GfCGA5VJmogHrtq2MDVaxuWCZsEvh4YqgfB2k,15097
|
|
64
|
-
sknetwork/embedding/tests/__init__.py,sha256=PsZQYFNrSmRW_KIuNX3qVtxtZVn8yV18d0mk8Y6ieck,27
|
|
65
|
-
sknetwork/embedding/tests/test_API.py,sha256=CVIg2qkAOCjz2dgGdT8gCImXiICRGX0KZGrKC-9LQTU,2652
|
|
66
|
-
sknetwork/embedding/tests/test_force_atlas.py,sha256=dYiyWroqB7UKNW9MTYpGP6e7tF_qPWqVZNmZBndd_ks,1155
|
|
67
|
-
sknetwork/embedding/tests/test_louvain_embedding.py,sha256=bsjMQy4nTmBLtrpalzr-8sKXOksZ5HvInRtYLrNSD9k,1189
|
|
68
|
-
sknetwork/embedding/tests/test_louvain_hierarchy.py,sha256=QgOQRz0dkw-CesDk78wWKOD-bbR_tqHEBvitfn7POIY,753
|
|
69
|
-
sknetwork/embedding/tests/test_random_projection.py,sha256=zz6q0G-pG-G2gOefhr-yuPBQhNDNtXB8jz7_dld1ZpE,1221
|
|
70
|
-
sknetwork/embedding/tests/test_spectral.py,sha256=B7QR01IhxAbS-j4nFxY5TxReiP425u6B77-WXLShLy4,4348
|
|
71
|
-
sknetwork/embedding/tests/test_spring.py,sha256=z3eT-mFcfNSoMWPKQF-Dz_ZjAsJplQrx1yspiaeFRBw,1693
|
|
72
|
-
sknetwork/embedding/tests/test_svd.py,sha256=jn8Osv7eMzWHfdtFkuCB189cdJ0v2Af4Bm9bQ7QjzmQ,1212
|
|
73
|
-
sknetwork/gnn/__init__.py,sha256=808PNZEYNHZrIBpKqPzAMKES8yhN6QXEVUWkZVJIJWI,529
|
|
74
|
-
sknetwork/gnn/activation.py,sha256=rhvEXgrIix4nZ9I3WYZ0e1MID_DESCCC_XlVcOa4Wpo,3677
|
|
75
|
-
sknetwork/gnn/base.py,sha256=qHnKsfsUW4LIdwm3vzfAahBjweCkIDRzk62i4piNBuc,5889
|
|
76
|
-
sknetwork/gnn/base_activation.py,sha256=Kxs_d4aPOpMRXZMBAW7WKkA_uWLXRM7XM-JqE4nFHhc,2395
|
|
77
|
-
sknetwork/gnn/base_layer.py,sha256=mGiMee2HKAdqlBcKLvr6ylRG-BrraBg68cGe4n6S-Q0,4085
|
|
78
|
-
sknetwork/gnn/gnn_classifier.py,sha256=wgP03SVNOXrPiBnKw061iLY3RFkZrp9UeDWYwk7cMXc,14746
|
|
79
|
-
sknetwork/gnn/layer.py,sha256=agAIKeoWcae4-QBeztGDCmowq68U_Cv3m2-4jZWBE04,5684
|
|
80
|
-
sknetwork/gnn/loss.py,sha256=2cSOj-MbXjmrZbH-KQdEG6IYvSjdwMCnN7SUnI_fd7U,5342
|
|
81
|
-
sknetwork/gnn/neighbor_sampler.py,sha256=l5OkylbRQsDpmkfeHAaSA7gHi5l7OUKtL4YvH-YTMWM,1929
|
|
82
|
-
sknetwork/gnn/optimizer.py,sha256=DNL4AXAkO5bUhyK34MFBlZ7QaydYNtgjbhjJ_kjUsN4,5902
|
|
83
|
-
sknetwork/gnn/utils.py,sha256=OZQuxNO2CAe_KVuXNCFyOzYA1HqwpJFWWpuuhlSesaU,4448
|
|
84
|
-
sknetwork/gnn/tests/__init__.py,sha256=_q1IzwMWdNgX90qzdbVkr0LV4NTjFzXg81z4-TM93cw,21
|
|
85
|
-
sknetwork/gnn/tests/test_activation.py,sha256=UznwTCvOeCX80n5urtoDhnM8lskDM67AsVFiY-ViqzU,2543
|
|
86
|
-
sknetwork/gnn/tests/test_base.py,sha256=EN3QjzsSwzpOgyIYHwA6mgCDRBigx7YQ5iSQXQbw_pM,3468
|
|
87
|
-
sknetwork/gnn/tests/test_base_layer.py,sha256=J1cVNOXOe1_iwaKqq6EAFBa_KG-fVthDDEETNWJaNqw,1432
|
|
88
|
-
sknetwork/gnn/tests/test_gnn_classifier.py,sha256=xw7CKwTEltLBA5hI2ZVZmdbeGato4btLH4ia_tG_bbA,7120
|
|
89
|
-
sknetwork/gnn/tests/test_layers.py,sha256=6Rbz_jJm3m5e6XWZA3P8Bfzlss9nBoiE4rSz2Tc-QKo,3256
|
|
90
|
-
sknetwork/gnn/tests/test_loss.py,sha256=QvzXKW_xzirXUSkiDm9HgqJPHJdd55FOpuHWZzxyeKs,1078
|
|
91
|
-
sknetwork/gnn/tests/test_neigh_sampler.py,sha256=7yhKZSRg2sZd3kFNs-qdj1LKgM7X8xZBNoOYYkYRfek,721
|
|
92
|
-
sknetwork/gnn/tests/test_optimizer.py,sha256=OZnIeO__kNt8HXLHr-WHGzvDsTy4LvJ19p9jcFVzXME,1823
|
|
93
|
-
sknetwork/gnn/tests/test_utils.py,sha256=MJvOXEWouRiIVaPM76W0hizt3jFb-1_BXHLd1zkPzSg,1884
|
|
94
|
-
sknetwork/hierarchy/__init__.py,sha256=-2-y7iBVQRanXLSl9kY8VASJVqx37trYmVNcz74QsUc,418
|
|
95
|
-
sknetwork/hierarchy/base.py,sha256=ugPo_VM6sPfZusqAAxcyaV02vP64SJbi91KjoxxozTs,2091
|
|
96
|
-
sknetwork/hierarchy/louvain_hierarchy.py,sha256=QWgGQNoZxRoOBULDbC-1J-jRg7duDX8ItcL19WHpIlY,9367
|
|
97
|
-
sknetwork/hierarchy/metrics.py,sha256=5WZLsSLYKifLIQ9aPrXyzvPtTFN5ROSlNivhV-n9VuY,8280
|
|
98
|
-
sknetwork/hierarchy/paris.cp310-win_amd64.pyd,sha256=eH5WGnA6mPKomBgfMosz6QhAfE18jPaTtsMjJYhbDPs,189440
|
|
99
|
-
sknetwork/hierarchy/paris.cpp,sha256=2GCmXkOtFkRhcst8hZfZlTK8CywVZoJhjSfR2QaAhvs,1191817
|
|
100
|
-
sknetwork/hierarchy/paris.pyx,sha256=YVB5H1AtBDvWgX5kywaSaxnYgiQhSzu-9_3Yqj7aCAs,11915
|
|
101
|
-
sknetwork/hierarchy/postprocess.py,sha256=h8v3Ft0li53ewkbpdeiM4j2Xw8tjPbvpJkpqIJstZ-Y,12313
|
|
102
|
-
sknetwork/hierarchy/tests/__init__.py,sha256=jRlC4pbyKuxaiXvByYK-4ix7DwYWxpjwKNvSXZ7rQJE,27
|
|
103
|
-
sknetwork/hierarchy/tests/test_API.py,sha256=f0QtuCDA5dRwhPogtwbjsVlDRTpk84ewkXgc6rHCSWU,744
|
|
104
|
-
sknetwork/hierarchy/tests/test_algos.py,sha256=DtIlYH9zqX0tiX0nmuvL5jTAZiqMhb56F7IQRV-jeMc,1172
|
|
105
|
-
sknetwork/hierarchy/tests/test_metrics.py,sha256=rcdFVeWf50bYnem55gmUaDfE6AmJuW8RtYEQcigqZ60,3222
|
|
106
|
-
sknetwork/hierarchy/tests/test_postprocess.py,sha256=Bm1_XU6OgwZr_1B28IA5m_HZRqI7GMwlTLpzkXux__Y,2266
|
|
107
|
-
sknetwork/linalg/__init__.py,sha256=_qdALdabKv3x8CAuhq6UB4R9jRewNfpgh6XCRnhHvCE,545
|
|
108
|
-
sknetwork/linalg/basics.py,sha256=WDlylrkBTCQpjXGtzs8kshJYfpo0h3uM8TMhHmnAnnM,1179
|
|
109
|
-
sknetwork/linalg/diteration.cp310-win_amd64.pyd,sha256=biKSHJ12CS4QfWO7NUID1jE5MZ1TZT5wV1lqJcgr8dM,116736
|
|
110
|
-
sknetwork/linalg/diteration.cpp,sha256=UaIFr5VOvl1YCYE2YtH0EhbfSvMSmuVeHSvRf3cB_JE,791453
|
|
111
|
-
sknetwork/linalg/diteration.pyx,sha256=1r7a1usqftiBNTPOAwHFQPK__nZ67J-87wQLM25GqEU,1431
|
|
112
|
-
sknetwork/linalg/eig_solver.py,sha256=lMqxTg66_T-LsgGqc9oo_ngxpTceekavnCFOANWEpPA,2793
|
|
113
|
-
sknetwork/linalg/laplacian.py,sha256=qifd-8iltcTKCQW-7fG5z3XfwVrrrCeaBqbViBQCLf0,416
|
|
114
|
-
sknetwork/linalg/normalization.py,sha256=-bmgWOLZtzfCd7U4NBJ2h5f6m2C6BbYvtRwAoptp_Eo,2423
|
|
115
|
-
sknetwork/linalg/operators.py,sha256=PPGw20FDAXWj89_CD-lVVh9oA30-O29-XtN_yIygKcM,7660
|
|
116
|
-
sknetwork/linalg/polynome.py,sha256=qnIhfpRk26JMinuNCrZO1EDj5ci65ZLxkKJyhO7HxpE,2201
|
|
117
|
-
sknetwork/linalg/ppr_solver.py,sha256=Vr8H5f3R8qwvqlhmvlt8p2t09v83WCLyx9mlCvXVLe8,6706
|
|
118
|
-
sknetwork/linalg/push.cp310-win_amd64.pyd,sha256=mNaytKtPt7atPP8oRrMNTvdx6tHcWfSphO-p_JWxDs0,132096
|
|
119
|
-
sknetwork/linalg/push.cpp,sha256=5WuXwnkFat9lOUijko0fybc9Iee42DmTjjNsHzIk_lk,911049
|
|
120
|
-
sknetwork/linalg/push.pyx,sha256=79ycseJ1jOznzc1_KSexTGy_0dlX1jQVnf_WI8Ufvgc,2429
|
|
121
|
-
sknetwork/linalg/sparse_lowrank.py,sha256=-6-cNRs6tpiNqA8ah3mBKWap3Nh9GQHTFIarPjIiC7U,5170
|
|
122
|
-
sknetwork/linalg/svd_solver.py,sha256=XxP4AyKQInBQN3imcbtahXseZ4YyKj4ZI2UAJK1mDs4,2772
|
|
123
|
-
sknetwork/linalg/tests/__init__.py,sha256=i2cO6oXoryXdEJ-HdSFZsY7LZdNit7W3GC8J8LAUMU4,24
|
|
124
|
-
sknetwork/linalg/tests/test_eig.py,sha256=c_BpjP_S7xCwYgk2N7kaFfsjV1-nfUYCu3Rys07bPeo,1548
|
|
125
|
-
sknetwork/linalg/tests/test_laplacian.py,sha256=iGI4bFmYfhCbymlN4wcnE0tV9GmApC3g7bDL3Qx8dR0,452
|
|
126
|
-
sknetwork/linalg/tests/test_normalization.py,sha256=mwUzdftJg0ZucOi5hf1X0dqOhfMJWyhjpIdymIYeEyc,1142
|
|
127
|
-
sknetwork/linalg/tests/test_operators.py,sha256=0m5jWpCuK-gLfq6EdclDC69KxNViYM_2AfNiAPt7QMU,3179
|
|
128
|
-
sknetwork/linalg/tests/test_polynome.py,sha256=-F0iMhYd1lVFau6ILxq7Mr5BtJxJPB-TX3ya3tQwzOM,1015
|
|
129
|
-
sknetwork/linalg/tests/test_ppr.py,sha256=uN8vTEemFSDLJJYW2W9EVKb8x25ynB8Bez0D7q-B3NQ,2139
|
|
130
|
-
sknetwork/linalg/tests/test_sparse_lowrank.py,sha256=Vqeey1W8jB85zT0L4c5TEGTL0hyQ9zX4FQ6EEI4tmHE,2337
|
|
131
|
-
sknetwork/linalg/tests/test_svd.py,sha256=9Uu89-1vTlaJ_H82MUwzGz-iiYf_wFiZMyfelVBRHMI,1323
|
|
132
|
-
sknetwork/linkpred/__init__.py,sha256=a7t20Q3xpm1M5IXnyErmucoQuHnGwPTNKAD42oYHEWQ,74
|
|
133
|
-
sknetwork/linkpred/base.py,sha256=7eoKAAHSs5a31wRooV7MAHS6aDyeSz9sdDYbBo5JD7M,782
|
|
134
|
-
sknetwork/linkpred/nn.py,sha256=I9r5xiob1lFAcNfF7369LOLzwZMJJrzFofJOvEL0Sws,4085
|
|
135
|
-
sknetwork/linkpred/tests/__init__.py,sha256=vghxhmK0F5SJOYIb9HZV0h3AVXsCVEPwkgfM7aPpV9M,33
|
|
136
|
-
sknetwork/linkpred/tests/test_nn.py,sha256=-1r8LyU34XXvhHnvJA53fGmOd6Ei2jGG6-LHtYvHYGc,1010
|
|
137
|
-
sknetwork/path/__init__.py,sha256=FU7sn-HrqXGbJQzCIlQgE95LGDwwMRzBe-qp4rTt-3A,227
|
|
138
|
-
sknetwork/path/dag.py,sha256=UAhn3uL2hlCybyOY0ZBnFh1aJnWwWpZ4pfhg-Ay2JKU,1722
|
|
139
|
-
sknetwork/path/distances.py,sha256=f_XrITrz_EkTzNmclOomkGwH1abZ-PiwFlgFufrS0qA,3445
|
|
140
|
-
sknetwork/path/search.py,sha256=SD6iV6m_OdygudaJ3vaNyLQtlGZrHjfCvA0BIFPPAN0,807
|
|
141
|
-
sknetwork/path/shortest_path.py,sha256=jvijMKYg9p-u5__P7WHhzvkNyBwJSn_29GIeYpS2q-g,2509
|
|
142
|
-
sknetwork/path/tests/__init__.py,sha256=ntNGJ8p6RZkIrYnePF-TESyoidEXx8fw6A9OBNAlIqo,29
|
|
143
|
-
sknetwork/path/tests/test_dag.py,sha256=lualgStm0Boqx88j38tNuRKrW7Ala5ZfIHzlKdFbVRM,975
|
|
144
|
-
sknetwork/path/tests/test_distances.py,sha256=yNkg6MiH3nfrFvEuL_DGMgiUkKa8SyhlqudOhwCoPR0,2327
|
|
145
|
-
sknetwork/path/tests/test_search.py,sha256=JqauA2PRb-NbmMhlX80GEe2iNQAhSVdqu1G3eKDkri8,1243
|
|
146
|
-
sknetwork/path/tests/test_shortest_path.py,sha256=zeM-qgbTs3i29gvF568otKOKgv_pbryV_yGefThLEIY,1422
|
|
147
|
-
sknetwork/ranking/__init__.py,sha256=lbkUSZ3alkLK0xGiUx5ptPqhQKIjIKK80uPk0KymJPc,356
|
|
148
|
-
sknetwork/ranking/base.py,sha256=7HxTw136hWuqOHPLgtpcboWZTxBx00tBYuJt-O9P7q8,1497
|
|
149
|
-
sknetwork/ranking/betweenness.cp310-win_amd64.pyd,sha256=681Ro-R6GGaUmLI7Y7LC8ZKV7f7nlTNVl80Xo9-QXHY,65536
|
|
150
|
-
sknetwork/ranking/betweenness.cpp,sha256=ap4WiJkEEFNIy5xFBp1AuE3ga7roheOp1hpzaPGG6I8,265626
|
|
151
|
-
sknetwork/ranking/betweenness.pyx,sha256=fe5_gwRQ0TaFi_0-vUGfy6XC5kW5un5xly7-xVDgxrU,3184
|
|
152
|
-
sknetwork/ranking/closeness.py,sha256=CvdAaqsM8HvAi6zGCuLcVF0BUu9n9UPBz_YxZhFF_sM,2932
|
|
153
|
-
sknetwork/ranking/hits.py,sha256=uhGJH2C0U9hLsVRutI6M1ulbEIM7L6dCeYqiAhtTD9A,2855
|
|
154
|
-
sknetwork/ranking/katz.py,sha256=WQpxJq_qqvjFm1ZG_P1ynfpzLlPu-dXCJ9luK-8sRjY,2618
|
|
155
|
-
sknetwork/ranking/pagerank.py,sha256=-cgPvGfiITFSs5X6GJca2Pq4UATK3W8s6Vpr6potjD4,4789
|
|
156
|
-
sknetwork/ranking/postprocess.py,sha256=F2yP6AsaK9ylTzukLCdtJET7_KnprrxkyWTSKQOnODk,956
|
|
157
|
-
sknetwork/ranking/tests/__init__.py,sha256=46AJCs9irV6PtFg8CVH8TqpqHA6ajs29-3rsL3zxZQ8,25
|
|
158
|
-
sknetwork/ranking/tests/test_API.py,sha256=ZyPjemb2imUDaJhDBl0IMnJAx0bRXA75kPm_rrM-AX8,1145
|
|
159
|
-
sknetwork/ranking/tests/test_betweenness.py,sha256=m-mYofSfLvswGvcIPOjZcfWG9HbbjY9RI8x0Eb9zD90,1175
|
|
160
|
-
sknetwork/ranking/tests/test_closeness.py,sha256=7LSiT-H5S1vuaOj4NHpotg0voIWjgJfVlgR96_V2ny8,853
|
|
161
|
-
sknetwork/ranking/tests/test_hits.py,sha256=aOPsAyU3GNyb_Mcujd7U_TLBtzWn91SuOPyZZRUF9MU,511
|
|
162
|
-
sknetwork/ranking/tests/test_pagerank.py,sha256=e_f7Y33ITMDZyFgvZaRxrTyIODgvXwKgDK8BgMyitw0,1983
|
|
163
|
-
sknetwork/ranking/tests/test_postprocess.py,sha256=TpyU3_DKbnSwuf0HEuEYMiNbdI6Z5oP1JNO6kWigFkc,729
|
|
164
|
-
sknetwork/regression/__init__.py,sha256=FYnlc-DKS1Mz2lKVCtKldjSgtvzxMmkd5kwKq2HdNmE,145
|
|
165
|
-
sknetwork/regression/base.py,sha256=Dnvr3egl7pWpYVUjRITgsjOXsxjN76KtCd4nEy8wFuc,1123
|
|
166
|
-
sknetwork/regression/diffusion.py,sha256=GagoWzmlc86w8eY_df-kIbbyNVNXzrhE1XJIkLFSTNU,7462
|
|
167
|
-
sknetwork/regression/tests/__init__.py,sha256=GvqvsSMbqMYwRmWw4VrZntwccz1jOPqrqufAZqw_NAc,28
|
|
168
|
-
sknetwork/regression/tests/test_API.py,sha256=7x_n8bG8hUcJVRYDbdC6GvPmwW5cE7HmASlu5SHnwFI,1056
|
|
169
|
-
sknetwork/regression/tests/test_diffusion.py,sha256=kUncxGwUnXFn15TfAkQKqE4syVvg_-ERNZGwua1JJoo,1734
|
|
170
|
-
sknetwork/topology/__init__.py,sha256=nf6yGfRNIFYL65UJNiGvZUqemGUJrwcj7k3Q-vF-7A4,361
|
|
171
|
-
sknetwork/topology/cliques.cp310-win_amd64.pyd,sha256=wyvQO0V8L_GjtLZpcr90QYElVx75rEtoABz3eS_Hk24,144896
|
|
172
|
-
sknetwork/topology/cliques.cpp,sha256=21DO6ucynhs4MMi0qOdo8e1cofL-dCeHZOnZMgCCGBI,951751
|
|
173
|
-
sknetwork/topology/cliques.pyx,sha256=y6Ee5oaX7IdVhXXjSOazqT5dYo4gSTQ8Mq0u1Abg0vw,4659
|
|
174
|
-
sknetwork/topology/core.cp310-win_amd64.pyd,sha256=CIJna37udMYNwNgk_nMourwJGGTZ3Q6oyX3QE2R3BOY,124928
|
|
175
|
-
sknetwork/topology/core.cpp,sha256=WscYFFfdKJgYnqMWmOr2kQM4xWyN8IQCkAZ5G1iPIyY,882271
|
|
176
|
-
sknetwork/topology/core.pyx,sha256=0PO4HnOYivjrFY1NMlXHd7wscu0R5Fg-Toj3YVRwXDo,2555
|
|
177
|
-
sknetwork/topology/minheap.cp310-win_amd64.pyd,sha256=Ch_CHpBrql22Fp4oehjG0IXEDHb-wfx1EuhokBH0mbw,104448
|
|
178
|
-
sknetwork/topology/minheap.cpp,sha256=IMIBpRCsecqlH0hgUjReKrCaTSQdufsGcSylmKtytLM,778758
|
|
179
|
-
sknetwork/topology/minheap.pxd,sha256=AHeBNN8wGzT429K6AyhbrFUoBkWVwbkyUIY6TkeJ80g,584
|
|
180
|
-
sknetwork/topology/minheap.pyx,sha256=KOmjjlljgkGUJNL8PQ6WaNzx-Ro84QoSve_8baDN1B0,3419
|
|
181
|
-
sknetwork/topology/structure.py,sha256=BBMZ1OHKvPWYurYjQORfX98tBPtN43rZngbUQiWKnmI,8852
|
|
182
|
-
sknetwork/topology/triangles.cp310-win_amd64.pyd,sha256=zBFeP31YrPlFitjrpDsXenV4F1cGkr7o6Kgx2qwoAPA,39424
|
|
183
|
-
sknetwork/topology/triangles.cpp,sha256=he2Kpp53YjIjT4fsEIgtPw3NEtRO0lIBhDCaaO9bON0,201093
|
|
184
|
-
sknetwork/topology/triangles.pyx,sha256=NAuWB4UG7WiC71xqW9W_oQlr4yB3QZA-qNTbjPL4IdQ,4291
|
|
185
|
-
sknetwork/topology/weisfeiler_lehman.py,sha256=U5b5RoTFtqBeFwkuBXs4g0Px2UWRFePyneu-tfgnY_I,4441
|
|
186
|
-
sknetwork/topology/weisfeiler_lehman_core.cp310-win_amd64.pyd,sha256=MeuBnSUXI7ErUDLGWzlHKkGdJDLMqQ5uUVl-CMA57YA,126464
|
|
187
|
-
sknetwork/topology/weisfeiler_lehman_core.cpp,sha256=4jJggzELpdPJ7cxuDqM14rUxtwqYWCB1Litp1a4eHlo,798124
|
|
188
|
-
sknetwork/topology/weisfeiler_lehman_core.pyx,sha256=lpUV1BpxtedsGBfOl19b8OFXCIbyaAA4ZYlW6BzSxbw,3148
|
|
189
|
-
sknetwork/topology/tests/__init__.py,sha256=84T-xv8JCFeA9D7Rxw9gy3_dNAoE8CY1k1pYcuG8K3s,26
|
|
190
|
-
sknetwork/topology/tests/test_cliques.py,sha256=vdRMDmF8AKkIWE-LnU2yGzk1wzwzq9PdggpeS-8wfRw,866
|
|
191
|
-
sknetwork/topology/tests/test_core.py,sha256=7w9lrzsQ5Pn7QzxA0F_L58cXCABFir7rtLn2DZdPKsk,570
|
|
192
|
-
sknetwork/topology/tests/test_structure.py,sha256=MJcPSCNSxairXVc_FO4nCsqJu7f_-zyy1VC4sFL8b90,4734
|
|
193
|
-
sknetwork/topology/tests/test_triangles.py,sha256=5AYxNQ8DkKTvpShWEWV-v1r7WZx1DuylChcEmVF0yTk,1313
|
|
194
|
-
sknetwork/topology/tests/test_wl.py,sha256=vesYcnlJHPphk2RJLzKJH9N6aYpPeKLFJko1E8kBdtc,2290
|
|
195
|
-
sknetwork/utils/__init__.py,sha256=ceT5UU4JRxCqpDlPj84gPBaKMRsI6b_YfaBzkK67Qo4,336
|
|
196
|
-
sknetwork/utils/check.py,sha256=LWUkHwDzr9Z9IyT7AIsrQyDrRAMjO2bzWyFsv_P9Ask,13295
|
|
197
|
-
sknetwork/utils/format.py,sha256=5gKHLLBuGboIqmtNKiwzrC_qbh-sPi_mejhJ_8teaLs,8974
|
|
198
|
-
sknetwork/utils/membership.py,sha256=claXsrZd6BVT4WuuI0P00tqapbczvAxtLAWMWNQ78KE,2234
|
|
199
|
-
sknetwork/utils/neighbors.py,sha256=-EwBXigM3mn2qvVTi_aPmG0XifDMojZgsMQ9_A8cLkk,3466
|
|
200
|
-
sknetwork/utils/tfidf.py,sha256=vvISEaZJa7RZrNNgQEAHgMH2rJToARuNWcVjnA8u7po,993
|
|
201
|
-
sknetwork/utils/values.py,sha256=aUc2fuI56J78_6P-S2mT4NhHgiiIZp6D2feNKcsQmG4,2584
|
|
202
|
-
sknetwork/utils/tests/__init__.py,sha256=JQuARG8Ycb5apL6PUy_wuEHsLjmEZFOPQUKWRgTMdCY,23
|
|
203
|
-
sknetwork/utils/tests/test_check.py,sha256=LxYAubg6YZ0RHYFz_R3byNtw3EQ6hsHxPPI3QgP1DLg,6954
|
|
204
|
-
sknetwork/utils/tests/test_format.py,sha256=NJrRBI-kFF8dYFmTwuFF7VUnHS6Mz75DG-RB-iGk8ag,2308
|
|
205
|
-
sknetwork/utils/tests/test_membership.py,sha256=d_TobwpRl2K3qCcFBDQV1bGCSmF7Ls3r2s_XGvJC3Sg,772
|
|
206
|
-
sknetwork/utils/tests/test_neighbors.py,sha256=Q7-Y23CcF4vn5lcyEqjaojEAk7-pG03Mf59O1Rz3IUs,1467
|
|
207
|
-
sknetwork/utils/tests/test_tfidf.py,sha256=KYz_LSxi625kKL-v5-uA1-YQOliIfgXCmNXTAZtgpmw,463
|
|
208
|
-
sknetwork/utils/tests/test_values.py,sha256=K3ctTXpSy9fwiHnpFVlHX5KeTd2wNF4kbFiTXe_gQq8,2334
|
|
209
|
-
sknetwork/visualization/__init__.py,sha256=0gVE7r4oXW6IPlNzq2EXwvr_oRDwCjtuhBh0FN-4I4Y,162
|
|
210
|
-
sknetwork/visualization/colors.py,sha256=NhyMQeetfH16khnJD2gD_uZJkBD3JQDV0K3Jzacamqw,2543
|
|
211
|
-
sknetwork/visualization/dendrograms.py,sha256=-U-WVuO-uFpqPrXuWJmhpkIUyeYX-GLemRmChdtbWhY,8280
|
|
212
|
-
sknetwork/visualization/graphs.py,sha256=vx2PC_IilHNW9G6GgNq3muFCM7Hc3Mz0lHMrOmH8Qu8,32806
|
|
213
|
-
sknetwork/visualization/tests/__init__.py,sha256=hrso2pNVzMWn4D2pRyWA_xAMib-xacKjm-rf91MyGGk,31
|
|
214
|
-
sknetwork/visualization/tests/test_dendrograms.py,sha256=4BEdDonrQZsylKgwDpxwTdUZTnqbMKokpugTYbcAp5o,2455
|
|
215
|
-
sknetwork/visualization/tests/test_graphs.py,sha256=FkzWHYx0KHr0sxP7Go-KZICjoiGXK1EoF8nzIMUiFBc,8968
|
|
216
|
-
scikit_network-0.31.0.dist-info/AUTHORS.rst,sha256=SSAG2WortFtGW_lEWFDX15zhkIvoEOwc60q2yVTRN7Q,921
|
|
217
|
-
scikit_network-0.31.0.dist-info/LICENSE,sha256=BJ1Hth1QjBmjIfHcp1sVxlkEqHYM58Vn5bcpYcggMZE,1656
|
|
218
|
-
scikit_network-0.31.0.dist-info/METADATA,sha256=wXSb_IbBBsuXwnQq37r8hav6vMIyz0PDv3mSRNSayRY,14521
|
|
219
|
-
scikit_network-0.31.0.dist-info/WHEEL,sha256=rneS2j8QNmAwdNKHN86s6-qP7AMcWZgqiEoH3bdbh_Y,102
|
|
220
|
-
scikit_network-0.31.0.dist-info/top_level.txt,sha256=fkwspWQ9B3csqb5ENEOoVciRY6XftnMuz4MvTDQeSsg,10
|
|
221
|
-
scikit_network-0.31.0.dist-info/RECORD,,
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# coding: utf-8
|
|
3
|
-
"""
|
|
4
|
-
Created on Dec 2020
|
|
5
|
-
@author: Quentin Lutz <qlutz@enst.fr>
|
|
6
|
-
"""
|
|
7
|
-
from typing import Optional, Union
|
|
8
|
-
|
|
9
|
-
import numpy as np
|
|
10
|
-
from scipy import sparse
|
|
11
|
-
|
|
12
|
-
from sknetwork.utils.check import check_format, check_random_state
|
|
13
|
-
from sknetwork.utils.format import get_adjacency
|
|
14
|
-
from sknetwork.clustering.louvain import Louvain
|
|
15
|
-
from sknetwork.embedding.base import BaseEmbedding
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class LouvainNE(BaseEmbedding):
|
|
19
|
-
"""Embedding of graphs based on the hierarchical Louvain algorithm with random scattering per level.
|
|
20
|
-
|
|
21
|
-
Parameters
|
|
22
|
-
----------
|
|
23
|
-
n_components : int
|
|
24
|
-
Dimension of the embedding.
|
|
25
|
-
scale : float
|
|
26
|
-
Dilution factor to be applied on the random vector to be added at each iteration of the clustering method.
|
|
27
|
-
resolution :
|
|
28
|
-
Resolution parameter.
|
|
29
|
-
tol_optimization :
|
|
30
|
-
Minimum increase in the objective function to enter a new optimization pass.
|
|
31
|
-
tol_aggregation :
|
|
32
|
-
Minimum increase in the objective function to enter a new aggregation pass.
|
|
33
|
-
n_aggregations :
|
|
34
|
-
Maximum number of aggregations.
|
|
35
|
-
A negative value is interpreted as no limit.
|
|
36
|
-
shuffle_nodes :
|
|
37
|
-
Enables node shuffling before optimization.
|
|
38
|
-
random_state :
|
|
39
|
-
Random number generator or random seed. If None, numpy.random is used.
|
|
40
|
-
|
|
41
|
-
Attributes
|
|
42
|
-
----------
|
|
43
|
-
embedding_ : array, shape = (n, n_components)
|
|
44
|
-
Embedding of the nodes.
|
|
45
|
-
embedding_row_ : array, shape = (n_row, n_components)
|
|
46
|
-
Embedding of the rows, for bipartite graphs.
|
|
47
|
-
embedding_col_ : array, shape = (n_col, n_components)
|
|
48
|
-
Embedding of the columns, for bipartite graphs.
|
|
49
|
-
Example
|
|
50
|
-
-------
|
|
51
|
-
>>> from sknetwork.embedding import LouvainNE
|
|
52
|
-
>>> from sknetwork.data import karate_club
|
|
53
|
-
>>> louvain = LouvainNE(n_components=3)
|
|
54
|
-
>>> adjacency = karate_club()
|
|
55
|
-
>>> embedding = louvain.fit_transform(adjacency)
|
|
56
|
-
>>> embedding.shape
|
|
57
|
-
(34, 3)
|
|
58
|
-
|
|
59
|
-
References
|
|
60
|
-
----------
|
|
61
|
-
Bhowmick, A. K., Meneni, K., Danisch, M., Guillaume, J. L., & Mitra, B. (2020, January).
|
|
62
|
-
`LouvainNE: Hierarchical Louvain Method for High Quality and Scalable Network Embedding.
|
|
63
|
-
<https://hal.archives-ouvertes.fr/hal-02999888/document>`_
|
|
64
|
-
In Proceedings of the 13th International Conference on Web Search and Data Mining (pp. 43-51).
|
|
65
|
-
"""
|
|
66
|
-
def __init__(self, n_components: int = 2, scale: float = .1, resolution: float = 1, tol_optimization: float = 1e-3,
|
|
67
|
-
tol_aggregation: float = 1e-3, n_aggregations: int = -1, shuffle_nodes: bool = False,
|
|
68
|
-
random_state: Optional[Union[np.random.RandomState, int]] = None, verbose: bool = False):
|
|
69
|
-
super(LouvainNE, self).__init__()
|
|
70
|
-
|
|
71
|
-
self.n_components = n_components
|
|
72
|
-
self.scale = scale
|
|
73
|
-
self._clustering_method = Louvain(resolution=resolution, tol_optimization=tol_optimization,
|
|
74
|
-
tol_aggregation=tol_aggregation, n_aggregations=n_aggregations,
|
|
75
|
-
shuffle_nodes=shuffle_nodes, random_state=random_state, verbose=verbose)
|
|
76
|
-
self.random_state = check_random_state(random_state)
|
|
77
|
-
self.bipartite = None
|
|
78
|
-
|
|
79
|
-
def _recursive_louvain(self, adjacency: Union[sparse.csr_matrix, np.ndarray], depth: int,
|
|
80
|
-
nodes: Optional[np.ndarray] = None):
|
|
81
|
-
"""Recursive function for fit, modifies the embedding in place.
|
|
82
|
-
|
|
83
|
-
Parameters
|
|
84
|
-
----------
|
|
85
|
-
adjacency :
|
|
86
|
-
Adjacency matrix of the graph.
|
|
87
|
-
depth :
|
|
88
|
-
Depth of the recursion.
|
|
89
|
-
nodes :
|
|
90
|
-
The indices of the current nodes in the original graph.
|
|
91
|
-
"""
|
|
92
|
-
n = adjacency.shape[0]
|
|
93
|
-
if nodes is None:
|
|
94
|
-
nodes = np.arange(n)
|
|
95
|
-
|
|
96
|
-
if adjacency.nnz:
|
|
97
|
-
labels = self._clustering_method.fit_transform(adjacency)
|
|
98
|
-
else:
|
|
99
|
-
labels = np.zeros(n)
|
|
100
|
-
|
|
101
|
-
clusters = np.unique(labels)
|
|
102
|
-
|
|
103
|
-
if len(clusters) != 1:
|
|
104
|
-
random_vectors = (self.scale ** depth) * self.random_state.rand(self.n_components, len(clusters))
|
|
105
|
-
for index, cluster in enumerate(clusters):
|
|
106
|
-
mask = (labels == cluster)
|
|
107
|
-
nodes_cluster = nodes[mask]
|
|
108
|
-
self.embedding_[nodes_cluster, :] += random_vectors[:, index]
|
|
109
|
-
n_row = len(mask)
|
|
110
|
-
indptr = np.zeros(n_row + 1, dtype=int)
|
|
111
|
-
indptr[1:] = np.cumsum(mask)
|
|
112
|
-
n_col = indptr[-1]
|
|
113
|
-
combiner = sparse.csr_matrix((np.ones(n_col), np.arange(n_col, dtype=int), indptr),
|
|
114
|
-
shape=(n_row, n_col))
|
|
115
|
-
adjacency_cluster = adjacency[mask, :].dot(combiner)
|
|
116
|
-
self._recursive_louvain(adjacency_cluster, depth + 1, nodes_cluster)
|
|
117
|
-
|
|
118
|
-
def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], force_bipartite: bool = False):
|
|
119
|
-
"""Embedding of graphs from a clustering obtained with Louvain.
|
|
120
|
-
|
|
121
|
-
Parameters
|
|
122
|
-
----------
|
|
123
|
-
input_matrix :
|
|
124
|
-
Adjacency matrix or biadjacency matrix of the graph.
|
|
125
|
-
force_bipartite :
|
|
126
|
-
If ``True``, force the input matrix to be considered as a biadjacency matrix even if square.
|
|
127
|
-
Returns
|
|
128
|
-
-------
|
|
129
|
-
self: :class:`LouvainNE`
|
|
130
|
-
"""
|
|
131
|
-
# input
|
|
132
|
-
input_matrix = check_format(input_matrix)
|
|
133
|
-
adjacency, self.bipartite = get_adjacency(input_matrix, force_bipartite=force_bipartite)
|
|
134
|
-
n = adjacency.shape[0]
|
|
135
|
-
|
|
136
|
-
# embedding
|
|
137
|
-
self.embedding_ = np.zeros((n, self.n_components))
|
|
138
|
-
self._recursive_louvain(adjacency, 0)
|
|
139
|
-
|
|
140
|
-
if self.bipartite:
|
|
141
|
-
self._split_vars(input_matrix.shape)
|
|
142
|
-
return self
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
"""tests for LouvainNE"""
|
|
4
|
-
import unittest
|
|
5
|
-
|
|
6
|
-
from sknetwork.data.test_graphs import test_graph, test_disconnected_graph, test_digraph, test_bigraph
|
|
7
|
-
from sknetwork.embedding import LouvainNE
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class TestLouvainNE(unittest.TestCase):
|
|
11
|
-
|
|
12
|
-
def test_louvain_hierarchy(self):
|
|
13
|
-
louvain = LouvainNE()
|
|
14
|
-
for adjacency in [test_graph(), test_disconnected_graph(), test_digraph()]:
|
|
15
|
-
self.assertTupleEqual(louvain.fit_transform(adjacency).shape, (10, 2))
|
|
16
|
-
louvain.fit(test_bigraph())
|
|
17
|
-
self.assertTupleEqual(louvain.embedding_.shape, (6, 2))
|
|
18
|
-
louvain.fit(test_graph(), force_bipartite=True)
|
|
19
|
-
self.assertTupleEqual(louvain.embedding_.shape, (10, 2))
|
|
File without changes
|
|
File without changes
|