scikit-network 0.28.3__cp39-cp39-macosx_12_0_arm64.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 (240) hide show
  1. scikit_network-0.28.3.dist-info/AUTHORS.rst +41 -0
  2. scikit_network-0.28.3.dist-info/LICENSE +34 -0
  3. scikit_network-0.28.3.dist-info/METADATA +457 -0
  4. scikit_network-0.28.3.dist-info/RECORD +240 -0
  5. scikit_network-0.28.3.dist-info/WHEEL +5 -0
  6. scikit_network-0.28.3.dist-info/top_level.txt +1 -0
  7. sknetwork/__init__.py +21 -0
  8. sknetwork/classification/__init__.py +8 -0
  9. sknetwork/classification/base.py +84 -0
  10. sknetwork/classification/base_rank.py +143 -0
  11. sknetwork/classification/diffusion.py +134 -0
  12. sknetwork/classification/knn.py +162 -0
  13. sknetwork/classification/metrics.py +205 -0
  14. sknetwork/classification/pagerank.py +66 -0
  15. sknetwork/classification/propagation.py +152 -0
  16. sknetwork/classification/tests/__init__.py +1 -0
  17. sknetwork/classification/tests/test_API.py +35 -0
  18. sknetwork/classification/tests/test_diffusion.py +37 -0
  19. sknetwork/classification/tests/test_knn.py +24 -0
  20. sknetwork/classification/tests/test_metrics.py +53 -0
  21. sknetwork/classification/tests/test_pagerank.py +20 -0
  22. sknetwork/classification/tests/test_propagation.py +24 -0
  23. sknetwork/classification/vote.cpython-39-darwin.so +0 -0
  24. sknetwork/classification/vote.pyx +58 -0
  25. sknetwork/clustering/__init__.py +7 -0
  26. sknetwork/clustering/base.py +102 -0
  27. sknetwork/clustering/kmeans.py +142 -0
  28. sknetwork/clustering/louvain.py +255 -0
  29. sknetwork/clustering/louvain_core.cpython-39-darwin.so +0 -0
  30. sknetwork/clustering/louvain_core.pyx +134 -0
  31. sknetwork/clustering/metrics.py +91 -0
  32. sknetwork/clustering/postprocess.py +66 -0
  33. sknetwork/clustering/propagation_clustering.py +108 -0
  34. sknetwork/clustering/tests/__init__.py +1 -0
  35. sknetwork/clustering/tests/test_API.py +37 -0
  36. sknetwork/clustering/tests/test_kmeans.py +47 -0
  37. sknetwork/clustering/tests/test_louvain.py +104 -0
  38. sknetwork/clustering/tests/test_metrics.py +50 -0
  39. sknetwork/clustering/tests/test_post_processing.py +23 -0
  40. sknetwork/clustering/tests/test_postprocess.py +39 -0
  41. sknetwork/data/__init__.py +5 -0
  42. sknetwork/data/load.py +408 -0
  43. sknetwork/data/models.py +459 -0
  44. sknetwork/data/parse.py +621 -0
  45. sknetwork/data/test_graphs.py +84 -0
  46. sknetwork/data/tests/__init__.py +1 -0
  47. sknetwork/data/tests/test_API.py +30 -0
  48. sknetwork/data/tests/test_load.py +95 -0
  49. sknetwork/data/tests/test_models.py +52 -0
  50. sknetwork/data/tests/test_parse.py +253 -0
  51. sknetwork/data/tests/test_test_graphs.py +30 -0
  52. sknetwork/data/tests/test_toy_graphs.py +68 -0
  53. sknetwork/data/toy_graphs.py +619 -0
  54. sknetwork/embedding/__init__.py +10 -0
  55. sknetwork/embedding/base.py +90 -0
  56. sknetwork/embedding/force_atlas.py +197 -0
  57. sknetwork/embedding/louvain_embedding.py +174 -0
  58. sknetwork/embedding/louvain_hierarchy.py +142 -0
  59. sknetwork/embedding/metrics.py +66 -0
  60. sknetwork/embedding/random_projection.py +133 -0
  61. sknetwork/embedding/spectral.py +214 -0
  62. sknetwork/embedding/spring.py +198 -0
  63. sknetwork/embedding/svd.py +363 -0
  64. sknetwork/embedding/tests/__init__.py +1 -0
  65. sknetwork/embedding/tests/test_API.py +73 -0
  66. sknetwork/embedding/tests/test_force_atlas.py +35 -0
  67. sknetwork/embedding/tests/test_louvain_embedding.py +33 -0
  68. sknetwork/embedding/tests/test_louvain_hierarchy.py +19 -0
  69. sknetwork/embedding/tests/test_metrics.py +29 -0
  70. sknetwork/embedding/tests/test_random_projection.py +28 -0
  71. sknetwork/embedding/tests/test_spectral.py +84 -0
  72. sknetwork/embedding/tests/test_spring.py +50 -0
  73. sknetwork/embedding/tests/test_svd.py +37 -0
  74. sknetwork/flow/__init__.py +3 -0
  75. sknetwork/flow/flow.py +73 -0
  76. sknetwork/flow/tests/__init__.py +1 -0
  77. sknetwork/flow/tests/test_flow.py +17 -0
  78. sknetwork/flow/tests/test_utils.py +69 -0
  79. sknetwork/flow/utils.py +91 -0
  80. sknetwork/gnn/__init__.py +10 -0
  81. sknetwork/gnn/activation.py +117 -0
  82. sknetwork/gnn/base.py +155 -0
  83. sknetwork/gnn/base_activation.py +89 -0
  84. sknetwork/gnn/base_layer.py +109 -0
  85. sknetwork/gnn/gnn_classifier.py +381 -0
  86. sknetwork/gnn/layer.py +153 -0
  87. sknetwork/gnn/layers.py +127 -0
  88. sknetwork/gnn/loss.py +180 -0
  89. sknetwork/gnn/neighbor_sampler.py +65 -0
  90. sknetwork/gnn/optimizer.py +163 -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 +79 -0
  94. sknetwork/gnn/tests/test_base_layer.py +37 -0
  95. sknetwork/gnn/tests/test_gnn_classifier.py +192 -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 +93 -0
  101. sknetwork/gnn/utils.py +219 -0
  102. sknetwork/hierarchy/__init__.py +7 -0
  103. sknetwork/hierarchy/base.py +69 -0
  104. sknetwork/hierarchy/louvain_hierarchy.py +264 -0
  105. sknetwork/hierarchy/metrics.py +234 -0
  106. sknetwork/hierarchy/paris.cpython-39-darwin.so +0 -0
  107. sknetwork/hierarchy/paris.pyx +317 -0
  108. sknetwork/hierarchy/postprocess.py +350 -0
  109. sknetwork/hierarchy/tests/__init__.py +1 -0
  110. sknetwork/hierarchy/tests/test_API.py +25 -0
  111. sknetwork/hierarchy/tests/test_algos.py +29 -0
  112. sknetwork/hierarchy/tests/test_metrics.py +62 -0
  113. sknetwork/hierarchy/tests/test_postprocess.py +57 -0
  114. sknetwork/hierarchy/tests/test_ward.py +25 -0
  115. sknetwork/hierarchy/ward.py +94 -0
  116. sknetwork/linalg/__init__.py +9 -0
  117. sknetwork/linalg/basics.py +37 -0
  118. sknetwork/linalg/diteration.cpython-39-darwin.so +0 -0
  119. sknetwork/linalg/diteration.pyx +49 -0
  120. sknetwork/linalg/eig_solver.py +93 -0
  121. sknetwork/linalg/laplacian.py +15 -0
  122. sknetwork/linalg/normalization.py +66 -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.cpython-39-darwin.so +0 -0
  127. sknetwork/linalg/push.pyx +73 -0
  128. sknetwork/linalg/sparse_lowrank.py +142 -0
  129. sknetwork/linalg/svd_solver.py +91 -0
  130. sknetwork/linalg/tests/__init__.py +1 -0
  131. sknetwork/linalg/tests/test_eig.py +44 -0
  132. sknetwork/linalg/tests/test_laplacian.py +18 -0
  133. sknetwork/linalg/tests/test_normalization.py +38 -0
  134. sknetwork/linalg/tests/test_operators.py +70 -0
  135. sknetwork/linalg/tests/test_polynome.py +38 -0
  136. sknetwork/linalg/tests/test_ppr.py +50 -0
  137. sknetwork/linalg/tests/test_sparse_lowrank.py +61 -0
  138. sknetwork/linalg/tests/test_svd.py +38 -0
  139. sknetwork/linkpred/__init__.py +4 -0
  140. sknetwork/linkpred/base.py +80 -0
  141. sknetwork/linkpred/first_order.py +508 -0
  142. sknetwork/linkpred/first_order_core.cpython-39-darwin.so +0 -0
  143. sknetwork/linkpred/first_order_core.pyx +315 -0
  144. sknetwork/linkpred/postprocessing.py +98 -0
  145. sknetwork/linkpred/tests/__init__.py +1 -0
  146. sknetwork/linkpred/tests/test_API.py +49 -0
  147. sknetwork/linkpred/tests/test_postprocessing.py +21 -0
  148. sknetwork/path/__init__.py +4 -0
  149. sknetwork/path/metrics.py +148 -0
  150. sknetwork/path/search.py +65 -0
  151. sknetwork/path/shortest_path.py +186 -0
  152. sknetwork/path/tests/__init__.py +1 -0
  153. sknetwork/path/tests/test_metrics.py +29 -0
  154. sknetwork/path/tests/test_search.py +25 -0
  155. sknetwork/path/tests/test_shortest_path.py +45 -0
  156. sknetwork/ranking/__init__.py +9 -0
  157. sknetwork/ranking/base.py +56 -0
  158. sknetwork/ranking/betweenness.cpython-39-darwin.so +0 -0
  159. sknetwork/ranking/betweenness.pyx +99 -0
  160. sknetwork/ranking/closeness.py +95 -0
  161. sknetwork/ranking/harmonic.py +82 -0
  162. sknetwork/ranking/hits.py +94 -0
  163. sknetwork/ranking/katz.py +81 -0
  164. sknetwork/ranking/pagerank.py +107 -0
  165. sknetwork/ranking/postprocess.py +25 -0
  166. sknetwork/ranking/tests/__init__.py +1 -0
  167. sknetwork/ranking/tests/test_API.py +34 -0
  168. sknetwork/ranking/tests/test_betweenness.py +38 -0
  169. sknetwork/ranking/tests/test_closeness.py +34 -0
  170. sknetwork/ranking/tests/test_hits.py +20 -0
  171. sknetwork/ranking/tests/test_pagerank.py +69 -0
  172. sknetwork/regression/__init__.py +4 -0
  173. sknetwork/regression/base.py +56 -0
  174. sknetwork/regression/diffusion.py +190 -0
  175. sknetwork/regression/tests/__init__.py +1 -0
  176. sknetwork/regression/tests/test_API.py +34 -0
  177. sknetwork/regression/tests/test_diffusion.py +48 -0
  178. sknetwork/sknetwork.py +3 -0
  179. sknetwork/topology/__init__.py +9 -0
  180. sknetwork/topology/dag.py +74 -0
  181. sknetwork/topology/dag_core.cpython-39-darwin.so +0 -0
  182. sknetwork/topology/dag_core.pyx +38 -0
  183. sknetwork/topology/kcliques.cpython-39-darwin.so +0 -0
  184. sknetwork/topology/kcliques.pyx +193 -0
  185. sknetwork/topology/kcore.cpython-39-darwin.so +0 -0
  186. sknetwork/topology/kcore.pyx +120 -0
  187. sknetwork/topology/structure.py +234 -0
  188. sknetwork/topology/tests/__init__.py +1 -0
  189. sknetwork/topology/tests/test_cliques.py +28 -0
  190. sknetwork/topology/tests/test_cores.py +21 -0
  191. sknetwork/topology/tests/test_dag.py +26 -0
  192. sknetwork/topology/tests/test_structure.py +99 -0
  193. sknetwork/topology/tests/test_triangles.py +42 -0
  194. sknetwork/topology/tests/test_wl_coloring.py +49 -0
  195. sknetwork/topology/tests/test_wl_kernel.py +31 -0
  196. sknetwork/topology/triangles.cpython-39-darwin.so +0 -0
  197. sknetwork/topology/triangles.pyx +166 -0
  198. sknetwork/topology/weisfeiler_lehman.py +163 -0
  199. sknetwork/topology/weisfeiler_lehman_core.cpython-39-darwin.so +0 -0
  200. sknetwork/topology/weisfeiler_lehman_core.pyx +116 -0
  201. sknetwork/utils/__init__.py +40 -0
  202. sknetwork/utils/base.py +35 -0
  203. sknetwork/utils/check.py +354 -0
  204. sknetwork/utils/co_neighbor.py +71 -0
  205. sknetwork/utils/format.py +219 -0
  206. sknetwork/utils/kmeans.py +89 -0
  207. sknetwork/utils/knn.py +166 -0
  208. sknetwork/utils/knn1d.cpython-39-darwin.so +0 -0
  209. sknetwork/utils/knn1d.pyx +80 -0
  210. sknetwork/utils/membership.py +82 -0
  211. sknetwork/utils/minheap.cpython-39-darwin.so +0 -0
  212. sknetwork/utils/minheap.pxd +22 -0
  213. sknetwork/utils/minheap.pyx +111 -0
  214. sknetwork/utils/neighbors.py +115 -0
  215. sknetwork/utils/seeds.py +75 -0
  216. sknetwork/utils/simplex.py +140 -0
  217. sknetwork/utils/tests/__init__.py +1 -0
  218. sknetwork/utils/tests/test_base.py +28 -0
  219. sknetwork/utils/tests/test_bunch.py +16 -0
  220. sknetwork/utils/tests/test_check.py +190 -0
  221. sknetwork/utils/tests/test_co_neighbor.py +43 -0
  222. sknetwork/utils/tests/test_format.py +61 -0
  223. sknetwork/utils/tests/test_kmeans.py +21 -0
  224. sknetwork/utils/tests/test_knn.py +32 -0
  225. sknetwork/utils/tests/test_membership.py +24 -0
  226. sknetwork/utils/tests/test_neighbors.py +41 -0
  227. sknetwork/utils/tests/test_projection_simplex.py +33 -0
  228. sknetwork/utils/tests/test_seeds.py +67 -0
  229. sknetwork/utils/tests/test_verbose.py +15 -0
  230. sknetwork/utils/tests/test_ward.py +20 -0
  231. sknetwork/utils/timeout.py +38 -0
  232. sknetwork/utils/verbose.py +37 -0
  233. sknetwork/utils/ward.py +60 -0
  234. sknetwork/visualization/__init__.py +4 -0
  235. sknetwork/visualization/colors.py +34 -0
  236. sknetwork/visualization/dendrograms.py +229 -0
  237. sknetwork/visualization/graphs.py +819 -0
  238. sknetwork/visualization/tests/__init__.py +1 -0
  239. sknetwork/visualization/tests/test_dendrograms.py +53 -0
  240. sknetwork/visualization/tests/test_graphs.py +167 -0
@@ -0,0 +1,240 @@
1
+ sknetwork/__init__.py,sha256=v_CykDTnvy-yIDGXKMouorhIA0EBdDecuSpscOxX-TE,533
2
+ sknetwork/sknetwork.py,sha256=VYoI-gwqwBKPx84cA0KnYDRofrgIXs8xtASD2nu5fE0,44
3
+ sknetwork/classification/__init__.py,sha256=Rs3cyINFdbOxpJ_tjB10_jCFLKxDYWhUgsFTICfCY48,466
4
+ sknetwork/classification/base.py,sha256=cE-s1JsHE3xrXKvPl4QO__vpDbZCjQWuP6tVZQeohD4,2534
5
+ sknetwork/classification/base_rank.py,sha256=-cRUvLnyVO9i63g2cu50K5Hec2VcjD3dxzW8J9Tim7I,4839
6
+ sknetwork/classification/diffusion.py,sha256=NEKnD6JMmGlMO1iUo-YLpsGKt0ah7YiI-o1L0yb5r0U,5308
7
+ sknetwork/classification/knn.py,sha256=hMReHPE3dyLf_W9TysD42fbupsS3RfujrnXoo5uS4LI,6594
8
+ sknetwork/classification/metrics.py,sha256=bzRAySrjOie8-DxMYV6Wyyhg90y9RdjHTZM8kB5aK58,6807
9
+ sknetwork/classification/pagerank.py,sha256=KzubukKCYxKBnUt_IcgpZ3mBj0TxuRmlMz0tHyEcNXE,2544
10
+ sknetwork/classification/propagation.py,sha256=sz7i06Oj-Z-UXlcBatt6REWtoHH1v5tkvpy7GvAeHs0,5695
11
+ sknetwork/classification/vote.cpython-39-darwin.so,sha256=UyJDaKK4GciZAhGQVdq8QfN8BuhTYu4HTfJRvWdOrXA,273062
12
+ sknetwork/classification/vote.pyx,sha256=rWd0oTqo0jliTLtdtUhreo4m-YZ9Us7IWP4iLMkeFrY,1658
13
+ sknetwork/classification/tests/__init__.py,sha256=sy9uRiPhYG2i7uqM3P07-VUf4UcZEHeOoH9BvKCpU3s,31
14
+ sknetwork/classification/tests/test_API.py,sha256=z6hBTzIN0pEkTJDChQftQOCJfj63I9QH-qY3QN1MRyQ,1296
15
+ sknetwork/classification/tests/test_diffusion.py,sha256=GSE8knG3ZWrwZRPIBJVk4cjk3w0PFQLGkz8WTFOaGN4,1307
16
+ sknetwork/classification/tests/test_knn.py,sha256=q3s4riy_fQGj4sBm-95HYf3sCNPdtD40bLs8JiE6vR0,758
17
+ sknetwork/classification/tests/test_metrics.py,sha256=eBs-5uAEz2s8gukMyfhQ07GSFoyvxtsslLuc6VgUxBU,2303
18
+ sknetwork/classification/tests/test_pagerank.py,sha256=ZyMbTcPxtS5ZpGOBqyhpjHzoFZgIylu14v51A6cqclo,607
19
+ sknetwork/classification/tests/test_propagation.py,sha256=02wcd2Y8ZBvpfJqIwQfDgdx_k0q492My04FvCrMmP0E,827
20
+ sknetwork/clustering/__init__.py,sha256=wd3zec36EwHqLrrOJUz4g-6aFsoDVUIEDZzHo3Z2Gtc,384
21
+ sknetwork/clustering/base.py,sha256=sn5xM05eXdVcrx6IdECexbA37kLXxFjoHCB4mfobL0s,4114
22
+ sknetwork/clustering/kmeans.py,sha256=fAPm6AtGRcBrZ5vmVCbyl3-8UnTNQVssSQ29BdjAGVg,5006
23
+ sknetwork/clustering/louvain.py,sha256=mNyuCVVYWPalwqH6HADeFFnCBFLhLSaC2lbl34O0WRo,9864
24
+ sknetwork/clustering/louvain_core.cpython-39-darwin.so,sha256=T3sjASrsZwb-CBRlqmcwg-HFtAU9HuHiTRW7iyefA8E,336382
25
+ sknetwork/clustering/louvain_core.pyx,sha256=6Jg7P3oN4xdVCCy8lQ81_ZM__Athd2c9Y7PZxryg--I,4558
26
+ sknetwork/clustering/metrics.py,sha256=VJPgmB1OvxA0SOaIQIGyJDUP1cgWFElnfdVaQ2krYrg,3060
27
+ sknetwork/clustering/postprocess.py,sha256=YoluaLAJg_c86u_abnRH6V7GHsnsDDL8Z5zHJLHwg7k,2035
28
+ sknetwork/clustering/propagation_clustering.py,sha256=lbmS0gKxQI2M6kMd1XH1gOhCqAwrb-HAYs0wBM4RMXQ,3849
29
+ sknetwork/clustering/tests/__init__.py,sha256=Ta0XKY7pklRvHyUY3Jlow3A2V4REa5geZG74xPz80Tc,27
30
+ sknetwork/clustering/tests/test_API.py,sha256=67lQoP-isJ0fXWlEezwmrV5-RGD6Z_AUsSAfWCBQsgo,1639
31
+ sknetwork/clustering/tests/test_kmeans.py,sha256=L8ZDb2BFLfg1qcAQwNMEVbKdmyiRlGKu2FyOkH8T7Yg,2096
32
+ sknetwork/clustering/tests/test_louvain.py,sha256=AcyfZlHjVMEqIJHHRCm3koGRPVaZr2YRKmvbZI5W02k,3608
33
+ sknetwork/clustering/tests/test_metrics.py,sha256=YQk3mg_ca3EkqWiLRreLREE58UXKfz5qf8ZfYqd3C-M,1820
34
+ sknetwork/clustering/tests/test_post_processing.py,sha256=LM0rZuv1xCGI834qkX8VYO9DSIEKxG-fDpi6OYD5ooU,619
35
+ sknetwork/clustering/tests/test_postprocess.py,sha256=WSmAlqB-6Nw3eoL3NaOyNlpPr7GVnNnllkPVdyE9rXI,1378
36
+ sknetwork/data/__init__.py,sha256=zl8_AD4bx-OqM4RrcYN9eEiJdln2DBqK4oypANMO3M0,305
37
+ sknetwork/data/load.py,sha256=YG5rooMsGFbMPtDAcMlZYKfH0trnmQOS23MT3D6LdHQ,14460
38
+ sknetwork/data/models.py,sha256=AFbjbmxqjZLhe7E00mXwyk5Cc1O606zooYFg-2IWpuk,13122
39
+ sknetwork/data/parse.py,sha256=9XCk2Z4kR618grg3AdIMrpmVe7We-OiX2E7yo-B7rrs,25666
40
+ sknetwork/data/test_graphs.py,sha256=1L6UM7khCdWzat9jw10yABZNut95RNDSf2mGYPbs7BY,2488
41
+ sknetwork/data/toy_graphs.py,sha256=MfJs0EjWREzL36f3BeoQUQeKrrqkcxGZct3n4pRnl0g,24997
42
+ sknetwork/data/tests/__init__.py,sha256=FSfkSYRKjDqIuEiEZ39Otve50qSxi7QObNnNrHHPx5s,19
43
+ sknetwork/data/tests/test_API.py,sha256=UgiSE9LsNLFgX_mAZXm0iFgy1prtGsPgaVYF8nkbcz4,958
44
+ sknetwork/data/tests/test_load.py,sha256=s65wkJDYCyU5BNgi0XwIYhsPcfvYIBD9-R43I22Y760,3551
45
+ sknetwork/data/tests/test_models.py,sha256=oP-X_k0vbSB4CwlV4GQVVBAQ9uI_8frFicde5yhVYAc,1915
46
+ sknetwork/data/tests/test_parse.py,sha256=DeDPaOw8IR0JuABdyUDa4GcOxyNFiKD9933cqyETD98,12753
47
+ sknetwork/data/tests/test_test_graphs.py,sha256=U6mQII2kK1Wuens26XFydJgOF0s2uZ7noT1Iq_Hmw1s,848
48
+ sknetwork/data/tests/test_toy_graphs.py,sha256=kxOb7QpXGi8O7Kb6RmWoRUbAoyllM_-SXCRcYoH8B00,2137
49
+ sknetwork/embedding/__init__.py,sha256=5emzIpzQLcOfeo1rcugpnXF1S5SNhiQQa-3xJrzWl_Q,532
50
+ sknetwork/embedding/base.py,sha256=86LNmaADwGpOC5nLDcx3Fw42AYF32QlGZCUV06LDnx0,2767
51
+ sknetwork/embedding/force_atlas.py,sha256=hGanDDS7G6CbhwN72QB_kBg8zMSbuDZt_Frj_k6txUw,7429
52
+ sknetwork/embedding/louvain_embedding.py,sha256=WWM-teQvGc829ZfCK3-6sciZyhvpAZB1UvPejY0FRgI,6958
53
+ sknetwork/embedding/louvain_hierarchy.py,sha256=b03u4M847PpwI4-Wf7beKCUZ8HwnGDm-uNn5ukmofc8,5708
54
+ sknetwork/embedding/metrics.py,sha256=4WRsuRsFa_z-0ZMDJ5LOoTJO2eMNaK5DUUB9bqWlIj4,1963
55
+ sknetwork/embedding/random_projection.py,sha256=4GFmGgM9apkuZgY15HYQXCmqmbE_CeR-soPB9FHOFdE,4920
56
+ sknetwork/embedding/spectral.py,sha256=2nNw2GISQxFKzjnecFCmgZeM-Z1_GElbkRHeZjPKW5I,8121
57
+ sknetwork/embedding/spring.py,sha256=5fyHQzmIp8gY9DdI-DFvMc37mjMb64bs22ZZZ9YFDXM,7151
58
+ sknetwork/embedding/svd.py,sha256=cwajX5wjVXygPIU3AXRbKwsW4aOjmK8-xF_QJqyr6MU,14664
59
+ sknetwork/embedding/tests/__init__.py,sha256=QkDQtTJReK7Ldp0Y4f5-tbTdcp224r1AF7jU26alSgQ,26
60
+ sknetwork/embedding/tests/test_API.py,sha256=zgUHmIMEliSezL_44VEttuofdUk22WYW1eJDDhLlars,2579
61
+ sknetwork/embedding/tests/test_force_atlas.py,sha256=-YM4HSF5Nvpm8e4SoCHiA2o7yAkm0h_ys7GRaJ1wloI,1120
62
+ sknetwork/embedding/tests/test_louvain_embedding.py,sha256=UA5W8mfO0gqq1hH1MWc6DPHhFUK8ZeoaY9jdYY_TRww,1156
63
+ sknetwork/embedding/tests/test_louvain_hierarchy.py,sha256=DUGC0_yJ4IpWAChy8FCwHSrA_5LmQi_p_h11cZ2tu-w,730
64
+ sknetwork/embedding/tests/test_metrics.py,sha256=JC3xOn8W3sKJEOV4hSH79RluDNPSFm9Lqa6ps2IipYM,952
65
+ sknetwork/embedding/tests/test_random_projection.py,sha256=ESF9DUzxHzBw4yY_vvyiTeeP4qwreqibC_NzKTO1Xyc,1189
66
+ sknetwork/embedding/tests/test_spectral.py,sha256=SwbLEFslhVe_dLGlVBmk_zsNpSuFU-oDVjSi2MMGwaE,4258
67
+ sknetwork/embedding/tests/test_spring.py,sha256=tanArc4vstNZ36CLr7S8uEVdXX0iP2K9UWKQLTcsPsQ,1643
68
+ sknetwork/embedding/tests/test_svd.py,sha256=RbLhTzcy692aMqhtRYUEQp11LaGTOrCGZTLtaAnyoeQ,1175
69
+ sknetwork/flow/__init__.py,sha256=6qA3k3UnHslCW4bkcfP3IdA43L8cDxmxvw3KKec3GZE,154
70
+ sknetwork/flow/flow.py,sha256=yaT6-VEXZK5nmpAI7zgZnDJIW7-DLWh0XhJQgY2EkDA,2756
71
+ sknetwork/flow/utils.py,sha256=rDyz5N_zOIkdeH81CFadOqlJ30ne-Rrh9QOgG4T-ItY,2970
72
+ sknetwork/flow/tests/__init__.py,sha256=K5G3SwuR1yP0HnXzGOC0kYf2ST5IIuXWVD-WMjiFJe4,17
73
+ sknetwork/flow/tests/test_flow.py,sha256=0D3T0LbgVjcKxCJUrc_XKImK06Ggoq7YyiQns74wd0E,626
74
+ sknetwork/flow/tests/test_utils.py,sha256=vwd8rq9vIjz1ibnpwa9BOCXLe2O6DYVXkFtPcSdB0xw,4153
75
+ sknetwork/gnn/__init__.py,sha256=m2lkDJoJZocJ18scpArsUHuzePZ8Q-ue7D3yXQ5H_RM,519
76
+ sknetwork/gnn/activation.py,sha256=D7o4FdbDMrBa2PQrWrvplCf14QOSzZ67d9eWN9bHY-M,3560
77
+ sknetwork/gnn/base.py,sha256=kljF7tIVyNNtY1YkmWQKVgmxRJb3e54GG_4b87_BAZE,4943
78
+ sknetwork/gnn/base_activation.py,sha256=XogZDdhl3QDyADvWJhMTGSnVYsKPI3PDHPu89yPL1VI,2306
79
+ sknetwork/gnn/base_layer.py,sha256=SePTUVKI4Kem6N2Wi8WimIr2zhGAUoMGEw5ZE0JrJ2I,3976
80
+ sknetwork/gnn/gnn_classifier.py,sha256=IsYQyxsyNZX-79QkxHgQrKsbp-dh_HAmwMG71rT34wA,16078
81
+ sknetwork/gnn/layer.py,sha256=GPeprxMyqiuZs1VPZjHsI4VHC9lQxRvtUxZrObaHomc,5532
82
+ sknetwork/gnn/layers.py,sha256=ZPDXM91tSDRtDaMsj2j8iTALmOSIRKMiQoNT3WUZTnY,4524
83
+ sknetwork/gnn/loss.py,sha256=NP1QMqPRTUfN7ROqVCtyEoDaq6tnEhMrB2lwGxM72ss,5162
84
+ sknetwork/gnn/neighbor_sampler.py,sha256=TXdMRFwiT8sOdl6-S-flQZ5Rjrx1hwTzFqqiR_8PHTQ,1864
85
+ sknetwork/gnn/optimizer.py,sha256=ZxaSfdxCyIeyd6YeQe0pFAEg6xzXzC7jorhlacWkatk,5739
86
+ sknetwork/gnn/utils.py,sha256=rytD-zPP5YU8JpksMs2FixDY7eZgfPZh6zidJR2mYjI,8084
87
+ sknetwork/gnn/tests/__init__.py,sha256=SvFOB5nn_yN-JCaYFAtzesL0zU0OihQp0s0dOP1-MKE,20
88
+ sknetwork/gnn/tests/test_activation.py,sha256=HZdBaJ8P8LBJ-3_Typc8Qkvsho9gNSy1-CANEz8rQ-Q,2487
89
+ sknetwork/gnn/tests/test_base.py,sha256=PyAaZxE3cRobBqi7MMP-1Nx8RMwnPZ-J8wkuH8wtycU,3663
90
+ sknetwork/gnn/tests/test_base_layer.py,sha256=X8z7kHbGvbl2FdII41OmuCm3Vm6ySGU1kTITNb-XdB4,1395
91
+ sknetwork/gnn/tests/test_gnn_classifier.py,sha256=7O_sfebA448E55_oj-fRX01D_VtmTikkA-mnRMD0w0c,9673
92
+ sknetwork/gnn/tests/test_layers.py,sha256=TmSMbauR1iFJ0G44y_ecSm_pvOQy1JjLGkEXCxsvQcY,3184
93
+ sknetwork/gnn/tests/test_loss.py,sha256=W5DA6FRd-OppeRKFgj2gtLqNvjkXkCQPmV6lg3ENu-c,1045
94
+ sknetwork/gnn/tests/test_neigh_sampler.py,sha256=zc_6G3JhZvKrFLJAk2UJSOHZwN7sGojC8bXTCbmaUx4,698
95
+ sknetwork/gnn/tests/test_optimizer.py,sha256=4AEsvs8mbn_rWUkw7QKVoQpMWKn7ZiO0oJvyIQXB0kk,1790
96
+ sknetwork/gnn/tests/test_utils.py,sha256=1o5u5J9eVjgYbRwB_fWZW8HXK1ifPReGln4qnP_1_nU,4826
97
+ sknetwork/hierarchy/__init__.py,sha256=tWV5Bll9SheZxwDyd4GsOni6qTlP22mvH40zma9hf9w,454
98
+ sknetwork/hierarchy/base.py,sha256=kukRqgisGOfEHQAXzC97stpBNRzjNHfxy6TSiz2Cz-k,2028
99
+ sknetwork/hierarchy/louvain_hierarchy.py,sha256=m3fwhAimPyC5p0tf71O_Hf2uTJUHenAyLMQWI2Xn828,9109
100
+ sknetwork/hierarchy/metrics.py,sha256=_wYGKx_VDE_sfbg-uUEFMhOjSLFqzC8rFHjJo1hdVL8,8046
101
+ sknetwork/hierarchy/paris.cpython-39-darwin.so,sha256=nVdR6UDhU_rdzScATKFsiMCiBydGRy9LW1p6DivmY_g,381687
102
+ sknetwork/hierarchy/paris.pyx,sha256=2w9LxJAtGo1Sus78y9IIIaeXjHlIrbrGbyiaOE2ITjs,11673
103
+ sknetwork/hierarchy/postprocess.py,sha256=sxl85hW-b6r3ZAidsPn4uHotfiKXKy1GqjwVqAzAK2Q,11962
104
+ sknetwork/hierarchy/ward.py,sha256=MknV5ewCRmgncgk6vXbO3tUjwSztUNus9NmhAxUHfpg,2824
105
+ sknetwork/hierarchy/tests/__init__.py,sha256=l2HHDiDLpoTQlwzh1mtCyp6bS8RxBdJK2DP1FGiQJMY,26
106
+ sknetwork/hierarchy/tests/test_API.py,sha256=Rxi6bI9Qh2vduClnP2UrtJ-rOgRogBWEys2wt8sjsPE,785
107
+ sknetwork/hierarchy/tests/test_algos.py,sha256=VVIO-K7df58RNrlqB6olkwZKdvBwASiEINFmzadkVFg,1143
108
+ sknetwork/hierarchy/tests/test_metrics.py,sha256=66zCyyzbQPGocE35ns_QEDJMbPjYyr3O1w8tiEK158c,3158
109
+ sknetwork/hierarchy/tests/test_postprocess.py,sha256=OSrWE0gT0AcPI4LKmUL-Blfg5ErxnjS3d4rPNnA63_Y,2209
110
+ sknetwork/hierarchy/tests/test_ward.py,sha256=pBgpZTLlTePraX-STs2UJ4rb5Lucunw3IajemVwA4TU,875
111
+ sknetwork/linalg/__init__.py,sha256=HrprvMjB5BL_9M6hPGxpRWmGK9zjNI7e9v3lEjLw14E,511
112
+ sknetwork/linalg/basics.py,sha256=8AFph_1G5SZP_24jrIv6qIWooO0UMglL4jMgx3ZdYIQ,1142
113
+ sknetwork/linalg/diteration.cpython-39-darwin.so,sha256=EjdQfNrDclV6qeiLx_l8qc2hLuWfF-OMs3vtJw3k1fs,252188
114
+ sknetwork/linalg/diteration.pyx,sha256=vd9cOCBWGjz1jArMWl39V1p0kJaLcp04dk4-p0QkNdE,1457
115
+ sknetwork/linalg/eig_solver.py,sha256=WXUYLdqjU3xSImJVhA4hKFge75d4gaKQCPfTLjCOzxc,2706
116
+ sknetwork/linalg/laplacian.py,sha256=_gQr8YLqMUtK_IMNgvJoQX7-uODVlvCVmc-oTsgw7MA,401
117
+ sknetwork/linalg/normalization.py,sha256=Qd0-NHSh75iE_TEUJsmObVoOBJUmVyNFfpt3--Wb-PA,1795
118
+ sknetwork/linalg/operators.py,sha256=9CxnaNHI8R5jdX3oY50dyeHoASeAzdoH2HyFyaPTpUE,7393
119
+ sknetwork/linalg/polynome.py,sha256=1UtYWc9LLn7RXgymjz2NmPUmiZ85cYyn9QKZsn8sjs0,2200
120
+ sknetwork/linalg/ppr_solver.py,sha256=DkGApQHNkCkVIidhxmjidyc58oHT0sgRa_C4IehxjE4,6536
121
+ sknetwork/linalg/push.cpython-39-darwin.so,sha256=_kcGC4RpFr2OU6KNZGkk6JLR37tXZQLAXoqwSflBFOg,290454
122
+ sknetwork/linalg/push.pyx,sha256=oGPoV4X1px5YXj6TUXPS_L8imuX2sPm_6ltc5iqmHkU,2431
123
+ sknetwork/linalg/sparse_lowrank.py,sha256=LUhbqa01p51SYhoIb2Dmx2b9fMc-iOu69CAVHscR2Xs,5028
124
+ sknetwork/linalg/svd_solver.py,sha256=qgtgowPycr1jhPWRSZ7UU1JxOYPCaJF5Ms88LDvEkc8,2687
125
+ sknetwork/linalg/tests/__init__.py,sha256=l6yw2Ls1ndhVVcSYc059kAjQ2-VoDGZXxnBaglFZ4zo,23
126
+ sknetwork/linalg/tests/test_eig.py,sha256=lUAgo4UfWuuSG5DhSk5SIT7ToLDgPG-5JCgmOe_M7Vw,1504
127
+ sknetwork/linalg/tests/test_laplacian.py,sha256=B6UhJOmYUdNlXwNoxLLtb--nv9mx96Orl-W1Vl6PLyM,434
128
+ sknetwork/linalg/tests/test_normalization.py,sha256=VpgE0oSD3SOtvAsOOefrByh1KJ9Y8MK-gJTvpX7_5JA,1104
129
+ sknetwork/linalg/tests/test_operators.py,sha256=Cd71nkaT8-QqcqXebJYxGy7cAZ2JdpCAdMb5QhW48-w,3105
130
+ sknetwork/linalg/tests/test_polynome.py,sha256=VYru9RlUIIN6dKNOiitSElPQqIxWI7mqx3dR5zd9Nv0,977
131
+ sknetwork/linalg/tests/test_ppr.py,sha256=IKxna1-txZm9LntGjDMxTZqslFhNWQXjRY3RjCex6pw,2089
132
+ sknetwork/linalg/tests/test_sparse_lowrank.py,sha256=LEDo6DChembm3xQ-vjeqqZi0ugWx7piucR9_LdDecrI,2276
133
+ sknetwork/linalg/tests/test_svd.py,sha256=eLRmSiHt8uWzknImZtRSZmJC8OX0YDgUt9-8PePc3OA,1285
134
+ sknetwork/linkpred/__init__.py,sha256=UZ3rrbhcu3cYZd3KY8Sa9xaj31la_3mAdtZJlbVgahA,300
135
+ sknetwork/linkpred/base.py,sha256=b7LZBlDaFOYpX-TITQJCkCDAcB_HDke1JLBs9FSPbbM,2725
136
+ sknetwork/linkpred/first_order.py,sha256=VTqDaFOTlII_K2jwwCPl8bMXJIsFmcb9XPp-9Kyf2sE,17173
137
+ sknetwork/linkpred/first_order_core.cpython-39-darwin.so,sha256=eJXXcdghFd2yqLis8_mFUZi3HToXHGQaUO23D8hF4GM,342866
138
+ sknetwork/linkpred/first_order_core.pyx,sha256=NrcaXBuJRr7d-rrtx4yvDBYeXwoH_Ae9niPZxZ3AaXw,10048
139
+ sknetwork/linkpred/postprocessing.py,sha256=KIQI5yU3AyYzFDCSusQDHYK0pNa9RxQaHpMaZN6SfHs,3143
140
+ sknetwork/linkpred/tests/__init__.py,sha256=05sK8Ihh9Gi2_uobPC_ErMVE4KOt0761NzzV_vJh15U,32
141
+ sknetwork/linkpred/tests/test_API.py,sha256=HEnNymReuAqrHXGoMk7iTchcjMdyqjZsDIJHJdrZzYk,1317
142
+ sknetwork/linkpred/tests/test_postprocessing.py,sha256=UM5IlVnWGY74eXQrJAWMVk_vec06EaBPLVXrD4kErwg,508
143
+ sknetwork/path/__init__.py,sha256=zsLaPBgkAqvFFV4GDc-gJPa4filCPpxwGtdarYC5eeU,245
144
+ sknetwork/path/metrics.py,sha256=s3OIri2twtX3lrtb96dadKGzxzBmXncE9AHDd8kxwOg,4867
145
+ sknetwork/path/search.py,sha256=P8rEHQrtHXC46XE86FfKdrNNlDYzQcsyyQrPqOMwzgU,2503
146
+ sknetwork/path/shortest_path.py,sha256=caR6Ro1MqQkvdOhRn92KQEJUrSq5tBh4sGXUm_BaXjs,6725
147
+ sknetwork/path/tests/__init__.py,sha256=_COAjci7RJ_XtBDGwy5aOgZ9dPSQH3j7d6qMlLHs55o,28
148
+ sknetwork/path/tests/test_metrics.py,sha256=X9jMF_4Qclb3oP5fkq29lDaTGHo0HxvKB-hG-XEtwog,839
149
+ sknetwork/path/tests/test_search.py,sha256=LR3I9rnPAtUC1U3ShUEKMLeohkpaA4dAJRX59dxezh0,703
150
+ sknetwork/path/tests/test_shortest_path.py,sha256=AdZJLoteEXXDGZhETyRnp4Dh2IXHGzGNuCZOdeYHZxM,1519
151
+ sknetwork/ranking/__init__.py,sha256=dp_pbsFkS6TY0pZ70xhuII9WdvL5n0pNsc2yRH6nnTo,396
152
+ sknetwork/ranking/base.py,sha256=hp8J30acecyNlMo2F8Rq6jUk3A9fVaLH8IsusZpn8y0,1447
153
+ sknetwork/ranking/betweenness.cpython-39-darwin.so,sha256=Xq8p3EY9lmWPMHwKyB_YhQ8Mb4vl46IdfXWQ4XtoBX8,132061
154
+ sknetwork/ranking/betweenness.pyx,sha256=VlNEah6JjFHuizZ7eXqFlvizB5NzgAW1OK3WOXwcCEw,3160
155
+ sknetwork/ranking/closeness.py,sha256=GEItgxlwpchBseLYJhSxM76OaTnj__-qufIGAcqh2yo,3058
156
+ sknetwork/ranking/harmonic.py,sha256=Bw86exKhHKWx_1T4Z1qUt_rWS6_INlM1Ln5y4m1hRQw,2303
157
+ sknetwork/ranking/hits.py,sha256=L39a9Ze3ITUbikmNhA_Lx-V5s_RQr0XnNkOsIgG8m98,2761
158
+ sknetwork/ranking/katz.py,sha256=_l1SxOFs3HnH6yFZl4ak-9gwE25rWqM4kdoaXzKoEvc,2440
159
+ sknetwork/ranking/pagerank.py,sha256=rO5UypuRxZLKAfQujLLRfzg9as-Fvj-whp_58NPhRCA,4511
160
+ sknetwork/ranking/postprocess.py,sha256=7QCpDVFA0WKcvC97gc-9t00vb5WAe6pVTGpRvJ6cgV8,526
161
+ sknetwork/ranking/tests/__init__.py,sha256=ZVL3kCN-qV5ThJU58iaMvJKSIkZ7ke7liLtLwI4TCHY,24
162
+ sknetwork/ranking/tests/test_API.py,sha256=KsFmUijSjH_YushmTVdIUydVioqQHlO7sgoOSqA-y7w,1160
163
+ sknetwork/ranking/tests/test_betweenness.py,sha256=JJVOwmXtDiXJNV5RMlCFrqCc3L7BySpBbsN-5rITzkY,1133
164
+ sknetwork/ranking/tests/test_closeness.py,sha256=6CVxEVNnDunkvFYgDQ42Mdv8Fm39ULAqaeFhM_v7Umw,1007
165
+ sknetwork/ranking/tests/test_hits.py,sha256=zStzrWZ-pv2Nsd-pB282FgW3KAn1TyKjz_l85tJaPJ0,491
166
+ sknetwork/ranking/tests/test_pagerank.py,sha256=iQc4gpKjsoh4vI2RNC43xM_OUo_UBDRWmFBlTR5KK7o,2521
167
+ sknetwork/regression/__init__.py,sha256=nRlbcR8bA2Lz-OmLPMIPhBzgDCol8oSA19qL3IninXA,141
168
+ sknetwork/regression/base.py,sha256=pMR72RqK5k2SWn01qylJhOIUlBWt_mMosNuREkrBV6k,1433
169
+ sknetwork/regression/diffusion.py,sha256=ffVaIy37JmyKYPmlgCJWi4w7bCiIw0Dobl7gmUq0TJo,6977
170
+ sknetwork/regression/tests/__init__.py,sha256=BT8kCCMN_pv7znhIR5GSQ_XxU5brmrCYDwm4QJNRCV0,27
171
+ sknetwork/regression/tests/test_API.py,sha256=jAGbjnq6eYxSHpX7eGiVZJ7rQPKdVam74ZCWI4k_1NY,1132
172
+ sknetwork/regression/tests/test_diffusion.py,sha256=c9bfgCmLcbFyChcUcvN8F9aYWqIeFPbtH5N0MViTtcY,1687
173
+ sknetwork/topology/__init__.py,sha256=6vEvqXM57rUJvKbCemIsc30X7D2sr114jKP9N9kOJO0,447
174
+ sknetwork/topology/dag.py,sha256=tNC3k1ygO2TrjvxWhfVb2PR_UZTtl9TYkgbWMqRvpPo,2322
175
+ sknetwork/topology/dag_core.cpython-39-darwin.so,sha256=FioTA20fujKBIPV-nGDi1U2JFwUZlZlgIhjgtis5o6k,255386
176
+ sknetwork/topology/dag_core.pyx,sha256=OEaHmLEtXAojywnaE2KtNmKGvSyk9bvxmx2EWSxQNkM,1008
177
+ sknetwork/topology/kcliques.cpython-39-darwin.so,sha256=-kOt9YVB-F2y5VfGk7ENnJwzbSwFFpem4024AYsqiYQ,319402
178
+ sknetwork/topology/kcliques.pyx,sha256=BGfuREPxmg2C9flPtWNmY3YXYYF_UKTVDnQowIi-OWQ,5121
179
+ sknetwork/topology/kcore.cpython-39-darwin.so,sha256=90F3TX8XbcMy5JvbTQEUOp8RLjLxGR1ArePI1iASaDk,296087
180
+ sknetwork/topology/kcore.pyx,sha256=90TUM4Vvp3H6wL2nVbyaGSmUcO27sww4iH2Vo6unJVI,3380
181
+ sknetwork/topology/structure.py,sha256=Asf4z7x2ba9Q_9kD1XRQ_zt67D4GbU68nkBiZ8cMMSI,8622
182
+ sknetwork/topology/triangles.cpython-39-darwin.so,sha256=l6DZOG51-KcqcdO8v3Bj3zoK6pNmXxq7g3e8_mXcWBg,111163
183
+ sknetwork/topology/triangles.pyx,sha256=b88u7bDTdbJOp0Hph3qP8mzgotahus1o0UYEhyJoTV8,4645
184
+ sknetwork/topology/weisfeiler_lehman.py,sha256=TiHsumRTIQRhxNKwooybPmoKcVDgsm2X_GdZ5yJaOhs,5310
185
+ sknetwork/topology/weisfeiler_lehman_core.cpython-39-darwin.so,sha256=k8zmWxcmn-sJuMxC67QE63y3k20tcm7MVODM5pj-T4Q,274840
186
+ sknetwork/topology/weisfeiler_lehman_core.pyx,sha256=e1utd0Ea2y7Z6dUJ53e4UPaWDY_exC4Rv0DDtOwuUlQ,3107
187
+ sknetwork/topology/tests/__init__.py,sha256=9lKrPX4BnSJbK-VlDi9TsmAgDwqF3H423KhJ1u1Uaos,25
188
+ sknetwork/topology/tests/test_cliques.py,sha256=p0xt5s_Vn1wingZnny1_0Yh3HLbRPNaYgEQXYgyFjV4,901
189
+ sknetwork/topology/tests/test_cores.py,sha256=n56EYEmEr-t-JXOw7TBUtmkmJzpFNT11d4pg-pTPk44,607
190
+ sknetwork/topology/tests/test_dag.py,sha256=3jZEApfXZOKNB2mvdaO9qeJjJ852T8V_cAG2FSl9jco,654
191
+ sknetwork/topology/tests/test_structure.py,sha256=SAbgm_XjshTb5Jao1OOxz8STEa8X9WJmcTm4dxcwBCo,4635
192
+ sknetwork/topology/tests/test_triangles.py,sha256=DCBw9g5DruotujNRiqs_l4JZcA6YXbZIoqiC_aCklIE,1342
193
+ sknetwork/topology/tests/test_wl_coloring.py,sha256=W69Yb6x47-66vmFBVXDx0rJ2d3XjwHdSa37D_K_Lwxg,1648
194
+ sknetwork/topology/tests/test_wl_kernel.py,sha256=9Ek3WV8lz8qr5ACdi6fdSBNv2z3mZrPV0eNCzCPY7NI,833
195
+ sknetwork/utils/__init__.py,sha256=xnzqcm6gf-7fqzg9iznmAzqhk0f-5kA-hOWGpnjvT9M,1170
196
+ sknetwork/utils/base.py,sha256=GiX9CMIUzak2ZyUjhpr9ZJQoWoI6YgijNIVNBTFdjwg,1055
197
+ sknetwork/utils/check.py,sha256=ob_5lEHuY4JGJe_Xfe8S8Q0qcKnvz5Qu4CaUvSmpp4U,12835
198
+ sknetwork/utils/co_neighbor.py,sha256=auRqFmkvEN2nTEuGbYYZTyZ-Ho0SqLn7QPfqYPHZSFU,2334
199
+ sknetwork/utils/format.py,sha256=YW0XwxHneSWu1XqAdOzQionWrCpbPtuoQTyfC4Vqkf4,8589
200
+ sknetwork/utils/kmeans.py,sha256=Wkq8WmF3RwShUSRQvf2wXNYIx9HsX9oAltZvdh7sOS4,2949
201
+ sknetwork/utils/knn.py,sha256=pOdLVVTiExkVpKswnjxzQpKnGZnB9rQY_kpN-7PbqwE,5324
202
+ sknetwork/utils/knn1d.cpython-39-darwin.so,sha256=YT4Wel70qyQP-qr54P38cnmMpqCiHbv6fSGjX4BtHIY,274439
203
+ sknetwork/utils/knn1d.pyx,sha256=krTMOcFHT1bSctRUpgjuGq1bY2ORUJJqsWbZNVebrgU,1987
204
+ sknetwork/utils/membership.py,sha256=mV0AGCA5E1JsGvtEeEmRFSpbSACmnjc2aZZfFrAxOlI,2151
205
+ sknetwork/utils/minheap.cpython-39-darwin.so,sha256=cj7oi7jwvWf8wZZVcZ_XkCEkWeLTeD0qahZ3kf5M1c8,255049
206
+ sknetwork/utils/minheap.pxd,sha256=yaGQw4zV69le7USJ1tPyjpKO9fISIfrr1xgpOEJNIqM,639
207
+ sknetwork/utils/minheap.pyx,sha256=6XcygVKqfBezGPXWcGupo2GHx_9LmlYaF6ZNEGA0VUM,3385
208
+ sknetwork/utils/neighbors.py,sha256=XNqwPM_PPpf_x-YhjEMVZJDxmazrVw9Eky3hNv9IGz0,3351
209
+ sknetwork/utils/seeds.py,sha256=Q7_hnoma2YnjrSJ0L_9_t3Ro5PBZ3t5wvirp5wmbGAE,2488
210
+ sknetwork/utils/simplex.py,sha256=qKdpv-veHBBl7-nBICUWIY406YoJy__RbeR0xfThM_s,4244
211
+ sknetwork/utils/timeout.py,sha256=kwHOLZFnOTrRhiEjtcwATYhsXbf5e8zV1OCoEKuG8Zg,1047
212
+ sknetwork/utils/verbose.py,sha256=wNCC05zQlavWLwQuhF0nIP-y3jHtQWiW25uEUjNugFo,951
213
+ sknetwork/utils/ward.py,sha256=nWTRrGaXGNpcvqEXR1IvM3whTxpPzrGjr4a9U1O3hhk,1513
214
+ sknetwork/utils/tests/__init__.py,sha256=y7PVVv2Wiz1msA5jqKOuB5BbB4UzCmDZ-pml9hIQyjo,22
215
+ sknetwork/utils/tests/test_base.py,sha256=cdZhSEAJ1Jm3U1PGqPgIiQJfi2ILxT3dahpabQMtyjE,823
216
+ sknetwork/utils/tests/test_bunch.py,sha256=ZNyfvjZs9F_C2PxD5h3z0ln5_qBXBkrdEXZoDASC0VQ,335
217
+ sknetwork/utils/tests/test_check.py,sha256=xtSbnvCsPOkf0Sh7BP3W08ajbSHgu2yYwBH4QPsnF94,6758
218
+ sknetwork/utils/tests/test_co_neighbor.py,sha256=8C_TGhbteDzM4zHTktwDTn1fJWevE9cVORK7D_mwivY,1415
219
+ sknetwork/utils/tests/test_format.py,sha256=nk5tWpZWgDUH0WYVbXlO4PI2U4A5c7_PMu6eZIllXho,2114
220
+ sknetwork/utils/tests/test_kmeans.py,sha256=XO8aq2OZ8WQ9kEGlvRd1F7OaaHoOnQOfb-zIkuXeoLE,543
221
+ sknetwork/utils/tests/test_knn.py,sha256=9IvAXJvLW87rsCBTPJhp0oS5IgN3_UkCRKExqeuOfMY,879
222
+ sknetwork/utils/tests/test_membership.py,sha256=y4BiaCHUw5c1dJPOSJA6vgkBQlPxQ2bepL7hDV1es5U,748
223
+ sknetwork/utils/tests/test_neighbors.py,sha256=vF697D0cTfx4Limcmbre5JkJcLi1rUX0tS_JviX11Zg,1426
224
+ sknetwork/utils/tests/test_projection_simplex.py,sha256=WFlVis67sf7HOZOsvK9o-9r92QlyyUs9FQC6tI7Q6-0,859
225
+ sknetwork/utils/tests/test_seeds.py,sha256=NN38VKTAG0kgTrPBwpN_eWgcfTyAHqomHw1UpvVs-oQ,2211
226
+ sknetwork/utils/tests/test_verbose.py,sha256=V-TWqKYmPScdbWxK6zQqNCM-f5GDhkNEkKrCAeA8LC8,395
227
+ sknetwork/utils/tests/test_ward.py,sha256=E1_CNcb7VTyzy0-82Dzgf2ZPKJArIE9Jo-YJDxkY04k,448
228
+ sknetwork/visualization/__init__.py,sha256=yH3HnNy_0TVZ1yJVXZUDoB_XOnYY9C0DfLa4EHCk20s,158
229
+ sknetwork/visualization/colors.py,sha256=DjcXt9aMgLan7bRg7TZI8m_8SLWQOZ-g2HoguB1-3qA,2509
230
+ sknetwork/visualization/dendrograms.py,sha256=wIrGGQS37TP8gLmYpwg5p8f2NJrOu6aDR7KZ3wNmQKA,8051
231
+ sknetwork/visualization/graphs.py,sha256=Hjbe3Ero8FwXitviphTHAT1hvuQAwj1lgQy88xf_S_I,31921
232
+ sknetwork/visualization/tests/__init__.py,sha256=yOVrqUD9UuI_HdYuqRP5PS7QhS-pO4RE_Ls5PLiIC_w,30
233
+ sknetwork/visualization/tests/test_dendrograms.py,sha256=LGPYvTFGBFvIw3cohWF3pUHFlftmOB0Ywh9vD1kLFH8,2402
234
+ sknetwork/visualization/tests/test_graphs.py,sha256=vRIiyy5ZtgFCLof8Pbfr5fWE5plJeW_lffEcTeMXurw,8718
235
+ scikit_network-0.28.3.dist-info/AUTHORS.rst,sha256=OnehQzy1o1V6_J_Rv219qhNTxfCMgQQNy1spqXYDi1I,880
236
+ scikit_network-0.28.3.dist-info/LICENSE,sha256=zKbJMpbSKgGEUaNr_fKgvJrvw_3W4gnJs5XdLCK5Sxo,1622
237
+ scikit_network-0.28.3.dist-info/METADATA,sha256=YT62ctWb3dAOY5GlB9jLV06HqbLYg53KCSw7hb-fTQ0,12398
238
+ scikit_network-0.28.3.dist-info/WHEEL,sha256=fLZVE2sWVfBI3pzbwmKR0Q0ugaWRmAjTxXtce6A8qKw,108
239
+ scikit_network-0.28.3.dist-info/top_level.txt,sha256=fkwspWQ9B3csqb5ENEOoVciRY6XftnMuz4MvTDQeSsg,10
240
+ scikit_network-0.28.3.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.37.1)
3
+ Root-Is-Purelib: false
4
+ Tag: cp39-cp39-macosx_12_0_arm64
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.28.3'
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
@@ -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 KNN
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,84 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Created on November 2019
5
+ @author: Nathan de Lara <nathan.delara@polytechnique.org>
6
+ """
7
+ from abc import ABC
8
+
9
+ import numpy as np
10
+
11
+ from sknetwork.utils.base import Algorithm
12
+
13
+
14
+ class BaseClassifier(Algorithm, ABC):
15
+ """Base class for classifiers.
16
+
17
+ Attributes
18
+ ----------
19
+ labels_ : np.ndarray, shape (n_labels,)
20
+ Label of each node.
21
+ membership_ : sparse.csr_matrix, shape (n_row, n_labels)
22
+ Membership matrix (soft classification).
23
+ labels_row_ , labels_col_ : np.ndarray
24
+ Label of rows and columns (for bipartite graphs).
25
+ membership_row_, membership_col_ : sparse.csr_matrix, shapes (n_row, n_labels) and (n_col, n_labels)
26
+ Membership matrices of rows and columns (for bipartite graphs).
27
+ """
28
+
29
+ def __init__(self):
30
+ self.labels_ = None
31
+ self.membership_ = None
32
+ self.labels_row_ = None
33
+ self.labels_col_ = None
34
+ self.membership_row_ = None
35
+ self.membership_col_ = None
36
+
37
+ def fit_predict(self, *args, **kwargs) -> np.ndarray:
38
+ """Fit algorithm to the data and return the labels. Same parameters as the ``fit`` method.
39
+
40
+ Returns
41
+ -------
42
+ labels : np.ndarray
43
+ Labels.
44
+ """
45
+ self.fit(*args, **kwargs)
46
+ return self.labels_
47
+
48
+ def fit_transform(self, *args, **kwargs) -> np.ndarray:
49
+ """Fit algorithm to the data and return the membership matrix. Same parameters as the ``fit`` method.
50
+
51
+ Returns
52
+ -------
53
+ labels : np.ndarray
54
+ Labels.
55
+ """
56
+ self.fit(*args, **kwargs)
57
+ return self.membership_
58
+
59
+ def score(self, label: int):
60
+ """Classification scores for a given label.
61
+
62
+ Parameters
63
+ ----------
64
+ label : int
65
+ The label index of the class.
66
+
67
+ Returns
68
+ -------
69
+ scores : np.ndarray
70
+ Classification scores of shape (number of nodes,).
71
+ """
72
+ if self.membership_ is None:
73
+ raise ValueError("The fit method should be called first.")
74
+ return self.membership_[:, label].toarray().ravel()
75
+
76
+ def _split_vars(self, shape: tuple):
77
+ n_row = shape[0]
78
+ self.labels_row_ = self.labels_[:n_row]
79
+ self.labels_col_ = self.labels_[n_row:]
80
+ self.labels_ = self.labels_row_
81
+ self.membership_row_ = self.membership_[:n_row]
82
+ self.membership_col_ = self.membership_[n_row:]
83
+ self.membership_ = self.membership_row_
84
+ return self
@@ -0,0 +1,143 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Created on 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.normalization 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_seeds
19
+ from sknetwork.utils.verbose import VerboseMixin
20
+
21
+
22
+ class RankClassifier(BaseClassifier, VerboseMixin):
23
+ """Generic class for ranking based classifiers.
24
+
25
+ Parameters
26
+ ----------
27
+ algorithm :
28
+ Which ranking algorithm to use.
29
+ n_jobs :
30
+ If positive, number of parallel jobs allowed (-1 means maximum number).
31
+ If ``None``, no parallel computations are made.
32
+ verbose :
33
+ Verbose mode.
34
+
35
+ Attributes
36
+ ----------
37
+ labels_ : np.ndarray, shape (n_labels,)
38
+ Label of each node.
39
+ membership_ : sparse.csr_matrix, shape (n_row, n_labels)
40
+ Membership matrix.
41
+ labels_row_ : np.ndarray
42
+ Labels of rows, for bipartite graphs.
43
+ labels_col_ : np.ndarray
44
+ Labels of columns, for bipartite graphs.
45
+ membership_row_ : sparse.csr_matrix, shape (n_row, n_labels)
46
+ Membership matrix of rows, for bipartite graphs.
47
+ membership_col_ : sparse.csr_matrix, shape (n_col, n_labels)
48
+ Membership matrix of columns, for bipartite graphs.
49
+ """
50
+ def __init__(self, algorithm: BaseRanking, n_jobs: Optional[int] = None, verbose: bool = False):
51
+ super(RankClassifier, self).__init__()
52
+ VerboseMixin.__init__(self, verbose)
53
+
54
+ self.algorithm = algorithm
55
+ self.n_jobs = check_n_jobs(n_jobs)
56
+ self.verbose = verbose
57
+
58
+ @staticmethod
59
+ def _process_seeds(labels_seeds: np.ndarray) -> list:
60
+ """Make one-vs-all seed labels from seeds.
61
+
62
+ Parameters
63
+ ----------
64
+ labels_seeds
65
+
66
+ Returns
67
+ -------
68
+ List of seeds vectors.
69
+ """
70
+ seeds_all = []
71
+ classes, _ = check_labels(labels_seeds)
72
+
73
+ for label in classes:
74
+ seeds = np.array(labels_seeds == label).astype(int)
75
+ seeds_all.append(seeds)
76
+
77
+ return seeds_all
78
+
79
+ @staticmethod
80
+ def _process_scores(scores: np.ndarray) -> np.ndarray:
81
+ """Post-processing of the membership matrix.
82
+
83
+ Parameters
84
+ ----------
85
+ scores
86
+ Matrix of scores, shape number of nodes x number of labels.
87
+
88
+ Returns
89
+ -------
90
+ scores : np.ndarray
91
+ """
92
+ return scores
93
+
94
+ def _split_vars(self, shape):
95
+ """Split the vector of labels and build membership matrix."""
96
+ n_row = shape[0]
97
+ self.labels_row_ = self.labels_[:n_row]
98
+ self.labels_col_ = self.labels_[n_row:]
99
+ self.labels_ = self.labels_row_
100
+ self.membership_row_ = self.membership_[:n_row]
101
+ self.membership_col_ = self.membership_[n_row:]
102
+ self.membership_ = self.membership_row_
103
+
104
+ def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], seeds: Union[np.ndarray, dict] = None,
105
+ seeds_row: Union[np.ndarray, dict] = None, seeds_col: Union[np.ndarray, dict] = None) -> 'RankClassifier':
106
+ """Fit algorithm to data.
107
+
108
+ Parameters
109
+ ----------
110
+ input_matrix :
111
+ Adjacency matrix or biadjacency matrix of the graph.
112
+ seeds :
113
+ Seed nodes (labels as dictionary or array; negative values ignored).
114
+ seeds_row, seeds_col :
115
+ Seed rows and columns (for bipartite graphs).
116
+ Returns
117
+ -------
118
+ self: :class:`RankClassifier`
119
+ """
120
+ adjacency, seeds_labels, bipartite = get_adjacency_seeds(input_matrix, seeds=seeds, seeds_row=seeds_row,
121
+ seeds_col=seeds_col)
122
+ seeds_labels = seeds_labels.astype(int)
123
+ classes, n_classes = check_labels(seeds_labels)
124
+ seeds_all = self._process_seeds(seeds_labels)
125
+ local_function = partial(self.algorithm.fit_transform, adjacency)
126
+ with Pool(self.n_jobs) as pool:
127
+ scores = np.array(pool.map(local_function, seeds_all))
128
+ scores = scores.T
129
+
130
+ scores = self._process_scores(scores)
131
+ scores = normalize(scores)
132
+
133
+ membership = sparse.coo_matrix(scores)
134
+ membership.col = classes[membership.col]
135
+
136
+ labels = np.argmax(scores, axis=1)
137
+ self.labels_ = classes[labels]
138
+ self.membership_ = sparse.csr_matrix(membership, shape=(adjacency.shape[0], np.max(seeds_labels) + 1))
139
+
140
+ if bipartite:
141
+ self._split_vars(input_matrix.shape)
142
+
143
+ return self
@@ -0,0 +1,134 @@
1
+ #!/usr/bin/env python3
2
+ # -*- coding: utf-8 -*-
3
+ """
4
+ Created in July 2022
5
+ @author: Thomas Bonald <thomas.bonald@telecom-paris.fr>
6
+ """
7
+ from typing import Optional, Union
8
+
9
+ import numpy as np
10
+ from scipy import sparse
11
+
12
+ from sknetwork.classification.base import BaseClassifier
13
+ from sknetwork.linalg.normalization import normalize
14
+ from sknetwork.utils.format import get_adjacency_seeds
15
+ from sknetwork.utils.membership import get_membership
16
+ from sknetwork.utils.neighbors import get_degrees
17
+
18
+
19
+ class DiffusionClassifier(BaseClassifier):
20
+ """Node classification by heat diffusion.
21
+
22
+ For each label, the temperature of a node corresponds to its probability to have this label.
23
+
24
+ Parameters
25
+ ----------
26
+ n_iter : int
27
+ Number of iterations of the diffusion (discrete time).
28
+ centering : bool
29
+ If ``True``, center the temperature of each label to its mean before classification (default).
30
+ threshold : float
31
+ Minimum difference of temperatures between the 2 top labels to classify a node (default = 0).
32
+ If the difference of temperatures does not exceed this threshold, return -1 for this node (no label).
33
+
34
+ Attributes
35
+ ----------
36
+ labels_ : np.ndarray, shape (n_labels,)
37
+ Label of each node.
38
+ membership_ : sparse.csr_matrix, shape (n_row, n_labels)
39
+ Membership matrix.
40
+ labels_row_ : np.ndarray
41
+ Labels of rows, for bipartite graphs.
42
+ labels_col_ : np.ndarray
43
+ Labels of columns, for bipartite graphs.
44
+ membership_row_ : sparse.csr_matrix, shape (n_row, n_labels)
45
+ Membership matrix of rows, for bipartite graphs.
46
+ membership_col_ : sparse.csr_matrix, shape (n_col, n_labels)
47
+ Membership matrix of columns, for bipartite graphs.
48
+
49
+ Example
50
+ -------
51
+ >>> from sknetwork.data import karate_club
52
+ >>> diffusion = DiffusionClassifier()
53
+ >>> graph = karate_club(metadata=True)
54
+ >>> adjacency = graph.adjacency
55
+ >>> labels_true = graph.labels
56
+ >>> seeds = {0: labels_true[0], 33: labels_true[33]}
57
+ >>> labels_pred = diffusion.fit_predict(adjacency, seeds)
58
+ >>> np.round(np.mean(labels_pred == labels_true), 2)
59
+ 0.97
60
+
61
+ References
62
+ ----------
63
+ Zhu, X., Lafferty, J., & Rosenfeld, R. (2005). `Semi-supervised learning with graphs`
64
+ (Doctoral dissertation, Carnegie Mellon University, language technologies institute, school of computer science).
65
+ """
66
+ def __init__(self, n_iter: int = 10, centering: bool = True, threshold: float = 0):
67
+ super(DiffusionClassifier, self).__init__()
68
+
69
+ if n_iter <= 0:
70
+ raise ValueError('The number of iterations must be positive.')
71
+ else:
72
+ self.n_iter = n_iter
73
+ self.centering = centering
74
+ self.threshold = threshold
75
+ self.bipartite = None
76
+
77
+ def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray],
78
+ seeds: Optional[Union[dict, np.ndarray]] = None, seeds_row: Optional[Union[dict, np.ndarray]] = None,
79
+ seeds_col: Optional[Union[dict, np.ndarray]] = None, force_bipartite: bool = False) \
80
+ -> 'DiffusionClassifier':
81
+ """Compute the solution to the Dirichlet problem (temperatures at equilibrium).
82
+
83
+ Parameters
84
+ ----------
85
+ input_matrix :
86
+ Adjacency matrix or biadjacency matrix of the graph.
87
+ seeds :
88
+ Labels of seed nodes (dictionary or vector of int). Negative values ignored.
89
+ seeds_row, seeds_col :
90
+ Labels of rows and columns for bipartite graphs. Negative values ignored.
91
+ force_bipartite :
92
+ If ``True``, consider the input matrix as a biadjacency matrix (default = ``False``).
93
+
94
+ Returns
95
+ -------
96
+ self: :class:`DiffusionClassifier`
97
+ """
98
+ adjacency, seeds, self.bipartite = get_adjacency_seeds(input_matrix, force_bipartite=force_bipartite,
99
+ seeds=seeds, seeds_row=seeds_row, seeds_col=seeds_col)
100
+ seeds = seeds.astype(int)
101
+ if (seeds < 0).all():
102
+ raise ValueError('At least one node must be given a label in ``seeds``.')
103
+ temperatures = get_membership(seeds).toarray()
104
+ temperatures_seeds = temperatures[seeds >= 0]
105
+ n_labels = temperatures.shape[1]
106
+ temperatures[seeds < 0] = 1 / n_labels
107
+ diffusion = normalize(adjacency)
108
+ for i in range(self.n_iter):
109
+ temperatures = diffusion.dot(temperatures)
110
+ temperatures[seeds >= 0] = temperatures_seeds
111
+
112
+ self.membership_ = sparse.csr_matrix(temperatures)
113
+
114
+ if self.centering:
115
+ temperatures -= temperatures.mean(axis=0)
116
+
117
+ labels = temperatures.argmax(axis=1)
118
+ # set label -1 to nodes without temperature (no diffusion to them)
119
+ labels[get_degrees(self.membership_) == 0] = -1
120
+
121
+ if self.threshold >= 0:
122
+ if n_labels > 2:
123
+ top_temperatures = np.partition(-temperatures, 2, axis=1)[:, :2]
124
+ else:
125
+ top_temperatures = temperatures
126
+ differences = np.abs(top_temperatures[:, 0] - top_temperatures[:, 1])
127
+ labels[differences <= self.threshold] = -1
128
+
129
+ self.labels_ = labels
130
+
131
+ if self.bipartite:
132
+ self._split_vars(input_matrix.shape)
133
+
134
+ return self