scikit-network 0.33.3__cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.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.

Files changed (229) hide show
  1. scikit_network-0.33.3.dist-info/METADATA +122 -0
  2. scikit_network-0.33.3.dist-info/RECORD +229 -0
  3. scikit_network-0.33.3.dist-info/WHEEL +6 -0
  4. scikit_network-0.33.3.dist-info/licenses/AUTHORS.rst +43 -0
  5. scikit_network-0.33.3.dist-info/licenses/LICENSE +34 -0
  6. scikit_network-0.33.3.dist-info/top_level.txt +1 -0
  7. scikit_network.libs/libgomp-d22c30c5.so.1.0.0 +0 -0
  8. sknetwork/__init__.py +21 -0
  9. sknetwork/base.py +67 -0
  10. sknetwork/classification/__init__.py +8 -0
  11. sknetwork/classification/base.py +142 -0
  12. sknetwork/classification/base_rank.py +133 -0
  13. sknetwork/classification/diffusion.py +134 -0
  14. sknetwork/classification/knn.py +139 -0
  15. sknetwork/classification/metrics.py +205 -0
  16. sknetwork/classification/pagerank.py +66 -0
  17. sknetwork/classification/propagation.py +152 -0
  18. sknetwork/classification/tests/__init__.py +1 -0
  19. sknetwork/classification/tests/test_API.py +30 -0
  20. sknetwork/classification/tests/test_diffusion.py +77 -0
  21. sknetwork/classification/tests/test_knn.py +23 -0
  22. sknetwork/classification/tests/test_metrics.py +53 -0
  23. sknetwork/classification/tests/test_pagerank.py +20 -0
  24. sknetwork/classification/tests/test_propagation.py +24 -0
  25. sknetwork/classification/vote.cpp +27587 -0
  26. sknetwork/classification/vote.cpython-313-aarch64-linux-gnu.so +0 -0
  27. sknetwork/classification/vote.pyx +56 -0
  28. sknetwork/clustering/__init__.py +8 -0
  29. sknetwork/clustering/base.py +172 -0
  30. sknetwork/clustering/kcenters.py +253 -0
  31. sknetwork/clustering/leiden.py +242 -0
  32. sknetwork/clustering/leiden_core.cpp +31578 -0
  33. sknetwork/clustering/leiden_core.cpython-313-aarch64-linux-gnu.so +0 -0
  34. sknetwork/clustering/leiden_core.pyx +124 -0
  35. sknetwork/clustering/louvain.py +286 -0
  36. sknetwork/clustering/louvain_core.cpp +31223 -0
  37. sknetwork/clustering/louvain_core.cpython-313-aarch64-linux-gnu.so +0 -0
  38. sknetwork/clustering/louvain_core.pyx +124 -0
  39. sknetwork/clustering/metrics.py +91 -0
  40. sknetwork/clustering/postprocess.py +66 -0
  41. sknetwork/clustering/propagation_clustering.py +104 -0
  42. sknetwork/clustering/tests/__init__.py +1 -0
  43. sknetwork/clustering/tests/test_API.py +38 -0
  44. sknetwork/clustering/tests/test_kcenters.py +60 -0
  45. sknetwork/clustering/tests/test_leiden.py +34 -0
  46. sknetwork/clustering/tests/test_louvain.py +135 -0
  47. sknetwork/clustering/tests/test_metrics.py +50 -0
  48. sknetwork/clustering/tests/test_postprocess.py +39 -0
  49. sknetwork/data/__init__.py +6 -0
  50. sknetwork/data/base.py +33 -0
  51. sknetwork/data/load.py +406 -0
  52. sknetwork/data/models.py +459 -0
  53. sknetwork/data/parse.py +644 -0
  54. sknetwork/data/test_graphs.py +84 -0
  55. sknetwork/data/tests/__init__.py +1 -0
  56. sknetwork/data/tests/test_API.py +30 -0
  57. sknetwork/data/tests/test_base.py +14 -0
  58. sknetwork/data/tests/test_load.py +95 -0
  59. sknetwork/data/tests/test_models.py +52 -0
  60. sknetwork/data/tests/test_parse.py +250 -0
  61. sknetwork/data/tests/test_test_graphs.py +29 -0
  62. sknetwork/data/tests/test_toy_graphs.py +68 -0
  63. sknetwork/data/timeout.py +38 -0
  64. sknetwork/data/toy_graphs.py +611 -0
  65. sknetwork/embedding/__init__.py +8 -0
  66. sknetwork/embedding/base.py +94 -0
  67. sknetwork/embedding/force_atlas.py +198 -0
  68. sknetwork/embedding/louvain_embedding.py +148 -0
  69. sknetwork/embedding/random_projection.py +135 -0
  70. sknetwork/embedding/spectral.py +141 -0
  71. sknetwork/embedding/spring.py +198 -0
  72. sknetwork/embedding/svd.py +359 -0
  73. sknetwork/embedding/tests/__init__.py +1 -0
  74. sknetwork/embedding/tests/test_API.py +49 -0
  75. sknetwork/embedding/tests/test_force_atlas.py +35 -0
  76. sknetwork/embedding/tests/test_louvain_embedding.py +33 -0
  77. sknetwork/embedding/tests/test_random_projection.py +28 -0
  78. sknetwork/embedding/tests/test_spectral.py +81 -0
  79. sknetwork/embedding/tests/test_spring.py +50 -0
  80. sknetwork/embedding/tests/test_svd.py +43 -0
  81. sknetwork/gnn/__init__.py +10 -0
  82. sknetwork/gnn/activation.py +117 -0
  83. sknetwork/gnn/base.py +181 -0
  84. sknetwork/gnn/base_activation.py +90 -0
  85. sknetwork/gnn/base_layer.py +109 -0
  86. sknetwork/gnn/gnn_classifier.py +305 -0
  87. sknetwork/gnn/layer.py +153 -0
  88. sknetwork/gnn/loss.py +180 -0
  89. sknetwork/gnn/neighbor_sampler.py +65 -0
  90. sknetwork/gnn/optimizer.py +164 -0
  91. sknetwork/gnn/tests/__init__.py +1 -0
  92. sknetwork/gnn/tests/test_activation.py +56 -0
  93. sknetwork/gnn/tests/test_base.py +75 -0
  94. sknetwork/gnn/tests/test_base_layer.py +37 -0
  95. sknetwork/gnn/tests/test_gnn_classifier.py +130 -0
  96. sknetwork/gnn/tests/test_layers.py +80 -0
  97. sknetwork/gnn/tests/test_loss.py +33 -0
  98. sknetwork/gnn/tests/test_neigh_sampler.py +23 -0
  99. sknetwork/gnn/tests/test_optimizer.py +43 -0
  100. sknetwork/gnn/tests/test_utils.py +41 -0
  101. sknetwork/gnn/utils.py +127 -0
  102. sknetwork/hierarchy/__init__.py +6 -0
  103. sknetwork/hierarchy/base.py +96 -0
  104. sknetwork/hierarchy/louvain_hierarchy.py +272 -0
  105. sknetwork/hierarchy/metrics.py +234 -0
  106. sknetwork/hierarchy/paris.cpp +37871 -0
  107. sknetwork/hierarchy/paris.cpython-313-aarch64-linux-gnu.so +0 -0
  108. sknetwork/hierarchy/paris.pyx +316 -0
  109. sknetwork/hierarchy/postprocess.py +350 -0
  110. sknetwork/hierarchy/tests/__init__.py +1 -0
  111. sknetwork/hierarchy/tests/test_API.py +24 -0
  112. sknetwork/hierarchy/tests/test_algos.py +34 -0
  113. sknetwork/hierarchy/tests/test_metrics.py +62 -0
  114. sknetwork/hierarchy/tests/test_postprocess.py +57 -0
  115. sknetwork/linalg/__init__.py +9 -0
  116. sknetwork/linalg/basics.py +37 -0
  117. sknetwork/linalg/diteration.cpp +27403 -0
  118. sknetwork/linalg/diteration.cpython-313-aarch64-linux-gnu.so +0 -0
  119. sknetwork/linalg/diteration.pyx +47 -0
  120. sknetwork/linalg/eig_solver.py +93 -0
  121. sknetwork/linalg/laplacian.py +15 -0
  122. sknetwork/linalg/normalizer.py +86 -0
  123. sknetwork/linalg/operators.py +225 -0
  124. sknetwork/linalg/polynome.py +76 -0
  125. sknetwork/linalg/ppr_solver.py +170 -0
  126. sknetwork/linalg/push.cpp +31075 -0
  127. sknetwork/linalg/push.cpython-313-aarch64-linux-gnu.so +0 -0
  128. sknetwork/linalg/push.pyx +71 -0
  129. sknetwork/linalg/sparse_lowrank.py +142 -0
  130. sknetwork/linalg/svd_solver.py +91 -0
  131. sknetwork/linalg/tests/__init__.py +1 -0
  132. sknetwork/linalg/tests/test_eig.py +44 -0
  133. sknetwork/linalg/tests/test_laplacian.py +18 -0
  134. sknetwork/linalg/tests/test_normalization.py +34 -0
  135. sknetwork/linalg/tests/test_operators.py +66 -0
  136. sknetwork/linalg/tests/test_polynome.py +38 -0
  137. sknetwork/linalg/tests/test_ppr.py +50 -0
  138. sknetwork/linalg/tests/test_sparse_lowrank.py +61 -0
  139. sknetwork/linalg/tests/test_svd.py +38 -0
  140. sknetwork/linkpred/__init__.py +2 -0
  141. sknetwork/linkpred/base.py +46 -0
  142. sknetwork/linkpred/nn.py +126 -0
  143. sknetwork/linkpred/tests/__init__.py +1 -0
  144. sknetwork/linkpred/tests/test_nn.py +27 -0
  145. sknetwork/log.py +19 -0
  146. sknetwork/path/__init__.py +5 -0
  147. sknetwork/path/dag.py +54 -0
  148. sknetwork/path/distances.py +98 -0
  149. sknetwork/path/search.py +31 -0
  150. sknetwork/path/shortest_path.py +61 -0
  151. sknetwork/path/tests/__init__.py +1 -0
  152. sknetwork/path/tests/test_dag.py +37 -0
  153. sknetwork/path/tests/test_distances.py +62 -0
  154. sknetwork/path/tests/test_search.py +40 -0
  155. sknetwork/path/tests/test_shortest_path.py +40 -0
  156. sknetwork/ranking/__init__.py +8 -0
  157. sknetwork/ranking/base.py +61 -0
  158. sknetwork/ranking/betweenness.cpp +9710 -0
  159. sknetwork/ranking/betweenness.cpython-313-aarch64-linux-gnu.so +0 -0
  160. sknetwork/ranking/betweenness.pyx +97 -0
  161. sknetwork/ranking/closeness.py +92 -0
  162. sknetwork/ranking/hits.py +94 -0
  163. sknetwork/ranking/katz.py +83 -0
  164. sknetwork/ranking/pagerank.py +110 -0
  165. sknetwork/ranking/postprocess.py +37 -0
  166. sknetwork/ranking/tests/__init__.py +1 -0
  167. sknetwork/ranking/tests/test_API.py +32 -0
  168. sknetwork/ranking/tests/test_betweenness.py +38 -0
  169. sknetwork/ranking/tests/test_closeness.py +30 -0
  170. sknetwork/ranking/tests/test_hits.py +20 -0
  171. sknetwork/ranking/tests/test_pagerank.py +62 -0
  172. sknetwork/ranking/tests/test_postprocess.py +26 -0
  173. sknetwork/regression/__init__.py +4 -0
  174. sknetwork/regression/base.py +61 -0
  175. sknetwork/regression/diffusion.py +210 -0
  176. sknetwork/regression/tests/__init__.py +1 -0
  177. sknetwork/regression/tests/test_API.py +32 -0
  178. sknetwork/regression/tests/test_diffusion.py +56 -0
  179. sknetwork/sknetwork.py +3 -0
  180. sknetwork/test_base.py +35 -0
  181. sknetwork/test_log.py +15 -0
  182. sknetwork/topology/__init__.py +8 -0
  183. sknetwork/topology/cliques.cpp +32568 -0
  184. sknetwork/topology/cliques.cpython-313-aarch64-linux-gnu.so +0 -0
  185. sknetwork/topology/cliques.pyx +149 -0
  186. sknetwork/topology/core.cpp +30654 -0
  187. sknetwork/topology/core.cpython-313-aarch64-linux-gnu.so +0 -0
  188. sknetwork/topology/core.pyx +90 -0
  189. sknetwork/topology/cycles.py +243 -0
  190. sknetwork/topology/minheap.cpp +27335 -0
  191. sknetwork/topology/minheap.cpython-313-aarch64-linux-gnu.so +0 -0
  192. sknetwork/topology/minheap.pxd +20 -0
  193. sknetwork/topology/minheap.pyx +109 -0
  194. sknetwork/topology/structure.py +194 -0
  195. sknetwork/topology/tests/__init__.py +1 -0
  196. sknetwork/topology/tests/test_cliques.py +28 -0
  197. sknetwork/topology/tests/test_core.py +19 -0
  198. sknetwork/topology/tests/test_cycles.py +65 -0
  199. sknetwork/topology/tests/test_structure.py +85 -0
  200. sknetwork/topology/tests/test_triangles.py +38 -0
  201. sknetwork/topology/tests/test_wl.py +72 -0
  202. sknetwork/topology/triangles.cpp +8897 -0
  203. sknetwork/topology/triangles.cpython-313-aarch64-linux-gnu.so +0 -0
  204. sknetwork/topology/triangles.pyx +151 -0
  205. sknetwork/topology/weisfeiler_lehman.py +133 -0
  206. sknetwork/topology/weisfeiler_lehman_core.cpp +27638 -0
  207. sknetwork/topology/weisfeiler_lehman_core.cpython-313-aarch64-linux-gnu.so +0 -0
  208. sknetwork/topology/weisfeiler_lehman_core.pyx +114 -0
  209. sknetwork/utils/__init__.py +7 -0
  210. sknetwork/utils/check.py +355 -0
  211. sknetwork/utils/format.py +221 -0
  212. sknetwork/utils/membership.py +82 -0
  213. sknetwork/utils/neighbors.py +115 -0
  214. sknetwork/utils/tests/__init__.py +1 -0
  215. sknetwork/utils/tests/test_check.py +190 -0
  216. sknetwork/utils/tests/test_format.py +63 -0
  217. sknetwork/utils/tests/test_membership.py +24 -0
  218. sknetwork/utils/tests/test_neighbors.py +41 -0
  219. sknetwork/utils/tests/test_tfidf.py +18 -0
  220. sknetwork/utils/tests/test_values.py +66 -0
  221. sknetwork/utils/tfidf.py +37 -0
  222. sknetwork/utils/values.py +76 -0
  223. sknetwork/visualization/__init__.py +4 -0
  224. sknetwork/visualization/colors.py +34 -0
  225. sknetwork/visualization/dendrograms.py +277 -0
  226. sknetwork/visualization/graphs.py +1039 -0
  227. sknetwork/visualization/tests/__init__.py +1 -0
  228. sknetwork/visualization/tests/test_dendrograms.py +53 -0
  229. sknetwork/visualization/tests/test_graphs.py +176 -0
@@ -0,0 +1,611 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Created on Nov 29, 2018
5
+ @author: Quentin Lutz <qlutz@enst.fr>
6
+ @author: Nathan de Lara <nathan.delara@polytechnique.org>
7
+ @author: Thomas Bonald <tbonald@enst.fr>
8
+ """
9
+ from typing import Union
10
+
11
+ import numpy as np
12
+ from scipy import sparse
13
+
14
+ from sknetwork.data.base import Dataset
15
+
16
+
17
+ def house(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
18
+ """House graph.
19
+
20
+ * Undirected graph
21
+ * 5 nodes, 6 edges
22
+
23
+ Parameters
24
+ ----------
25
+ metadata :
26
+ If ``True``, return a `Dataset` object with metadata.
27
+
28
+ Returns
29
+ -------
30
+ adjacency or graph : Union[sparse.csr_matrix, Dataset]
31
+ Adjacency matrix or graph with metadata (positions).
32
+
33
+ Example
34
+ -------
35
+ >>> from sknetwork.data import house
36
+ >>> adjacency = house()
37
+ >>> adjacency.shape
38
+ (5, 5)
39
+
40
+ """
41
+ row = np.array([0, 0, 1, 1, 2, 3])
42
+ col = np.array([1, 4, 2, 4, 3, 4])
43
+ adjacency = sparse.csr_matrix((np.ones(len(row), dtype=int), (row, col)), shape=(5, 5))
44
+ adjacency = (adjacency + adjacency.T).astype(bool)
45
+
46
+ if metadata:
47
+ x = np.array([0, -1, -1, 1, 1])
48
+ y = np.array([2, 1, -1, -1, 1])
49
+ graph = Dataset()
50
+ graph.adjacency = adjacency
51
+ graph.position = np.vstack((x, y)).T
52
+ graph.name = 'house'
53
+ return graph
54
+ else:
55
+ return adjacency
56
+
57
+
58
+ def bow_tie(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
59
+ """Bow tie graph.
60
+
61
+ * Undirected graph
62
+ * 5 nodes, 6 edges
63
+
64
+ Parameters
65
+ ----------
66
+ metadata :
67
+ If ``True``, return a `Dataset` object with metadata.
68
+
69
+ Returns
70
+ -------
71
+ adjacency or graph : Union[sparse.csr_matrix, Dataset]
72
+ Adjacency matrix or graph with metadata (positions).
73
+
74
+ Example
75
+ -------
76
+ >>> from sknetwork.data import bow_tie
77
+ >>> adjacency = bow_tie()
78
+ >>> adjacency.shape
79
+ (5, 5)
80
+ """
81
+ row = np.array([0, 0, 0, 0, 1, 3])
82
+ col = np.array([1, 2, 3, 4, 2, 4])
83
+ adjacency = sparse.csr_matrix((np.ones(len(row), dtype=int), (row, col)), shape=(5, 5))
84
+ adjacency = (adjacency + adjacency.T).astype(bool)
85
+
86
+ if metadata:
87
+ x = np.array([0, -1, 1, -1, 1])
88
+ y = np.array([0, 1, 1, -1, -1])
89
+ graph = Dataset()
90
+ graph.adjacency = adjacency
91
+ graph.position = np.vstack((x, y)).T
92
+ graph.name = 'bow_tie'
93
+ return graph
94
+ else:
95
+ return adjacency
96
+
97
+
98
+ def karate_club(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
99
+ """Karate club graph.
100
+
101
+ * Undirected graph
102
+ * 34 nodes, 78 edges
103
+ * 2 labels
104
+
105
+ Parameters
106
+ ----------
107
+ metadata :
108
+ If ``True``, return a `Dataset` object with metadata.
109
+
110
+ Returns
111
+ -------
112
+ adjacency or graph : Union[sparse.csr_matrix, Dataset]
113
+ Adjacency matrix or graph with metadata (labels, positions).
114
+
115
+ Example
116
+ -------
117
+ >>> from sknetwork.data import karate_club
118
+ >>> adjacency = karate_club()
119
+ >>> adjacency.shape
120
+ (34, 34)
121
+
122
+ References
123
+ ----------
124
+ Zachary's karate club graph
125
+ https://en.wikipedia.org/wiki/Zachary%27s_karate_club
126
+ """
127
+ row = np.array(
128
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
129
+ 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3,
130
+ 3, 4, 4, 5, 5, 5, 6, 8, 8, 8, 9, 13, 14, 14, 15, 15, 18,
131
+ 18, 19, 20, 20, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24, 25, 26, 26,
132
+ 27, 28, 28, 29, 29, 30, 30, 31, 31, 32])
133
+ col = np.array(
134
+ [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 17, 19, 21, 31, 2,
135
+ 3, 7, 13, 17, 19, 21, 30, 3, 7, 8, 9, 13, 27, 28, 32, 7, 12,
136
+ 13, 6, 10, 6, 10, 16, 16, 30, 32, 33, 33, 33, 32, 33, 32, 33, 32,
137
+ 33, 33, 32, 33, 32, 33, 25, 27, 29, 32, 33, 25, 27, 31, 31, 29, 33,
138
+ 33, 31, 33, 32, 33, 32, 33, 32, 33, 33])
139
+ adjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(34, 34))
140
+ adjacency = sparse.csr_matrix(adjacency + adjacency.T, dtype=bool)
141
+
142
+ if metadata:
143
+ labels = np.array(
144
+ [1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
145
+ x = np.array(
146
+ [0.04, 0.24, 0.01, 0.13, 0.02, -0.08, 0.04, 0.21, 0.08, -0.11, -0.13, -0.28, 0.2, 0.08,
147
+ 0.23, 0.06, -0.06, 0.32, 0.15, 0.19, 0.27, 0.39, -0.04, -0.26, -0.51, -0.49, -0.19, -0.28,
148
+ -0.11, -0.17, 0.22, -0.21, 0.03, 0])
149
+ y = np.array(
150
+ [-0.33, -0.15, -0.01, -0.28, -0.64, -0.75, -0.76, -0.25, 0.09, 0.23, -0.62, -0.4, -0.53, -0.07,
151
+ 0.55, 0.64, -1., -0.42, 0.6, -0.01, 0.45, -0.34, 0.61, 0.41, 0.14, 0.28, 0.68, 0.21,
152
+ 0.12, 0.54, 0.19, 0.09, 0.38, 0.33])
153
+ graph = Dataset()
154
+ graph.adjacency = adjacency
155
+ graph.labels = labels
156
+ graph.position = np.vstack((x, y)).T
157
+ graph.name = 'karate_club'
158
+ return graph
159
+ else:
160
+ return adjacency
161
+
162
+
163
+ def miserables(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
164
+ """Co-occurrence graph of the characters in the novel Les miserables by Victor Hugo.
165
+
166
+ * Undirected graph
167
+ * 77 nodes, 508 edges
168
+ * Names of characters
169
+
170
+ Parameters
171
+ ----------
172
+ metadata :
173
+ If ``True``, return a `Dataset` object with metadata.
174
+
175
+ Returns
176
+ -------
177
+ adjacency or graph : Union[sparse.csr_matrix, Dataset]
178
+ Adjacency matrix or graph with metadata (names, positions).
179
+
180
+ Example
181
+ -------
182
+ >>> from sknetwork.data import miserables
183
+ >>> adjacency = miserables()
184
+ >>> adjacency.shape
185
+ (77, 77)
186
+ """
187
+ row = np.array(
188
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 3, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
189
+ 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
190
+ 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 19, 19, 19, 19,
191
+ 20, 20, 20, 21, 21, 22, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25,
192
+ 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27,
193
+ 27, 27, 27, 27, 27, 28, 28, 29, 29, 29, 29, 29, 30, 34, 34, 34, 34, 35, 35, 35, 36, 36, 37, 39,
194
+ 39, 41, 41, 41, 41, 41, 41, 41, 41, 41, 46, 47, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
195
+ 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 51, 51, 51, 51, 54, 55, 55, 55, 55, 55, 55, 55, 55,
196
+ 55, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59,
197
+ 59, 59, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 63, 63, 63, 63, 64, 64,
198
+ 64, 65, 65, 66, 68, 68, 68, 68, 69, 69, 69, 70, 70, 71, 73])
199
+ col = np.array(
200
+ [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 3, 11, 11, 11, 12, 13, 14,
201
+ 15, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 43,
202
+ 44, 48, 49, 51, 55, 58, 64, 68, 69, 70, 71, 72, 23, 17, 18, 19, 20,
203
+ 21, 22, 23, 26, 55, 18, 19, 20, 21, 22, 23, 19, 20, 21, 22, 23, 20,
204
+ 21, 22, 23, 21, 22, 23, 22, 23, 23, 24, 25, 27, 29, 30, 31, 25, 26,
205
+ 27, 41, 42, 50, 68, 69, 70, 26, 27, 39, 40, 41, 42, 48, 55, 68, 69,
206
+ 70, 71, 75, 27, 43, 49, 51, 54, 55, 72, 28, 29, 31, 33, 43, 48, 58,
207
+ 68, 69, 70, 71, 72, 44, 45, 34, 35, 36, 37, 38, 31, 35, 36, 37, 38,
208
+ 36, 37, 38, 37, 38, 38, 52, 55, 42, 55, 57, 62, 68, 69, 70, 71, 75,
209
+ 47, 48, 55, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 68, 69, 71, 73,
210
+ 74, 75, 76, 50, 51, 54, 55, 56, 52, 53, 54, 55, 55, 56, 57, 58, 59,
211
+ 61, 62, 63, 64, 65, 58, 59, 61, 62, 63, 64, 65, 67, 59, 60, 61, 62,
212
+ 63, 64, 65, 66, 70, 76, 60, 61, 62, 63, 64, 65, 66, 61, 62, 63, 64,
213
+ 65, 66, 62, 63, 64, 65, 66, 63, 64, 65, 66, 76, 64, 65, 66, 76, 65,
214
+ 66, 76, 66, 76, 76, 69, 70, 71, 75, 70, 71, 75, 71, 75, 75, 74])
215
+ data = np.array(
216
+ [1, 8, 10, 1, 1, 1, 1, 2, 1, 5, 6, 3, 3, 1, 1, 1, 1,
217
+ 1, 9, 7, 12, 31, 17, 8, 2, 3, 1, 2, 3, 3, 2, 2, 2, 3,
218
+ 1, 1, 2, 2, 19, 4, 1, 1, 1, 1, 1, 1, 2, 4, 4, 4, 3,
219
+ 3, 3, 3, 1, 1, 4, 4, 3, 3, 3, 3, 4, 3, 3, 3, 3, 4,
220
+ 3, 3, 3, 5, 4, 4, 4, 4, 4, 2, 1, 5, 1, 1, 2, 13, 4,
221
+ 1, 2, 1, 1, 1, 1, 1, 1, 5, 1, 1, 3, 2, 1, 2, 5, 6,
222
+ 4, 1, 3, 1, 1, 3, 2, 1, 21, 2, 1, 1, 1, 1, 1, 1, 6,
223
+ 1, 2, 1, 1, 1, 3, 2, 2, 2, 1, 1, 1, 2, 3, 2, 2, 2,
224
+ 2, 2, 2, 2, 2, 2, 1, 1, 2, 5, 1, 1, 1, 1, 1, 1, 1,
225
+ 1, 2, 4, 1, 7, 6, 1, 2, 7, 5, 5, 3, 1, 1, 1, 1, 2,
226
+ 2, 1, 1, 1, 9, 1, 12, 1, 1, 1, 2, 6, 1, 1, 1, 7, 5,
227
+ 1, 9, 1, 5, 2, 1, 2, 1, 2, 2, 1, 1, 3, 15, 4, 6, 17,
228
+ 4, 10, 5, 3, 1, 1, 2, 5, 13, 5, 9, 5, 1, 2, 3, 2, 2,
229
+ 2, 1, 6, 3, 6, 5, 1, 6, 12, 5, 2, 1, 4, 5, 1, 1, 7,
230
+ 3, 1, 2, 1, 1, 6, 4, 2, 3, 4, 2, 3, 2, 1, 1, 3])
231
+ adjacency = sparse.csr_matrix((data, (row, col)), shape=(77, 77))
232
+ adjacency = adjacency + adjacency.T
233
+
234
+ if metadata:
235
+ names = ['Myriel', 'Napoleon', 'Mlle Baptistine', 'Mme Magloire', 'Countess de Lo', 'Geborand',
236
+ 'Champtercier', 'Cravatte', 'Count', 'Old man', 'Labarre', 'Valjean', 'Marguerite', 'Mme Der',
237
+ 'Isabeau', 'Gervais', 'Tholomyes', 'Listolier', 'Fameuil', 'Blacheville', 'Favourite', 'Dahlia',
238
+ 'Zephine', 'Fantine', 'Mme Thenardier', 'Thenardier', 'Cosette', 'Javert', 'Fauchelevent',
239
+ 'Bamatabois', 'Perpetue', 'Simplice', 'Scaufflaire', 'Woman1', 'Judge', 'Champmathieu', 'Brevet',
240
+ 'Chenildieu', 'Cochepaille', 'Pontmercy', 'Boulatruelle', 'Eponine', 'Anzelma', 'Woman2',
241
+ 'Mother Innocent', 'Gribier', 'Jondrette', 'Mme Burgon', 'Gavroche', 'Gillenormand', 'Magnon',
242
+ 'Mlle Gillenormand', 'Mme Pontmercy', 'Mlle Vaubois', 'Lt Gillenormand', 'Marius', 'Baroness',
243
+ 'Mabeuf', 'Enjolras', 'Combeferre', 'Prouvaire', 'Feuilly', 'Courfeyrac', 'Bahorel', 'Bossuet',
244
+ 'Joly', 'Grantaire', 'MotherPlutarch', 'Gueulemer', 'Babet', 'Claquesous', 'Montparnasse',
245
+ 'Toussaint', 'Child1', 'Child2', 'Brujon', 'Mme Hucheloup']
246
+ x = np.array(
247
+ [0.53, 0.98, 0.41, 0.4, 1., 0.92, 0.84, 0.74, 0.78, 1., 0.51, 0.09, -0., 0.29, 0.37,
248
+ 0.41, -0.35, -0.46, -0.42, -0.46, -0.41, -0.37, -0.36, -0.2, -0.06, -0.04, -0.01, -0.02, 0.33,
249
+ 0.17, -0.29, -0.1, 0.58, 0.29, 0.29, 0.26, 0.29, 0.37, 0.35, 0.04, -0.01, -0.18, -0.09,
250
+ 0.2, 0.51, 0.7, -0.95, -0.7, -0.37, -0.08, -0.18, -0.05, 0.04, -0.12, -0.06, -0.13, -0.24, -0.48,
251
+ -0.25, -0.33, -0.43, -0.39, -0.33, -0.42, -0.31, -0.38, -0.48, -0.74, -0.08, -0.1, -0.02, -0.1,
252
+ 0.14, -0.76, -0.75, -0.18, -0.58])
253
+ y = np.array(
254
+ [-0.23, -0.42, -0.14, -0.18, -0.31, -0.52, -0.6, -0.65, -0.38, -0.19, 0.39, 0.03, 0.44, -0.44,
255
+ 0.51, -0.36, 0.27, 0.37, 0.4, 0.32, 0.32, 0.36, 0.4, 0.2, 0.07, 0.14, -0.05, 0.06, 0.06,
256
+ 0.24, -0.26, -0.1, 0.24, -0.04, 0.17, 0.23, 0.31, 0.21, 0.27, -0.36, 0.69, 0.11, 0.38, -0.09,
257
+ 0.05, 0.12, 0.82, 0.44, 0.06, -0.2, -0.4, -0.28, -0.68, -0.79, -0.4, -0.07, -0.51, -0.17, -0.03,
258
+ -0.09, -0.14, -0.04, -0.04, -0.07, -0.06, -0.11, -0.06, -0.35, 0.24, 0.19, 0.22, 0.29, -0.2,
259
+ 0.06, 0.14, 0.3, -0.1])
260
+ graph = Dataset()
261
+ graph.adjacency = adjacency
262
+ graph.names = np.array(names)
263
+ graph.position = np.vstack((x, y)).T
264
+ graph.name = 'miserables'
265
+ return graph
266
+ else:
267
+ return adjacency
268
+
269
+
270
+ def painters(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
271
+ """Graph of links between some famous painters on Wikipedia.
272
+
273
+ * Directed graph
274
+ * 14 nodes, 50 edges
275
+ * Names of painters
276
+
277
+ Parameters
278
+ ----------
279
+ metadata :
280
+ If ``True``, return a `Dataset` object with metadata.
281
+
282
+ Returns
283
+ -------
284
+ adjacency or graph : Union[sparse.csr_matrix, Dataset]
285
+ Adjacency matrix or graph with metadata (names, positions).
286
+
287
+ Example
288
+ -------
289
+ >>> from sknetwork.data import painters
290
+ >>> adjacency = painters()
291
+ >>> adjacency.shape
292
+ (14, 14)
293
+ """
294
+ row = np.array(
295
+ [0, 0, 1, 1, 2, 3, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5,
296
+ 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9,
297
+ 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13])
298
+ col = np.array(
299
+ [3, 10, 3, 12, 9, 0, 1, 7, 11, 12, 2, 5, 9, 2, 4, 8, 9,
300
+ 0, 13, 1, 2, 3, 8, 11, 12, 0, 1, 4, 5, 7, 10, 11, 2, 4,
301
+ 0, 3, 8, 11, 12, 0, 1, 3, 10, 12, 1, 3, 4, 7, 6, 8])
302
+ adjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(14, 14))
303
+
304
+ if metadata:
305
+ names = np.array(
306
+ ['Pablo Picasso', 'Claude Monet', 'Michel Angelo', 'Edouard Manet', 'Peter Paul Rubens', 'Rembrandt',
307
+ 'Gustav Klimt', 'Edgar Degas', 'Vincent van Gogh', 'Leonardo da Vinci', 'Henri Matisse', 'Paul Cezanne',
308
+ 'Pierre-Auguste Renoir', 'Egon Schiele'])
309
+ x = np.array(
310
+ [0.24, -0.47, -0.3, -0.31, -0.08, 0.12, 0.78, -0.36, 0.11,
311
+ -0.06, -0.02, -0.12, -0.24, 0.73])
312
+ y = np.array(
313
+ [0.53, 0.19, -0.71, 0.44, -0.48, -0.65, 0.69, -0.11, 0.01,
314
+ -1., 0.49, 0.28, 0.06, 0.27])
315
+ graph = Dataset()
316
+ graph.adjacency = adjacency
317
+ graph.names = names
318
+ graph.position = np.stack((x, y)).T
319
+ graph.name = 'painters'
320
+ return graph
321
+ else:
322
+ return adjacency
323
+
324
+
325
+ def hourglass(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
326
+ """Hourglass graph.
327
+
328
+ * Bipartite graph
329
+ * 4 nodes, 4 edges
330
+
331
+ Returns
332
+ -------
333
+ biadjacency or graph : Union[sparse.csr_matrix, Dataset]
334
+ Biadjacency matrix or graph.
335
+
336
+ Example
337
+ -------
338
+ >>> from sknetwork.data import hourglass
339
+ >>> biadjacency = hourglass()
340
+ >>> biadjacency.shape
341
+ (2, 2)
342
+ """
343
+ biadjacency = sparse.csr_matrix(np.ones((2, 2), dtype=bool))
344
+ if metadata:
345
+ graph = Dataset()
346
+ graph.biadjacency = biadjacency
347
+ return graph
348
+ else:
349
+ return biadjacency
350
+
351
+
352
+ def star_wars(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
353
+ """Bipartite graph connecting some Star Wars villains to the movies in which they appear.
354
+
355
+ * Bipartite graph
356
+ * 7 nodes (4 villains, 3 movies), 8 edges
357
+ * Names of villains and movies
358
+
359
+ Parameters
360
+ ----------
361
+ metadata :
362
+ If ``True``, return a `Dataset` object with metadata.
363
+
364
+ Returns
365
+ -------
366
+ biadjacency or graph : Union[sparse.csr_matrix, Dataset]
367
+ Biadjacency matrix or graph with metadata (names).
368
+
369
+ Example
370
+ -------
371
+ >>> from sknetwork.data import star_wars
372
+ >>> biadjacency = star_wars()
373
+ >>> biadjacency.shape
374
+ (4, 3)
375
+ """
376
+ row = np.array([0, 0, 1, 2, 2, 2, 3, 3])
377
+ col = np.array([0, 2, 0, 0, 1, 2, 1, 2])
378
+ biadjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(4, 3))
379
+
380
+ if metadata:
381
+ villains = np.array(['Jabba', 'Greedo', 'Vader', 'Boba'])
382
+ movies = np.array(['A New Hope', 'The Empire Strikes Back', 'Return Of The Jedi'])
383
+ graph = Dataset()
384
+ graph.biadjacency = biadjacency
385
+ graph.names = villains
386
+ graph.names_row = villains
387
+ graph.names_col = movies
388
+ graph.name = 'star_wars'
389
+ return graph
390
+ else:
391
+ return biadjacency
392
+
393
+
394
+ def movie_actor(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
395
+ """Bipartite graph connecting movies to some actors starring in them.
396
+
397
+ * Bipartite graph
398
+ * 32 nodes (15 movies, 17 actors), 43 edges
399
+ * Names of movies (rows) and actors (columns)
400
+
401
+ Parameters
402
+ ----------
403
+ metadata :
404
+ If ``True``, return a `Dataset` object with metadata.
405
+
406
+ Returns
407
+ -------
408
+ biadjacency or dataset : Union[sparse.csr_matrix, Dataset]
409
+ Biadjacency matrix or dataset with metadata (names of movies and actors).
410
+
411
+ Example
412
+ -------
413
+ >>> from sknetwork.data import movie_actor
414
+ >>> biadjacency = movie_actor()
415
+ >>> biadjacency.shape
416
+ (15, 17)
417
+ """
418
+ row = np.array(
419
+ [0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 6,
420
+ 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11,
421
+ 12, 12, 12, 13, 13, 14, 14])
422
+ col = np.array(
423
+ [0, 1, 2, 1, 2, 3, 3, 4, 5, 8, 4, 6, 0, 6, 4, 7, 4,
424
+ 7, 8, 3, 8, 9, 10, 11, 12, 15, 0, 11, 12, 9, 10, 13, 16, 5, 9, 13,
425
+ 1, 9, 15, 12, 14, 14, 16])
426
+ biadjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(15, 17))
427
+
428
+ if metadata:
429
+ movies = np.array(
430
+ ['Inception', 'The Dark Knight Rises', 'The Big Short', 'Drive', 'The Great Gatsby', 'La La Land',
431
+ 'Crazy Stupid Love', 'Vice', 'The Grand Budapest Hotel', 'Aviator', '007 Spectre', 'Inglourious Basterds',
432
+ 'Midnight In Paris', 'Murder on the Orient Express', "Pirates of the Caribbean: At World's End"])
433
+ actors = np.array(
434
+ ['Leonardo DiCaprio', 'Marion Cotillard', 'Joseph Gordon Lewitt', 'Christian Bale', 'Ryan Gosling',
435
+ 'Brad Pitt', 'Carey Mulligan', 'Emma Stone', 'Steve Carell', 'Lea Seydoux', 'Ralph Fiennes', 'Jude Law',
436
+ 'Willem Dafoe', 'Christophe Waltz', 'Johnny Depp', 'Owen Wilson', 'Naomie Harris'])
437
+ dataset = Dataset()
438
+ dataset.biadjacency = biadjacency
439
+ dataset.names = movies
440
+ dataset.names_row = movies
441
+ dataset.names_col = actors
442
+ dataset.name = 'movie_actor'
443
+ return dataset
444
+ else:
445
+ return biadjacency
446
+
447
+
448
+ def art_philo_science(metadata: bool = False) -> Union[sparse.csr_matrix, Dataset]:
449
+ """Wikipedia links between 30 articles (10 artists, 10 philosophers, 10 scientists).
450
+
451
+ * Directed graph
452
+ * 30 nodes, 240 edges
453
+ * Names of articles
454
+
455
+ Metadata includes the occurence of 11 words in the abstract of these articles.
456
+
457
+ Parameters
458
+ ----------
459
+ metadata :
460
+ If ``True``, return a `Dataset` object with metadata.
461
+
462
+ Returns
463
+ -------
464
+ adjacency or graph : Union[sparse.csr_matrix, Dataset]
465
+ Adjacency matrix or graph with metadata (names, positions, labels, names_labels,
466
+ biadjacency, names_col).
467
+
468
+ Example
469
+ -------
470
+ >>> from sknetwork.data import art_philo_science
471
+ >>> adjacency = art_philo_science()
472
+ >>> adjacency.shape
473
+ (30, 30)
474
+ """
475
+ row = np.array(
476
+ [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
477
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4,
478
+ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6,
479
+ 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8,
480
+ 8, 8, 8, 8, 8, 9, 9, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12,
481
+ 12, 12, 13, 13, 13, 14, 14, 14, 14, 14, 15, 15, 15, 16, 16, 16, 17,
482
+ 17, 17, 17, 18, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
483
+ 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
484
+ 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23,
485
+ 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24,
486
+ 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25,
487
+ 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
488
+ 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
489
+ 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29,
490
+ 29, 29])
491
+ col = np.array(
492
+ [1, 5, 6, 7, 20, 21, 23, 24, 25, 26, 27, 28, 0, 5, 7, 9, 12,
493
+ 16, 20, 21, 24, 25, 26, 27, 28, 3, 20, 0, 2, 26, 7, 20, 21, 29,
494
+ 0, 1, 6, 8, 9, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 1,
495
+ 5, 7, 8, 24, 26, 27, 0, 1, 6, 20, 21, 24, 25, 26, 27, 28, 0,
496
+ 5, 6, 7, 9, 27, 1, 25, 0, 18, 19, 20, 12, 16, 17, 11, 12, 14,
497
+ 16, 17, 14, 15, 25, 11, 12, 16, 17, 19, 13, 14, 19, 12, 14, 16, 11,
498
+ 12, 14, 16, 10, 14, 17, 18, 0, 1, 2, 3, 4, 5, 7, 18, 21, 22,
499
+ 23, 24, 25, 26, 27, 28, 29, 0, 1, 4, 5, 7, 18, 20, 22, 23, 24,
500
+ 25, 26, 27, 28, 29, 5, 20, 21, 23, 24, 25, 26, 27, 28, 29, 5, 20,
501
+ 21, 22, 23, 24, 25, 26, 27, 28, 29, 0, 1, 2, 5, 6, 7, 10, 20,
502
+ 21, 22, 23, 25, 26, 27, 28, 29, 0, 1, 5, 7, 9, 13, 20, 21, 22,
503
+ 23, 24, 26, 27, 28, 29, 0, 1, 5, 6, 7, 20, 21, 22, 23, 24, 25,
504
+ 27, 28, 29, 0, 1, 3, 5, 6, 7, 20, 21, 22, 23, 24, 25, 26, 28,
505
+ 0, 1, 5, 7, 9, 20, 21, 22, 23, 24, 25, 26, 27, 29, 4, 18, 20,
506
+ 21, 22])
507
+ adjacency = sparse.csr_matrix((np.ones(len(row), dtype=bool), (row, col)), shape=(30, 30))
508
+
509
+ if metadata:
510
+ names = np.array(
511
+ ['Isaac Newton',
512
+ 'Albert Einstein',
513
+ 'Carl Linnaeus',
514
+ 'Charles Darwin',
515
+ 'Ptolemy',
516
+ 'Gottfried Wilhelm Leibniz',
517
+ 'Carl Friedrich Gauss',
518
+ 'Galileo Galilei',
519
+ 'Leonhard Euler',
520
+ 'John von Neumann',
521
+ 'Leonardo da Vinci',
522
+ 'Richard Wagner',
523
+ 'Ludwig van Beethoven',
524
+ 'Bob Dylan',
525
+ 'Igor Stravinsky',
526
+ 'The Beatles',
527
+ 'Wolfgang Amadeus Mozart',
528
+ 'Richard Strauss',
529
+ 'Raphael',
530
+ 'Pablo Picasso',
531
+ 'Aristotle',
532
+ 'Plato',
533
+ 'Augustine of Hippo',
534
+ 'Thomas Aquinas',
535
+ 'Immanuel Kant',
536
+ 'Bertrand Russell',
537
+ 'David Hume',
538
+ 'René Descartes',
539
+ 'John Stuart Mill',
540
+ 'Socrates'])
541
+ labels = np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1,
542
+ 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
543
+ names_labels = np.array(['science', 'arts', 'philosophy'])
544
+ position = np.array(
545
+ [[0.25, 0.57],
546
+ [0.28, 0.37],
547
+ [-0.08, 0.82],
548
+ [0.08, 0.87],
549
+ [-0.08, 0.49],
550
+ [0.31, 0.58],
551
+ [0.41, 0.66],
552
+ [0.31, 0.51],
553
+ [0.53, 0.65],
554
+ [0.48, 0.42],
555
+ [-0.02, 0.29],
556
+ [0.25, -0.44],
557
+ [0.23, -0.22],
558
+ [0.02, 0.03],
559
+ [0.07, -0.26],
560
+ [-0.16, -0.23],
561
+ [0.28, -0.15],
562
+ [0.12, -0.38],
563
+ [-0.14, 0.29],
564
+ [-0.09, -0.1],
565
+ [0.09, 0.57],
566
+ [0.12, 0.5],
567
+ [0.16, 0.7],
568
+ [0.12, 0.66],
569
+ [0.17, 0.57],
570
+ [0.2, 0.44],
571
+ [0.22, 0.64],
572
+ [0.28, 0.65],
573
+ [0.23, 0.51],
574
+ [-0., 0.57]])
575
+ row = np.array(
576
+ [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3,
577
+ 3, 3, 3, 4, 4, 5, 5, 5, 5, 5, 6, 7, 7, 7, 7, 8, 8,
578
+ 8, 8, 8, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 12, 12, 12,
579
+ 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 19, 19, 19, 19, 20, 20, 20,
580
+ 20, 20, 20, 21, 21, 21, 21, 22, 22, 23, 23, 23, 23, 23, 24, 24, 24,
581
+ 25, 25, 25, 26, 26, 27, 27, 27, 27, 28, 28, 28, 29, 29, 29, 29])
582
+ col = np.array(
583
+ [1, 2, 4, 5, 10, 2, 3, 4, 5, 8, 1, 4, 8, 10, 1, 2, 4,
584
+ 5, 8, 10, 2, 9, 2, 5, 7, 8, 9, 5, 1, 4, 5, 8, 1, 2,
585
+ 3, 5, 8, 2, 4, 5, 0, 4, 5, 6, 8, 5, 8, 9, 1, 4, 6,
586
+ 4, 10, 9, 4, 9, 4, 6, 4, 8, 9, 0, 2, 8, 9, 1, 2, 3,
587
+ 7, 8, 9, 2, 3, 4, 5, 2, 5, 1, 2, 3, 4, 8, 2, 4, 8,
588
+ 2, 7, 9, 2, 4, 3, 4, 8, 9, 2, 9, 10, 5, 6, 8, 10])
589
+ data = np.array(
590
+ [2, 2, 3, 1, 1, 15, 1, 2, 2, 2, 1, 1, 3, 1, 1, 7, 2,
591
+ 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 1, 1, 1, 1, 2, 3, 3,
592
+ 1, 1, 1, 6, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 1, 1, 2,
593
+ 4, 1, 2, 2, 1, 3, 3, 1, 1, 1, 2, 1, 1, 3, 2, 1, 1,
594
+ 4, 1, 2, 1, 1, 1, 1, 1, 1, 3, 1, 2, 2, 2, 3, 1, 2,
595
+ 2, 5, 1, 1, 1, 3, 1, 5, 5, 3, 1, 1, 1, 1, 1, 2])
596
+ biadjacency = sparse.csr_matrix((data, (row, col)), shape=(30, 11))
597
+ words = np.array(
598
+ ['contribution', 'theory', 'invention', 'time', 'modern',
599
+ 'century', 'study', 'logic', 'school', 'author', 'compose'])
600
+ graph = Dataset()
601
+ graph.adjacency = adjacency
602
+ graph.names = names
603
+ graph.position = position
604
+ graph.labels = labels
605
+ graph.names_labels = names_labels
606
+ graph.biadjacency = biadjacency
607
+ graph.names_col = words
608
+ graph.name = 'art-philo-science'
609
+ return graph
610
+ else:
611
+ return adjacency
@@ -0,0 +1,8 @@
1
+ """embedding module"""
2
+ from sknetwork.embedding.base import BaseEmbedding
3
+ from sknetwork.embedding.force_atlas import ForceAtlas
4
+ from sknetwork.embedding.louvain_embedding import LouvainEmbedding
5
+ from sknetwork.embedding.random_projection import RandomProjection
6
+ from sknetwork.embedding.spectral import Spectral
7
+ from sknetwork.embedding.spring import Spring
8
+ from sknetwork.embedding.svd import SVD, GSVD, PCA