scikit-network 0.33.0__cp312-cp312-macosx_10_9_x86_64.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 (216) hide show
  1. scikit_network-0.33.0.dist-info/AUTHORS.rst +43 -0
  2. scikit_network-0.33.0.dist-info/LICENSE +34 -0
  3. scikit_network-0.33.0.dist-info/METADATA +517 -0
  4. scikit_network-0.33.0.dist-info/RECORD +216 -0
  5. scikit_network-0.33.0.dist-info/WHEEL +5 -0
  6. scikit_network-0.33.0.dist-info/top_level.txt +1 -0
  7. sknetwork/__init__.py +21 -0
  8. sknetwork/base.py +67 -0
  9. sknetwork/classification/__init__.py +8 -0
  10. sknetwork/classification/base.py +142 -0
  11. sknetwork/classification/base_rank.py +133 -0
  12. sknetwork/classification/diffusion.py +134 -0
  13. sknetwork/classification/knn.py +139 -0
  14. sknetwork/classification/metrics.py +205 -0
  15. sknetwork/classification/pagerank.py +66 -0
  16. sknetwork/classification/propagation.py +152 -0
  17. sknetwork/classification/tests/__init__.py +1 -0
  18. sknetwork/classification/tests/test_API.py +30 -0
  19. sknetwork/classification/tests/test_diffusion.py +77 -0
  20. sknetwork/classification/tests/test_knn.py +23 -0
  21. sknetwork/classification/tests/test_metrics.py +53 -0
  22. sknetwork/classification/tests/test_pagerank.py +20 -0
  23. sknetwork/classification/tests/test_propagation.py +24 -0
  24. sknetwork/classification/vote.cpython-312-darwin.so +0 -0
  25. sknetwork/classification/vote.pyx +56 -0
  26. sknetwork/clustering/__init__.py +8 -0
  27. sknetwork/clustering/base.py +172 -0
  28. sknetwork/clustering/kcenters.py +253 -0
  29. sknetwork/clustering/leiden.py +242 -0
  30. sknetwork/clustering/leiden_core.cpython-312-darwin.so +0 -0
  31. sknetwork/clustering/leiden_core.pyx +124 -0
  32. sknetwork/clustering/louvain.py +286 -0
  33. sknetwork/clustering/louvain_core.cpython-312-darwin.so +0 -0
  34. sknetwork/clustering/louvain_core.pyx +124 -0
  35. sknetwork/clustering/metrics.py +91 -0
  36. sknetwork/clustering/postprocess.py +66 -0
  37. sknetwork/clustering/propagation_clustering.py +104 -0
  38. sknetwork/clustering/tests/__init__.py +1 -0
  39. sknetwork/clustering/tests/test_API.py +38 -0
  40. sknetwork/clustering/tests/test_kcenters.py +60 -0
  41. sknetwork/clustering/tests/test_leiden.py +34 -0
  42. sknetwork/clustering/tests/test_louvain.py +129 -0
  43. sknetwork/clustering/tests/test_metrics.py +50 -0
  44. sknetwork/clustering/tests/test_postprocess.py +39 -0
  45. sknetwork/data/__init__.py +6 -0
  46. sknetwork/data/base.py +33 -0
  47. sknetwork/data/load.py +406 -0
  48. sknetwork/data/models.py +459 -0
  49. sknetwork/data/parse.py +644 -0
  50. sknetwork/data/test_graphs.py +84 -0
  51. sknetwork/data/tests/__init__.py +1 -0
  52. sknetwork/data/tests/test_API.py +30 -0
  53. sknetwork/data/tests/test_base.py +14 -0
  54. sknetwork/data/tests/test_load.py +95 -0
  55. sknetwork/data/tests/test_models.py +52 -0
  56. sknetwork/data/tests/test_parse.py +250 -0
  57. sknetwork/data/tests/test_test_graphs.py +29 -0
  58. sknetwork/data/tests/test_toy_graphs.py +68 -0
  59. sknetwork/data/timeout.py +38 -0
  60. sknetwork/data/toy_graphs.py +611 -0
  61. sknetwork/embedding/__init__.py +8 -0
  62. sknetwork/embedding/base.py +94 -0
  63. sknetwork/embedding/force_atlas.py +198 -0
  64. sknetwork/embedding/louvain_embedding.py +148 -0
  65. sknetwork/embedding/random_projection.py +135 -0
  66. sknetwork/embedding/spectral.py +141 -0
  67. sknetwork/embedding/spring.py +198 -0
  68. sknetwork/embedding/svd.py +359 -0
  69. sknetwork/embedding/tests/__init__.py +1 -0
  70. sknetwork/embedding/tests/test_API.py +49 -0
  71. sknetwork/embedding/tests/test_force_atlas.py +35 -0
  72. sknetwork/embedding/tests/test_louvain_embedding.py +33 -0
  73. sknetwork/embedding/tests/test_random_projection.py +28 -0
  74. sknetwork/embedding/tests/test_spectral.py +81 -0
  75. sknetwork/embedding/tests/test_spring.py +50 -0
  76. sknetwork/embedding/tests/test_svd.py +43 -0
  77. sknetwork/gnn/__init__.py +10 -0
  78. sknetwork/gnn/activation.py +117 -0
  79. sknetwork/gnn/base.py +181 -0
  80. sknetwork/gnn/base_activation.py +89 -0
  81. sknetwork/gnn/base_layer.py +109 -0
  82. sknetwork/gnn/gnn_classifier.py +305 -0
  83. sknetwork/gnn/layer.py +153 -0
  84. sknetwork/gnn/loss.py +180 -0
  85. sknetwork/gnn/neighbor_sampler.py +65 -0
  86. sknetwork/gnn/optimizer.py +164 -0
  87. sknetwork/gnn/tests/__init__.py +1 -0
  88. sknetwork/gnn/tests/test_activation.py +56 -0
  89. sknetwork/gnn/tests/test_base.py +75 -0
  90. sknetwork/gnn/tests/test_base_layer.py +37 -0
  91. sknetwork/gnn/tests/test_gnn_classifier.py +130 -0
  92. sknetwork/gnn/tests/test_layers.py +80 -0
  93. sknetwork/gnn/tests/test_loss.py +33 -0
  94. sknetwork/gnn/tests/test_neigh_sampler.py +23 -0
  95. sknetwork/gnn/tests/test_optimizer.py +43 -0
  96. sknetwork/gnn/tests/test_utils.py +41 -0
  97. sknetwork/gnn/utils.py +127 -0
  98. sknetwork/hierarchy/__init__.py +6 -0
  99. sknetwork/hierarchy/base.py +96 -0
  100. sknetwork/hierarchy/louvain_hierarchy.py +272 -0
  101. sknetwork/hierarchy/metrics.py +234 -0
  102. sknetwork/hierarchy/paris.cpython-312-darwin.so +0 -0
  103. sknetwork/hierarchy/paris.pyx +316 -0
  104. sknetwork/hierarchy/postprocess.py +350 -0
  105. sknetwork/hierarchy/tests/__init__.py +1 -0
  106. sknetwork/hierarchy/tests/test_API.py +24 -0
  107. sknetwork/hierarchy/tests/test_algos.py +34 -0
  108. sknetwork/hierarchy/tests/test_metrics.py +62 -0
  109. sknetwork/hierarchy/tests/test_postprocess.py +57 -0
  110. sknetwork/linalg/__init__.py +9 -0
  111. sknetwork/linalg/basics.py +37 -0
  112. sknetwork/linalg/diteration.cpython-312-darwin.so +0 -0
  113. sknetwork/linalg/diteration.pyx +47 -0
  114. sknetwork/linalg/eig_solver.py +93 -0
  115. sknetwork/linalg/laplacian.py +15 -0
  116. sknetwork/linalg/normalizer.py +86 -0
  117. sknetwork/linalg/operators.py +225 -0
  118. sknetwork/linalg/polynome.py +76 -0
  119. sknetwork/linalg/ppr_solver.py +170 -0
  120. sknetwork/linalg/push.cpython-312-darwin.so +0 -0
  121. sknetwork/linalg/push.pyx +71 -0
  122. sknetwork/linalg/sparse_lowrank.py +142 -0
  123. sknetwork/linalg/svd_solver.py +91 -0
  124. sknetwork/linalg/tests/__init__.py +1 -0
  125. sknetwork/linalg/tests/test_eig.py +44 -0
  126. sknetwork/linalg/tests/test_laplacian.py +18 -0
  127. sknetwork/linalg/tests/test_normalization.py +34 -0
  128. sknetwork/linalg/tests/test_operators.py +66 -0
  129. sknetwork/linalg/tests/test_polynome.py +38 -0
  130. sknetwork/linalg/tests/test_ppr.py +50 -0
  131. sknetwork/linalg/tests/test_sparse_lowrank.py +61 -0
  132. sknetwork/linalg/tests/test_svd.py +38 -0
  133. sknetwork/linkpred/__init__.py +2 -0
  134. sknetwork/linkpred/base.py +46 -0
  135. sknetwork/linkpred/nn.py +126 -0
  136. sknetwork/linkpred/tests/__init__.py +1 -0
  137. sknetwork/linkpred/tests/test_nn.py +27 -0
  138. sknetwork/log.py +19 -0
  139. sknetwork/path/__init__.py +5 -0
  140. sknetwork/path/dag.py +54 -0
  141. sknetwork/path/distances.py +98 -0
  142. sknetwork/path/search.py +31 -0
  143. sknetwork/path/shortest_path.py +61 -0
  144. sknetwork/path/tests/__init__.py +1 -0
  145. sknetwork/path/tests/test_dag.py +37 -0
  146. sknetwork/path/tests/test_distances.py +62 -0
  147. sknetwork/path/tests/test_search.py +40 -0
  148. sknetwork/path/tests/test_shortest_path.py +40 -0
  149. sknetwork/ranking/__init__.py +8 -0
  150. sknetwork/ranking/base.py +61 -0
  151. sknetwork/ranking/betweenness.cpython-312-darwin.so +0 -0
  152. sknetwork/ranking/betweenness.pyx +97 -0
  153. sknetwork/ranking/closeness.py +92 -0
  154. sknetwork/ranking/hits.py +94 -0
  155. sknetwork/ranking/katz.py +83 -0
  156. sknetwork/ranking/pagerank.py +110 -0
  157. sknetwork/ranking/postprocess.py +37 -0
  158. sknetwork/ranking/tests/__init__.py +1 -0
  159. sknetwork/ranking/tests/test_API.py +32 -0
  160. sknetwork/ranking/tests/test_betweenness.py +38 -0
  161. sknetwork/ranking/tests/test_closeness.py +30 -0
  162. sknetwork/ranking/tests/test_hits.py +20 -0
  163. sknetwork/ranking/tests/test_pagerank.py +62 -0
  164. sknetwork/ranking/tests/test_postprocess.py +26 -0
  165. sknetwork/regression/__init__.py +4 -0
  166. sknetwork/regression/base.py +61 -0
  167. sknetwork/regression/diffusion.py +210 -0
  168. sknetwork/regression/tests/__init__.py +1 -0
  169. sknetwork/regression/tests/test_API.py +32 -0
  170. sknetwork/regression/tests/test_diffusion.py +56 -0
  171. sknetwork/sknetwork.py +3 -0
  172. sknetwork/test_base.py +35 -0
  173. sknetwork/test_log.py +15 -0
  174. sknetwork/topology/__init__.py +8 -0
  175. sknetwork/topology/cliques.cpython-312-darwin.so +0 -0
  176. sknetwork/topology/cliques.pyx +149 -0
  177. sknetwork/topology/core.cpython-312-darwin.so +0 -0
  178. sknetwork/topology/core.pyx +90 -0
  179. sknetwork/topology/cycles.py +243 -0
  180. sknetwork/topology/minheap.cpython-312-darwin.so +0 -0
  181. sknetwork/topology/minheap.pxd +20 -0
  182. sknetwork/topology/minheap.pyx +109 -0
  183. sknetwork/topology/structure.py +194 -0
  184. sknetwork/topology/tests/__init__.py +1 -0
  185. sknetwork/topology/tests/test_cliques.py +28 -0
  186. sknetwork/topology/tests/test_core.py +19 -0
  187. sknetwork/topology/tests/test_cycles.py +65 -0
  188. sknetwork/topology/tests/test_structure.py +85 -0
  189. sknetwork/topology/tests/test_triangles.py +38 -0
  190. sknetwork/topology/tests/test_wl.py +72 -0
  191. sknetwork/topology/triangles.cpython-312-darwin.so +0 -0
  192. sknetwork/topology/triangles.pyx +151 -0
  193. sknetwork/topology/weisfeiler_lehman.py +133 -0
  194. sknetwork/topology/weisfeiler_lehman_core.cpython-312-darwin.so +0 -0
  195. sknetwork/topology/weisfeiler_lehman_core.pyx +114 -0
  196. sknetwork/utils/__init__.py +7 -0
  197. sknetwork/utils/check.py +355 -0
  198. sknetwork/utils/format.py +221 -0
  199. sknetwork/utils/membership.py +82 -0
  200. sknetwork/utils/neighbors.py +115 -0
  201. sknetwork/utils/tests/__init__.py +1 -0
  202. sknetwork/utils/tests/test_check.py +190 -0
  203. sknetwork/utils/tests/test_format.py +63 -0
  204. sknetwork/utils/tests/test_membership.py +24 -0
  205. sknetwork/utils/tests/test_neighbors.py +41 -0
  206. sknetwork/utils/tests/test_tfidf.py +18 -0
  207. sknetwork/utils/tests/test_values.py +66 -0
  208. sknetwork/utils/tfidf.py +37 -0
  209. sknetwork/utils/values.py +76 -0
  210. sknetwork/visualization/__init__.py +4 -0
  211. sknetwork/visualization/colors.py +34 -0
  212. sknetwork/visualization/dendrograms.py +277 -0
  213. sknetwork/visualization/graphs.py +1039 -0
  214. sknetwork/visualization/tests/__init__.py +1 -0
  215. sknetwork/visualization/tests/test_dendrograms.py +53 -0
  216. sknetwork/visualization/tests/test_graphs.py +176 -0
@@ -0,0 +1,216 @@
1
+ sknetwork/log.py,sha256=ORInAVh_cWIfxwaFWSblSRxwT-jG05XPRnYTTAHSKy4,443
2
+ sknetwork/__init__.py,sha256=SZAI5otUFjW-KNf_HNvDY7g_mjFAcPTNg5SIcBjU4WM,533
3
+ sknetwork/test_log.py,sha256=V4t6Ggi_fh8px5Iq7CDLlJvbXfz24macQ43Ss0tPb5I,319
4
+ sknetwork/test_base.py,sha256=PB_kJ7cNvhBXmlL-KzyLu2hf6mG7b1OQY759aYplW4k,912
5
+ sknetwork/sknetwork.py,sha256=VYoI-gwqwBKPx84cA0KnYDRofrgIXs8xtASD2nu5fE0,44
6
+ sknetwork/base.py,sha256=XJJ6MicVcSiQBWQ9fYlmUJYkXq0PRldQzExhZKuaFBo,1951
7
+ sknetwork/classification/metrics.py,sha256=aaIfYddIAJsGXpXJ6TGcQScjzyJOo8kiWgcIE1kefSM,6806
8
+ sknetwork/classification/vote.pyx,sha256=Bbf74XCPH8uYDP-SrXRaA7k6Ax2x-wDzpbHMeg9le7A,1584
9
+ sknetwork/classification/diffusion.py,sha256=h4l43kA_MR_hMthc5mqW__5jTkQq9Ne9Q_H8bLPhM6Q,5564
10
+ sknetwork/classification/vote.cpython-312-darwin.so,sha256=0CAx2M_AHsM6a-PCHw0SWxpLSDIgjsBqmNXXioTotsA,213248
11
+ sknetwork/classification/__init__.py,sha256=yVv7wSuUfNLxeNBF-AhWCJys3C-XatPtMzi1wyp9Bz4,475
12
+ sknetwork/classification/base_rank.py,sha256=RGElYD6PuP4nhnenNnzpOiBojs49Afg5ahjBFEi566I,4522
13
+ sknetwork/classification/propagation.py,sha256=0Cb1-mIMcPoes5oXR7BqhqEmlFMEMcTOMy_BNjX0lvY,5793
14
+ sknetwork/classification/pagerank.py,sha256=CBUeCqZisr6s5lh3VXYWA6rbiPdLyNzuSMbjazy80eA,2586
15
+ sknetwork/classification/base.py,sha256=WS-QHh4553Dr1VwJqjggSqO6hHFIAs50oPah_L23eFo,4290
16
+ sknetwork/classification/knn.py,sha256=fLRZF2jhHq105QHMeW328JcF71wTaGP-ukmbJdyiw44,5333
17
+ sknetwork/classification/tests/test_metrics.py,sha256=eBs-5uAEz2s8gukMyfhQ07GSFoyvxtsslLuc6VgUxBU,2303
18
+ sknetwork/classification/tests/__init__.py,sha256=sy9uRiPhYG2i7uqM3P07-VUf4UcZEHeOoH9BvKCpU3s,31
19
+ sknetwork/classification/tests/test_pagerank.py,sha256=5IJpYqnz31cWT0iXjTdo1xE8Kfj3YTK0cSZnnTlyJBs,620
20
+ sknetwork/classification/tests/test_diffusion.py,sha256=tp9qNYBcaI9T1HCC6bqMpG_-eM-na-fGNeGDzMZTu2A,3183
21
+ sknetwork/classification/tests/test_knn.py,sha256=sl5kxsaca3GUTvfdx6B9BRJ1SAdoDvxFOg9VyoA20IU,784
22
+ sknetwork/classification/tests/test_API.py,sha256=FA1d0NQz3vaNVVeFbhEljPe0fD_ryRwVP4G1hdv-u_s,1124
23
+ sknetwork/classification/tests/test_propagation.py,sha256=m0Jyq59k3taoikyBxcZGILzG7dWQV3SGE45MPm0RPao,850
24
+ sknetwork/visualization/dendrograms.py,sha256=m4FbBfvJUW_gXccZWF8OWxAsbhsEcKa1fXNNCp_y4MA,9901
25
+ sknetwork/visualization/__init__.py,sha256=8rLiR13WHSWLsEVTTL6lzOZms0LZf-ZujBqOI5VnKxk,216
26
+ sknetwork/visualization/graphs.py,sha256=kxFjEbg5b_bHpapLyf1L01CIwzxpWE6KLtS_ji2yZyY,41176
27
+ sknetwork/visualization/colors.py,sha256=DjcXt9aMgLan7bRg7TZI8m_8SLWQOZ-g2HoguB1-3qA,2509
28
+ sknetwork/visualization/tests/test_graphs.py,sha256=g2YPJn9m8wD-UHZ_BL37xuJqE7ygOx3EztKLVVqphYk,9421
29
+ sknetwork/visualization/tests/__init__.py,sha256=yOVrqUD9UuI_HdYuqRP5PS7QhS-pO4RE_Ls5PLiIC_w,30
30
+ sknetwork/visualization/tests/test_dendrograms.py,sha256=UuS3VZ5XnV1u5BtW-QKbFv0wavllQpbgtsOIe5XvTlg,2466
31
+ sknetwork/topology/triangles.cpython-312-darwin.so,sha256=ahxflmLQSa2OBZMPf17H23i2aYk3UfFJ4mXgI7sOmwk,89272
32
+ sknetwork/topology/weisfeiler_lehman_core.cpython-312-darwin.so,sha256=MxFK7U8sGIpOPZ7ci95MnIy9onXjGguO6cdXdOm4h6M,214336
33
+ sknetwork/topology/cliques.pyx,sha256=BuezL9-zJOicL1zffkpcf8uIEgqhik6dgK_agXX4gaU,4510
34
+ sknetwork/topology/cliques.cpython-312-darwin.so,sha256=mHPZo1EAfLYfrim4AHPSvek-AVTjWn1lVIlwjG3ZK2Q,250392
35
+ sknetwork/topology/minheap.pyx,sha256=iFWpXPYSAmWjYphYByAM6auUj1XHly6QovZvuy2Lpyc,3310
36
+ sknetwork/topology/weisfeiler_lehman_core.pyx,sha256=fi0rRrXHVZuIQYzPDcPCamCRQLKquchjV3N9dNuQ1Pk,3034
37
+ sknetwork/topology/core.cpython-312-darwin.so,sha256=Wz2I0lh3Ylf1DxTyPSfl7tNiEfKZC1Yd2z0dQT8GHEU,210752
38
+ sknetwork/topology/__init__.py,sha256=T2W2cWwcUdhfA86VuZAZqksbrgct4hiyp0HuizEnLg4,534
39
+ sknetwork/topology/cycles.py,sha256=EV2UMDktEGdJxEmAZyyjBMttJ6DqYvvfZ6mqwIQqFu0,9003
40
+ sknetwork/topology/weisfeiler_lehman.py,sha256=ACJDAmZbwDrZAvO-LsHnRaef-8KX7esM1LxVUglXtLw,4308
41
+ sknetwork/topology/minheap.cpython-312-darwin.so,sha256=HCZePDQpepWrboJaNW5TrsREYlKDuzIOe6GJqxxIw8g,196176
42
+ sknetwork/topology/minheap.pxd,sha256=Y_oRh8H-sNZYAWv0XM9T-ZLzYBhb5TrBM4VjlH-ZqPQ,564
43
+ sknetwork/topology/structure.py,sha256=CDfN7SL70wTHm2HPfqd7ncsZEaV1SQO3tJKYl1CdtNI,7285
44
+ sknetwork/topology/triangles.pyx,sha256=JOkA9k0CQTsT7zdPaEoW7-PdHYuoXHsB0XSuPKFLJSI,4349
45
+ sknetwork/topology/core.pyx,sha256=HwGbC84p9F9fkEw8ouNNMQtlYrAoEWhQS5hU9Cf1h94,2465
46
+ sknetwork/topology/tests/test_cycles.py,sha256=KZzMKS5ILfC_J0Fj5MFlEOL7Z9nOnlRfo4TnGdXEPWY,3150
47
+ sknetwork/topology/tests/test_structure.py,sha256=CzcZ1LxV-mI_buxz6LcTeCy3h5ofMLfOu2HUHwNSMi8,3948
48
+ sknetwork/topology/tests/test_wl.py,sha256=EJY_4xTi_-qzFsqZJkgnwLteoakdkpRAczzdMCGeXe0,2218
49
+ sknetwork/topology/tests/test_core.py,sha256=Zh9IYHGfqDqIlLycucLzqZbHvYmU-IB-J03-jlikPcI,551
50
+ sknetwork/topology/tests/__init__.py,sha256=9lKrPX4BnSJbK-VlDi9TsmAgDwqF3H423KhJ1u1Uaos,25
51
+ sknetwork/topology/tests/test_triangles.py,sha256=9g3nml3TNOiIFHLJDih5PTxWunDJemmpLQy2tmoQw4Y,1275
52
+ sknetwork/topology/tests/test_cliques.py,sha256=t97pKDMxT9RC-_YsgY-c8tQxrekyAE6i2_guvxAYHhQ,838
53
+ sknetwork/ranking/betweenness.cpython-312-darwin.so,sha256=rp0jLY8PvYefeASANzUMvLvPp-xgT9ko3ddQlv7Orlc,110368
54
+ sknetwork/ranking/postprocess.py,sha256=-3wqBPvTM7jDdfTytINEXxM2eugJjbCZRLiLy9pkmac,919
55
+ sknetwork/ranking/__init__.py,sha256=UeYw8y0HFoBnPziqnVYXSt8jqFtkDgkCCMPhYTEIaF0,348
56
+ sknetwork/ranking/closeness.py,sha256=pETMD8uaXfADZhmzVaH4YIGX57S2vvhzVInONaAwBUM,2840
57
+ sknetwork/ranking/katz.py,sha256=uPyXkEL73_6MS4dP5XTSVSIrD5h5QJipVTVEa0L_y48,2535
58
+ sknetwork/ranking/hits.py,sha256=L39a9Ze3ITUbikmNhA_Lx-V5s_RQr0XnNkOsIgG8m98,2761
59
+ sknetwork/ranking/pagerank.py,sha256=Qt2SOUoLO76JVDnT4-x-b-hah9IlaHECsYNu45AnpY8,4749
60
+ sknetwork/ranking/base.py,sha256=Jo9LBK3TfXiYdxYqSmfeVC8O2D6fA5L-SRzQh3eqtnA,1512
61
+ sknetwork/ranking/betweenness.pyx,sha256=Pq9EqOHV0P8TDN_w9siP3h8HyechaAErysNwz0JT0ow,3087
62
+ sknetwork/ranking/tests/test_postprocess.py,sha256=jPLJKJYEltFpY2uct0JyJEkD1haOyNU8h_1KwiLMgZM,703
63
+ sknetwork/ranking/tests/test_closeness.py,sha256=ttBC8L_J1YDLCWhTIPhSFxu8jWuOWl_vupHFFaA_NP8,823
64
+ sknetwork/ranking/tests/__init__.py,sha256=ZVL3kCN-qV5ThJU58iaMvJKSIkZ7ke7liLtLwI4TCHY,24
65
+ sknetwork/ranking/tests/test_pagerank.py,sha256=5WHev0-d5nTOg6AEzIZyCmWSieTO3YNLNO2kB6RTYWE,2243
66
+ sknetwork/ranking/tests/test_API.py,sha256=PZ4Q5X1WT1HSAojZX72fUm4o9Y0PwocewJEoC1pfgMo,1003
67
+ sknetwork/ranking/tests/test_betweenness.py,sha256=8XA1ycLQQ7-Cm3CBfkcSDQOvD6xagAIP1--mPe9VFzo,1135
68
+ sknetwork/ranking/tests/test_hits.py,sha256=zStzrWZ-pv2Nsd-pB282FgW3KAn1TyKjz_l85tJaPJ0,491
69
+ sknetwork/linalg/diteration.pyx,sha256=gk9W6SwIxXgmjQujXWBUIoM_OwevjE3jTzFrIEkGnWI,1384
70
+ sknetwork/linalg/__init__.py,sha256=awBDY2wWiO40L5eED3H8K1BM8qtHz7aQRv1p3PcSK94,533
71
+ sknetwork/linalg/push.cpython-312-darwin.so,sha256=JBwOFZ-w1k-4O8gplep2yTfwFm7fuNc-RT_ahQrhpm8,229560
72
+ sknetwork/linalg/laplacian.py,sha256=_gQr8YLqMUtK_IMNgvJoQX7-uODVlvCVmc-oTsgw7MA,401
73
+ sknetwork/linalg/eig_solver.py,sha256=yq_prP5p1jbALby69wkzzH0vYKc1btmRQoiVUtTh-eA,2700
74
+ sknetwork/linalg/push.pyx,sha256=caxCZa5h9zsHhxJgDBaaetqpB0wUbFLdOUwHwj0q_t0,2358
75
+ sknetwork/linalg/ppr_solver.py,sha256=mQkCnik-vvv_oFa9n1vtMzxgvi78qW-QQONdcmC9CXA,6533
76
+ sknetwork/linalg/sparse_lowrank.py,sha256=LUhbqa01p51SYhoIb2Dmx2b9fMc-iOu69CAVHscR2Xs,5028
77
+ sknetwork/linalg/basics.py,sha256=8AFph_1G5SZP_24jrIv6qIWooO0UMglL4jMgx3ZdYIQ,1142
78
+ sknetwork/linalg/normalizer.py,sha256=kOFDPPdiGqG-KcWNiRwbS_y_nmw5fTKYTvuj_x8yBd0,2473
79
+ sknetwork/linalg/operators.py,sha256=fxitao4UYW4Hq7B258T_cAq2H3R2FN1-mwdy138w8fE,7432
80
+ sknetwork/linalg/polynome.py,sha256=_dP9Nu_6XCV0-WEQJ7E5nG6pxZWMtbj-LREu0vtxeWk,2125
81
+ sknetwork/linalg/diteration.cpython-312-darwin.so,sha256=QFyHoJPBuHTY2ChvWBiqTQaETBhVz2e1RFQqnnZaIy8,193056
82
+ sknetwork/linalg/svd_solver.py,sha256=vhcXwCsOar0cYDPZo7IF_ulRDsGGvZzePIeSpSCVgLk,2681
83
+ sknetwork/linalg/tests/test_svd.py,sha256=eLRmSiHt8uWzknImZtRSZmJC8OX0YDgUt9-8PePc3OA,1285
84
+ sknetwork/linalg/tests/test_operators.py,sha256=l_pBF7JZhjUSNfTReDX-lN2nA7HU7mkz7dznJ8I6lrY,2919
85
+ sknetwork/linalg/tests/__init__.py,sha256=l6yw2Ls1ndhVVcSYc059kAjQ2-VoDGZXxnBaglFZ4zo,23
86
+ sknetwork/linalg/tests/test_sparse_lowrank.py,sha256=LEDo6DChembm3xQ-vjeqqZi0ugWx7piucR9_LdDecrI,2276
87
+ sknetwork/linalg/tests/test_polynome.py,sha256=VYru9RlUIIN6dKNOiitSElPQqIxWI7mqx3dR5zd9Nv0,977
88
+ sknetwork/linalg/tests/test_ppr.py,sha256=Bh1n7W3We2N8u1RIWPyE5QQGE7esnNoUOLLRCL8Zye4,2093
89
+ sknetwork/linalg/tests/test_laplacian.py,sha256=B6UhJOmYUdNlXwNoxLLtb--nv9mx96Orl-W1Vl6PLyM,434
90
+ sknetwork/linalg/tests/test_eig.py,sha256=lUAgo4UfWuuSG5DhSk5SIT7ToLDgPG-5JCgmOe_M7Vw,1504
91
+ sknetwork/linalg/tests/test_normalization.py,sha256=nASuMYxKcsWj3gk9DF5uPKYOw93oJ-UQUWi99Fw3kmE,887
92
+ sknetwork/hierarchy/metrics.py,sha256=_wYGKx_VDE_sfbg-uUEFMhOjSLFqzC8rFHjJo1hdVL8,8046
93
+ sknetwork/hierarchy/paris.pyx,sha256=DX8p3LOtrNxyQ8pOZZE_Q2b5rBKjYwKArsmMZbvb0xY,11813
94
+ sknetwork/hierarchy/postprocess.py,sha256=d1Fll3eqDIjiMf1c5nGuKF6I0fN93elnglkp59LARGU,12072
95
+ sknetwork/hierarchy/__init__.py,sha256=YgE2eqnwS8Q2NWP9pNY-M1bpdxRn5-C-CdykydNW7iM,412
96
+ sknetwork/hierarchy/louvain_hierarchy.py,sha256=PhetHYpmsnI7yC-rbYAUXhNiBV9QNKMDbrfz9l0fskc,9846
97
+ sknetwork/hierarchy/paris.cpython-312-darwin.so,sha256=G44oQQ_Xps38FyMlzz91w2SdtHO7e0UkgmfvfHqcmQs,293360
98
+ sknetwork/hierarchy/base.py,sha256=MoxBiSsEJOq77YmXj_bpf4vUiPLSpQn8fnUX7YIqyd8,2693
99
+ sknetwork/hierarchy/tests/test_postprocess.py,sha256=OSrWE0gT0AcPI4LKmUL-Blfg5ErxnjS3d4rPNnA63_Y,2209
100
+ sknetwork/hierarchy/tests/test_metrics.py,sha256=IHlsdJXeHqPU8_SBm4eIXua5ZhyRIAUH4cAtVNNR7Ng,3160
101
+ sknetwork/hierarchy/tests/__init__.py,sha256=l2HHDiDLpoTQlwzh1mtCyp6bS8RxBdJK2DP1FGiQJMY,26
102
+ sknetwork/hierarchy/tests/test_algos.py,sha256=xMt2xzAYEm6MuK-8OKOqBwZS89aJspX2tr7T6QMHz6E,1361
103
+ sknetwork/hierarchy/tests/test_API.py,sha256=tLF-jLsfM2OFqbyVHK1o9jXVW_1PbTkMcxkAXuGjMO8,720
104
+ sknetwork/path/distances.py,sha256=8NJeL14UpGudTFCgQJaNDOXs2-aSHLCl5LHXexF_xuQ,3568
105
+ sknetwork/path/dag.py,sha256=Se5LSgQi-RwA-nXbJ1l_upjKw_MNIckeT_dh3TYWl6w,1668
106
+ sknetwork/path/shortest_path.py,sha256=_trQS__X71HQOOBXu0QTlzfOgb2ydoy-KooIKjIkpvs,2450
107
+ sknetwork/path/__init__.py,sha256=OQ7dWwlncIIsPo5kQu2akUhk_m73vQuF17LaH0siqo4,222
108
+ sknetwork/path/search.py,sha256=__63FqXFqhNTSyTGYj4yYx8ZDoew0_uCHHWhJlrIRoA,776
109
+ sknetwork/path/tests/test_dag.py,sha256=EYyghTXbHRr1Ia-8KoXoyumIFD_6q6bZx5DDcaa-ODQ,938
110
+ sknetwork/path/tests/test_search.py,sha256=mStK4ZiN1hVdZr8Q9R78AFBouuA9RIhnQ4nwGrfCjCY,1199
111
+ sknetwork/path/tests/test_shortest_path.py,sha256=Uwq4CzzjnMV6VsTlzgKnn_GwqUr2Cc0kZTgFtv_UisQ,1382
112
+ sknetwork/path/tests/__init__.py,sha256=_COAjci7RJ_XtBDGwy5aOgZ9dPSQH3j7d6qMlLHs55o,28
113
+ sknetwork/path/tests/test_distances.py,sha256=zItygI9cLMrQonLhOubvorElU5qaZumFfjMethx4rDw,2695
114
+ sknetwork/embedding/random_projection.py,sha256=NuJoPHYLjdb8dUdKOwGr7Q6lGZBSPbwmMuuY6CRzgoI,5002
115
+ sknetwork/embedding/__init__.py,sha256=ASeieiOc46EuKMUArW3kt_WJbsLxUzz0BVYycmag5Pw,410
116
+ sknetwork/embedding/svd.py,sha256=fK84a57Js4Hvh9Rtz2FDFA7eKhLThUO256e8xdIkJm4,14642
117
+ sknetwork/embedding/force_atlas.py,sha256=amYr0E08F8TDoIxjPx3lx35JFwEP41jc4KKed1PQeZs,7452
118
+ sknetwork/embedding/spring.py,sha256=5fyHQzmIp8gY9DdI-DFvMc37mjMb64bs22ZZZ9YFDXM,7151
119
+ sknetwork/embedding/spectral.py,sha256=ds91hH6JFBsfLcTS8QEz-gP5tZUcrrGqjfnL-xMIdU0,5548
120
+ sknetwork/embedding/louvain_embedding.py,sha256=Q51zN2yNVeUrwfF98nnozpSaB_vUSVUi4pi9KwNkUOA,6082
121
+ sknetwork/embedding/base.py,sha256=zIaj7TdsRzBXYdl3MCuiDf4ShV6T8sAtm22IzGajho4,2663
122
+ sknetwork/embedding/tests/test_spring.py,sha256=tanArc4vstNZ36CLr7S8uEVdXX0iP2K9UWKQLTcsPsQ,1643
123
+ sknetwork/embedding/tests/test_svd.py,sha256=xkfgHiQCDTRp8seWCdBvQFGwONoM6VYn6g9xp3FJIOs,1463
124
+ sknetwork/embedding/tests/test_louvain_embedding.py,sha256=XXz_2Jul1Rv3sILYFz4HLy2OWRsdZWRWWRnVBxOU68o,1116
125
+ sknetwork/embedding/tests/__init__.py,sha256=QkDQtTJReK7Ldp0Y4f5-tbTdcp224r1AF7jU26alSgQ,26
126
+ sknetwork/embedding/tests/test_API.py,sha256=2c0O8S0u0hF23iys7QLHJJOz2W79rHMeEO2OMDQbglk,1489
127
+ sknetwork/embedding/tests/test_force_atlas.py,sha256=-YM4HSF5Nvpm8e4SoCHiA2o7yAkm0h_ys7GRaJ1wloI,1120
128
+ sknetwork/embedding/tests/test_random_projection.py,sha256=2bUOCw66tUKP775pGPd5STj0UmRuwvBtI5CgY8HeHKI,1193
129
+ sknetwork/embedding/tests/test_spectral.py,sha256=CH-F8fM3cYoxhjpob1m7wZV-tEr8XFD6Lxa_bFsLv3A,3897
130
+ sknetwork/clustering/leiden_core.pyx,sha256=7HGdeX6iMnSs52Px44-__kN9JhHueaQUvCmrkIGTalg,4300
131
+ sknetwork/clustering/metrics.py,sha256=VJPgmB1OvxA0SOaIQIGyJDUP1cgWFElnfdVaQ2krYrg,3060
132
+ sknetwork/clustering/leiden.py,sha256=yL5N-9ny6XAj6La2-PBcsieRl4SVx8wxwVGvS1tMr-o,9682
133
+ sknetwork/clustering/postprocess.py,sha256=4hx5VTQmqS2Ld2P2kvXoyvVanXVg3bMA619IHS2jWHM,2039
134
+ sknetwork/clustering/__init__.py,sha256=Ab-rmioxlaMoghrzd1RMr-L4zyrqIM8XznqrjBPGE28,435
135
+ sknetwork/clustering/kcenters.py,sha256=RFEx35vPUm9a4mzCbDwv-PmePCsdQwbuKAeaRizBMxY,8689
136
+ sknetwork/clustering/louvain_core.cpython-312-darwin.so,sha256=C1YOknz21sW424QkdcNpEFgtcaiyO4f5tNkVGgqQYFc,251368
137
+ sknetwork/clustering/louvain.py,sha256=nFKEsrEuOH2k9iruT7SGo0kGDtcYzW2Xn7wBAxe767o,10825
138
+ sknetwork/clustering/propagation_clustering.py,sha256=ABZZtyojkrXfzsMwEcxqphzHgFC5q8sECOyanvK9D3o,3781
139
+ sknetwork/clustering/leiden_core.cpython-312-darwin.so,sha256=XWwPaBLtinzxMvp0igho8hiTVMYqZkrZLVrT4emXrPw,252056
140
+ sknetwork/clustering/louvain_core.pyx,sha256=pMqt7WukTkBOpjofmiXMYHqRX69mkquEMapDdoskiQM,4089
141
+ sknetwork/clustering/base.py,sha256=dCF4K3nbKY24kzFeDAy7Fp-b9jDBzEoG3jj1ozuu_W8,5932
142
+ sknetwork/clustering/tests/test_postprocess.py,sha256=WSmAlqB-6Nw3eoL3NaOyNlpPr7GVnNnllkPVdyE9rXI,1378
143
+ sknetwork/clustering/tests/test_kcenters.py,sha256=laO1QSJ-yGlroB5XtrC15jbRK0krYZK5sIRDHBUZL30,1977
144
+ sknetwork/clustering/tests/test_metrics.py,sha256=fbVYg2s8DXQdiYHUNuVjFMtEJg4od1Vej25mgHhGDu0,1818
145
+ sknetwork/clustering/tests/__init__.py,sha256=Ta0XKY7pklRvHyUY3Jlow3A2V4REa5geZG74xPz80Tc,27
146
+ sknetwork/clustering/tests/test_leiden.py,sha256=3KSXvxUP9H4tCJQXUfWt-45-ltyD0FrVgYjXDvRN-yQ,1155
147
+ sknetwork/clustering/tests/test_louvain.py,sha256=6eQPoKodZLBafNgpX1_zBzPzGY5w7QKzWsLuoEVZEaE,4678
148
+ sknetwork/clustering/tests/test_API.py,sha256=Eez17EngcirVHVVoybClXS5314_Yz54JFzXldubEdgg,1528
149
+ sknetwork/linkpred/nn.py,sha256=tY-qYlp0j9WCvdoHkZ9EKzCD_GlDu7tQpKD7-aC20rE,4030
150
+ sknetwork/linkpred/__init__.py,sha256=pFtM52OhDK69ceeiRyH1MDse0EbD8fqyhOsWWih47gM,72
151
+ sknetwork/linkpred/base.py,sha256=aXgWqajDYjDE-YQcooI6j0qEByJxHQiQtSjmFiID3Qk,995
152
+ sknetwork/linkpred/tests/__init__.py,sha256=05sK8Ihh9Gi2_uobPC_ErMVE4KOt0761NzzV_vJh15U,32
153
+ sknetwork/linkpred/tests/test_nn.py,sha256=T79txY2DlPgnI4JqzC88EcwCobJiM9P9v_5_ZvBTDeU,983
154
+ sknetwork/utils/values.py,sha256=E-_gcqVOYjUPiG_iz9j2avVh1ENANVIZt7AydYzyeyg,2595
155
+ sknetwork/utils/check.py,sha256=tNOelam8GGdVjMzmk-7otNTyFBgJNKwq1z-zWmHOb9Y,12940
156
+ sknetwork/utils/neighbors.py,sha256=XNqwPM_PPpf_x-YhjEMVZJDxmazrVw9Eky3hNv9IGz0,3351
157
+ sknetwork/utils/__init__.py,sha256=z1kLaO6ZFBg9g3MoeuxV-6UPmcqKAxTs0fjqoYQOgc4,325
158
+ sknetwork/utils/format.py,sha256=qAa5jmp_fkQBlVL4LW14N7rrMPNk3yMApNFLxREPuiU,8766
159
+ sknetwork/utils/membership.py,sha256=dG2xJTWEjRcxyKTs5A7DFyNhO50-7UKpBIaWFfmyH_M,2162
160
+ sknetwork/utils/tfidf.py,sha256=C1qZCwZSwypi-C_II9D7lkfyxsOFefiDopTO3pBEwkc,956
161
+ sknetwork/utils/tests/test_membership.py,sha256=y4BiaCHUw5c1dJPOSJA6vgkBQlPxQ2bepL7hDV1es5U,748
162
+ sknetwork/utils/tests/__init__.py,sha256=y7PVVv2Wiz1msA5jqKOuB5BbB4UzCmDZ-pml9hIQyjo,22
163
+ sknetwork/utils/tests/test_tfidf.py,sha256=X69sepETWH1po9YXFubppvZlLeGdflqxoNEBinihp3A,445
164
+ sknetwork/utils/tests/test_values.py,sha256=BswuHPma0xCxr4gVkrkfPdMaIW6gw6ylCd5MTseo7tw,2268
165
+ sknetwork/utils/tests/test_check.py,sha256=WOLQ7J4eM4YHsSxyBNU5yPquq-0dB5FyD_tttZ1RgsQ,6764
166
+ sknetwork/utils/tests/test_neighbors.py,sha256=vF697D0cTfx4Limcmbre5JkJcLi1rUX0tS_JviX11Zg,1426
167
+ sknetwork/utils/tests/test_format.py,sha256=xSvz_IbxNnei8IrEysIOi8YpX_a6edxVE41g_lSx1mk,2245
168
+ sknetwork/gnn/base_layer.py,sha256=o5CbTVXY7Y1_TyNEMkp7P2va2HLLIq_MgnOxZ7PGQmg,3948
169
+ sknetwork/gnn/base_activation.py,sha256=XogZDdhl3QDyADvWJhMTGSnVYsKPI3PDHPu89yPL1VI,2306
170
+ sknetwork/gnn/__init__.py,sha256=m2lkDJoJZocJ18scpArsUHuzePZ8Q-ue7D3yXQ5H_RM,519
171
+ sknetwork/gnn/loss.py,sha256=P0un3iqbnFLrBbYODznVAoU_J2qAZuqHAPLiae0LCtI,5162
172
+ sknetwork/gnn/activation.py,sha256=D7o4FdbDMrBa2PQrWrvplCf14QOSzZ67d9eWN9bHY-M,3560
173
+ sknetwork/gnn/neighbor_sampler.py,sha256=TXdMRFwiT8sOdl6-S-flQZ5Rjrx1hwTzFqqiR_8PHTQ,1864
174
+ sknetwork/gnn/utils.py,sha256=A0kuBe29Eg90cEzRAgw4YmnShnzoq6ai_-01IBAf63g,4349
175
+ sknetwork/gnn/gnn_classifier.py,sha256=yvh5P3T3AmpEI8xNBERSkLumifBzz6gRLgQQ5aaASd0,12610
176
+ sknetwork/gnn/layer.py,sha256=i0XiAutNal9ImAGqMtSLVEq_QiqZoGAlAWwlSGrNY8Q,5526
177
+ sknetwork/gnn/optimizer.py,sha256=vsCgfPoJtYMWREnR4tBsfPb0Ed-rHR0poBr-75lE57s,5782
178
+ sknetwork/gnn/base.py,sha256=QZ_pNi2-edAUpu-2C93DWfooS_sHulO6HL6vK108lhc,5708
179
+ sknetwork/gnn/tests/test_optimizer.py,sha256=4NvHQf66cFKy500kA68IBVv_-_pf75Hqdbq2odhJMr4,1780
180
+ sknetwork/gnn/tests/test_utils.py,sha256=ExTZqAMT3joYU1RSQ-_d1YipysgnkLKePe7ZHuMoHeY,1843
181
+ sknetwork/gnn/tests/test_gnn_classifier.py,sha256=QRjXGJK2ghHtsGc9O-FwlKzG53IHocrWZuKTAVSFjFw,5743
182
+ sknetwork/gnn/tests/test_activation.py,sha256=HZdBaJ8P8LBJ-3_Typc8Qkvsho9gNSy1-CANEz8rQ-Q,2487
183
+ sknetwork/gnn/tests/test_layers.py,sha256=apPJGgMddw_-Qiw0OsTDL3cmMJ8GTMC08dLTmiYEWW8,3176
184
+ sknetwork/gnn/tests/__init__.py,sha256=SvFOB5nn_yN-JCaYFAtzesL0zU0OihQp0s0dOP1-MKE,20
185
+ sknetwork/gnn/tests/test_neigh_sampler.py,sha256=zc_6G3JhZvKrFLJAk2UJSOHZwN7sGojC8bXTCbmaUx4,698
186
+ sknetwork/gnn/tests/test_base_layer.py,sha256=1PXvS3338vu-fI77ZnGgHfY20zkPRv_GcZKxLQmyj7I,1381
187
+ sknetwork/gnn/tests/test_loss.py,sha256=W5DA6FRd-OppeRKFgj2gtLqNvjkXkCQPmV6lg3ENu-c,1045
188
+ sknetwork/gnn/tests/test_base.py,sha256=HVsz5zABud8ZlrIJIFuAKP6N7mu2ClrTaleZbPhGOR0,3393
189
+ sknetwork/regression/diffusion.py,sha256=p4o62jxuz3z3Kd2WizmV1GYM9MO_c3yp70_KQUim0jM,7905
190
+ sknetwork/regression/__init__.py,sha256=nRlbcR8bA2Lz-OmLPMIPhBzgDCol8oSA19qL3IninXA,141
191
+ sknetwork/regression/base.py,sha256=KIsVpnbACRH4h5W3ifMJOTlZNuztGbQP1QbZKj5aj_0,1496
192
+ sknetwork/regression/tests/__init__.py,sha256=BT8kCCMN_pv7znhIR5GSQ_XxU5brmrCYDwm4QJNRCV0,27
193
+ sknetwork/regression/tests/test_diffusion.py,sha256=-QBRgES_BF-QIgFevozLt9YXmGxJ6vxgLeYVZe92Wn8,2061
194
+ sknetwork/regression/tests/test_API.py,sha256=7fQulvKzF9yEBlLie7fL5G1ZdyiG4DAFZQZ4Lix96qs,1024
195
+ sknetwork/data/models.py,sha256=j3k2LKtxNjyihfJH3SyzA5jhFNBgaA17UCzihD59Lqo,13186
196
+ sknetwork/data/test_graphs.py,sha256=OM6-7CiBN4UEAQUtE_2k5e5I72zDBL3r5fj_C2JXzNw,2484
197
+ sknetwork/data/timeout.py,sha256=kwHOLZFnOTrRhiEjtcwATYhsXbf5e8zV1OCoEKuG8Zg,1047
198
+ sknetwork/data/__init__.py,sha256=xTK1qf-dIJomjDwSLXrYL6nUcNwo118YxN7b_6gozak,255
199
+ sknetwork/data/toy_graphs.py,sha256=8-QKuwURndJ1_KEWlDqs-lBWBeoFxU3V3oUui4PsSDY,24632
200
+ sknetwork/data/parse.py,sha256=Qrn2_i8XdVx7QNWhweI9Fu3i33C8PO_sOb8vPzReaYM,26995
201
+ sknetwork/data/load.py,sha256=zN0fhEjEm0Mxp0bsdc13CW1zkb877vbo3om25nwpKrY,14356
202
+ sknetwork/data/base.py,sha256=Jp0MJKcpfJCRZO_Nz18g1JqYFMMD1Rz8zLhnqlgO7tg,673
203
+ sknetwork/data/tests/test_test_graphs.py,sha256=dVRds-3P8JVnwfAp32fGif3zhocfPK0p2rgcYwJWsUQ,849
204
+ sknetwork/data/tests/test_parse.py,sha256=JOTFNWr77ZxKUKjw8TSbN-2dk-6YwmqN2OcrNkh7JVc,12717
205
+ sknetwork/data/tests/__init__.py,sha256=FSfkSYRKjDqIuEiEZ39Otve50qSxi7QObNnNrHHPx5s,19
206
+ sknetwork/data/tests/test_toy_graphs.py,sha256=lknaYy5AWJjiqKfhgWhQEolN8e4CDe5ilNDpC5lenww,2197
207
+ sknetwork/data/tests/test_models.py,sha256=oP-X_k0vbSB4CwlV4GQVVBAQ9uI_8frFicde5yhVYAc,1915
208
+ sknetwork/data/tests/test_API.py,sha256=LUWZX9pPpZLVuzgAz85sJk6tgKDaXKqc2Fhp91x-E6c,963
209
+ sknetwork/data/tests/test_base.py,sha256=b-0CM1ResLoJXg6-jGmBWFii5JtZrXAhfYiAG70dW1w,312
210
+ sknetwork/data/tests/test_load.py,sha256=9EXkw2TbDAUmpwE-kUTgxZieB4XDLF5drLVvyugX96M,3550
211
+ scikit_network-0.33.0.dist-info/RECORD,,
212
+ scikit_network-0.33.0.dist-info/LICENSE,sha256=zKbJMpbSKgGEUaNr_fKgvJrvw_3W4gnJs5XdLCK5Sxo,1622
213
+ scikit_network-0.33.0.dist-info/WHEEL,sha256=ixb_O5lsVXLMepD9A3AdgDzVqvdgd8PzUyuV4vg4Hnk,110
214
+ scikit_network-0.33.0.dist-info/AUTHORS.rst,sha256=MIEWJmfpIVmBPo03Xl_6j8kg7cjXicp9WVRQpuVDj9o,923
215
+ scikit_network-0.33.0.dist-info/top_level.txt,sha256=fkwspWQ9B3csqb5ENEOoVciRY6XftnMuz4MvTDQeSsg,10
216
+ scikit_network-0.33.0.dist-info/METADATA,sha256=KSryYoew7nGXScWKHnpxhItQbesZ7N1FBL7mKyZMg_U,14471
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (70.3.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp312-cp312-macosx_10_9_x86_64
5
+
@@ -0,0 +1 @@
1
+ sknetwork
sknetwork/__init__.py ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """Top-level package for scikit-network"""
4
+
5
+ __author__ = """scikit-network team"""
6
+ __email__ = "thomas.bonald@telecom-paris.fr"
7
+ __version__ = '0.33.0'
8
+
9
+ import sknetwork.topology
10
+ import sknetwork.path
11
+ import sknetwork.classification
12
+ import sknetwork.clustering
13
+ import sknetwork.embedding
14
+ import sknetwork.hierarchy
15
+ import sknetwork.linalg
16
+ import sknetwork.linkpred
17
+ import sknetwork.ranking
18
+ import sknetwork.data
19
+ import sknetwork.utils
20
+ import sknetwork.visualization
21
+ import sknetwork.gnn
sknetwork/base.py ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Created in June 2019
5
+ @author: Quentin Lutz <qlutz@enst.fr>
6
+ """
7
+ import inspect
8
+
9
+
10
+ class Algorithm:
11
+ """Base class for all algorithms.
12
+ """
13
+ def get_params(self):
14
+ """Get parameters as dictionary.
15
+
16
+ Returns
17
+ -------
18
+ params : dict
19
+ Parameters of the algorithm.
20
+ """
21
+ signature = inspect.signature(self.__class__.__init__)
22
+ params_exclude = ['self', 'random_state', 'verbose']
23
+ params = dict()
24
+ for param in signature.parameters.values():
25
+ name = param.name
26
+ if name not in params_exclude:
27
+ try:
28
+ value = self.__dict__[name]
29
+ except KeyError:
30
+ continue
31
+ params[name] = value
32
+ return params
33
+
34
+ def set_params(self, params: dict) -> 'Algorithm':
35
+ """Set parameters of the algorithm.
36
+
37
+ Parameters
38
+ ----------
39
+ params : dict
40
+ Parameters of the algorithm.
41
+
42
+ Returns
43
+ -------
44
+ self : :class:`Algorithm`
45
+ """
46
+ valid_params = self.get_params()
47
+ if type(params) is not dict:
48
+ raise ValueError('The parameters must be given as a dictionary.')
49
+ for name, value in params.items():
50
+ if name not in valid_params:
51
+ raise ValueError(f'Invalid parameter: {name}.')
52
+ setattr(self, name, value)
53
+ return self
54
+
55
+ def __repr__(self):
56
+ params_string = []
57
+ for name, value in self.get_params().items():
58
+ if type(value) == str:
59
+ value = "'" + value + "'"
60
+ else:
61
+ value = str(value)
62
+ params_string.append(name + '=' + value)
63
+ return self.__class__.__name__ + '(' + ', '.join(params_string) + ')'
64
+
65
+ def fit(self, *args, **kwargs):
66
+ """Fit algorithm to data."""
67
+ raise NotImplementedError
@@ -0,0 +1,8 @@
1
+ """classification module"""
2
+ from sknetwork.classification.base import BaseClassifier
3
+ from sknetwork.classification.diffusion import DiffusionClassifier
4
+ from sknetwork.classification.knn import NNClassifier
5
+ from sknetwork.classification.metrics import get_accuracy_score, get_confusion_matrix, get_f1_score, get_f1_scores, \
6
+ get_average_f1_score
7
+ from sknetwork.classification.pagerank import PageRankClassifier
8
+ from sknetwork.classification.propagation import Propagation
@@ -0,0 +1,142 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Created in November 2019
5
+ @author: Nathan de Lara <nathan.delara@polytechnique.org>
6
+ """
7
+ from abc import ABC
8
+
9
+ import numpy as np
10
+ from scipy import sparse
11
+
12
+ from sknetwork.base import Algorithm
13
+
14
+
15
+ class BaseClassifier(Algorithm, ABC):
16
+ """Base class for classifiers.
17
+
18
+ Attributes
19
+ ----------
20
+ bipartite : bool
21
+ If ``True``, the fitted graph is bipartite.
22
+ labels_ : np.ndarray, shape (n_labels,)
23
+ Labels of nodes.
24
+ probs_ : sparse.csr_matrix, shape (n_row, n_labels)
25
+ Probability distribution over labels (soft classification).
26
+ labels_row_ , labels_col_ : np.ndarray
27
+ Labels of rows and columns (for bipartite graphs).
28
+ probs_row_, probs_col_ : sparse.csr_matrix, shapes (n_row, n_labels) and (n_col, n_labels)
29
+ Probability distributions over labels for rows and columns (for bipartite graphs).
30
+ """
31
+
32
+ def __init__(self):
33
+ self.bipartite = None
34
+ self.labels_ = None
35
+ self.probs_ = None
36
+ self.labels_row_ = None
37
+ self.labels_col_ = None
38
+ self.probs_row_ = None
39
+ self.probs_col_ = None
40
+
41
+ def predict(self, columns: bool = False) -> np.ndarray:
42
+ """Return the labels predicted by the algorithm.
43
+
44
+ Parameters
45
+ ----------
46
+ columns : bool
47
+ If ``True``, return the prediction for columns.
48
+
49
+ Returns
50
+ -------
51
+ labels : np.ndarray
52
+ Labels.
53
+ """
54
+ if columns:
55
+ return self.labels_col_
56
+ return self.labels_
57
+
58
+ def fit_predict(self, *args, **kwargs) -> np.ndarray:
59
+ """Fit algorithm to the data and return the labels. Same parameters as the ``fit`` method.
60
+
61
+ Returns
62
+ -------
63
+ labels : np.ndarray
64
+ Labels.
65
+ """
66
+ self.fit(*args, **kwargs)
67
+ return self.predict()
68
+
69
+ def predict_proba(self, columns=False) -> np.ndarray:
70
+ """Return the probability distribution over labels as predicted by the algorithm.
71
+
72
+ Parameters
73
+ ----------
74
+ columns : bool
75
+ If ``True``, return the prediction for columns.
76
+
77
+ Returns
78
+ -------
79
+ probs : np.ndarray
80
+ Probability distribution over labels.
81
+ """
82
+ if columns:
83
+ return self.probs_col_.toarray()
84
+ return self.probs_.toarray()
85
+
86
+ def fit_predict_proba(self, *args, **kwargs) -> np.ndarray:
87
+ """Fit algorithm to the data and return the probability distribution over labels.
88
+ Same parameters as the ``fit`` method.
89
+
90
+ Returns
91
+ -------
92
+ probs : np.ndarray
93
+ Probability of each label.
94
+ """
95
+ self.fit(*args, **kwargs)
96
+ return self.predict_proba()
97
+
98
+ def transform(self, columns=False) -> sparse.csr_matrix:
99
+ """Return the probability distribution over labels in sparse format.
100
+
101
+ Parameters
102
+ ----------
103
+ columns : bool
104
+ If ``True``, return the prediction for columns.
105
+
106
+ Returns
107
+ -------
108
+ probs : sparse.csr_matrix
109
+ Probability distribution over labels.
110
+ """
111
+ if columns:
112
+ return self.probs_col_
113
+ return self.probs_
114
+
115
+ def fit_transform(self, *args, **kwargs) -> sparse.csr_matrix:
116
+ """Fit algorithm to the data and return the probability distribution over labels in sparse format.
117
+ Same parameters as the ``fit`` method.
118
+
119
+ Returns
120
+ -------
121
+ probs : sparse.csr_matrix
122
+ Probability distribution over labels.
123
+ """
124
+ self.fit(*args, **kwargs)
125
+ return self.transform()
126
+
127
+ def _split_vars(self, shape: tuple):
128
+ """Split variables for bipartite graphs."""
129
+ if self.bipartite:
130
+ n_row = shape[0]
131
+ self.labels_row_ = self.labels_[:n_row]
132
+ self.labels_col_ = self.labels_[n_row:]
133
+ self.labels_ = self.labels_row_
134
+ self.probs_row_ = self.probs_[:n_row]
135
+ self.probs_col_ = self.probs_[n_row:]
136
+ self.probs_ = self.probs_row_
137
+ else:
138
+ self.labels_row_ = self.labels_
139
+ self.labels_col_ = self.labels_
140
+ self.probs_row_ = self.probs_
141
+ self.probs_col_ = self.probs_
142
+ return self
@@ -0,0 +1,133 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Created in March 2020
5
+ @author: Nathan de Lara <nathan.delara@polytechnique.org>
6
+ """
7
+ from functools import partial
8
+ from multiprocessing import Pool
9
+ from typing import Union, Optional
10
+
11
+ import numpy as np
12
+ from scipy import sparse
13
+
14
+ from sknetwork.classification.base import BaseClassifier
15
+ from sknetwork.linalg.normalizer import normalize
16
+ from sknetwork.ranking.base import BaseRanking
17
+ from sknetwork.utils.check import check_labels, check_n_jobs
18
+ from sknetwork.utils.format import get_adjacency_values
19
+
20
+
21
+ class RankClassifier(BaseClassifier):
22
+ """Generic class for ranking based classifiers.
23
+
24
+ Parameters
25
+ ----------
26
+ algorithm :
27
+ Which ranking algorithm to use.
28
+ n_jobs :
29
+ If positive, number of parallel jobs allowed (-1 means maximum number).
30
+ If ``None``, no parallel computations are made.
31
+
32
+ Attributes
33
+ ----------
34
+ labels_ : np.ndarray, shape (n_labels,)
35
+ Label of each node.
36
+ probs_ : sparse.csr_matrix, shape (n_row, n_labels)
37
+ Probability distribution over labels.
38
+ labels_row_, labels_col_ : np.ndarray
39
+ Labels of rows and columns, for bipartite graphs.
40
+ probs_row_, probs_col_ : sparse.csr_matrix, shape (n_row, n_labels)
41
+ Probability distributions over labels for rows and columns (for bipartite graphs).
42
+ """
43
+ def __init__(self, algorithm: BaseRanking, n_jobs: Optional[int] = None, verbose: bool = False):
44
+ super(RankClassifier, self).__init__()
45
+
46
+ self.algorithm = algorithm
47
+ self.n_jobs = check_n_jobs(n_jobs)
48
+ self.verbose = verbose
49
+
50
+ @staticmethod
51
+ def _process_labels(labels: np.ndarray) -> list:
52
+ """Make one-vs-all binary labels from labels.
53
+
54
+ Parameters
55
+ ----------
56
+ labels
57
+
58
+ Returns
59
+ -------
60
+ List of binary labels.
61
+ """
62
+ labels_all = []
63
+ labels_unique, _ = check_labels(labels)
64
+
65
+ for label in labels_unique:
66
+ labels_binary = np.array(labels == label).astype(int)
67
+ labels_all.append(labels_binary)
68
+
69
+ return labels_all
70
+
71
+ @staticmethod
72
+ def _process_scores(scores: np.ndarray) -> np.ndarray:
73
+ """Post-processing of the scores.
74
+
75
+ Parameters
76
+ ----------
77
+ scores
78
+ Matrix of scores, shape number of nodes x number of labels.
79
+
80
+ Returns
81
+ -------
82
+ scores : np.ndarray
83
+ """
84
+ return scores
85
+
86
+ def _split_vars(self, shape):
87
+ """Split the vector of labels and build membership matrix."""
88
+ n_row = shape[0]
89
+ self.labels_row_ = self.labels_[:n_row]
90
+ self.labels_col_ = self.labels_[n_row:]
91
+ self.labels_ = self.labels_row_
92
+ self.probs_row_ = self.probs_[:n_row]
93
+ self.probs_col_ = self.probs_[n_row:]
94
+ self.probs_ = self.probs_row_
95
+
96
+ def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], labels: Union[np.ndarray, dict] = None,
97
+ labels_row: Union[np.ndarray, dict] = None, labels_col: Union[np.ndarray, dict] = None) -> 'RankClassifier':
98
+ """Fit algorithm to data.
99
+
100
+ Parameters
101
+ ----------
102
+ input_matrix :
103
+ Adjacency matrix or biadjacency matrix of the graph.
104
+ labels :
105
+ Known labels (dictionary or array; negative values ignored).
106
+ labels_row, labels_col :
107
+ Known labels on rows and columns (for bipartite graphs).
108
+ Returns
109
+ -------
110
+ self: :class:`RankClassifier`
111
+ """
112
+ adjacency, seeds_labels, bipartite = get_adjacency_values(input_matrix, values=labels, values_row=labels_row,
113
+ values_col=labels_col)
114
+ seeds_labels = seeds_labels.astype(int)
115
+ labels_unique, n_classes = check_labels(seeds_labels)
116
+ seeds_all = self._process_labels(seeds_labels)
117
+ local_function = partial(self.algorithm.fit_predict, adjacency)
118
+ with Pool(self.n_jobs) as pool:
119
+ scores = np.array(pool.map(local_function, seeds_all))
120
+ scores = scores.T
121
+
122
+ scores = self._process_scores(scores)
123
+ scores = normalize(scores)
124
+
125
+ probs = sparse.coo_matrix(scores)
126
+ probs.col = labels_unique[probs.col]
127
+
128
+ labels = np.argmax(scores, axis=1)
129
+ self.labels_ = labels_unique[labels]
130
+ self.probs_ = sparse.csr_matrix(probs, shape=(adjacency.shape[0], np.max(seeds_labels) + 1))
131
+ self._split_vars(input_matrix.shape)
132
+
133
+ return self