scikit-network 0.32.1__cp311-cp311-macosx_11_0_arm64.whl → 0.33.0__cp311-cp311-macosx_11_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 (48) hide show
  1. {scikit_network-0.32.1.dist-info → scikit_network-0.33.0.dist-info}/AUTHORS.rst +0 -1
  2. {scikit_network-0.32.1.dist-info → scikit_network-0.33.0.dist-info}/METADATA +9 -3
  3. {scikit_network-0.32.1.dist-info → scikit_network-0.33.0.dist-info}/RECORD +48 -48
  4. {scikit_network-0.32.1.dist-info → scikit_network-0.33.0.dist-info}/WHEEL +1 -1
  5. sknetwork/__init__.py +1 -1
  6. sknetwork/classification/diffusion.py +4 -3
  7. sknetwork/classification/knn.py +4 -3
  8. sknetwork/classification/metrics.py +3 -3
  9. sknetwork/classification/propagation.py +6 -5
  10. sknetwork/classification/vote.cpython-311-darwin.so +0 -0
  11. sknetwork/clustering/leiden.py +2 -1
  12. sknetwork/clustering/leiden_core.cpython-311-darwin.so +0 -0
  13. sknetwork/clustering/louvain.py +3 -3
  14. sknetwork/clustering/louvain_core.cpython-311-darwin.so +0 -0
  15. sknetwork/clustering/tests/test_kcenters.py +5 -37
  16. sknetwork/data/__init__.py +1 -1
  17. sknetwork/data/base.py +7 -2
  18. sknetwork/data/load.py +18 -21
  19. sknetwork/data/models.py +15 -15
  20. sknetwork/data/parse.py +19 -17
  21. sknetwork/data/tests/test_API.py +3 -3
  22. sknetwork/data/tests/test_base.py +2 -2
  23. sknetwork/data/tests/test_toy_graphs.py +33 -33
  24. sknetwork/data/toy_graphs.py +35 -43
  25. sknetwork/embedding/base.py +3 -0
  26. sknetwork/embedding/louvain_embedding.py +0 -26
  27. sknetwork/embedding/svd.py +0 -4
  28. sknetwork/embedding/tests/test_louvain_embedding.py +9 -4
  29. sknetwork/embedding/tests/test_svd.py +6 -0
  30. sknetwork/gnn/gnn_classifier.py +1 -1
  31. sknetwork/hierarchy/louvain_hierarchy.py +10 -6
  32. sknetwork/hierarchy/paris.cpython-311-darwin.so +0 -0
  33. sknetwork/hierarchy/paris.pyx +4 -3
  34. sknetwork/hierarchy/tests/test_metrics.py +4 -4
  35. sknetwork/linalg/diteration.cpython-311-darwin.so +0 -0
  36. sknetwork/linalg/push.cpython-311-darwin.so +0 -0
  37. sknetwork/ranking/betweenness.cpython-311-darwin.so +0 -0
  38. sknetwork/regression/diffusion.py +6 -4
  39. sknetwork/topology/cliques.cpython-311-darwin.so +0 -0
  40. sknetwork/topology/core.cpython-311-darwin.so +0 -0
  41. sknetwork/topology/minheap.cpython-311-darwin.so +0 -0
  42. sknetwork/topology/triangles.cpython-311-darwin.so +0 -0
  43. sknetwork/topology/weisfeiler_lehman_core.cpython-311-darwin.so +0 -0
  44. sknetwork/utils/__init__.py +1 -1
  45. sknetwork/utils/values.py +5 -3
  46. sknetwork/visualization/graphs.py +1 -1
  47. {scikit_network-0.32.1.dist-info → scikit_network-0.33.0.dist-info}/LICENSE +0 -0
  48. {scikit_network-0.32.1.dist-info → scikit_network-0.33.0.dist-info}/top_level.txt +0 -0
@@ -13,7 +13,6 @@ Development Lead
13
13
  * Simon Delarue <simon.delarue@telecom-paris.fr>
14
14
  * Marc Jeanmougin <marc.jeanmougin@telecom-paris.fr>
15
15
 
16
-
17
16
  Former lead
18
17
  -----------
19
18
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scikit-network
3
- Version: 0.32.1
3
+ Version: 0.33.0
4
4
  Summary: Graph algorithms
5
5
  Home-page: https://github.com/sknetwork-team/scikit-network
6
6
  Author: Scikit-network team
@@ -15,11 +15,11 @@ Classifier: Intended Audience :: Science/Research
15
15
  Classifier: License :: OSI Approved :: BSD License
16
16
  Classifier: Natural Language :: English
17
17
  Classifier: Programming Language :: Cython
18
- Classifier: Programming Language :: Python :: 3.8
19
18
  Classifier: Programming Language :: Python :: 3.9
20
19
  Classifier: Programming Language :: Python :: 3.10
21
20
  Classifier: Programming Language :: Python :: 3.11
22
- Requires-Python: >=3.8
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Requires-Python: >=3.9
23
23
  Description-Content-Type: text/x-rst
24
24
  License-File: LICENSE
25
25
  License-File: AUTHORS.rst
@@ -118,6 +118,12 @@ the `Journal of Machine Learning Research <https://jmlr.org>`_:
118
118
  History
119
119
  =======
120
120
 
121
+ 0.33.0 (2024-07-16)
122
+ -------------------
123
+
124
+ * Add Python 3.12
125
+ * Drop Python 3.8
126
+
121
127
  0.32.1 (2024-04-02)
122
128
  -------------------
123
129
 
@@ -1,25 +1,19 @@
1
- scikit_network-0.32.1.dist-info/RECORD,,
2
- scikit_network-0.32.1.dist-info/LICENSE,sha256=zKbJMpbSKgGEUaNr_fKgvJrvw_3W4gnJs5XdLCK5Sxo,1622
3
- scikit_network-0.32.1.dist-info/WHEEL,sha256=qZ5gUYMG4t2JcLLcFLlOXld9g3WjqyANneXZkxLH8gU,110
4
- scikit_network-0.32.1.dist-info/AUTHORS.rst,sha256=OZUa1KqaPu_waik7LZVTdyXcvmQWkD3M3HBDVGEtkG0,924
5
- scikit_network-0.32.1.dist-info/top_level.txt,sha256=fkwspWQ9B3csqb5ENEOoVciRY6XftnMuz4MvTDQeSsg,10
6
- scikit_network-0.32.1.dist-info/METADATA,sha256=9bZ9qVhnKisHTj6oMLI6AyDg6uHJReQGXGVFbA8Du_E,14392
7
1
  sknetwork/log.py,sha256=ORInAVh_cWIfxwaFWSblSRxwT-jG05XPRnYTTAHSKy4,443
8
- sknetwork/__init__.py,sha256=nClqZuN1bFjz8awU3Qpm8dd3s4apgBBW40r84eAmItg,533
2
+ sknetwork/__init__.py,sha256=SZAI5otUFjW-KNf_HNvDY7g_mjFAcPTNg5SIcBjU4WM,533
9
3
  sknetwork/test_log.py,sha256=V4t6Ggi_fh8px5Iq7CDLlJvbXfz24macQ43Ss0tPb5I,319
10
4
  sknetwork/test_base.py,sha256=PB_kJ7cNvhBXmlL-KzyLu2hf6mG7b1OQY759aYplW4k,912
11
5
  sknetwork/sknetwork.py,sha256=VYoI-gwqwBKPx84cA0KnYDRofrgIXs8xtASD2nu5fE0,44
12
6
  sknetwork/base.py,sha256=XJJ6MicVcSiQBWQ9fYlmUJYkXq0PRldQzExhZKuaFBo,1951
13
- sknetwork/classification/metrics.py,sha256=kn6rkcn6r9jOsF7_bhP4SX20hrgydiA2UfCTdM12dKA,6802
7
+ sknetwork/classification/metrics.py,sha256=aaIfYddIAJsGXpXJ6TGcQScjzyJOo8kiWgcIE1kefSM,6806
14
8
  sknetwork/classification/vote.pyx,sha256=Bbf74XCPH8uYDP-SrXRaA7k6Ax2x-wDzpbHMeg9le7A,1584
15
- sknetwork/classification/diffusion.py,sha256=zE3_TRi05GgQU9TqMSuMKieVR1srnZONnpGLCUrnHWQ,5537
9
+ sknetwork/classification/diffusion.py,sha256=h4l43kA_MR_hMthc5mqW__5jTkQq9Ne9Q_H8bLPhM6Q,5564
16
10
  sknetwork/classification/__init__.py,sha256=yVv7wSuUfNLxeNBF-AhWCJys3C-XatPtMzi1wyp9Bz4,475
17
- sknetwork/classification/vote.cpython-311-darwin.so,sha256=wyTMd1k1lXxehUcZubKEwE4-wUaK7Oh04u-bkyZcdmU,221447
11
+ sknetwork/classification/vote.cpython-311-darwin.so,sha256=eQ2XjJ0aq8-JiiPM5zv2dpSqi8NgBIa3wsKlsa-okKM,212840
18
12
  sknetwork/classification/base_rank.py,sha256=RGElYD6PuP4nhnenNnzpOiBojs49Afg5ahjBFEi566I,4522
19
- sknetwork/classification/propagation.py,sha256=TqTNqnuZjelX3A7Ghw3M6k8u9fOh-Ag_eBh6FN0f5gI,5754
13
+ sknetwork/classification/propagation.py,sha256=0Cb1-mIMcPoes5oXR7BqhqEmlFMEMcTOMy_BNjX0lvY,5793
20
14
  sknetwork/classification/pagerank.py,sha256=CBUeCqZisr6s5lh3VXYWA6rbiPdLyNzuSMbjazy80eA,2586
21
15
  sknetwork/classification/base.py,sha256=WS-QHh4553Dr1VwJqjggSqO6hHFIAs50oPah_L23eFo,4290
22
- sknetwork/classification/knn.py,sha256=7tiXPNOzRLPCAoELXWtqXdnPUIIDqtGdku3r1KGiE8Q,5306
16
+ sknetwork/classification/knn.py,sha256=fLRZF2jhHq105QHMeW328JcF71wTaGP-ukmbJdyiw44,5333
23
17
  sknetwork/classification/tests/test_metrics.py,sha256=eBs-5uAEz2s8gukMyfhQ07GSFoyvxtsslLuc6VgUxBU,2303
24
18
  sknetwork/classification/tests/__init__.py,sha256=sy9uRiPhYG2i7uqM3P07-VUf4UcZEHeOoH9BvKCpU3s,31
25
19
  sknetwork/classification/tests/test_pagerank.py,sha256=5IJpYqnz31cWT0iXjTdo1xE8Kfj3YTK0cSZnnTlyJBs,620
@@ -29,26 +23,26 @@ sknetwork/classification/tests/test_API.py,sha256=FA1d0NQz3vaNVVeFbhEljPe0fD_ryR
29
23
  sknetwork/classification/tests/test_propagation.py,sha256=m0Jyq59k3taoikyBxcZGILzG7dWQV3SGE45MPm0RPao,850
30
24
  sknetwork/visualization/dendrograms.py,sha256=m4FbBfvJUW_gXccZWF8OWxAsbhsEcKa1fXNNCp_y4MA,9901
31
25
  sknetwork/visualization/__init__.py,sha256=8rLiR13WHSWLsEVTTL6lzOZms0LZf-ZujBqOI5VnKxk,216
32
- sknetwork/visualization/graphs.py,sha256=7iNHW3NJ7kxLw2y3SoEY_rmyCfmxLPmi0tCJ2dkS3q0,41175
26
+ sknetwork/visualization/graphs.py,sha256=kxFjEbg5b_bHpapLyf1L01CIwzxpWE6KLtS_ji2yZyY,41176
33
27
  sknetwork/visualization/colors.py,sha256=DjcXt9aMgLan7bRg7TZI8m_8SLWQOZ-g2HoguB1-3qA,2509
34
28
  sknetwork/visualization/tests/test_graphs.py,sha256=g2YPJn9m8wD-UHZ_BL37xuJqE7ygOx3EztKLVVqphYk,9421
35
29
  sknetwork/visualization/tests/__init__.py,sha256=yOVrqUD9UuI_HdYuqRP5PS7QhS-pO4RE_Ls5PLiIC_w,30
36
30
  sknetwork/visualization/tests/test_dendrograms.py,sha256=UuS3VZ5XnV1u5BtW-QKbFv0wavllQpbgtsOIe5XvTlg,2466
37
31
  sknetwork/topology/cliques.pyx,sha256=BuezL9-zJOicL1zffkpcf8uIEgqhik6dgK_agXX4gaU,4510
38
32
  sknetwork/topology/minheap.pyx,sha256=iFWpXPYSAmWjYphYByAM6auUj1XHly6QovZvuy2Lpyc,3310
39
- sknetwork/topology/minheap.cpython-311-darwin.so,sha256=_glEnee40L5QxE8BtlGJrAbH_nGpOJnM34wFDj-lK-8,204266
33
+ sknetwork/topology/minheap.cpython-311-darwin.so,sha256=8rQmEe28kM8Ka_YfCSEuJxSx-L55VmNlKznwVGbo2SI,195280
40
34
  sknetwork/topology/weisfeiler_lehman_core.pyx,sha256=fi0rRrXHVZuIQYzPDcPCamCRQLKquchjV3N9dNuQ1Pk,3034
41
35
  sknetwork/topology/__init__.py,sha256=T2W2cWwcUdhfA86VuZAZqksbrgct4hiyp0HuizEnLg4,534
42
36
  sknetwork/topology/cycles.py,sha256=EV2UMDktEGdJxEmAZyyjBMttJ6DqYvvfZ6mqwIQqFu0,9003
43
37
  sknetwork/topology/weisfeiler_lehman.py,sha256=ACJDAmZbwDrZAvO-LsHnRaef-8KX7esM1LxVUglXtLw,4308
44
- sknetwork/topology/cliques.cpython-311-darwin.so,sha256=5BZ03602v8UaNQIyjaUObxokIiSWl5FTFioJwTDf2no,259482
45
- sknetwork/topology/core.cpython-311-darwin.so,sha256=Uw6XIr0wg5Vtwi83vfGz0ZPUDWyIVjZge6vORGNldFI,218183
38
+ sknetwork/topology/cliques.cpython-311-darwin.so,sha256=COxC_t84RlIMB6Q8kD1WVW_vb3ZNtWTGgRu4oDBPtdo,249536
39
+ sknetwork/topology/core.cpython-311-darwin.so,sha256=uDFHVX6aSGZNPgtLTGjxOU3ZypcPKr6qrJGMpsQx1uo,210184
46
40
  sknetwork/topology/minheap.pxd,sha256=Y_oRh8H-sNZYAWv0XM9T-ZLzYBhb5TrBM4VjlH-ZqPQ,564
47
41
  sknetwork/topology/structure.py,sha256=CDfN7SL70wTHm2HPfqd7ncsZEaV1SQO3tJKYl1CdtNI,7285
48
42
  sknetwork/topology/triangles.pyx,sha256=JOkA9k0CQTsT7zdPaEoW7-PdHYuoXHsB0XSuPKFLJSI,4349
49
43
  sknetwork/topology/core.pyx,sha256=HwGbC84p9F9fkEw8ouNNMQtlYrAoEWhQS5hU9Cf1h94,2465
50
- sknetwork/topology/triangles.cpython-311-darwin.so,sha256=D6Lxxdx5moJoZuRkejJ-BQnl52ETeJp70Quv4twE5kQ,108732
51
- sknetwork/topology/weisfeiler_lehman_core.cpython-311-darwin.so,sha256=YYX83I_L09T1uK0BrcongNUz03ftLvADq76eQ_pKF7w,222329
44
+ sknetwork/topology/triangles.cpython-311-darwin.so,sha256=aJ3ez12lZaQRZDg9vZRBo2Zz2xoZu0XZcAjU2w_mrlM,106224
45
+ sknetwork/topology/weisfeiler_lehman_core.cpython-311-darwin.so,sha256=dW9JH4XfiR0OBI751HxwenawSjNbDNrcdeTQDtn3DAs,214144
52
46
  sknetwork/topology/tests/test_cycles.py,sha256=KZzMKS5ILfC_J0Fj5MFlEOL7Z9nOnlRfo4TnGdXEPWY,3150
53
47
  sknetwork/topology/tests/test_structure.py,sha256=CzcZ1LxV-mI_buxz6LcTeCy3h5ofMLfOu2HUHwNSMi8,3948
54
48
  sknetwork/topology/tests/test_wl.py,sha256=EJY_4xTi_-qzFsqZJkgnwLteoakdkpRAczzdMCGeXe0,2218
@@ -59,7 +53,7 @@ sknetwork/topology/tests/test_cliques.py,sha256=t97pKDMxT9RC-_YsgY-c8tQxrekyAE6i
59
53
  sknetwork/ranking/postprocess.py,sha256=-3wqBPvTM7jDdfTytINEXxM2eugJjbCZRLiLy9pkmac,919
60
54
  sknetwork/ranking/__init__.py,sha256=UeYw8y0HFoBnPziqnVYXSt8jqFtkDgkCCMPhYTEIaF0,348
61
55
  sknetwork/ranking/closeness.py,sha256=pETMD8uaXfADZhmzVaH4YIGX57S2vvhzVInONaAwBUM,2840
62
- sknetwork/ranking/betweenness.cpython-311-darwin.so,sha256=OlyOVsNmIwqEuYtJOyx-vX9ADR2bzilZQCIEeD5PYgw,130206
56
+ sknetwork/ranking/betweenness.cpython-311-darwin.so,sha256=moCAUNFJiuNt5KTgU11wdh3cqXomIp8Cpg3QBLhtKk8,127248
63
57
  sknetwork/ranking/katz.py,sha256=uPyXkEL73_6MS4dP5XTSVSIrD5h5QJipVTVEa0L_y48,2535
64
58
  sknetwork/ranking/hits.py,sha256=L39a9Ze3ITUbikmNhA_Lx-V5s_RQr0XnNkOsIgG8m98,2761
65
59
  sknetwork/ranking/pagerank.py,sha256=Qt2SOUoLO76JVDnT4-x-b-hah9IlaHECsYNu45AnpY8,4749
@@ -73,13 +67,13 @@ sknetwork/ranking/tests/test_API.py,sha256=PZ4Q5X1WT1HSAojZX72fUm4o9Y0PwocewJEoC
73
67
  sknetwork/ranking/tests/test_betweenness.py,sha256=8XA1ycLQQ7-Cm3CBfkcSDQOvD6xagAIP1--mPe9VFzo,1135
74
68
  sknetwork/ranking/tests/test_hits.py,sha256=zStzrWZ-pv2Nsd-pB282FgW3KAn1TyKjz_l85tJaPJ0,491
75
69
  sknetwork/linalg/diteration.pyx,sha256=gk9W6SwIxXgmjQujXWBUIoM_OwevjE3jTzFrIEkGnWI,1384
76
- sknetwork/linalg/diteration.cpython-311-darwin.so,sha256=okw_M2kJc-yVAqDXklCTDFYX2MjeV5fv7Fp6J02xnKw,217117
70
+ sknetwork/linalg/diteration.cpython-311-darwin.so,sha256=GMMR6l0X6DiBfhyrct6BK7CBTZEsE7KsToXDooUj96g,192608
77
71
  sknetwork/linalg/__init__.py,sha256=awBDY2wWiO40L5eED3H8K1BM8qtHz7aQRv1p3PcSK94,533
78
72
  sknetwork/linalg/laplacian.py,sha256=_gQr8YLqMUtK_IMNgvJoQX7-uODVlvCVmc-oTsgw7MA,401
79
73
  sknetwork/linalg/eig_solver.py,sha256=yq_prP5p1jbALby69wkzzH0vYKc1btmRQoiVUtTh-eA,2700
80
74
  sknetwork/linalg/push.pyx,sha256=caxCZa5h9zsHhxJgDBaaetqpB0wUbFLdOUwHwj0q_t0,2358
81
75
  sknetwork/linalg/ppr_solver.py,sha256=mQkCnik-vvv_oFa9n1vtMzxgvi78qW-QQONdcmC9CXA,6533
82
- sknetwork/linalg/push.cpython-311-darwin.so,sha256=-eE4UmKRu0ata8NGLwvZZdRTV7c6YpXoQc39cFJiRG4,237831
76
+ sknetwork/linalg/push.cpython-311-darwin.so,sha256=rQ3BINfZ_TWVTe6S8VU818U7rpyP1GtyKtegP4fu-8A,212456
83
77
  sknetwork/linalg/sparse_lowrank.py,sha256=LUhbqa01p51SYhoIb2Dmx2b9fMc-iOu69CAVHscR2Xs,5028
84
78
  sknetwork/linalg/basics.py,sha256=8AFph_1G5SZP_24jrIv6qIWooO0UMglL4jMgx3ZdYIQ,1142
85
79
  sknetwork/linalg/normalizer.py,sha256=kOFDPPdiGqG-KcWNiRwbS_y_nmw5fTKYTvuj_x8yBd0,2473
@@ -96,14 +90,14 @@ sknetwork/linalg/tests/test_laplacian.py,sha256=B6UhJOmYUdNlXwNoxLLtb--nv9mx96Or
96
90
  sknetwork/linalg/tests/test_eig.py,sha256=lUAgo4UfWuuSG5DhSk5SIT7ToLDgPG-5JCgmOe_M7Vw,1504
97
91
  sknetwork/linalg/tests/test_normalization.py,sha256=nASuMYxKcsWj3gk9DF5uPKYOw93oJ-UQUWi99Fw3kmE,887
98
92
  sknetwork/hierarchy/metrics.py,sha256=_wYGKx_VDE_sfbg-uUEFMhOjSLFqzC8rFHjJo1hdVL8,8046
99
- sknetwork/hierarchy/paris.pyx,sha256=10Fu048FPklcgYiLmMKWpRW87UY04ubU0NpjESTOsLA,11683
93
+ sknetwork/hierarchy/paris.pyx,sha256=DX8p3LOtrNxyQ8pOZZE_Q2b5rBKjYwKArsmMZbvb0xY,11813
100
94
  sknetwork/hierarchy/postprocess.py,sha256=d1Fll3eqDIjiMf1c5nGuKF6I0fN93elnglkp59LARGU,12072
101
95
  sknetwork/hierarchy/__init__.py,sha256=YgE2eqnwS8Q2NWP9pNY-M1bpdxRn5-C-CdykydNW7iM,412
102
- sknetwork/hierarchy/paris.cpython-311-darwin.so,sha256=9vY45S7OrOUPdgc9zLb241VX_WPBZMYUP-8XRaL_pHw,302872
103
- sknetwork/hierarchy/louvain_hierarchy.py,sha256=YfwhhEe1eL7DBbs0t1-a-vdzFB2xA5LXh0VT9OL-jus,9558
96
+ sknetwork/hierarchy/paris.cpython-311-darwin.so,sha256=PU-4hSjVRKxth0C9OKEUxWTHNdZr1iLxeAUE2O9Zz-o,292792
97
+ sknetwork/hierarchy/louvain_hierarchy.py,sha256=PhetHYpmsnI7yC-rbYAUXhNiBV9QNKMDbrfz9l0fskc,9846
104
98
  sknetwork/hierarchy/base.py,sha256=MoxBiSsEJOq77YmXj_bpf4vUiPLSpQn8fnUX7YIqyd8,2693
105
99
  sknetwork/hierarchy/tests/test_postprocess.py,sha256=OSrWE0gT0AcPI4LKmUL-Blfg5ErxnjS3d4rPNnA63_Y,2209
106
- sknetwork/hierarchy/tests/test_metrics.py,sha256=UydXtXgGud9MgTKT4l_j7BplKToO2cQKuoGvkBPirAw,3160
100
+ sknetwork/hierarchy/tests/test_metrics.py,sha256=IHlsdJXeHqPU8_SBm4eIXua5ZhyRIAUH4cAtVNNR7Ng,3160
107
101
  sknetwork/hierarchy/tests/__init__.py,sha256=l2HHDiDLpoTQlwzh1mtCyp6bS8RxBdJK2DP1FGiQJMY,26
108
102
  sknetwork/hierarchy/tests/test_algos.py,sha256=xMt2xzAYEm6MuK-8OKOqBwZS89aJspX2tr7T6QMHz6E,1361
109
103
  sknetwork/hierarchy/tests/test_API.py,sha256=tLF-jLsfM2OFqbyVHK1o9jXVW_1PbTkMcxkAXuGjMO8,720
@@ -119,34 +113,34 @@ sknetwork/path/tests/__init__.py,sha256=_COAjci7RJ_XtBDGwy5aOgZ9dPSQH3j7d6qMlLHs
119
113
  sknetwork/path/tests/test_distances.py,sha256=zItygI9cLMrQonLhOubvorElU5qaZumFfjMethx4rDw,2695
120
114
  sknetwork/embedding/random_projection.py,sha256=NuJoPHYLjdb8dUdKOwGr7Q6lGZBSPbwmMuuY6CRzgoI,5002
121
115
  sknetwork/embedding/__init__.py,sha256=ASeieiOc46EuKMUArW3kt_WJbsLxUzz0BVYycmag5Pw,410
122
- sknetwork/embedding/svd.py,sha256=0q6a2EwnbXGxzsDpmQu0HUS_9e_VwA0lMKqes2e-77I,14734
116
+ sknetwork/embedding/svd.py,sha256=fK84a57Js4Hvh9Rtz2FDFA7eKhLThUO256e8xdIkJm4,14642
123
117
  sknetwork/embedding/force_atlas.py,sha256=amYr0E08F8TDoIxjPx3lx35JFwEP41jc4KKed1PQeZs,7452
124
118
  sknetwork/embedding/spring.py,sha256=5fyHQzmIp8gY9DdI-DFvMc37mjMb64bs22ZZZ9YFDXM,7151
125
119
  sknetwork/embedding/spectral.py,sha256=ds91hH6JFBsfLcTS8QEz-gP5tZUcrrGqjfnL-xMIdU0,5548
126
- sknetwork/embedding/louvain_embedding.py,sha256=QYKxrTNLEm69PS7D0YR_k3diZQKBt6PT1T6N3xPGrMU,6950
127
- sknetwork/embedding/base.py,sha256=D-UkpCOTw_PAjs1YFyq7jdrn3Akx4yjl5nxN2iMnd0Q,2590
120
+ sknetwork/embedding/louvain_embedding.py,sha256=Q51zN2yNVeUrwfF98nnozpSaB_vUSVUi4pi9KwNkUOA,6082
121
+ sknetwork/embedding/base.py,sha256=zIaj7TdsRzBXYdl3MCuiDf4ShV6T8sAtm22IzGajho4,2663
128
122
  sknetwork/embedding/tests/test_spring.py,sha256=tanArc4vstNZ36CLr7S8uEVdXX0iP2K9UWKQLTcsPsQ,1643
129
- sknetwork/embedding/tests/test_svd.py,sha256=Yg9qgSdPPZR4n_DYN5bXZMJLIEz1tny1rirsPL8ejQc,1195
130
- sknetwork/embedding/tests/test_louvain_embedding.py,sha256=GtHU8vt4X8nNLLVol08Ot4NgbMcDzQEvWcm7qWbN_BA,825
123
+ sknetwork/embedding/tests/test_svd.py,sha256=xkfgHiQCDTRp8seWCdBvQFGwONoM6VYn6g9xp3FJIOs,1463
124
+ sknetwork/embedding/tests/test_louvain_embedding.py,sha256=XXz_2Jul1Rv3sILYFz4HLy2OWRsdZWRWWRnVBxOU68o,1116
131
125
  sknetwork/embedding/tests/__init__.py,sha256=QkDQtTJReK7Ldp0Y4f5-tbTdcp224r1AF7jU26alSgQ,26
132
126
  sknetwork/embedding/tests/test_API.py,sha256=2c0O8S0u0hF23iys7QLHJJOz2W79rHMeEO2OMDQbglk,1489
133
127
  sknetwork/embedding/tests/test_force_atlas.py,sha256=-YM4HSF5Nvpm8e4SoCHiA2o7yAkm0h_ys7GRaJ1wloI,1120
134
128
  sknetwork/embedding/tests/test_random_projection.py,sha256=2bUOCw66tUKP775pGPd5STj0UmRuwvBtI5CgY8HeHKI,1193
135
129
  sknetwork/embedding/tests/test_spectral.py,sha256=CH-F8fM3cYoxhjpob1m7wZV-tEr8XFD6Lxa_bFsLv3A,3897
136
- sknetwork/clustering/leiden_core.cpython-311-darwin.so,sha256=9vMD1HefnftNyQAaB7iXdeVqX0Jtc89MHTgRwsNX338,261614
130
+ sknetwork/clustering/leiden_core.cpython-311-darwin.so,sha256=wO7hKO2v5GFGcF_x5H9YQiX6MjooOCA6cA4R1eorBsw,250976
137
131
  sknetwork/clustering/leiden_core.pyx,sha256=7HGdeX6iMnSs52Px44-__kN9JhHueaQUvCmrkIGTalg,4300
138
132
  sknetwork/clustering/metrics.py,sha256=VJPgmB1OvxA0SOaIQIGyJDUP1cgWFElnfdVaQ2krYrg,3060
139
- sknetwork/clustering/leiden.py,sha256=w0oUbQLR7zCMy4wXgDa7eN2K488jjGuTdOcgWG6Eb9A,9680
133
+ sknetwork/clustering/leiden.py,sha256=yL5N-9ny6XAj6La2-PBcsieRl4SVx8wxwVGvS1tMr-o,9682
140
134
  sknetwork/clustering/postprocess.py,sha256=4hx5VTQmqS2Ld2P2kvXoyvVanXVg3bMA619IHS2jWHM,2039
141
135
  sknetwork/clustering/__init__.py,sha256=Ab-rmioxlaMoghrzd1RMr-L4zyrqIM8XznqrjBPGE28,435
142
136
  sknetwork/clustering/kcenters.py,sha256=RFEx35vPUm9a4mzCbDwv-PmePCsdQwbuKAeaRizBMxY,8689
143
- sknetwork/clustering/louvain.py,sha256=1mGcmy_Fd97V6bDmZb2Aa4JziCusru-gFHv5Vdxfm_0,10791
137
+ sknetwork/clustering/louvain.py,sha256=nFKEsrEuOH2k9iruT7SGo0kGDtcYzW2Xn7wBAxe767o,10825
144
138
  sknetwork/clustering/propagation_clustering.py,sha256=ABZZtyojkrXfzsMwEcxqphzHgFC5q8sECOyanvK9D3o,3781
145
- sknetwork/clustering/louvain_core.cpython-311-darwin.so,sha256=LPjTq2Gp-UXhHzqTzH14MCJALpT2xmpWBPXRvr0rSjg,260559
139
+ sknetwork/clustering/louvain_core.cpython-311-darwin.so,sha256=ljPJQ8zm24t8JjH-OJsi8CsIdUcYt8FFvtTRLUKOS54,250336
146
140
  sknetwork/clustering/louvain_core.pyx,sha256=pMqt7WukTkBOpjofmiXMYHqRX69mkquEMapDdoskiQM,4089
147
141
  sknetwork/clustering/base.py,sha256=dCF4K3nbKY24kzFeDAy7Fp-b9jDBzEoG3jj1ozuu_W8,5932
148
142
  sknetwork/clustering/tests/test_postprocess.py,sha256=WSmAlqB-6Nw3eoL3NaOyNlpPr7GVnNnllkPVdyE9rXI,1378
149
- sknetwork/clustering/tests/test_kcenters.py,sha256=3euzkt79tPZul5rP_HuJZHXydUdqT-Xk5N01qWOuaks,3477
143
+ sknetwork/clustering/tests/test_kcenters.py,sha256=laO1QSJ-yGlroB5XtrC15jbRK0krYZK5sIRDHBUZL30,1977
150
144
  sknetwork/clustering/tests/test_metrics.py,sha256=fbVYg2s8DXQdiYHUNuVjFMtEJg4od1Vej25mgHhGDu0,1818
151
145
  sknetwork/clustering/tests/__init__.py,sha256=Ta0XKY7pklRvHyUY3Jlow3A2V4REa5geZG74xPz80Tc,27
152
146
  sknetwork/clustering/tests/test_leiden.py,sha256=3KSXvxUP9H4tCJQXUfWt-45-ltyD0FrVgYjXDvRN-yQ,1155
@@ -157,10 +151,10 @@ sknetwork/linkpred/__init__.py,sha256=pFtM52OhDK69ceeiRyH1MDse0EbD8fqyhOsWWih47g
157
151
  sknetwork/linkpred/base.py,sha256=aXgWqajDYjDE-YQcooI6j0qEByJxHQiQtSjmFiID3Qk,995
158
152
  sknetwork/linkpred/tests/__init__.py,sha256=05sK8Ihh9Gi2_uobPC_ErMVE4KOt0761NzzV_vJh15U,32
159
153
  sknetwork/linkpred/tests/test_nn.py,sha256=T79txY2DlPgnI4JqzC88EcwCobJiM9P9v_5_ZvBTDeU,983
160
- sknetwork/utils/values.py,sha256=UK6wck_frtPz0Q6hRugpUMNg6AARcBQ0_MIlG5CyAkc,2510
154
+ sknetwork/utils/values.py,sha256=E-_gcqVOYjUPiG_iz9j2avVh1ENANVIZt7AydYzyeyg,2595
161
155
  sknetwork/utils/check.py,sha256=tNOelam8GGdVjMzmk-7otNTyFBgJNKwq1z-zWmHOb9Y,12940
162
156
  sknetwork/utils/neighbors.py,sha256=XNqwPM_PPpf_x-YhjEMVZJDxmazrVw9Eky3hNv9IGz0,3351
163
- sknetwork/utils/__init__.py,sha256=FX-906qqZsXt9Q2nZdd3JT4rM0Aj39bc2O0wDpp_q-0,329
157
+ sknetwork/utils/__init__.py,sha256=z1kLaO6ZFBg9g3MoeuxV-6UPmcqKAxTs0fjqoYQOgc4,325
164
158
  sknetwork/utils/format.py,sha256=qAa5jmp_fkQBlVL4LW14N7rrMPNk3yMApNFLxREPuiU,8766
165
159
  sknetwork/utils/membership.py,sha256=dG2xJTWEjRcxyKTs5A7DFyNhO50-7UKpBIaWFfmyH_M,2162
166
160
  sknetwork/utils/tfidf.py,sha256=C1qZCwZSwypi-C_II9D7lkfyxsOFefiDopTO3pBEwkc,956
@@ -178,7 +172,7 @@ sknetwork/gnn/loss.py,sha256=P0un3iqbnFLrBbYODznVAoU_J2qAZuqHAPLiae0LCtI,5162
178
172
  sknetwork/gnn/activation.py,sha256=D7o4FdbDMrBa2PQrWrvplCf14QOSzZ67d9eWN9bHY-M,3560
179
173
  sknetwork/gnn/neighbor_sampler.py,sha256=TXdMRFwiT8sOdl6-S-flQZ5Rjrx1hwTzFqqiR_8PHTQ,1864
180
174
  sknetwork/gnn/utils.py,sha256=A0kuBe29Eg90cEzRAgw4YmnShnzoq6ai_-01IBAf63g,4349
181
- sknetwork/gnn/gnn_classifier.py,sha256=wSZQXjRu9ou9cEqcOXPD4gY_vKOYeC8iWXj6j1-uFrM,12613
175
+ sknetwork/gnn/gnn_classifier.py,sha256=yvh5P3T3AmpEI8xNBERSkLumifBzz6gRLgQQ5aaASd0,12610
182
176
  sknetwork/gnn/layer.py,sha256=i0XiAutNal9ImAGqMtSLVEq_QiqZoGAlAWwlSGrNY8Q,5526
183
177
  sknetwork/gnn/optimizer.py,sha256=vsCgfPoJtYMWREnR4tBsfPb0Ed-rHR0poBr-75lE57s,5782
184
178
  sknetwork/gnn/base.py,sha256=QZ_pNi2-edAUpu-2C93DWfooS_sHulO6HL6vK108lhc,5708
@@ -192,25 +186,31 @@ sknetwork/gnn/tests/test_neigh_sampler.py,sha256=zc_6G3JhZvKrFLJAk2UJSOHZwN7sGoj
192
186
  sknetwork/gnn/tests/test_base_layer.py,sha256=1PXvS3338vu-fI77ZnGgHfY20zkPRv_GcZKxLQmyj7I,1381
193
187
  sknetwork/gnn/tests/test_loss.py,sha256=W5DA6FRd-OppeRKFgj2gtLqNvjkXkCQPmV6lg3ENu-c,1045
194
188
  sknetwork/gnn/tests/test_base.py,sha256=HVsz5zABud8ZlrIJIFuAKP6N7mu2ClrTaleZbPhGOR0,3393
195
- sknetwork/regression/diffusion.py,sha256=dV-uPGEaBLpI_sY6pl52rkKeSDQV9MZsQfSo1frYKbc,7845
189
+ sknetwork/regression/diffusion.py,sha256=p4o62jxuz3z3Kd2WizmV1GYM9MO_c3yp70_KQUim0jM,7905
196
190
  sknetwork/regression/__init__.py,sha256=nRlbcR8bA2Lz-OmLPMIPhBzgDCol8oSA19qL3IninXA,141
197
191
  sknetwork/regression/base.py,sha256=KIsVpnbACRH4h5W3ifMJOTlZNuztGbQP1QbZKj5aj_0,1496
198
192
  sknetwork/regression/tests/__init__.py,sha256=BT8kCCMN_pv7znhIR5GSQ_XxU5brmrCYDwm4QJNRCV0,27
199
193
  sknetwork/regression/tests/test_diffusion.py,sha256=-QBRgES_BF-QIgFevozLt9YXmGxJ6vxgLeYVZe92Wn8,2061
200
194
  sknetwork/regression/tests/test_API.py,sha256=7fQulvKzF9yEBlLie7fL5G1ZdyiG4DAFZQZ4Lix96qs,1024
201
- sknetwork/data/models.py,sha256=QyC_5ft7lkYzp3smmv54fHnyMUs88TYUq2FBU_KStMs,13156
195
+ sknetwork/data/models.py,sha256=j3k2LKtxNjyihfJH3SyzA5jhFNBgaA17UCzihD59Lqo,13186
202
196
  sknetwork/data/test_graphs.py,sha256=OM6-7CiBN4UEAQUtE_2k5e5I72zDBL3r5fj_C2JXzNw,2484
203
197
  sknetwork/data/timeout.py,sha256=kwHOLZFnOTrRhiEjtcwATYhsXbf5e8zV1OCoEKuG8Zg,1047
204
- sknetwork/data/__init__.py,sha256=ejVS9hqX1Jf912UAazfaqIsNlppXCahEVDBv2IFdRUM,259
205
- sknetwork/data/toy_graphs.py,sha256=2Cy7EABhYKPtjtfrW71Drz51A3mSuGu7G0P24tYiwHY,25035
206
- sknetwork/data/parse.py,sha256=bRawtsCpm0CNgxjZ9CqpR_8nRJnW0ac561GoIlMOq1Y,26897
207
- sknetwork/data/load.py,sha256=gC61jqFdyhPXc4-vazK85UdB4hnFQFjH9f1xpQ7JScI,14360
208
- sknetwork/data/base.py,sha256=jeCwL-1O21CNkX1F9_eX4gl_BVNbeYabq_DSZr6ukB8,630
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
209
203
  sknetwork/data/tests/test_test_graphs.py,sha256=dVRds-3P8JVnwfAp32fGif3zhocfPK0p2rgcYwJWsUQ,849
210
204
  sknetwork/data/tests/test_parse.py,sha256=JOTFNWr77ZxKUKjw8TSbN-2dk-6YwmqN2OcrNkh7JVc,12717
211
205
  sknetwork/data/tests/__init__.py,sha256=FSfkSYRKjDqIuEiEZ39Otve50qSxi7QObNnNrHHPx5s,19
212
- sknetwork/data/tests/test_toy_graphs.py,sha256=kxOb7QpXGi8O7Kb6RmWoRUbAoyllM_-SXCRcYoH8B00,2137
206
+ sknetwork/data/tests/test_toy_graphs.py,sha256=lknaYy5AWJjiqKfhgWhQEolN8e4CDe5ilNDpC5lenww,2197
213
207
  sknetwork/data/tests/test_models.py,sha256=oP-X_k0vbSB4CwlV4GQVVBAQ9uI_8frFicde5yhVYAc,1915
214
- sknetwork/data/tests/test_API.py,sha256=wJ4F4wPI3uI5WF_Pj2pMNSxSkY24Q7CO3kU8Sd5E-ac,957
215
- sknetwork/data/tests/test_base.py,sha256=I_0BXdj-BKvdm1LpPIRtlnPChVoYRTCC9ZvTuLT2_W8,308
208
+ sknetwork/data/tests/test_API.py,sha256=LUWZX9pPpZLVuzgAz85sJk6tgKDaXKqc2Fhp91x-E6c,963
209
+ sknetwork/data/tests/test_base.py,sha256=b-0CM1ResLoJXg6-jGmBWFii5JtZrXAhfYiAG70dW1w,312
216
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=ANsQuXN11eSX1PFSD4UW7vUcpdaOm9VfCH5CSYqUC20,109
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
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.42.0)
2
+ Generator: setuptools (70.3.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-macosx_11_0_arm64
5
5
 
sknetwork/__init__.py CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  __author__ = """scikit-network team"""
6
6
  __email__ = "thomas.bonald@telecom-paris.fr"
7
- __version__ = '0.32.1'
7
+ __version__ = '0.33.0'
8
8
 
9
9
  import sknetwork.topology
10
10
  import sknetwork.path
@@ -55,7 +55,7 @@ class DiffusionClassifier(BaseClassifier):
55
55
  >>> labels_true = graph.labels
56
56
  >>> labels = {0: labels_true[0], 33: labels_true[33]}
57
57
  >>> labels_pred = diffusion.fit_predict(adjacency, labels)
58
- >>> np.round(np.mean(labels_pred == labels_true), 2)
58
+ >>> round(np.mean(labels_pred == labels_true), 2)
59
59
  0.97
60
60
 
61
61
  References
@@ -74,8 +74,9 @@ class DiffusionClassifier(BaseClassifier):
74
74
  self.scale = scale
75
75
 
76
76
  def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray],
77
- labels: Optional[Union[dict, np.ndarray]] = None, labels_row: Optional[Union[dict, np.ndarray]] = None,
78
- labels_col: Optional[Union[dict, np.ndarray]] = None, force_bipartite: bool = False) \
77
+ labels: Optional[Union[dict, list, np.ndarray]] = None,
78
+ labels_row: Optional[Union[dict, list, np.ndarray]] = None,
79
+ labels_col: Optional[Union[dict, list, np.ndarray]] = None, force_bipartite: bool = False) \
79
80
  -> 'DiffusionClassifier':
80
81
  """Compute the solution to the Dirichlet problem (temperatures at equilibrium).
81
82
 
@@ -55,7 +55,7 @@ class NNClassifier(BaseClassifier):
55
55
  >>> labels_true = graph.labels
56
56
  >>> labels = {0: labels_true[0], 33: labels_true[33]}
57
57
  >>> labels_pred = classifier.fit_predict(adjacency, labels)
58
- >>> np.round(np.mean(labels_pred == labels_true), 2)
58
+ >>> round(np.mean(labels_pred == labels_true), 2)
59
59
  0.82
60
60
  """
61
61
  def __init__(self, n_neighbors: int = 3, embedding_method: Optional[BaseEmbedding] = None, normalize: bool = True):
@@ -97,8 +97,9 @@ class NNClassifier(BaseClassifier):
97
97
 
98
98
  return probs, labels
99
99
 
100
- def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], labels: Union[np.ndarray, dict] = None,
101
- labels_row: Union[np.ndarray, dict] = None, labels_col: Union[np.ndarray, dict] = None) -> 'NNClassifier':
100
+ def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], labels: Union[np.ndarray, list, dict] = None,
101
+ labels_row: Union[np.ndarray, list, dict] = None,
102
+ labels_col: Union[np.ndarray, list, dict] = None) -> 'NNClassifier':
102
103
  """Node classification by k-nearest neighbors in the embedding space.
103
104
 
104
105
  Parameters
@@ -34,7 +34,7 @@ def get_accuracy_score(labels_true: np.ndarray, labels_pred: np.ndarray) -> floa
34
34
  >>> import numpy as np
35
35
  >>> labels_true = np.array([0, 0, 1, 1])
36
36
  >>> labels_pred = np.array([0, 0, 0, 1])
37
- >>> get_accuracy_score(labels_true, labels_pred)
37
+ >>> round(get_accuracy_score(labels_true, labels_pred), 2)
38
38
  0.75
39
39
  """
40
40
  check_vector_format(labels_true, labels_pred)
@@ -105,7 +105,7 @@ def get_f1_score(labels_true: np.ndarray, labels_pred: np.ndarray, return_precis
105
105
  >>> import numpy as np
106
106
  >>> labels_true = np.array([0, 0, 1, 1])
107
107
  >>> labels_pred = np.array([0, 0, 0, 1])
108
- >>> np.round(get_f1_score(labels_true, labels_pred), 2)
108
+ >>> round(get_f1_score(labels_true, labels_pred), 2)
109
109
  0.67
110
110
  """
111
111
  values = set(labels_true[labels_true >= 0]) | set(labels_pred[labels_pred >= 0])
@@ -188,7 +188,7 @@ def get_average_f1_score(labels_true: np.ndarray, labels_pred: np.ndarray, avera
188
188
  >>> import numpy as np
189
189
  >>> labels_true = np.array([0, 0, 1, 1])
190
190
  >>> labels_pred = np.array([0, 0, 0, 1])
191
- >>> np.round(get_average_f1_score(labels_true, labels_pred), 2)
191
+ >>> round(get_average_f1_score(labels_true, labels_pred), 2)
192
192
  0.73
193
193
  """
194
194
  if average == 'micro':
@@ -91,19 +91,20 @@ class Propagation(BaseClassifier):
91
91
  labels = labels[index_seed]
92
92
  return index_seed.astype(np.int32), index_remain.astype(np.int32), labels.astype(np.int32)
93
93
 
94
- def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], labels: Union[np.ndarray, dict] = None,
95
- labels_row: Union[np.ndarray, dict] = None, labels_col: Union[np.ndarray, dict] = None) -> 'Propagation':
94
+ def fit(self, input_matrix: Union[sparse.csr_matrix, np.ndarray], labels: Union[np.ndarray, list, dict] = None,
95
+ labels_row: Union[np.ndarray, list, dict] = None,
96
+ labels_col: Union[np.ndarray, list, dict] = None) -> 'Propagation':
96
97
  """Node classification by label propagation.
97
98
 
98
99
  Parameters
99
100
  ----------
100
101
  input_matrix : sparse.csr_matrix, np.ndarray
101
102
  Adjacency matrix or biadjacency matrix of the graph.
102
- labels : np.ndarray, dict
103
+ labels : array, list or dict
103
104
  Known labels. Negative values ignored.
104
- labels_row : np.ndarray, dict
105
+ labels_row : array, list or dict
105
106
  Known labels of rows, for bipartite graphs.
106
- labels_col : np.ndarray, dict
107
+ labels_col : array, list or dict
107
108
  Known labels of columns, for bipartite graphs.
108
109
 
109
110
  Returns
@@ -76,7 +76,8 @@ class Leiden(Louvain):
76
76
  References
77
77
  ----------
78
78
  * Traag, V. A., Waltman, L., & Van Eck, N. J. (2019).
79
- `From Louvain to Leiden: guaranteeing well-connected communities`, Scientific reports.
79
+ `From Louvain to Leiden: guaranteeing well-connected communities`, Scientific reports.
80
+
80
81
  """
81
82
 
82
83
  def __init__(self, resolution: float = 1, modularity: str = 'dugue', tol_optimization: float = 1e-3,
@@ -131,9 +131,9 @@ class Louvain(BaseClustering, Log):
131
131
  increase :
132
132
  Gain in modularity after optimization.
133
133
  """
134
- labels = labels.astype(np.int32)
135
- indices = adjacency.indices
136
- indptr = adjacency.indptr
134
+ labels = labels.astype(np.int64)
135
+ indices = adjacency.indices.astype(np.int64)
136
+ indptr = adjacency.indptr.astype(np.int64)
137
137
  data = adjacency.data.astype(np.float32)
138
138
  out_weights = out_weights.astype(np.float32)
139
139
  in_weights = in_weights.astype(np.float32)
@@ -4,7 +4,6 @@
4
4
  import unittest
5
5
 
6
6
  from sknetwork.clustering import KCenters
7
- from sknetwork.data import karate_club, painters, star_wars
8
7
  from sknetwork.data.test_graphs import *
9
8
 
10
9
 
@@ -13,7 +12,7 @@ class TestKCentersClustering(unittest.TestCase):
13
12
  def test_kcenters(self):
14
13
  # Test undirected graph
15
14
  n_clusters = 2
16
- adjacency = karate_club()
15
+ adjacency = test_graph()
17
16
  n_row = adjacency.shape[0]
18
17
  kcenters = KCenters(n_clusters=n_clusters)
19
18
  labels = kcenters.fit_predict(adjacency)
@@ -22,7 +21,7 @@ class TestKCentersClustering(unittest.TestCase):
22
21
 
23
22
  # Test directed graph
24
23
  n_clusters = 3
25
- adjacency = painters()
24
+ adjacency = test_digraph()
26
25
  n_row = adjacency.shape[0]
27
26
  kcenters = KCenters(n_clusters=n_clusters, directed=True)
28
27
  labels = kcenters.fit_predict(adjacency)
@@ -31,7 +30,7 @@ class TestKCentersClustering(unittest.TestCase):
31
30
 
32
31
  # Test bipartite graph
33
32
  n_clusters = 2
34
- biadjacency = star_wars()
33
+ biadjacency = test_bigraph()
35
34
  n_row, n_col = biadjacency.shape
36
35
  kcenters = KCenters(n_clusters=n_clusters)
37
36
  kcenters.fit(biadjacency)
@@ -40,41 +39,10 @@ class TestKCentersClustering(unittest.TestCase):
40
39
  self.assertEqual(len(kcenters.labels_col_), n_col)
41
40
  self.assertEqual(len(set(labels)), n_clusters)
42
41
 
43
- def test_kcenters_centers(self):
44
- # Test centers for undirected graphs
45
- n_clusters = 2
46
- adjacency = karate_club()
47
- kcenters = KCenters(n_clusters=n_clusters)
48
- kcenters.fit(adjacency)
49
- centers = kcenters.centers_
50
- self.assertEqual(n_clusters, len(set(centers)))
51
-
52
- # Test centers for bipartite graphs
53
- n_clusters = 2
54
- biadjacency = star_wars()
55
- n_row, n_col = biadjacency.shape
56
- for position in ["row", "col", "both"]:
57
- kcenters = KCenters(n_clusters=n_clusters, center_position=position)
58
- kcenters.fit(biadjacency)
59
- centers_row = kcenters.centers_row_
60
- centers_col = kcenters.centers_col_
61
- if position == "row":
62
- self.assertEqual(n_clusters, len(set(centers_row)))
63
- self.assertTrue(np.all(centers_row < n_row))
64
- self.assertTrue(centers_col is None)
65
- if position == "col":
66
- self.assertEqual(n_clusters, len(set(centers_col)))
67
- self.assertTrue(np.all((centers_col < n_col) & (0 <= centers_col)))
68
- self.assertTrue(centers_row is None)
69
- if position == "both":
70
- self.assertEqual(n_clusters, len(set(centers_row)) + len(set(centers_col)))
71
- self.assertTrue(np.all(centers_row < n_row))
72
- self.assertTrue(np.all((centers_col < n_col) & (0 <= centers_col)))
73
-
74
42
  def test_kcenters_error(self):
75
43
  # Test value errors
76
- adjacency = karate_club()
77
- biadjacency = star_wars()
44
+ adjacency = test_graph()
45
+ biadjacency = test_bigraph()
78
46
 
79
47
  # test n_clusters error
80
48
  kcenters = KCenters(n_clusters=1)
@@ -1,5 +1,5 @@
1
1
  """data module"""
2
- from sknetwork.data.base import Bunch
2
+ from sknetwork.data.base import *
3
3
  from sknetwork.data.load import *
4
4
  from sknetwork.data.models import *
5
5
  from sknetwork.data.parse import from_edge_list, from_adjacency_list, from_csv, from_graphml
sknetwork/data/base.py CHANGED
@@ -6,10 +6,10 @@ Created in May 2023
6
6
  """
7
7
 
8
8
 
9
- class Bunch(dict):
9
+ class Dataset(dict):
10
10
  """Container object for datasets.
11
11
  Dictionary-like object that exposes its keys as attributes.
12
- >>> dataset = Bunch(name='dataset')
12
+ >>> dataset = Dataset(name='dataset')
13
13
  >>> dataset['name']
14
14
  'dataset'
15
15
  >>> dataset.name
@@ -26,3 +26,8 @@ class Bunch(dict):
26
26
  return self[key]
27
27
  except KeyError:
28
28
  raise AttributeError(key)
29
+
30
+
31
+ # alias for Dataset
32
+ Bunch = Dataset
33
+