scikit-network 0.32.0__tar.gz → 0.33.0__tar.gz

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 (264) hide show
  1. {scikit-network-0.32.0 → scikit-network-0.33.0}/AUTHORS.rst +0 -1
  2. {scikit-network-0.32.0 → scikit-network-0.33.0}/HISTORY.rst +13 -1
  3. {scikit-network-0.32.0 → scikit-network-0.33.0}/PKG-INFO +16 -4
  4. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/visualization.rst +1 -1
  5. {scikit-network-0.32.0 → scikit-network-0.33.0}/scikit_network.egg-info/PKG-INFO +16 -4
  6. {scikit-network-0.32.0 → scikit-network-0.33.0}/setup.cfg +2 -2
  7. {scikit-network-0.32.0 → scikit-network-0.33.0}/setup.py +3 -3
  8. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/__init__.py +1 -1
  9. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/diffusion.py +4 -3
  10. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/knn.py +4 -3
  11. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/metrics.py +3 -3
  12. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/propagation.py +6 -5
  13. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/leiden.py +2 -1
  14. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/louvain.py +3 -3
  15. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/tests/test_kcenters.py +5 -37
  16. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/__init__.py +1 -1
  17. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/base.py +7 -2
  18. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/load.py +18 -21
  19. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/models.py +15 -15
  20. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/parse.py +19 -17
  21. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/tests/test_API.py +3 -3
  22. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/tests/test_base.py +2 -2
  23. scikit-network-0.33.0/sknetwork/data/tests/test_toy_graphs.py +68 -0
  24. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/toy_graphs.py +35 -43
  25. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/base.py +3 -0
  26. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/louvain_embedding.py +0 -26
  27. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/svd.py +0 -4
  28. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/test_louvain_embedding.py +9 -4
  29. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/test_svd.py +6 -0
  30. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/gnn_classifier.py +1 -1
  31. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/louvain_hierarchy.py +10 -6
  32. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/paris.cpp +703 -701
  33. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/paris.pyx +4 -3
  34. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/tests/test_metrics.py +4 -4
  35. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/push.cpp +69 -69
  36. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/regression/diffusion.py +6 -4
  37. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/cliques.cpp +69 -69
  38. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/core.cpp +69 -69
  39. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/__init__.py +1 -1
  40. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/values.py +5 -3
  41. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/visualization/graphs.py +1 -1
  42. scikit-network-0.32.0/sknetwork/data/tests/test_toy_graphs.py +0 -68
  43. {scikit-network-0.32.0 → scikit-network-0.33.0}/CONTRIBUTING.rst +0 -0
  44. {scikit-network-0.32.0 → scikit-network-0.33.0}/LICENSE +0 -0
  45. {scikit-network-0.32.0 → scikit-network-0.33.0}/MANIFEST.in +0 -0
  46. {scikit-network-0.32.0 → scikit-network-0.33.0}/README.rst +0 -0
  47. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/Makefile +0 -0
  48. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/authors.rst +0 -0
  49. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/conf.py +0 -0
  50. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/contributing.rst +0 -0
  51. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/first_steps.rst +0 -0
  52. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/genindex.rst +0 -0
  53. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/glossary.rst +0 -0
  54. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/history.rst +0 -0
  55. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/index.rst +0 -0
  56. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/make.bat +0 -0
  57. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/readme.rst +0 -0
  58. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/classification.rst +0 -0
  59. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/clustering.rst +0 -0
  60. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/data.rst +0 -0
  61. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/embedding.rst +0 -0
  62. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/gnn.rst +0 -0
  63. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/hierarchy.rst +0 -0
  64. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/linalg.rst +0 -0
  65. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/linkpred.rst +0 -0
  66. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/path.rst +0 -0
  67. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/ranking.rst +0 -0
  68. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/regression.rst +0 -0
  69. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/topology.rst +0 -0
  70. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/reference/utils.rst +0 -0
  71. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/classification/index.rst +0 -0
  72. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/clustering/index.rst +0 -0
  73. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/data/index.rst +0 -0
  74. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/embedding/index.rst +0 -0
  75. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/gnn/index.rst +0 -0
  76. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/hierarchy/index.rst +0 -0
  77. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/linkpred/index.rst +0 -0
  78. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/overview/index.rst +0 -0
  79. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/path/index.rst +0 -0
  80. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/ranking/index.rst +0 -0
  81. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/regression/index.rst +0 -0
  82. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/topology/index.rst +0 -0
  83. {scikit-network-0.32.0 → scikit-network-0.33.0}/docs/tutorials/visualization/index.rst +0 -0
  84. {scikit-network-0.32.0 → scikit-network-0.33.0}/scikit_network.egg-info/SOURCES.txt +0 -0
  85. {scikit-network-0.32.0 → scikit-network-0.33.0}/scikit_network.egg-info/dependency_links.txt +0 -0
  86. {scikit-network-0.32.0 → scikit-network-0.33.0}/scikit_network.egg-info/not-zip-safe +0 -0
  87. {scikit-network-0.32.0 → scikit-network-0.33.0}/scikit_network.egg-info/requires.txt +0 -0
  88. {scikit-network-0.32.0 → scikit-network-0.33.0}/scikit_network.egg-info/top_level.txt +0 -0
  89. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/base.py +0 -0
  90. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/__init__.py +0 -0
  91. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/base.py +0 -0
  92. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/base_rank.py +0 -0
  93. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/pagerank.py +0 -0
  94. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/tests/__init__.py +0 -0
  95. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/tests/test_API.py +0 -0
  96. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/tests/test_diffusion.py +0 -0
  97. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/tests/test_knn.py +0 -0
  98. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/tests/test_metrics.py +0 -0
  99. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/tests/test_pagerank.py +0 -0
  100. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/tests/test_propagation.py +0 -0
  101. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/vote.cpp +0 -0
  102. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/classification/vote.pyx +0 -0
  103. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/__init__.py +0 -0
  104. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/base.py +0 -0
  105. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/kcenters.py +0 -0
  106. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/leiden_core.cpp +0 -0
  107. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/leiden_core.pyx +0 -0
  108. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/louvain_core.cpp +0 -0
  109. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/louvain_core.pyx +0 -0
  110. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/metrics.py +0 -0
  111. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/postprocess.py +0 -0
  112. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/propagation_clustering.py +0 -0
  113. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/tests/__init__.py +0 -0
  114. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/tests/test_API.py +0 -0
  115. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/tests/test_leiden.py +0 -0
  116. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/tests/test_louvain.py +0 -0
  117. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/tests/test_metrics.py +0 -0
  118. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/clustering/tests/test_postprocess.py +0 -0
  119. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/test_graphs.py +0 -0
  120. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/tests/__init__.py +0 -0
  121. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/tests/test_load.py +0 -0
  122. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/tests/test_models.py +0 -0
  123. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/tests/test_parse.py +0 -0
  124. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/tests/test_test_graphs.py +0 -0
  125. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/data/timeout.py +0 -0
  126. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/__init__.py +0 -0
  127. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/force_atlas.py +0 -0
  128. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/random_projection.py +0 -0
  129. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/spectral.py +0 -0
  130. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/spring.py +0 -0
  131. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/__init__.py +0 -0
  132. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/test_API.py +0 -0
  133. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/test_force_atlas.py +0 -0
  134. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/test_random_projection.py +0 -0
  135. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/test_spectral.py +0 -0
  136. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/embedding/tests/test_spring.py +0 -0
  137. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/__init__.py +0 -0
  138. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/activation.py +0 -0
  139. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/base.py +0 -0
  140. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/base_activation.py +0 -0
  141. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/base_layer.py +0 -0
  142. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/layer.py +0 -0
  143. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/loss.py +0 -0
  144. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/neighbor_sampler.py +0 -0
  145. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/optimizer.py +0 -0
  146. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/__init__.py +0 -0
  147. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_activation.py +0 -0
  148. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_base.py +0 -0
  149. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_base_layer.py +0 -0
  150. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_gnn_classifier.py +0 -0
  151. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_layers.py +0 -0
  152. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_loss.py +0 -0
  153. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_neigh_sampler.py +0 -0
  154. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_optimizer.py +0 -0
  155. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/tests/test_utils.py +0 -0
  156. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/gnn/utils.py +0 -0
  157. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/__init__.py +0 -0
  158. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/base.py +0 -0
  159. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/metrics.py +0 -0
  160. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/postprocess.py +0 -0
  161. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/tests/__init__.py +0 -0
  162. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/tests/test_API.py +0 -0
  163. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/tests/test_algos.py +0 -0
  164. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/hierarchy/tests/test_postprocess.py +0 -0
  165. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/__init__.py +0 -0
  166. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/basics.py +0 -0
  167. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/diteration.cpp +0 -0
  168. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/diteration.pyx +0 -0
  169. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/eig_solver.py +0 -0
  170. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/laplacian.py +0 -0
  171. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/normalizer.py +0 -0
  172. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/operators.py +0 -0
  173. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/polynome.py +0 -0
  174. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/ppr_solver.py +0 -0
  175. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/push.pyx +0 -0
  176. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/sparse_lowrank.py +0 -0
  177. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/svd_solver.py +0 -0
  178. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/__init__.py +0 -0
  179. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_eig.py +0 -0
  180. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_laplacian.py +0 -0
  181. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_normalization.py +0 -0
  182. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_operators.py +0 -0
  183. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_polynome.py +0 -0
  184. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_ppr.py +0 -0
  185. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_sparse_lowrank.py +0 -0
  186. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linalg/tests/test_svd.py +0 -0
  187. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linkpred/__init__.py +0 -0
  188. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linkpred/base.py +0 -0
  189. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linkpred/nn.py +0 -0
  190. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linkpred/tests/__init__.py +0 -0
  191. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/linkpred/tests/test_nn.py +0 -0
  192. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/log.py +0 -0
  193. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/__init__.py +0 -0
  194. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/dag.py +0 -0
  195. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/distances.py +0 -0
  196. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/search.py +0 -0
  197. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/shortest_path.py +0 -0
  198. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/tests/__init__.py +0 -0
  199. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/tests/test_dag.py +0 -0
  200. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/tests/test_distances.py +0 -0
  201. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/tests/test_search.py +0 -0
  202. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/path/tests/test_shortest_path.py +0 -0
  203. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/__init__.py +0 -0
  204. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/base.py +0 -0
  205. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/betweenness.cpp +0 -0
  206. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/betweenness.pyx +0 -0
  207. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/closeness.py +0 -0
  208. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/hits.py +0 -0
  209. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/katz.py +0 -0
  210. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/pagerank.py +0 -0
  211. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/postprocess.py +0 -0
  212. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/tests/__init__.py +0 -0
  213. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/tests/test_API.py +0 -0
  214. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/tests/test_betweenness.py +0 -0
  215. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/tests/test_closeness.py +0 -0
  216. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/tests/test_hits.py +0 -0
  217. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/tests/test_pagerank.py +0 -0
  218. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/ranking/tests/test_postprocess.py +0 -0
  219. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/regression/__init__.py +0 -0
  220. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/regression/base.py +0 -0
  221. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/regression/tests/__init__.py +0 -0
  222. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/regression/tests/test_API.py +0 -0
  223. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/regression/tests/test_diffusion.py +0 -0
  224. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/sknetwork.py +0 -0
  225. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/test_base.py +0 -0
  226. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/test_log.py +0 -0
  227. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/__init__.py +0 -0
  228. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/cliques.pyx +0 -0
  229. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/core.pyx +0 -0
  230. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/cycles.py +0 -0
  231. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/minheap.cpp +0 -0
  232. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/minheap.pxd +0 -0
  233. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/minheap.pyx +0 -0
  234. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/structure.py +0 -0
  235. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/tests/__init__.py +0 -0
  236. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/tests/test_cliques.py +0 -0
  237. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/tests/test_core.py +0 -0
  238. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/tests/test_cycles.py +0 -0
  239. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/tests/test_structure.py +0 -0
  240. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/tests/test_triangles.py +0 -0
  241. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/tests/test_wl.py +0 -0
  242. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/triangles.cpp +0 -0
  243. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/triangles.pyx +0 -0
  244. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/weisfeiler_lehman.py +0 -0
  245. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/weisfeiler_lehman_core.cpp +0 -0
  246. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/topology/weisfeiler_lehman_core.pyx +0 -0
  247. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/check.py +0 -0
  248. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/format.py +0 -0
  249. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/membership.py +0 -0
  250. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/neighbors.py +0 -0
  251. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tests/__init__.py +0 -0
  252. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tests/test_check.py +0 -0
  253. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tests/test_format.py +0 -0
  254. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tests/test_membership.py +0 -0
  255. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tests/test_neighbors.py +0 -0
  256. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tests/test_tfidf.py +0 -0
  257. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tests/test_values.py +0 -0
  258. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/utils/tfidf.py +0 -0
  259. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/visualization/__init__.py +0 -0
  260. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/visualization/colors.py +0 -0
  261. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/visualization/dendrograms.py +0 -0
  262. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/visualization/tests/__init__.py +0 -0
  263. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/visualization/tests/test_dendrograms.py +0 -0
  264. {scikit-network-0.32.0 → scikit-network-0.33.0}/sknetwork/visualization/tests/test_graphs.py +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
 
@@ -2,7 +2,19 @@
2
2
  History
3
3
  =======
4
4
 
5
- 0.32.0 (2024-03-28)
5
+ 0.33.0 (2024-07-16)
6
+ -------------------
7
+
8
+ * Add Python 3.12
9
+ * Drop Python 3.8
10
+
11
+ 0.32.1 (2024-04-02)
12
+ -------------------
13
+
14
+ * Fix documentation
15
+ * Fix wheel upload
16
+
17
+ 0.32.0 (2024-03-29)
6
18
  -------------------
7
19
 
8
20
  * Add Leiden clustering algorithm
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scikit-network
3
- Version: 0.32.0
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
@@ -116,7 +116,19 @@ the `Journal of Machine Learning Research <https://jmlr.org>`_:
116
116
  History
117
117
  =======
118
118
 
119
- 0.32.0 (2024-03-28)
119
+ 0.33.0 (2024-07-16)
120
+ -------------------
121
+
122
+ * Add Python 3.12
123
+ * Drop Python 3.8
124
+
125
+ 0.32.1 (2024-04-02)
126
+ -------------------
127
+
128
+ * Fix documentation
129
+ * Fix wheel upload
130
+
131
+ 0.32.0 (2024-03-29)
120
132
  -------------------
121
133
 
122
134
  * Add Leiden clustering algorithm
@@ -8,7 +8,7 @@ Visualization tools.
8
8
  Graphs
9
9
  ------
10
10
 
11
- .. autofunction:: sknetwork.visualization.graphs.svg_graph
11
+ .. autofunction:: sknetwork.visualization.graphs.visualize_graph
12
12
 
13
13
  .. autofunction:: sknetwork.visualization.graphs.visualize_bigraph
14
14
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: scikit-network
3
- Version: 0.32.0
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
@@ -116,7 +116,19 @@ the `Journal of Machine Learning Research <https://jmlr.org>`_:
116
116
  History
117
117
  =======
118
118
 
119
- 0.32.0 (2024-03-28)
119
+ 0.33.0 (2024-07-16)
120
+ -------------------
121
+
122
+ * Add Python 3.12
123
+ * Drop Python 3.8
124
+
125
+ 0.32.1 (2024-04-02)
126
+ -------------------
127
+
128
+ * Fix documentation
129
+ * Fix wheel upload
130
+
131
+ 0.32.0 (2024-03-29)
120
132
  -------------------
121
133
 
122
134
  * Add Leiden clustering algorithm
@@ -1,5 +1,5 @@
1
1
  [bumpversion]
2
- current_version = 0.32.0
2
+ current_version = 0.33.0
3
3
  commit = True
4
4
  tag = True
5
5
 
@@ -21,7 +21,7 @@ test = pytest
21
21
  collect_ignore = ['setup.py']
22
22
 
23
23
  [options]
24
- python_requires = >=3.8
24
+ python_requires = >=3.9
25
25
 
26
26
  [egg_info]
27
27
  tag_build =
@@ -135,10 +135,10 @@ setup(
135
135
  'License :: OSI Approved :: BSD License',
136
136
  'Natural Language :: English',
137
137
  'Programming Language :: Cython',
138
- 'Programming Language :: Python :: 3.8',
139
138
  'Programming Language :: Python :: 3.9',
140
139
  'Programming Language :: Python :: 3.10',
141
- 'Programming Language :: Python :: 3.11'
140
+ 'Programming Language :: Python :: 3.11',
141
+ 'Programming Language :: Python :: 3.12'
142
142
  ],
143
143
  description="Graph algorithms",
144
144
  install_requires=requirements,
@@ -153,7 +153,7 @@ setup(
153
153
  test_suite='tests',
154
154
  tests_require=test_requirements,
155
155
  url='https://github.com/sknetwork-team/scikit-network',
156
- version='0.32.0',
156
+ version='0.33.0',
157
157
  zip_safe=False,
158
158
  ext_modules=ext_modules,
159
159
  include_dirs=[numpy.get_include()],
@@ -4,7 +4,7 @@
4
4
 
5
5
  __author__ = """scikit-network team"""
6
6
  __email__ = "thomas.bonald@telecom-paris.fr"
7
- __version__ = '0.32.0'
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
@@ -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
+
@@ -19,15 +19,12 @@ import numpy as np
19
19
  from scipy import sparse
20
20
 
21
21
  from sknetwork.data.parse import from_csv, load_labels, load_header, load_metadata
22
- from sknetwork.data.base import Bunch
22
+ from sknetwork.data.base import Dataset
23
23
  from sknetwork.utils.check import is_square
24
24
  from sknetwork.log import Log
25
25
 
26
26
  NETSET_URL = 'https://netset.telecom-paris.fr'
27
27
 
28
- # former name of Dataset
29
- Bunch = Bunch
30
-
31
28
 
32
29
  def is_within_directory(directory, target):
33
30
  """Utility function."""
@@ -89,7 +86,7 @@ def clean_data_home(data_home: Optional[Union[str, Path]] = None):
89
86
 
90
87
 
91
88
  def load_netset(name: Optional[str] = None, data_home: Optional[Union[str, Path]] = None,
92
- verbose: bool = True) -> Optional[Bunch]:
89
+ verbose: bool = True) -> Optional[Dataset]:
93
90
  """Load a dataset from the `NetSet collection
94
91
  <https://netset.telecom-paris.fr/>`_.
95
92
 
@@ -105,10 +102,10 @@ def load_netset(name: Optional[str] = None, data_home: Optional[Union[str, Path]
105
102
 
106
103
  Returns
107
104
  -------
108
- dataset : :class:`Bunch`
105
+ dataset : :class:`Dataset`
109
106
  Returned dataset.
110
107
  """
111
- dataset = Bunch()
108
+ dataset = Dataset()
112
109
  dataset_folder = NETSET_URL + '/datasets/'
113
110
  folder_npz = NETSET_URL + '/datasets_npz/'
114
111
 
@@ -167,7 +164,7 @@ def load_netset(name: Optional[str] = None, data_home: Optional[Union[str, Path]
167
164
 
168
165
 
169
166
  def load_konect(name: str, data_home: Optional[Union[str, Path]] = None, auto_numpy_bundle: bool = True,
170
- verbose: bool = True) -> Bunch:
167
+ verbose: bool = True) -> Dataset:
171
168
  """Load a dataset from the `Konect database
172
169
  <http://konect.cc/networks/>`_.
173
170
 
@@ -186,7 +183,7 @@ def load_konect(name: str, data_home: Optional[Union[str, Path]] = None, auto_nu
186
183
 
187
184
  Returns
188
185
  -------
189
- dataset : :class:`Bunch`
186
+ dataset : :class:`Dataset`
190
187
  Object with the following attributes:
191
188
 
192
189
  * `adjacency` or `biadjacency`: the adjacency/biadjacency matrix for the dataset
@@ -240,7 +237,7 @@ def load_konect(name: str, data_home: Optional[Union[str, Path]] = None, auto_nu
240
237
  logger.print_log('Loading from local bundle...')
241
238
  return load_from_numpy_bundle(name + '_bundle', data_path)
242
239
 
243
- dataset = Bunch()
240
+ dataset = Dataset()
244
241
  path = data_konect / name / name
245
242
  if not path.exists() or len(listdir(path)) == 0:
246
243
  raise Exception("No data downloaded.")
@@ -269,7 +266,7 @@ def load_konect(name: str, data_home: Optional[Union[str, Path]] = None, auto_nu
269
266
  else:
270
267
  dataset.meta.name = name
271
268
  else:
272
- dataset.meta = Bunch()
269
+ dataset.meta = Dataset()
273
270
  dataset.meta.name = name
274
271
 
275
272
  if auto_numpy_bundle:
@@ -280,12 +277,12 @@ def load_konect(name: str, data_home: Optional[Union[str, Path]] = None, auto_nu
280
277
  return dataset
281
278
 
282
279
 
283
- def save_to_numpy_bundle(data: Bunch, bundle_name: str, data_home: Optional[Union[str, Path]] = None):
280
+ def save_to_numpy_bundle(data: Dataset, bundle_name: str, data_home: Optional[Union[str, Path]] = None):
284
281
  """Save a dataset in the specified data home to a collection of Numpy and Pickle files for faster subsequent loads.
285
282
 
286
283
  Parameters
287
284
  ----------
288
- data: Bunch
285
+ data: Dataset
289
286
  Data to save.
290
287
  bundle_name: str
291
288
  Name to be used for the bundle folder.
@@ -317,7 +314,7 @@ def load_from_numpy_bundle(bundle_name: str, data_home: Optional[Union[str, Path
317
314
 
318
315
  Returns
319
316
  -------
320
- data: Bunch
317
+ data: Dataset
321
318
  Data.
322
319
  """
323
320
  data_home = get_data_home(data_home)
@@ -326,7 +323,7 @@ def load_from_numpy_bundle(bundle_name: str, data_home: Optional[Union[str, Path
326
323
  raise FileNotFoundError('No bundle at ' + str(data_path))
327
324
  else:
328
325
  files = listdir(data_path)
329
- data = Bunch()
326
+ data = Dataset()
330
327
  for file in files:
331
328
  if len(file.split('.')) == 2:
332
329
  file_name, file_extension = file.split('.')
@@ -340,7 +337,7 @@ def load_from_numpy_bundle(bundle_name: str, data_home: Optional[Union[str, Path
340
337
  return data
341
338
 
342
339
 
343
- def save(folder: Union[str, Path], data: Union[sparse.csr_matrix, Bunch]):
340
+ def save(folder: Union[str, Path], data: Union[sparse.csr_matrix, Dataset]):
344
341
  """Save a dataset or a CSR matrix in the current directory to a collection of Numpy and Pickle files for faster
345
342
  subsequent loads. Supported attribute types include sparse matrices, NumPy arrays, strings and objects Dataset.
346
343
 
@@ -348,13 +345,13 @@ def save(folder: Union[str, Path], data: Union[sparse.csr_matrix, Bunch]):
348
345
  ----------
349
346
  folder : str or :class:`pathlib.Path`
350
347
  Name of the bundle folder.
351
- data : Union[sparse.csr_matrix, Bunch]
348
+ data : Union[sparse.csr_matrix, Dataset]
352
349
  Data to save.
353
350
 
354
351
  Example
355
352
  -------
356
353
  >>> from sknetwork.data import save
357
- >>> dataset = Bunch()
354
+ >>> dataset = Dataset()
358
355
  >>> dataset.adjacency = sparse.csr_matrix(np.random.random((3, 3)) < 0.5)
359
356
  >>> dataset.names = np.array(['a', 'b', 'c'])
360
357
  >>> save('dataset', dataset)
@@ -366,7 +363,7 @@ def save(folder: Union[str, Path], data: Union[sparse.csr_matrix, Bunch]):
366
363
  if folder.exists():
367
364
  shutil.rmtree(folder)
368
365
  if isinstance(data, sparse.csr_matrix):
369
- dataset = Bunch()
366
+ dataset = Dataset()
370
367
  if is_square(data):
371
368
  dataset.adjacency = data
372
369
  else:
@@ -388,13 +385,13 @@ def load(folder: Union[str, Path]):
388
385
 
389
386
  Returns
390
387
  -------
391
- data: Bunch
388
+ data: Dataset
392
389
  Data.
393
390
 
394
391
  Example
395
392
  -------
396
393
  >>> from sknetwork.data import save
397
- >>> dataset = Bunch()
394
+ >>> dataset = Dataset()
398
395
  >>> dataset.adjacency = sparse.csr_matrix(np.random.random((3, 3)) < 0.5)
399
396
  >>> dataset.names = np.array(['a', 'b', 'c'])
400
397
  >>> save('dataset', dataset)