netweavex 1.1.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.
Files changed (607) hide show
  1. netweavex-1.1.0/PKG-INFO +36 -0
  2. netweavex-1.1.0/netweavex/__init__.py +65 -0
  3. netweavex-1.1.0/netweavex/algorithms/__init__.py +134 -0
  4. netweavex-1.1.0/netweavex/algorithms/approximation/__init__.py +26 -0
  5. netweavex-1.1.0/netweavex/algorithms/approximation/clique.py +259 -0
  6. netweavex-1.1.0/netweavex/algorithms/approximation/clustering_coefficient.py +71 -0
  7. netweavex-1.1.0/netweavex/algorithms/approximation/connectivity.py +412 -0
  8. netweavex-1.1.0/netweavex/algorithms/approximation/density.py +396 -0
  9. netweavex-1.1.0/netweavex/algorithms/approximation/distance_measures.py +150 -0
  10. netweavex-1.1.0/netweavex/algorithms/approximation/dominating_set.py +154 -0
  11. netweavex-1.1.0/netweavex/algorithms/approximation/kcomponents.py +368 -0
  12. netweavex-1.1.0/netweavex/algorithms/approximation/matching.py +44 -0
  13. netweavex-1.1.0/netweavex/algorithms/approximation/maxcut.py +143 -0
  14. netweavex-1.1.0/netweavex/algorithms/approximation/ramsey.py +53 -0
  15. netweavex-1.1.0/netweavex/algorithms/approximation/steinertree.py +274 -0
  16. netweavex-1.1.0/netweavex/algorithms/approximation/tests/__init__.py +0 -0
  17. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_approx_clust_coeff.py +41 -0
  18. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_clique.py +112 -0
  19. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_connectivity.py +199 -0
  20. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_density.py +146 -0
  21. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_distance_measures.py +59 -0
  22. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_dominating_set.py +94 -0
  23. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_kcomponents.py +342 -0
  24. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_matching.py +8 -0
  25. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_maxcut.py +94 -0
  26. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_ramsey.py +31 -0
  27. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_steinertree.py +306 -0
  28. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_traveling_salesman.py +1014 -0
  29. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_treewidth.py +274 -0
  30. netweavex-1.1.0/netweavex/algorithms/approximation/tests/test_vertex_cover.py +68 -0
  31. netweavex-1.1.0/netweavex/algorithms/approximation/traveling_salesman.py +1508 -0
  32. netweavex-1.1.0/netweavex/algorithms/approximation/treewidth.py +255 -0
  33. netweavex-1.1.0/netweavex/algorithms/approximation/vertex_cover.py +83 -0
  34. netweavex-1.1.0/netweavex/algorithms/assortativity/__init__.py +5 -0
  35. netweavex-1.1.0/netweavex/algorithms/assortativity/connectivity.py +122 -0
  36. netweavex-1.1.0/netweavex/algorithms/assortativity/correlation.py +308 -0
  37. netweavex-1.1.0/netweavex/algorithms/assortativity/mixing.py +252 -0
  38. netweavex-1.1.0/netweavex/algorithms/assortativity/neighbor_degree.py +160 -0
  39. netweavex-1.1.0/netweavex/algorithms/assortativity/pairs.py +127 -0
  40. netweavex-1.1.0/netweavex/algorithms/assortativity/tests/__init__.py +0 -0
  41. netweavex-1.1.0/netweavex/algorithms/assortativity/tests/base_test.py +81 -0
  42. netweavex-1.1.0/netweavex/algorithms/assortativity/tests/test_connectivity.py +143 -0
  43. netweavex-1.1.0/netweavex/algorithms/assortativity/tests/test_correlation.py +140 -0
  44. netweavex-1.1.0/netweavex/algorithms/assortativity/tests/test_mixing.py +174 -0
  45. netweavex-1.1.0/netweavex/algorithms/assortativity/tests/test_neighbor_degree.py +107 -0
  46. netweavex-1.1.0/netweavex/algorithms/assortativity/tests/test_pairs.py +87 -0
  47. netweavex-1.1.0/netweavex/algorithms/asteroidal.py +164 -0
  48. netweavex-1.1.0/netweavex/algorithms/bipartite/__init__.py +89 -0
  49. netweavex-1.1.0/netweavex/algorithms/bipartite/basic.py +315 -0
  50. netweavex-1.1.0/netweavex/algorithms/bipartite/centrality.py +290 -0
  51. netweavex-1.1.0/netweavex/algorithms/bipartite/cluster.py +438 -0
  52. netweavex-1.1.0/netweavex/algorithms/bipartite/community.py +247 -0
  53. netweavex-1.1.0/netweavex/algorithms/bipartite/covering.py +57 -0
  54. netweavex-1.1.0/netweavex/algorithms/bipartite/edgelist.py +435 -0
  55. netweavex-1.1.0/netweavex/algorithms/bipartite/extendability.py +105 -0
  56. netweavex-1.1.0/netweavex/algorithms/bipartite/generators.py +603 -0
  57. netweavex-1.1.0/netweavex/algorithms/bipartite/link_analysis.py +316 -0
  58. netweavex-1.1.0/netweavex/algorithms/bipartite/matching.py +590 -0
  59. netweavex-1.1.0/netweavex/algorithms/bipartite/matrix.py +232 -0
  60. netweavex-1.1.0/netweavex/algorithms/bipartite/projection.py +525 -0
  61. netweavex-1.1.0/netweavex/algorithms/bipartite/redundancy.py +112 -0
  62. netweavex-1.1.0/netweavex/algorithms/bipartite/spectral.py +69 -0
  63. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/__init__.py +0 -0
  64. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_basic.py +125 -0
  65. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_centrality.py +192 -0
  66. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_cluster.py +140 -0
  67. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_community.py +358 -0
  68. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_covering.py +33 -0
  69. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_edgelist.py +240 -0
  70. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_extendability.py +334 -0
  71. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_generators.py +407 -0
  72. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_link_analysis.py +213 -0
  73. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_matching.py +323 -0
  74. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_matrix.py +133 -0
  75. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_project.py +409 -0
  76. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_redundancy.py +35 -0
  77. netweavex-1.1.0/netweavex/algorithms/bipartite/tests/test_spectral_bipartivity.py +80 -0
  78. netweavex-1.1.0/netweavex/algorithms/boundary.py +168 -0
  79. netweavex-1.1.0/netweavex/algorithms/bridges.py +205 -0
  80. netweavex-1.1.0/netweavex/algorithms/broadcasting.py +164 -0
  81. netweavex-1.1.0/netweavex/algorithms/centrality/__init__.py +20 -0
  82. netweavex-1.1.0/netweavex/algorithms/centrality/betweenness.py +596 -0
  83. netweavex-1.1.0/netweavex/algorithms/centrality/betweenness_subset.py +240 -0
  84. netweavex-1.1.0/netweavex/algorithms/centrality/closeness.py +306 -0
  85. netweavex-1.1.0/netweavex/algorithms/centrality/current_flow_betweenness.py +364 -0
  86. netweavex-1.1.0/netweavex/algorithms/centrality/current_flow_betweenness_subset.py +223 -0
  87. netweavex-1.1.0/netweavex/algorithms/centrality/current_flow_closeness.py +97 -0
  88. netweavex-1.1.0/netweavex/algorithms/centrality/degree_alg.py +164 -0
  89. netweavex-1.1.0/netweavex/algorithms/centrality/dispersion.py +107 -0
  90. netweavex-1.1.0/netweavex/algorithms/centrality/eigenvector.py +357 -0
  91. netweavex-1.1.0/netweavex/algorithms/centrality/flow_matrix.py +130 -0
  92. netweavex-1.1.0/netweavex/algorithms/centrality/group.py +829 -0
  93. netweavex-1.1.0/netweavex/algorithms/centrality/harmonic.py +88 -0
  94. netweavex-1.1.0/netweavex/algorithms/centrality/katz.py +331 -0
  95. netweavex-1.1.0/netweavex/algorithms/centrality/laplacian.py +150 -0
  96. netweavex-1.1.0/netweavex/algorithms/centrality/load.py +200 -0
  97. netweavex-1.1.0/netweavex/algorithms/centrality/percolation.py +128 -0
  98. netweavex-1.1.0/netweavex/algorithms/centrality/reaching.py +209 -0
  99. netweavex-1.1.0/netweavex/algorithms/centrality/second_order.py +141 -0
  100. netweavex-1.1.0/netweavex/algorithms/centrality/subgraph_alg.py +361 -0
  101. netweavex-1.1.0/netweavex/algorithms/centrality/tests/__init__.py +0 -0
  102. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_betweenness_centrality.py +923 -0
  103. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_betweenness_centrality_subset.py +354 -0
  104. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_closeness_centrality.py +298 -0
  105. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_current_flow_betweenness_centrality.py +259 -0
  106. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_current_flow_betweenness_centrality_subset.py +147 -0
  107. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_current_flow_closeness.py +56 -0
  108. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_degree_centrality.py +144 -0
  109. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_dispersion.py +73 -0
  110. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_eigenvector_centrality.py +186 -0
  111. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_group.py +423 -0
  112. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_harmonic_centrality.py +122 -0
  113. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_katz_centrality.py +345 -0
  114. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_laplacian_centrality.py +220 -0
  115. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_load_centrality.py +344 -0
  116. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_percolation_centrality.py +87 -0
  117. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_reaching.py +140 -0
  118. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_second_order_centrality.py +82 -0
  119. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_subgraph.py +110 -0
  120. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_trophic.py +302 -0
  121. netweavex-1.1.0/netweavex/algorithms/centrality/tests/test_voterank.py +64 -0
  122. netweavex-1.1.0/netweavex/algorithms/centrality/trophic.py +181 -0
  123. netweavex-1.1.0/netweavex/algorithms/centrality/voterank_alg.py +95 -0
  124. netweavex-1.1.0/netweavex/algorithms/chains.py +172 -0
  125. netweavex-1.1.0/netweavex/algorithms/chordal.py +420 -0
  126. netweavex-1.1.0/netweavex/algorithms/clique.py +818 -0
  127. netweavex-1.1.0/netweavex/algorithms/cluster.py +732 -0
  128. netweavex-1.1.0/netweavex/algorithms/coloring/__init__.py +4 -0
  129. netweavex-1.1.0/netweavex/algorithms/coloring/equitable_coloring.py +505 -0
  130. netweavex-1.1.0/netweavex/algorithms/coloring/greedy_coloring.py +565 -0
  131. netweavex-1.1.0/netweavex/algorithms/coloring/tests/__init__.py +0 -0
  132. netweavex-1.1.0/netweavex/algorithms/coloring/tests/test_coloring.py +863 -0
  133. netweavex-1.1.0/netweavex/algorithms/communicability_alg.py +152 -0
  134. netweavex-1.1.0/netweavex/algorithms/community/__init__.py +28 -0
  135. netweavex-1.1.0/netweavex/algorithms/community/asyn_fluid.py +152 -0
  136. netweavex-1.1.0/netweavex/algorithms/community/bipartitions.py +353 -0
  137. netweavex-1.1.0/netweavex/algorithms/community/centrality.py +171 -0
  138. netweavex-1.1.0/netweavex/algorithms/community/community_utils.py +64 -0
  139. netweavex-1.1.0/netweavex/algorithms/community/divisive.py +216 -0
  140. netweavex-1.1.0/netweavex/algorithms/community/kclique.py +79 -0
  141. netweavex-1.1.0/netweavex/algorithms/community/label_propagation.py +338 -0
  142. netweavex-1.1.0/netweavex/algorithms/community/leiden.py +751 -0
  143. netweavex-1.1.0/netweavex/algorithms/community/local.py +220 -0
  144. netweavex-1.1.0/netweavex/algorithms/community/louvain.py +362 -0
  145. netweavex-1.1.0/netweavex/algorithms/community/lukes.py +227 -0
  146. netweavex-1.1.0/netweavex/algorithms/community/modularity_max.py +450 -0
  147. netweavex-1.1.0/netweavex/algorithms/community/quality.py +711 -0
  148. netweavex-1.1.0/netweavex/algorithms/community/tests/__init__.py +0 -0
  149. netweavex-1.1.0/netweavex/algorithms/community/tests/test_asyn_fluid.py +147 -0
  150. netweavex-1.1.0/netweavex/algorithms/community/tests/test_bipartitions.py +157 -0
  151. netweavex-1.1.0/netweavex/algorithms/community/tests/test_centrality.py +85 -0
  152. netweavex-1.1.0/netweavex/algorithms/community/tests/test_divisive.py +106 -0
  153. netweavex-1.1.0/netweavex/algorithms/community/tests/test_kclique.py +91 -0
  154. netweavex-1.1.0/netweavex/algorithms/community/tests/test_label_propagation.py +241 -0
  155. netweavex-1.1.0/netweavex/algorithms/community/tests/test_leiden.py +463 -0
  156. netweavex-1.1.0/netweavex/algorithms/community/tests/test_local.py +76 -0
  157. netweavex-1.1.0/netweavex/algorithms/community/tests/test_louvain.py +281 -0
  158. netweavex-1.1.0/netweavex/algorithms/community/tests/test_lukes.py +152 -0
  159. netweavex-1.1.0/netweavex/algorithms/community/tests/test_modularity_max.py +340 -0
  160. netweavex-1.1.0/netweavex/algorithms/community/tests/test_quality.py +524 -0
  161. netweavex-1.1.0/netweavex/algorithms/community/tests/test_utils.py +70 -0
  162. netweavex-1.1.0/netweavex/algorithms/components/__init__.py +6 -0
  163. netweavex-1.1.0/netweavex/algorithms/components/attracting.py +115 -0
  164. netweavex-1.1.0/netweavex/algorithms/components/biconnected.py +393 -0
  165. netweavex-1.1.0/netweavex/algorithms/components/connected.py +280 -0
  166. netweavex-1.1.0/netweavex/algorithms/components/semiconnected.py +71 -0
  167. netweavex-1.1.0/netweavex/algorithms/components/strongly_connected.py +395 -0
  168. netweavex-1.1.0/netweavex/algorithms/components/tests/__init__.py +0 -0
  169. netweavex-1.1.0/netweavex/algorithms/components/tests/test_attracting.py +70 -0
  170. netweavex-1.1.0/netweavex/algorithms/components/tests/test_biconnected.py +248 -0
  171. netweavex-1.1.0/netweavex/algorithms/components/tests/test_connected.py +138 -0
  172. netweavex-1.1.0/netweavex/algorithms/components/tests/test_semiconnected.py +55 -0
  173. netweavex-1.1.0/netweavex/algorithms/components/tests/test_strongly_connected.py +204 -0
  174. netweavex-1.1.0/netweavex/algorithms/components/tests/test_weakly_connected.py +96 -0
  175. netweavex-1.1.0/netweavex/algorithms/components/weakly_connected.py +196 -0
  176. netweavex-1.1.0/netweavex/algorithms/connectivity/__init__.py +11 -0
  177. netweavex-1.1.0/netweavex/algorithms/connectivity/connectivity.py +842 -0
  178. netweavex-1.1.0/netweavex/algorithms/connectivity/cuts.py +661 -0
  179. netweavex-1.1.0/netweavex/algorithms/connectivity/disjoint_paths.py +407 -0
  180. netweavex-1.1.0/netweavex/algorithms/connectivity/edge_augmentation.py +1265 -0
  181. netweavex-1.1.0/netweavex/algorithms/connectivity/edge_kcomponents.py +592 -0
  182. netweavex-1.1.0/netweavex/algorithms/connectivity/kcomponents.py +278 -0
  183. netweavex-1.1.0/netweavex/algorithms/connectivity/kcutsets.py +233 -0
  184. netweavex-1.1.0/netweavex/algorithms/connectivity/stoerwagner.py +152 -0
  185. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/__init__.py +0 -0
  186. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_connectivity.py +506 -0
  187. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_cuts.py +307 -0
  188. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_disjoint_paths.py +249 -0
  189. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_edge_augmentation.py +502 -0
  190. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_edge_kcomponents.py +488 -0
  191. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_kcomponents.py +441 -0
  192. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_kcutsets.py +278 -0
  193. netweavex-1.1.0/netweavex/algorithms/connectivity/tests/test_stoer_wagner.py +102 -0
  194. netweavex-1.1.0/netweavex/algorithms/connectivity/utils.py +88 -0
  195. netweavex-1.1.0/netweavex/algorithms/core.py +588 -0
  196. netweavex-1.1.0/netweavex/algorithms/covering.py +142 -0
  197. netweavex-1.1.0/netweavex/algorithms/cuts.py +416 -0
  198. netweavex-1.1.0/netweavex/algorithms/cycles.py +1234 -0
  199. netweavex-1.1.0/netweavex/algorithms/d_separation.py +677 -0
  200. netweavex-1.1.0/netweavex/algorithms/dag.py +1462 -0
  201. netweavex-1.1.0/netweavex/algorithms/distance_measures.py +1129 -0
  202. netweavex-1.1.0/netweavex/algorithms/distance_regular.py +272 -0
  203. netweavex-1.1.0/netweavex/algorithms/dominance.py +149 -0
  204. netweavex-1.1.0/netweavex/algorithms/dominating.py +267 -0
  205. netweavex-1.1.0/netweavex/algorithms/efficiency_measures.py +166 -0
  206. netweavex-1.1.0/netweavex/algorithms/euler.py +470 -0
  207. netweavex-1.1.0/netweavex/algorithms/flow/__init__.py +11 -0
  208. netweavex-1.1.0/netweavex/algorithms/flow/boykovkolmogorov.py +379 -0
  209. netweavex-1.1.0/netweavex/algorithms/flow/capacityscaling.py +407 -0
  210. netweavex-1.1.0/netweavex/algorithms/flow/dinitz_alg.py +247 -0
  211. netweavex-1.1.0/netweavex/algorithms/flow/edmondskarp.py +255 -0
  212. netweavex-1.1.0/netweavex/algorithms/flow/gomory_hu.py +187 -0
  213. netweavex-1.1.0/netweavex/algorithms/flow/maxflow.py +686 -0
  214. netweavex-1.1.0/netweavex/algorithms/flow/mincost.py +356 -0
  215. netweavex-1.1.0/netweavex/algorithms/flow/networksimplex.py +662 -0
  216. netweavex-1.1.0/netweavex/algorithms/flow/preflowpush.py +434 -0
  217. netweavex-1.1.0/netweavex/algorithms/flow/shortestaugmentingpath.py +309 -0
  218. netweavex-1.1.0/netweavex/algorithms/flow/tests/__init__.py +0 -0
  219. netweavex-1.1.0/netweavex/algorithms/flow/tests/gl1.gpickle.bz2 +0 -0
  220. netweavex-1.1.0/netweavex/algorithms/flow/tests/gw1.gpickle.bz2 +0 -0
  221. netweavex-1.1.0/netweavex/algorithms/flow/tests/netgen-2.gpickle.bz2 +0 -0
  222. netweavex-1.1.0/netweavex/algorithms/flow/tests/test_gomory_hu.py +128 -0
  223. netweavex-1.1.0/netweavex/algorithms/flow/tests/test_maxflow.py +638 -0
  224. netweavex-1.1.0/netweavex/algorithms/flow/tests/test_maxflow_large_graph.py +155 -0
  225. netweavex-1.1.0/netweavex/algorithms/flow/tests/test_mincost.py +475 -0
  226. netweavex-1.1.0/netweavex/algorithms/flow/tests/test_networksimplex.py +481 -0
  227. netweavex-1.1.0/netweavex/algorithms/flow/tests/wlm3.gpickle.bz2 +0 -0
  228. netweavex-1.1.0/netweavex/algorithms/flow/utils.py +231 -0
  229. netweavex-1.1.0/netweavex/algorithms/graph_hashing.py +435 -0
  230. netweavex-1.1.0/netweavex/algorithms/graphical.py +483 -0
  231. netweavex-1.1.0/netweavex/algorithms/hierarchy.py +57 -0
  232. netweavex-1.1.0/netweavex/algorithms/hybrid.py +196 -0
  233. netweavex-1.1.0/netweavex/algorithms/isolate.py +107 -0
  234. netweavex-1.1.0/netweavex/algorithms/isomorphism/__init__.py +7 -0
  235. netweavex-1.1.0/netweavex/algorithms/isomorphism/ismags.py +1554 -0
  236. netweavex-1.1.0/netweavex/algorithms/isomorphism/isomorph.py +253 -0
  237. netweavex-1.1.0/netweavex/algorithms/isomorphism/isomorphvf2.py +1222 -0
  238. netweavex-1.1.0/netweavex/algorithms/isomorphism/matchhelpers.py +386 -0
  239. netweavex-1.1.0/netweavex/algorithms/isomorphism/temporalisomorphvf2.py +308 -0
  240. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/__init__.py +0 -0
  241. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/iso_r01_s80.A99 +0 -0
  242. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/iso_r01_s80.B99 +0 -0
  243. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/si2_b06_m200.A99 +0 -0
  244. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/si2_b06_m200.B99 +0 -0
  245. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_common.py +1040 -0
  246. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_ismags.py +916 -0
  247. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_isomorphism.py +89 -0
  248. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_isomorphvf2.py +525 -0
  249. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_match_helpers.py +109 -0
  250. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_temporalisomorphvf2.py +212 -0
  251. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_tree_isomorphism.py +202 -0
  252. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_vf2pp.py +1672 -0
  253. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_vf2pp_helpers.py +1314 -0
  254. netweavex-1.1.0/netweavex/algorithms/isomorphism/tests/test_vf2userfunc.py +196 -0
  255. netweavex-1.1.0/netweavex/algorithms/isomorphism/tree_isomorphism.py +264 -0
  256. netweavex-1.1.0/netweavex/algorithms/isomorphism/vf2pp.py +1063 -0
  257. netweavex-1.1.0/netweavex/algorithms/isomorphism/vf2userfunc.py +192 -0
  258. netweavex-1.1.0/netweavex/algorithms/link_analysis/__init__.py +2 -0
  259. netweavex-1.1.0/netweavex/algorithms/link_analysis/hits_alg.py +306 -0
  260. netweavex-1.1.0/netweavex/algorithms/link_analysis/pagerank_alg.py +507 -0
  261. netweavex-1.1.0/netweavex/algorithms/link_analysis/tests/__init__.py +0 -0
  262. netweavex-1.1.0/netweavex/algorithms/link_analysis/tests/test_hits.py +98 -0
  263. netweavex-1.1.0/netweavex/algorithms/link_analysis/tests/test_pagerank.py +213 -0
  264. netweavex-1.1.0/netweavex/algorithms/link_prediction.py +687 -0
  265. netweavex-1.1.0/netweavex/algorithms/lowest_common_ancestors.py +280 -0
  266. netweavex-1.1.0/netweavex/algorithms/matching.py +1148 -0
  267. netweavex-1.1.0/netweavex/algorithms/minors/__init__.py +27 -0
  268. netweavex-1.1.0/netweavex/algorithms/minors/contraction.py +739 -0
  269. netweavex-1.1.0/netweavex/algorithms/minors/tests/test_contraction.py +544 -0
  270. netweavex-1.1.0/netweavex/algorithms/mis.py +115 -0
  271. netweavex-1.1.0/netweavex/algorithms/moral.py +59 -0
  272. netweavex-1.1.0/netweavex/algorithms/node_classification.py +219 -0
  273. netweavex-1.1.0/netweavex/algorithms/non_randomness.py +155 -0
  274. netweavex-1.1.0/netweavex/algorithms/operators/__init__.py +4 -0
  275. netweavex-1.1.0/netweavex/algorithms/operators/all.py +324 -0
  276. netweavex-1.1.0/netweavex/algorithms/operators/binary.py +468 -0
  277. netweavex-1.1.0/netweavex/algorithms/operators/product.py +633 -0
  278. netweavex-1.1.0/netweavex/algorithms/operators/tests/__init__.py +0 -0
  279. netweavex-1.1.0/netweavex/algorithms/operators/tests/test_all.py +328 -0
  280. netweavex-1.1.0/netweavex/algorithms/operators/tests/test_binary.py +451 -0
  281. netweavex-1.1.0/netweavex/algorithms/operators/tests/test_product.py +491 -0
  282. netweavex-1.1.0/netweavex/algorithms/operators/tests/test_unary.py +69 -0
  283. netweavex-1.1.0/netweavex/algorithms/operators/unary.py +77 -0
  284. netweavex-1.1.0/netweavex/algorithms/perfect_graph.py +73 -0
  285. netweavex-1.1.0/netweavex/algorithms/planar_drawing.py +464 -0
  286. netweavex-1.1.0/netweavex/algorithms/planarity.py +1488 -0
  287. netweavex-1.1.0/netweavex/algorithms/polynomials.py +306 -0
  288. netweavex-1.1.0/netweavex/algorithms/reciprocity.py +98 -0
  289. netweavex-1.1.0/netweavex/algorithms/regular.py +167 -0
  290. netweavex-1.1.0/netweavex/algorithms/richclub.py +164 -0
  291. netweavex-1.1.0/netweavex/algorithms/shortest_paths/__init__.py +5 -0
  292. netweavex-1.1.0/netweavex/algorithms/shortest_paths/astar.py +239 -0
  293. netweavex-1.1.0/netweavex/algorithms/shortest_paths/dense.py +466 -0
  294. netweavex-1.1.0/netweavex/algorithms/shortest_paths/generic.py +718 -0
  295. netweavex-1.1.0/netweavex/algorithms/shortest_paths/tests/__init__.py +0 -0
  296. netweavex-1.1.0/netweavex/algorithms/shortest_paths/tests/test_astar.py +254 -0
  297. netweavex-1.1.0/netweavex/algorithms/shortest_paths/tests/test_dense.py +319 -0
  298. netweavex-1.1.0/netweavex/algorithms/shortest_paths/tests/test_dense_numpy.py +126 -0
  299. netweavex-1.1.0/netweavex/algorithms/shortest_paths/tests/test_generic.py +518 -0
  300. netweavex-1.1.0/netweavex/algorithms/shortest_paths/tests/test_unweighted.py +149 -0
  301. netweavex-1.1.0/netweavex/algorithms/shortest_paths/tests/test_weighted.py +983 -0
  302. netweavex-1.1.0/netweavex/algorithms/shortest_paths/unweighted.py +625 -0
  303. netweavex-1.1.0/netweavex/algorithms/shortest_paths/weighted.py +2542 -0
  304. netweavex-1.1.0/netweavex/algorithms/similarity.py +2107 -0
  305. netweavex-1.1.0/netweavex/algorithms/simple_paths.py +966 -0
  306. netweavex-1.1.0/netweavex/algorithms/smallworld.py +400 -0
  307. netweavex-1.1.0/netweavex/algorithms/smetric.py +30 -0
  308. netweavex-1.1.0/netweavex/algorithms/sparsifiers.py +296 -0
  309. netweavex-1.1.0/netweavex/algorithms/structuralholes.py +374 -0
  310. netweavex-1.1.0/netweavex/algorithms/summarization.py +561 -0
  311. netweavex-1.1.0/netweavex/algorithms/swap.py +406 -0
  312. netweavex-1.1.0/netweavex/algorithms/tests/__init__.py +0 -0
  313. netweavex-1.1.0/netweavex/algorithms/tests/test_asteroidal.py +23 -0
  314. netweavex-1.1.0/netweavex/algorithms/tests/test_boundary.py +154 -0
  315. netweavex-1.1.0/netweavex/algorithms/tests/test_bridges.py +144 -0
  316. netweavex-1.1.0/netweavex/algorithms/tests/test_broadcasting.py +109 -0
  317. netweavex-1.1.0/netweavex/algorithms/tests/test_chains.py +136 -0
  318. netweavex-1.1.0/netweavex/algorithms/tests/test_chordal.py +163 -0
  319. netweavex-1.1.0/netweavex/algorithms/tests/test_clique.py +249 -0
  320. netweavex-1.1.0/netweavex/algorithms/tests/test_cluster.py +678 -0
  321. netweavex-1.1.0/netweavex/algorithms/tests/test_communicability.py +69 -0
  322. netweavex-1.1.0/netweavex/algorithms/tests/test_core.py +266 -0
  323. netweavex-1.1.0/netweavex/algorithms/tests/test_covering.py +85 -0
  324. netweavex-1.1.0/netweavex/algorithms/tests/test_cuts.py +171 -0
  325. netweavex-1.1.0/netweavex/algorithms/tests/test_cycles.py +982 -0
  326. netweavex-1.1.0/netweavex/algorithms/tests/test_d_separation.py +340 -0
  327. netweavex-1.1.0/netweavex/algorithms/tests/test_dag.py +894 -0
  328. netweavex-1.1.0/netweavex/algorithms/tests/test_distance_measures.py +840 -0
  329. netweavex-1.1.0/netweavex/algorithms/tests/test_distance_regular.py +85 -0
  330. netweavex-1.1.0/netweavex/algorithms/tests/test_dominance.py +299 -0
  331. netweavex-1.1.0/netweavex/algorithms/tests/test_dominating.py +115 -0
  332. netweavex-1.1.0/netweavex/algorithms/tests/test_efficiency.py +58 -0
  333. netweavex-1.1.0/netweavex/algorithms/tests/test_euler.py +314 -0
  334. netweavex-1.1.0/netweavex/algorithms/tests/test_graph_hashing.py +872 -0
  335. netweavex-1.1.0/netweavex/algorithms/tests/test_graphical.py +163 -0
  336. netweavex-1.1.0/netweavex/algorithms/tests/test_hierarchy.py +46 -0
  337. netweavex-1.1.0/netweavex/algorithms/tests/test_hybrid.py +24 -0
  338. netweavex-1.1.0/netweavex/algorithms/tests/test_isolate.py +26 -0
  339. netweavex-1.1.0/netweavex/algorithms/tests/test_link_prediction.py +615 -0
  340. netweavex-1.1.0/netweavex/algorithms/tests/test_lowest_common_ancestors.py +459 -0
  341. netweavex-1.1.0/netweavex/algorithms/tests/test_matching.py +556 -0
  342. netweavex-1.1.0/netweavex/algorithms/tests/test_max_weight_clique.py +179 -0
  343. netweavex-1.1.0/netweavex/algorithms/tests/test_mis.py +62 -0
  344. netweavex-1.1.0/netweavex/algorithms/tests/test_moral.py +15 -0
  345. netweavex-1.1.0/netweavex/algorithms/tests/test_node_classification.py +140 -0
  346. netweavex-1.1.0/netweavex/algorithms/tests/test_non_randomness.py +60 -0
  347. netweavex-1.1.0/netweavex/algorithms/tests/test_perfect_graph.py +27 -0
  348. netweavex-1.1.0/netweavex/algorithms/tests/test_planar_drawing.py +274 -0
  349. netweavex-1.1.0/netweavex/algorithms/tests/test_planarity.py +618 -0
  350. netweavex-1.1.0/netweavex/algorithms/tests/test_polynomials.py +57 -0
  351. netweavex-1.1.0/netweavex/algorithms/tests/test_reciprocity.py +37 -0
  352. netweavex-1.1.0/netweavex/algorithms/tests/test_regular.py +88 -0
  353. netweavex-1.1.0/netweavex/algorithms/tests/test_richclub.py +160 -0
  354. netweavex-1.1.0/netweavex/algorithms/tests/test_similarity.py +1158 -0
  355. netweavex-1.1.0/netweavex/algorithms/tests/test_simple_paths.py +803 -0
  356. netweavex-1.1.0/netweavex/algorithms/tests/test_smallworld.py +76 -0
  357. netweavex-1.1.0/netweavex/algorithms/tests/test_smetric.py +8 -0
  358. netweavex-1.1.0/netweavex/algorithms/tests/test_sparsifiers.py +138 -0
  359. netweavex-1.1.0/netweavex/algorithms/tests/test_structuralholes.py +191 -0
  360. netweavex-1.1.0/netweavex/algorithms/tests/test_summarization.py +642 -0
  361. netweavex-1.1.0/netweavex/algorithms/tests/test_swap.py +179 -0
  362. netweavex-1.1.0/netweavex/algorithms/tests/test_threshold.py +270 -0
  363. netweavex-1.1.0/netweavex/algorithms/tests/test_time_dependent.py +431 -0
  364. netweavex-1.1.0/netweavex/algorithms/tests/test_tournament.py +161 -0
  365. netweavex-1.1.0/netweavex/algorithms/tests/test_triads.py +261 -0
  366. netweavex-1.1.0/netweavex/algorithms/tests/test_vitality.py +41 -0
  367. netweavex-1.1.0/netweavex/algorithms/tests/test_voronoi.py +103 -0
  368. netweavex-1.1.0/netweavex/algorithms/tests/test_walks.py +165 -0
  369. netweavex-1.1.0/netweavex/algorithms/tests/test_wiener.py +157 -0
  370. netweavex-1.1.0/netweavex/algorithms/threshold.py +981 -0
  371. netweavex-1.1.0/netweavex/algorithms/time_dependent.py +142 -0
  372. netweavex-1.1.0/netweavex/algorithms/tournament.py +406 -0
  373. netweavex-1.1.0/netweavex/algorithms/traversal/__init__.py +5 -0
  374. netweavex-1.1.0/netweavex/algorithms/traversal/beamsearch.py +90 -0
  375. netweavex-1.1.0/netweavex/algorithms/traversal/breadth_first_search.py +600 -0
  376. netweavex-1.1.0/netweavex/algorithms/traversal/depth_first_search.py +529 -0
  377. netweavex-1.1.0/netweavex/algorithms/traversal/edgebfs.py +185 -0
  378. netweavex-1.1.0/netweavex/algorithms/traversal/edgedfs.py +182 -0
  379. netweavex-1.1.0/netweavex/algorithms/traversal/tests/__init__.py +0 -0
  380. netweavex-1.1.0/netweavex/algorithms/traversal/tests/test_beamsearch.py +25 -0
  381. netweavex-1.1.0/netweavex/algorithms/traversal/tests/test_bfs.py +211 -0
  382. netweavex-1.1.0/netweavex/algorithms/traversal/tests/test_dfs.py +307 -0
  383. netweavex-1.1.0/netweavex/algorithms/traversal/tests/test_edgebfs.py +147 -0
  384. netweavex-1.1.0/netweavex/algorithms/traversal/tests/test_edgedfs.py +131 -0
  385. netweavex-1.1.0/netweavex/algorithms/tree/__init__.py +7 -0
  386. netweavex-1.1.0/netweavex/algorithms/tree/branchings.py +1034 -0
  387. netweavex-1.1.0/netweavex/algorithms/tree/coding.py +413 -0
  388. netweavex-1.1.0/netweavex/algorithms/tree/decomposition.py +88 -0
  389. netweavex-1.1.0/netweavex/algorithms/tree/distance_measures.py +219 -0
  390. netweavex-1.1.0/netweavex/algorithms/tree/mst.py +1316 -0
  391. netweavex-1.1.0/netweavex/algorithms/tree/operations.py +106 -0
  392. netweavex-1.1.0/netweavex/algorithms/tree/recognition.py +273 -0
  393. netweavex-1.1.0/netweavex/algorithms/tree/tests/__init__.py +0 -0
  394. netweavex-1.1.0/netweavex/algorithms/tree/tests/test_branchings.py +624 -0
  395. netweavex-1.1.0/netweavex/algorithms/tree/tests/test_coding.py +114 -0
  396. netweavex-1.1.0/netweavex/algorithms/tree/tests/test_decomposition.py +79 -0
  397. netweavex-1.1.0/netweavex/algorithms/tree/tests/test_distance_measures.py +99 -0
  398. netweavex-1.1.0/netweavex/algorithms/tree/tests/test_mst.py +942 -0
  399. netweavex-1.1.0/netweavex/algorithms/tree/tests/test_operations.py +53 -0
  400. netweavex-1.1.0/netweavex/algorithms/tree/tests/test_recognition.py +174 -0
  401. netweavex-1.1.0/netweavex/algorithms/triads.py +500 -0
  402. netweavex-1.1.0/netweavex/algorithms/vitality.py +76 -0
  403. netweavex-1.1.0/netweavex/algorithms/voronoi.py +86 -0
  404. netweavex-1.1.0/netweavex/algorithms/walks.py +230 -0
  405. netweavex-1.1.0/netweavex/algorithms/wiener.py +278 -0
  406. netweavex-1.1.0/netweavex/classes/__init__.py +13 -0
  407. netweavex-1.1.0/netweavex/classes/coreviews.py +435 -0
  408. netweavex-1.1.0/netweavex/classes/digraph.py +1362 -0
  409. netweavex-1.1.0/netweavex/classes/filters.py +95 -0
  410. netweavex-1.1.0/netweavex/classes/function.py +1611 -0
  411. netweavex-1.1.0/netweavex/classes/graph.py +2052 -0
  412. netweavex-1.1.0/netweavex/classes/graphviews.py +268 -0
  413. netweavex-1.1.0/netweavex/classes/multidigraph.py +976 -0
  414. netweavex-1.1.0/netweavex/classes/multigraph.py +1294 -0
  415. netweavex-1.1.0/netweavex/classes/reportviews.py +1663 -0
  416. netweavex-1.1.0/netweavex/classes/tests/__init__.py +0 -0
  417. netweavex-1.1.0/netweavex/classes/tests/dispatch_interface.py +192 -0
  418. netweavex-1.1.0/netweavex/classes/tests/historical_tests.py +476 -0
  419. netweavex-1.1.0/netweavex/classes/tests/test_coreviews.py +362 -0
  420. netweavex-1.1.0/netweavex/classes/tests/test_digraph.py +331 -0
  421. netweavex-1.1.0/netweavex/classes/tests/test_digraph_historical.py +110 -0
  422. netweavex-1.1.0/netweavex/classes/tests/test_filters.py +177 -0
  423. netweavex-1.1.0/netweavex/classes/tests/test_function.py +1064 -0
  424. netweavex-1.1.0/netweavex/classes/tests/test_graph.py +1017 -0
  425. netweavex-1.1.0/netweavex/classes/tests/test_graph_historical.py +12 -0
  426. netweavex-1.1.0/netweavex/classes/tests/test_graphviews.py +349 -0
  427. netweavex-1.1.0/netweavex/classes/tests/test_multidigraph.py +459 -0
  428. netweavex-1.1.0/netweavex/classes/tests/test_multigraph.py +528 -0
  429. netweavex-1.1.0/netweavex/classes/tests/test_reportviews.py +1444 -0
  430. netweavex-1.1.0/netweavex/classes/tests/test_special.py +131 -0
  431. netweavex-1.1.0/netweavex/classes/tests/test_subgraphviews.py +371 -0
  432. netweavex-1.1.0/netweavex/conftest.py +285 -0
  433. netweavex-1.1.0/netweavex/convert.py +502 -0
  434. netweavex-1.1.0/netweavex/convert_matrix.py +1350 -0
  435. netweavex-1.1.0/netweavex/drawing/__init__.py +7 -0
  436. netweavex-1.1.0/netweavex/drawing/layout.py +2041 -0
  437. netweavex-1.1.0/netweavex/drawing/nx_agraph.py +473 -0
  438. netweavex-1.1.0/netweavex/drawing/nx_latex.py +699 -0
  439. netweavex-1.1.0/netweavex/drawing/nx_pydot.py +361 -0
  440. netweavex-1.1.0/netweavex/drawing/nx_pylab.py +2993 -0
  441. netweavex-1.1.0/netweavex/drawing/tests/__init__.py +0 -0
  442. netweavex-1.1.0/netweavex/drawing/tests/baseline/test_display_complex.png +0 -0
  443. netweavex-1.1.0/netweavex/drawing/tests/baseline/test_display_empty_graph.png +0 -0
  444. netweavex-1.1.0/netweavex/drawing/tests/baseline/test_display_house_with_colors.png +0 -0
  445. netweavex-1.1.0/netweavex/drawing/tests/baseline/test_display_labels_and_colors.png +0 -0
  446. netweavex-1.1.0/netweavex/drawing/tests/baseline/test_display_shortest_path.png +0 -0
  447. netweavex-1.1.0/netweavex/drawing/tests/baseline/test_house_with_colors.png +0 -0
  448. netweavex-1.1.0/netweavex/drawing/tests/test_agraph.py +261 -0
  449. netweavex-1.1.0/netweavex/drawing/tests/test_image_comparison_pylab_mpl.py +229 -0
  450. netweavex-1.1.0/netweavex/drawing/tests/test_latex.py +285 -0
  451. netweavex-1.1.0/netweavex/drawing/tests/test_layout.py +679 -0
  452. netweavex-1.1.0/netweavex/drawing/tests/test_pydot.py +158 -0
  453. netweavex-1.1.0/netweavex/drawing/tests/test_pylab.py +1581 -0
  454. netweavex-1.1.0/netweavex/exception.py +131 -0
  455. netweavex-1.1.0/netweavex/generators/__init__.py +34 -0
  456. netweavex-1.1.0/netweavex/generators/atlas.dat.gz +0 -0
  457. netweavex-1.1.0/netweavex/generators/atlas.py +227 -0
  458. netweavex-1.1.0/netweavex/generators/classic.py +1102 -0
  459. netweavex-1.1.0/netweavex/generators/cographs.py +68 -0
  460. netweavex-1.1.0/netweavex/generators/community.py +1067 -0
  461. netweavex-1.1.0/netweavex/generators/degree_seq.py +886 -0
  462. netweavex-1.1.0/netweavex/generators/directed.py +572 -0
  463. netweavex-1.1.0/netweavex/generators/duplication.py +173 -0
  464. netweavex-1.1.0/netweavex/generators/ego.py +66 -0
  465. netweavex-1.1.0/netweavex/generators/expanders.py +502 -0
  466. netweavex-1.1.0/netweavex/generators/geometric.py +1037 -0
  467. netweavex-1.1.0/netweavex/generators/harary_graph.py +162 -0
  468. netweavex-1.1.0/netweavex/generators/internet_as_graphs.py +443 -0
  469. netweavex-1.1.0/netweavex/generators/intersection.py +125 -0
  470. netweavex-1.1.0/netweavex/generators/interval_graph.py +70 -0
  471. netweavex-1.1.0/netweavex/generators/joint_degree_seq.py +666 -0
  472. netweavex-1.1.0/netweavex/generators/lattice.py +404 -0
  473. netweavex-1.1.0/netweavex/generators/line.py +501 -0
  474. netweavex-1.1.0/netweavex/generators/mycielski.py +110 -0
  475. netweavex-1.1.0/netweavex/generators/nonisomorphic_trees.py +239 -0
  476. netweavex-1.1.0/netweavex/generators/random_clustered.py +117 -0
  477. netweavex-1.1.0/netweavex/generators/random_graphs.py +1495 -0
  478. netweavex-1.1.0/netweavex/generators/small.py +1121 -0
  479. netweavex-1.1.0/netweavex/generators/social.py +554 -0
  480. netweavex-1.1.0/netweavex/generators/spectral_graph_forge.py +120 -0
  481. netweavex-1.1.0/netweavex/generators/stochastic.py +54 -0
  482. netweavex-1.1.0/netweavex/generators/sudoku.py +130 -0
  483. netweavex-1.1.0/netweavex/generators/tests/__init__.py +0 -0
  484. netweavex-1.1.0/netweavex/generators/tests/test_atlas.py +75 -0
  485. netweavex-1.1.0/netweavex/generators/tests/test_classic.py +659 -0
  486. netweavex-1.1.0/netweavex/generators/tests/test_cographs.py +20 -0
  487. netweavex-1.1.0/netweavex/generators/tests/test_community.py +377 -0
  488. netweavex-1.1.0/netweavex/generators/tests/test_degree_seq.py +224 -0
  489. netweavex-1.1.0/netweavex/generators/tests/test_directed.py +189 -0
  490. netweavex-1.1.0/netweavex/generators/tests/test_duplication.py +103 -0
  491. netweavex-1.1.0/netweavex/generators/tests/test_ego.py +39 -0
  492. netweavex-1.1.0/netweavex/generators/tests/test_expanders.py +182 -0
  493. netweavex-1.1.0/netweavex/generators/tests/test_geometric.py +496 -0
  494. netweavex-1.1.0/netweavex/generators/tests/test_harary_graph.py +133 -0
  495. netweavex-1.1.0/netweavex/generators/tests/test_internet_as_graphs.py +221 -0
  496. netweavex-1.1.0/netweavex/generators/tests/test_intersection.py +28 -0
  497. netweavex-1.1.0/netweavex/generators/tests/test_interval_graph.py +144 -0
  498. netweavex-1.1.0/netweavex/generators/tests/test_joint_degree_seq.py +125 -0
  499. netweavex-1.1.0/netweavex/generators/tests/test_lattice.py +264 -0
  500. netweavex-1.1.0/netweavex/generators/tests/test_line.py +316 -0
  501. netweavex-1.1.0/netweavex/generators/tests/test_mycielski.py +30 -0
  502. netweavex-1.1.0/netweavex/generators/tests/test_nonisomorphic_trees.py +82 -0
  503. netweavex-1.1.0/netweavex/generators/tests/test_random_clustered.py +33 -0
  504. netweavex-1.1.0/netweavex/generators/tests/test_random_graphs.py +556 -0
  505. netweavex-1.1.0/netweavex/generators/tests/test_small.py +225 -0
  506. netweavex-1.1.0/netweavex/generators/tests/test_spectral_graph_forge.py +53 -0
  507. netweavex-1.1.0/netweavex/generators/tests/test_stochastic.py +72 -0
  508. netweavex-1.1.0/netweavex/generators/tests/test_sudoku.py +92 -0
  509. netweavex-1.1.0/netweavex/generators/tests/test_time_series.py +64 -0
  510. netweavex-1.1.0/netweavex/generators/tests/test_trees.py +195 -0
  511. netweavex-1.1.0/netweavex/generators/tests/test_triads.py +15 -0
  512. netweavex-1.1.0/netweavex/generators/time_series.py +74 -0
  513. netweavex-1.1.0/netweavex/generators/trees.py +1070 -0
  514. netweavex-1.1.0/netweavex/generators/triads.py +94 -0
  515. netweavex-1.1.0/netweavex/lazy_imports.py +188 -0
  516. netweavex-1.1.0/netweavex/linalg/__init__.py +13 -0
  517. netweavex-1.1.0/netweavex/linalg/algebraicconnectivity.py +650 -0
  518. netweavex-1.1.0/netweavex/linalg/attrmatrix.py +466 -0
  519. netweavex-1.1.0/netweavex/linalg/bethehessianmatrix.py +77 -0
  520. netweavex-1.1.0/netweavex/linalg/graphmatrix.py +174 -0
  521. netweavex-1.1.0/netweavex/linalg/laplacianmatrix.py +670 -0
  522. netweavex-1.1.0/netweavex/linalg/modularitymatrix.py +166 -0
  523. netweavex-1.1.0/netweavex/linalg/spectrum.py +228 -0
  524. netweavex-1.1.0/netweavex/linalg/tests/__init__.py +0 -0
  525. netweavex-1.1.0/netweavex/linalg/tests/test_algebraic_connectivity.py +400 -0
  526. netweavex-1.1.0/netweavex/linalg/tests/test_attrmatrix.py +108 -0
  527. netweavex-1.1.0/netweavex/linalg/tests/test_bethehessian.py +40 -0
  528. netweavex-1.1.0/netweavex/linalg/tests/test_graphmatrix.py +296 -0
  529. netweavex-1.1.0/netweavex/linalg/tests/test_laplacian.py +479 -0
  530. netweavex-1.1.0/netweavex/linalg/tests/test_modularity.py +86 -0
  531. netweavex-1.1.0/netweavex/linalg/tests/test_spectrum.py +92 -0
  532. netweavex-1.1.0/netweavex/readwrite/__init__.py +17 -0
  533. netweavex-1.1.0/netweavex/readwrite/adjlist.py +373 -0
  534. netweavex-1.1.0/netweavex/readwrite/edgelist.py +580 -0
  535. netweavex-1.1.0/netweavex/readwrite/gexf.py +1208 -0
  536. netweavex-1.1.0/netweavex/readwrite/gml.py +920 -0
  537. netweavex-1.1.0/netweavex/readwrite/graph6.py +426 -0
  538. netweavex-1.1.0/netweavex/readwrite/graphml.py +1093 -0
  539. netweavex-1.1.0/netweavex/readwrite/json_graph/__init__.py +19 -0
  540. netweavex-1.1.0/netweavex/readwrite/json_graph/adjacency.py +156 -0
  541. netweavex-1.1.0/netweavex/readwrite/json_graph/cytoscape.py +190 -0
  542. netweavex-1.1.0/netweavex/readwrite/json_graph/node_link.py +260 -0
  543. netweavex-1.1.0/netweavex/readwrite/json_graph/tests/__init__.py +0 -0
  544. netweavex-1.1.0/netweavex/readwrite/json_graph/tests/test_adjacency.py +78 -0
  545. netweavex-1.1.0/netweavex/readwrite/json_graph/tests/test_cytoscape.py +78 -0
  546. netweavex-1.1.0/netweavex/readwrite/json_graph/tests/test_node_link.py +109 -0
  547. netweavex-1.1.0/netweavex/readwrite/json_graph/tests/test_tree.py +48 -0
  548. netweavex-1.1.0/netweavex/readwrite/json_graph/tree.py +135 -0
  549. netweavex-1.1.0/netweavex/readwrite/leda.py +109 -0
  550. netweavex-1.1.0/netweavex/readwrite/multiline_adjlist.py +433 -0
  551. netweavex-1.1.0/netweavex/readwrite/p2g.py +121 -0
  552. netweavex-1.1.0/netweavex/readwrite/pajek.py +316 -0
  553. netweavex-1.1.0/netweavex/readwrite/sparse6.py +380 -0
  554. netweavex-1.1.0/netweavex/readwrite/tests/__init__.py +0 -0
  555. netweavex-1.1.0/netweavex/readwrite/tests/test_adjlist.py +354 -0
  556. netweavex-1.1.0/netweavex/readwrite/tests/test_edgelist.py +318 -0
  557. netweavex-1.1.0/netweavex/readwrite/tests/test_gexf.py +725 -0
  558. netweavex-1.1.0/netweavex/readwrite/tests/test_gml.py +757 -0
  559. netweavex-1.1.0/netweavex/readwrite/tests/test_graph6.py +187 -0
  560. netweavex-1.1.0/netweavex/readwrite/tests/test_graphml.py +1531 -0
  561. netweavex-1.1.0/netweavex/readwrite/tests/test_leda.py +30 -0
  562. netweavex-1.1.0/netweavex/readwrite/tests/test_p2g.py +102 -0
  563. netweavex-1.1.0/netweavex/readwrite/tests/test_pajek.py +150 -0
  564. netweavex-1.1.0/netweavex/readwrite/tests/test_sparse6.py +174 -0
  565. netweavex-1.1.0/netweavex/readwrite/tests/test_text.py +1742 -0
  566. netweavex-1.1.0/netweavex/readwrite/text.py +851 -0
  567. netweavex-1.1.0/netweavex/relabel.py +290 -0
  568. netweavex-1.1.0/netweavex/tests/__init__.py +0 -0
  569. netweavex-1.1.0/netweavex/tests/test_all_random_functions.py +248 -0
  570. netweavex-1.1.0/netweavex/tests/test_convert.py +321 -0
  571. netweavex-1.1.0/netweavex/tests/test_convert_numpy.py +552 -0
  572. netweavex-1.1.0/netweavex/tests/test_convert_pandas.py +349 -0
  573. netweavex-1.1.0/netweavex/tests/test_convert_scipy.py +281 -0
  574. netweavex-1.1.0/netweavex/tests/test_exceptions.py +40 -0
  575. netweavex-1.1.0/netweavex/tests/test_import.py +11 -0
  576. netweavex-1.1.0/netweavex/tests/test_lazy_imports.py +96 -0
  577. netweavex-1.1.0/netweavex/tests/test_relabel.py +358 -0
  578. netweavex-1.1.0/netweavex/tests/test_removed_functions_exception_messages.py +8 -0
  579. netweavex-1.1.0/netweavex/utils/__init__.py +8 -0
  580. netweavex-1.1.0/netweavex/utils/backends.py +2183 -0
  581. netweavex-1.1.0/netweavex/utils/configs.py +396 -0
  582. netweavex-1.1.0/netweavex/utils/decorators.py +1237 -0
  583. netweavex-1.1.0/netweavex/utils/heaps.py +338 -0
  584. netweavex-1.1.0/netweavex/utils/mapped_queue.py +297 -0
  585. netweavex-1.1.0/netweavex/utils/misc.py +716 -0
  586. netweavex-1.1.0/netweavex/utils/random_sequence.py +198 -0
  587. netweavex-1.1.0/netweavex/utils/rcm.py +159 -0
  588. netweavex-1.1.0/netweavex/utils/tests/__init__.py +0 -0
  589. netweavex-1.1.0/netweavex/utils/tests/test__init.py +11 -0
  590. netweavex-1.1.0/netweavex/utils/tests/test_backends.py +225 -0
  591. netweavex-1.1.0/netweavex/utils/tests/test_config.py +263 -0
  592. netweavex-1.1.0/netweavex/utils/tests/test_decorators.py +534 -0
  593. netweavex-1.1.0/netweavex/utils/tests/test_heaps.py +131 -0
  594. netweavex-1.1.0/netweavex/utils/tests/test_mapped_queue.py +268 -0
  595. netweavex-1.1.0/netweavex/utils/tests/test_misc.py +415 -0
  596. netweavex-1.1.0/netweavex/utils/tests/test_random_sequence.py +53 -0
  597. netweavex-1.1.0/netweavex/utils/tests/test_rcm.py +63 -0
  598. netweavex-1.1.0/netweavex/utils/tests/test_unionfind.py +55 -0
  599. netweavex-1.1.0/netweavex/utils/union_find.py +106 -0
  600. netweavex-1.1.0/netweavex.egg-info/PKG-INFO +36 -0
  601. netweavex-1.1.0/netweavex.egg-info/SOURCES.txt +605 -0
  602. netweavex-1.1.0/netweavex.egg-info/dependency_links.txt +1 -0
  603. netweavex-1.1.0/netweavex.egg-info/not-zip-safe +1 -0
  604. netweavex-1.1.0/netweavex.egg-info/requires.txt +17 -0
  605. netweavex-1.1.0/netweavex.egg-info/top_level.txt +1 -0
  606. netweavex-1.1.0/pyproject.toml +78 -0
  607. netweavex-1.1.0/setup.cfg +4 -0
@@ -0,0 +1,36 @@
1
+ Metadata-Version: 2.4
2
+ Name: netweavex
3
+ Version: 1.1.0
4
+ Summary: Python package for creating and manipulating graphs and networks
5
+ License-Expression: BSD-3-Clause
6
+ Project-URL: Documentation, https://networkx.org/documentation/stable/
7
+ Keywords: Networks,Graph Theory,Mathematics,network,graph,discrete mathematics,math
8
+ Classifier: Development Status :: 5 - Production/Stable
9
+ Classifier: Intended Audience :: Developers
10
+ Classifier: Intended Audience :: Science/Research
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.12
14
+ Classifier: Programming Language :: Python :: 3.13
15
+ Classifier: Programming Language :: Python :: 3.14
16
+ Classifier: Programming Language :: Python :: 3.15
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
19
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
20
+ Classifier: Topic :: Scientific/Engineering :: Mathematics
21
+ Classifier: Topic :: Scientific/Engineering :: Physics
22
+ Requires-Python: !=3.14.1,>=3.12
23
+ Provides-Extra: default
24
+ Requires-Dist: numpy>=2.2; extra == "default"
25
+ Requires-Dist: scipy>=1.15; extra == "default"
26
+ Requires-Dist: matplotlib>=3.10; extra == "default"
27
+ Requires-Dist: pandas>=2.3; extra == "default"
28
+ Provides-Extra: extra
29
+ Requires-Dist: lxml>=4.6; extra == "extra"
30
+ Requires-Dist: pygraphviz>=2.0; extra == "extra"
31
+ Requires-Dist: pydot>=3.0.1; extra == "extra"
32
+ Requires-Dist: sympy>=1.10; extra == "extra"
33
+ Provides-Extra: test
34
+ Requires-Dist: pytest>=7.2; extra == "test"
35
+ Requires-Dist: pytest-cov>=4.0; extra == "test"
36
+ Requires-Dist: pytest-xdist>=3.0; extra == "test"
@@ -0,0 +1,65 @@
1
+ """
2
+ NetWeaveX
3
+ =========
4
+
5
+ NetWeaveX is a Python package for the creation, manipulation, and study of the
6
+ structure, dynamics, and functions of complex networks.
7
+
8
+ Use ``import netweavex as nx``. Classes, functions, and algorithms match
9
+ NetworkX, including the ``"networkx"`` backend name.
10
+
11
+ See https://networkx.org for complete documentation.
12
+ """
13
+
14
+ __version__ = "1.1.0"
15
+
16
+
17
+ # These are imported in order as listed
18
+ from netweavex.lazy_imports import _lazy_import
19
+
20
+ from netweavex.exception import *
21
+
22
+ from netweavex import utils
23
+ from netweavex.utils import _clear_cache, _dispatchable
24
+
25
+ # load_and_call entry_points, set configs
26
+ config = utils.backends._set_configs_from_environment()
27
+ utils.config = utils.configs.config = config # type: ignore[attr-defined]
28
+
29
+ from netweavex import classes
30
+ from netweavex.classes import filters
31
+ from netweavex.classes import *
32
+
33
+ from netweavex import convert
34
+ from netweavex.convert import *
35
+
36
+ from netweavex import convert_matrix
37
+ from netweavex.convert_matrix import *
38
+
39
+ from netweavex import relabel
40
+ from netweavex.relabel import *
41
+
42
+ from netweavex import generators
43
+ from netweavex.generators import *
44
+
45
+ from netweavex import readwrite
46
+ from netweavex.readwrite import *
47
+
48
+ # Need to test with SciPy, when available
49
+ from netweavex import algorithms
50
+ from netweavex.algorithms import *
51
+
52
+ from netweavex import linalg
53
+ from netweavex.linalg import *
54
+
55
+ from netweavex import drawing
56
+ from netweavex.drawing import *
57
+
58
+
59
+ def __getattr__(name):
60
+ if name == "random_tree":
61
+ raise AttributeError(
62
+ "nx.random_tree was removed in version 3.4. Use `nx.random_labeled_tree` instead.\n"
63
+ "See: https://networkx.org/documentation/latest/release/release_3.4.html"
64
+ )
65
+ raise AttributeError(f"module 'netweavex' has no attribute '{name}'")
@@ -0,0 +1,134 @@
1
+ from netweavex.algorithms.assortativity import *
2
+ from netweavex.algorithms.asteroidal import *
3
+ from netweavex.algorithms.boundary import *
4
+ from netweavex.algorithms.broadcasting import *
5
+ from netweavex.algorithms.bridges import *
6
+ from netweavex.algorithms.chains import *
7
+ from netweavex.algorithms.centrality import *
8
+ from netweavex.algorithms.chordal import *
9
+ from netweavex.algorithms.cluster import *
10
+ from netweavex.algorithms.clique import *
11
+ from netweavex.algorithms.communicability_alg import *
12
+ from netweavex.algorithms.components import *
13
+ from netweavex.algorithms.coloring import *
14
+ from netweavex.algorithms.core import *
15
+ from netweavex.algorithms.covering import *
16
+ from netweavex.algorithms.cycles import *
17
+ from netweavex.algorithms.cuts import *
18
+ from netweavex.algorithms.d_separation import *
19
+ from netweavex.algorithms.dag import *
20
+ from netweavex.algorithms.distance_measures import *
21
+ from netweavex.algorithms.distance_regular import *
22
+ from netweavex.algorithms.dominance import *
23
+ from netweavex.algorithms.dominating import *
24
+ from netweavex.algorithms.efficiency_measures import *
25
+ from netweavex.algorithms.euler import *
26
+ from netweavex.algorithms.graphical import *
27
+ from netweavex.algorithms.hierarchy import *
28
+ from netweavex.algorithms.hybrid import *
29
+ from netweavex.algorithms.link_analysis import *
30
+ from netweavex.algorithms.link_prediction import *
31
+ from netweavex.algorithms.lowest_common_ancestors import *
32
+ from netweavex.algorithms.isolate import *
33
+ from netweavex.algorithms.matching import *
34
+ from netweavex.algorithms.minors import *
35
+ from netweavex.algorithms.mis import *
36
+ from netweavex.algorithms.moral import *
37
+ from netweavex.algorithms.non_randomness import *
38
+ from netweavex.algorithms.operators import *
39
+ from netweavex.algorithms.planarity import *
40
+ from netweavex.algorithms.planar_drawing import *
41
+ from netweavex.algorithms.polynomials import *
42
+ from netweavex.algorithms.perfect_graph import *
43
+ from netweavex.algorithms.reciprocity import *
44
+ from netweavex.algorithms.regular import *
45
+ from netweavex.algorithms.richclub import *
46
+ from netweavex.algorithms.shortest_paths import *
47
+ from netweavex.algorithms.similarity import *
48
+ from netweavex.algorithms.graph_hashing import *
49
+ from netweavex.algorithms.simple_paths import *
50
+ from netweavex.algorithms.smallworld import *
51
+ from netweavex.algorithms.smetric import *
52
+ from netweavex.algorithms.structuralholes import *
53
+ from netweavex.algorithms.sparsifiers import *
54
+ from netweavex.algorithms.summarization import *
55
+ from netweavex.algorithms.swap import *
56
+ from netweavex.algorithms.time_dependent import *
57
+ from netweavex.algorithms.traversal import *
58
+ from netweavex.algorithms.triads import *
59
+ from netweavex.algorithms.vitality import *
60
+ from netweavex.algorithms.voronoi import *
61
+ from netweavex.algorithms.walks import *
62
+ from netweavex.algorithms.wiener import *
63
+
64
+ # Make certain subpackages available to the user as direct imports from
65
+ # the `networkx` namespace.
66
+ from netweavex.algorithms import approximation
67
+ from netweavex.algorithms import assortativity
68
+ from netweavex.algorithms import bipartite
69
+ from netweavex.algorithms import node_classification
70
+ from netweavex.algorithms import centrality
71
+ from netweavex.algorithms import chordal
72
+ from netweavex.algorithms import cluster
73
+ from netweavex.algorithms import clique
74
+ from netweavex.algorithms import components
75
+ from netweavex.algorithms import connectivity
76
+ from netweavex.algorithms import community
77
+ from netweavex.algorithms import coloring
78
+ from netweavex.algorithms import flow
79
+ from netweavex.algorithms import isomorphism
80
+ from netweavex.algorithms import link_analysis
81
+ from netweavex.algorithms import lowest_common_ancestors
82
+ from netweavex.algorithms import operators
83
+ from netweavex.algorithms import shortest_paths
84
+ from netweavex.algorithms import tournament
85
+ from netweavex.algorithms import traversal
86
+ from netweavex.algorithms import tree
87
+
88
+ # Make certain functions from some of the previous subpackages available
89
+ # to the user as direct imports from the `networkx` namespace.
90
+ from netweavex.algorithms.bipartite import complete_bipartite_graph
91
+ from netweavex.algorithms.bipartite import is_bipartite
92
+ from netweavex.algorithms.bipartite import projected_graph
93
+ from netweavex.algorithms.connectivity import all_pairs_node_connectivity
94
+ from netweavex.algorithms.connectivity import all_node_cuts
95
+ from netweavex.algorithms.connectivity import average_node_connectivity
96
+ from netweavex.algorithms.connectivity import edge_connectivity
97
+ from netweavex.algorithms.connectivity import edge_disjoint_paths
98
+ from netweavex.algorithms.connectivity import k_components
99
+ from netweavex.algorithms.connectivity import k_edge_components
100
+ from netweavex.algorithms.connectivity import k_edge_subgraphs
101
+ from netweavex.algorithms.connectivity import k_edge_augmentation
102
+ from netweavex.algorithms.connectivity import is_k_edge_connected
103
+ from netweavex.algorithms.connectivity import minimum_edge_cut
104
+ from netweavex.algorithms.connectivity import minimum_node_cut
105
+ from netweavex.algorithms.connectivity import node_connectivity
106
+ from netweavex.algorithms.connectivity import node_disjoint_paths
107
+ from netweavex.algorithms.connectivity import stoer_wagner
108
+ from netweavex.algorithms.flow import capacity_scaling
109
+ from netweavex.algorithms.flow import cost_of_flow
110
+ from netweavex.algorithms.flow import gomory_hu_tree
111
+ from netweavex.algorithms.flow import max_flow_min_cost
112
+ from netweavex.algorithms.flow import maximum_flow
113
+ from netweavex.algorithms.flow import maximum_flow_value
114
+ from netweavex.algorithms.flow import min_cost_flow
115
+ from netweavex.algorithms.flow import min_cost_flow_cost
116
+ from netweavex.algorithms.flow import minimum_cut
117
+ from netweavex.algorithms.flow import minimum_cut_value
118
+ from netweavex.algorithms.flow import network_simplex
119
+ from netweavex.algorithms.isomorphism import could_be_isomorphic
120
+ from netweavex.algorithms.isomorphism import fast_could_be_isomorphic
121
+ from netweavex.algorithms.isomorphism import faster_could_be_isomorphic
122
+ from netweavex.algorithms.isomorphism import is_isomorphic
123
+ from netweavex.algorithms.isomorphism.vf2pp import *
124
+ from netweavex.algorithms.tree.branchings import maximum_branching
125
+ from netweavex.algorithms.tree.branchings import maximum_spanning_arborescence
126
+ from netweavex.algorithms.tree.branchings import minimum_branching
127
+ from netweavex.algorithms.tree.branchings import minimum_spanning_arborescence
128
+ from netweavex.algorithms.tree.branchings import ArborescenceIterator
129
+ from netweavex.algorithms.tree.coding import *
130
+ from netweavex.algorithms.tree.decomposition import *
131
+ from netweavex.algorithms.tree.mst import *
132
+ from netweavex.algorithms.tree.operations import *
133
+ from netweavex.algorithms.tree.recognition import *
134
+ from netweavex.algorithms.tournament import is_tournament
@@ -0,0 +1,26 @@
1
+ """Approximations of graph properties and Heuristic methods for optimization.
2
+
3
+ The functions in this class are not imported into the top-level ``networkx``
4
+ namespace so the easiest way to use them is with::
5
+
6
+ >>> from netweavex.algorithms import approximation
7
+
8
+ Another option is to import the specific function with
9
+ ``from netweavex.algorithms.approximation import function_name``.
10
+
11
+ """
12
+
13
+ from netweavex.algorithms.approximation.clustering_coefficient import *
14
+ from netweavex.algorithms.approximation.clique import *
15
+ from netweavex.algorithms.approximation.connectivity import *
16
+ from netweavex.algorithms.approximation.distance_measures import *
17
+ from netweavex.algorithms.approximation.dominating_set import *
18
+ from netweavex.algorithms.approximation.kcomponents import *
19
+ from netweavex.algorithms.approximation.matching import *
20
+ from netweavex.algorithms.approximation.ramsey import *
21
+ from netweavex.algorithms.approximation.steinertree import *
22
+ from netweavex.algorithms.approximation.traveling_salesman import *
23
+ from netweavex.algorithms.approximation.treewidth import *
24
+ from netweavex.algorithms.approximation.vertex_cover import *
25
+ from netweavex.algorithms.approximation.maxcut import *
26
+ from netweavex.algorithms.approximation.density import *
@@ -0,0 +1,259 @@
1
+ """Functions for computing large cliques and maximum independent sets."""
2
+
3
+ import netweavex as nx
4
+ from netweavex.algorithms.approximation import ramsey
5
+ from netweavex.utils import not_implemented_for
6
+
7
+ __all__ = [
8
+ "clique_removal",
9
+ "max_clique",
10
+ "large_clique_size",
11
+ "maximum_independent_set",
12
+ ]
13
+
14
+
15
+ @not_implemented_for("directed")
16
+ @not_implemented_for("multigraph")
17
+ @nx._dispatchable
18
+ def maximum_independent_set(G):
19
+ """Returns an approximate maximum independent set.
20
+
21
+ Independent set or stable set is a set of vertices in a graph, no two of
22
+ which are adjacent. That is, it is a set I of vertices such that for every
23
+ two vertices in I, there is no edge connecting the two. Equivalently, each
24
+ edge in the graph has at most one endpoint in I. The size of an independent
25
+ set is the number of vertices it contains [1]_.
26
+
27
+ A maximum independent set is a largest independent set for a given graph G
28
+ and its size is denoted $\\alpha(G)$. The problem of finding such a set is called
29
+ the maximum independent set problem and is an NP-hard optimization problem.
30
+ As such, it is unlikely that there exists an efficient algorithm for finding
31
+ a maximum independent set of a graph.
32
+
33
+ The Independent Set algorithm is based on [2]_.
34
+
35
+ Parameters
36
+ ----------
37
+ G : NetworkX graph
38
+ Undirected graph
39
+
40
+ Returns
41
+ -------
42
+ iset : Set
43
+ The apx-maximum independent set
44
+
45
+ Examples
46
+ --------
47
+ >>> G = nx.path_graph(10)
48
+ >>> nx.approximation.maximum_independent_set(G)
49
+ {0, 2, 4, 6, 9}
50
+
51
+ Raises
52
+ ------
53
+ NetworkXNotImplemented
54
+ If the graph is directed or is a multigraph.
55
+
56
+ Notes
57
+ -----
58
+ Finds the $O(|V|/(log|V|)^2)$ apx of independent set in the worst case.
59
+
60
+ References
61
+ ----------
62
+ .. [1] `Wikipedia: Independent set
63
+ <https://en.wikipedia.org/wiki/Independent_set_(graph_theory)>`_
64
+ .. [2] Boppana, R., & Halldórsson, M. M. (1992).
65
+ Approximating maximum independent sets by excluding subgraphs.
66
+ BIT Numerical Mathematics, 32(2), 180–196. Springer.
67
+ """
68
+ iset, _ = clique_removal(G)
69
+ return iset
70
+
71
+
72
+ @not_implemented_for("directed")
73
+ @not_implemented_for("multigraph")
74
+ @nx._dispatchable
75
+ def max_clique(G):
76
+ r"""Find the Maximum Clique
77
+
78
+ Finds the $O(|V|/(log|V|)^2)$ apx of maximum clique/independent set
79
+ in the worst case.
80
+
81
+ Parameters
82
+ ----------
83
+ G : NetworkX graph
84
+ Undirected graph
85
+
86
+ Returns
87
+ -------
88
+ clique : set
89
+ The apx-maximum clique of the graph
90
+
91
+ Examples
92
+ --------
93
+ >>> G = nx.path_graph(10)
94
+ >>> nx.approximation.max_clique(G)
95
+ {8, 9}
96
+
97
+ Raises
98
+ ------
99
+ NetworkXNotImplemented
100
+ If the graph is directed or is a multigraph.
101
+
102
+ Notes
103
+ -----
104
+ A clique in an undirected graph G = (V, E) is a subset of the vertex set
105
+ `C \subseteq V` such that for every two vertices in C there exists an edge
106
+ connecting the two. This is equivalent to saying that the subgraph
107
+ induced by C is complete (in some cases, the term clique may also refer
108
+ to the subgraph).
109
+
110
+ A maximum clique is a clique of the largest possible size in a given graph.
111
+ The clique number `\omega(G)` of a graph G is the number of
112
+ vertices in a maximum clique in G. The intersection number of
113
+ G is the smallest number of cliques that together cover all edges of G.
114
+
115
+ https://en.wikipedia.org/wiki/Maximum_clique
116
+
117
+ References
118
+ ----------
119
+ .. [1] Boppana, R., & Halldórsson, M. M. (1992).
120
+ Approximating maximum independent sets by excluding subgraphs.
121
+ BIT Numerical Mathematics, 32(2), 180–196. Springer.
122
+ doi:10.1007/BF01994876
123
+ """
124
+ # finding the maximum clique in a graph is equivalent to finding
125
+ # the independent set in the complementary graph
126
+ cgraph = nx.complement(G)
127
+ iset, _ = clique_removal(cgraph)
128
+ return iset
129
+
130
+
131
+ @not_implemented_for("directed")
132
+ @not_implemented_for("multigraph")
133
+ @nx._dispatchable
134
+ def clique_removal(G):
135
+ r"""Repeatedly remove cliques from the graph.
136
+
137
+ Results in a $O(|V|/(\log |V|)^2)$ approximation of maximum clique
138
+ and independent set. Returns the largest independent set found, along
139
+ with found maximal cliques.
140
+
141
+ Parameters
142
+ ----------
143
+ G : NetworkX graph
144
+ Undirected graph
145
+
146
+ Returns
147
+ -------
148
+ max_ind_cliques : (set, list) tuple
149
+ 2-tuple of Maximal Independent Set and list of maximal cliques (sets).
150
+
151
+ Examples
152
+ --------
153
+ >>> G = nx.path_graph(10)
154
+ >>> nx.approximation.clique_removal(G)
155
+ ({0, 2, 4, 6, 9}, [{0, 1}, {2, 3}, {4, 5}, {6, 7}, {8, 9}])
156
+
157
+ Raises
158
+ ------
159
+ NetworkXNotImplemented
160
+ If the graph is directed or is a multigraph.
161
+
162
+ References
163
+ ----------
164
+ .. [1] Boppana, R., & Halldórsson, M. M. (1992).
165
+ Approximating maximum independent sets by excluding subgraphs.
166
+ BIT Numerical Mathematics, 32(2), 180–196. Springer.
167
+ """
168
+ graph = G.copy()
169
+ c_i, i_i = ramsey.ramsey_R2(graph)
170
+ cliques = [c_i]
171
+ isets = [i_i]
172
+ while graph:
173
+ graph.remove_nodes_from(c_i)
174
+ c_i, i_i = ramsey.ramsey_R2(graph)
175
+ if c_i:
176
+ cliques.append(c_i)
177
+ if i_i:
178
+ isets.append(i_i)
179
+ # Determine the largest independent set as measured by cardinality.
180
+ maxiset = max(isets, key=len)
181
+ return maxiset, cliques
182
+
183
+
184
+ @not_implemented_for("directed")
185
+ @not_implemented_for("multigraph")
186
+ @nx._dispatchable
187
+ def large_clique_size(G):
188
+ """Find the size of a large clique in a graph.
189
+
190
+ A *clique* is a subset of nodes in which each pair of nodes is
191
+ adjacent. This function is a heuristic for finding the size of a
192
+ large clique in the graph.
193
+
194
+ Parameters
195
+ ----------
196
+ G : NetworkX graph
197
+
198
+ Returns
199
+ -------
200
+ k: integer
201
+ The size of a large clique in the graph.
202
+
203
+ Examples
204
+ --------
205
+ >>> G = nx.path_graph(10)
206
+ >>> nx.approximation.large_clique_size(G)
207
+ 2
208
+
209
+ Raises
210
+ ------
211
+ NetworkXNotImplemented
212
+ If the graph is directed or is a multigraph.
213
+
214
+ Notes
215
+ -----
216
+ This implementation is from [1]_. Its worst case time complexity is
217
+ :math:`O(n d^2)`, where *n* is the number of nodes in the graph and
218
+ *d* is the maximum degree.
219
+
220
+ This function is a heuristic, which means it may work well in
221
+ practice, but there is no rigorous mathematical guarantee on the
222
+ ratio between the returned number and the actual largest clique size
223
+ in the graph.
224
+
225
+ References
226
+ ----------
227
+ .. [1] Pattabiraman, Bharath, et al.
228
+ "Fast Algorithms for the Maximum Clique Problem on Massive Graphs
229
+ with Applications to Overlapping Community Detection."
230
+ *Internet Mathematics* 11.4-5 (2015): 421--448.
231
+ <https://doi.org/10.1080/15427951.2014.986778>
232
+
233
+ See also
234
+ --------
235
+
236
+ :func:`netweavex.algorithms.approximation.clique.max_clique`
237
+ A function that returns an approximate maximum clique with a
238
+ guarantee on the approximation ratio.
239
+
240
+ :mod:`netweavex.algorithms.clique`
241
+ Functions for finding the exact maximum clique in a graph.
242
+
243
+ """
244
+ degrees = G.degree
245
+
246
+ def _clique_heuristic(G, U, size, best_size):
247
+ if not U:
248
+ return max(best_size, size)
249
+ u = max(U, key=degrees)
250
+ U.remove(u)
251
+ N_prime = {v for v in G[u] if degrees[v] >= best_size}
252
+ return _clique_heuristic(G, U & N_prime, size + 1, best_size)
253
+
254
+ best_size = 0
255
+ nodes = (u for u in G if degrees[u] >= best_size)
256
+ for u in nodes:
257
+ neighbors = {v for v in G[u] if degrees[v] >= best_size}
258
+ best_size = _clique_heuristic(G, neighbors, 1, best_size)
259
+ return best_size
@@ -0,0 +1,71 @@
1
+ import netweavex as nx
2
+ from netweavex.utils import not_implemented_for, py_random_state
3
+
4
+ __all__ = ["average_clustering"]
5
+
6
+
7
+ @not_implemented_for("directed")
8
+ @py_random_state(2)
9
+ @nx._dispatchable(name="approximate_average_clustering")
10
+ def average_clustering(G, trials=1000, seed=None):
11
+ r"""Estimates the average clustering coefficient of G.
12
+
13
+ The local clustering of each node in `G` is the fraction of triangles
14
+ that actually exist over all possible triangles in its neighborhood.
15
+ The average clustering coefficient of a graph `G` is the mean of
16
+ local clusterings.
17
+
18
+ This function finds an approximate average clustering coefficient
19
+ for G by repeating `n` times (defined in `trials`) the following
20
+ experiment: choose a node at random, choose two of its neighbors
21
+ at random, and check if they are connected. The approximate
22
+ coefficient is the fraction of triangles found over the number
23
+ of trials [1]_.
24
+
25
+ Parameters
26
+ ----------
27
+ G : NetworkX graph
28
+
29
+ trials : integer
30
+ Number of trials to perform (default 1000).
31
+
32
+ seed : integer, random_state, or None (default)
33
+ Indicator of random number generation state.
34
+ See :ref:`Randomness<randomness>`.
35
+
36
+ Returns
37
+ -------
38
+ c : float
39
+ Approximated average clustering coefficient.
40
+
41
+ Examples
42
+ --------
43
+ >>> from netweavex.algorithms import approximation
44
+ >>> G = nx.erdos_renyi_graph(10, 0.2, seed=10)
45
+ >>> approximation.average_clustering(G, trials=1000, seed=10)
46
+ 0.214
47
+
48
+ Raises
49
+ ------
50
+ NetworkXNotImplemented
51
+ If G is directed.
52
+
53
+ References
54
+ ----------
55
+ .. [1] Schank, Thomas, and Dorothea Wagner. Approximating clustering
56
+ coefficient and transitivity. Universität Karlsruhe, Fakultät für
57
+ Informatik, 2004.
58
+ https://doi.org/10.5445/IR/1000001239
59
+
60
+ """
61
+ n = len(G)
62
+ triangles = 0
63
+ nodes = list(G)
64
+ for i in [int(seed.random() * n) for i in range(trials)]:
65
+ nbrs = list(G[nodes[i]])
66
+ if len(nbrs) < 2:
67
+ continue
68
+ u, v = seed.sample(nbrs, 2)
69
+ if u in G[v]:
70
+ triangles += 1
71
+ return triangles / trials