okstra 0.130.4 → 0.131.1

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 (365) hide show
  1. package/README.md +0 -1
  2. package/docs/architecture.md +2 -2
  3. package/docs/cli.md +1 -1
  4. package/docs/for-ai/README.md +0 -2
  5. package/docs/for-ai/skills/okstra-run.md +13 -2
  6. package/docs/for-ai/skills/okstra-setup.md +4 -1
  7. package/docs/project-structure-overview.md +5 -4
  8. package/docs/task-process/implementation-planning.md +13 -0
  9. package/docs/task-process/implementation.md +17 -2
  10. package/package.json +1 -1
  11. package/runtime/BUILD.json +2 -2
  12. package/runtime/agents/workers/report-writer-worker.md +7 -0
  13. package/runtime/bin/lib/okstra/usage.sh +4 -4
  14. package/runtime/prompts/lead/okstra-lead-contract.md +2 -2
  15. package/runtime/prompts/lead/plan-body-verification.md +26 -5
  16. package/runtime/prompts/lead/report-writer.md +6 -2
  17. package/runtime/prompts/profiles/_common-contract.md +2 -1
  18. package/runtime/prompts/profiles/_implementation-deliverable.md +6 -1
  19. package/runtime/prompts/profiles/_implementation-executor.md +2 -2
  20. package/runtime/prompts/profiles/_implementation-verifier.md +33 -10
  21. package/runtime/prompts/profiles/final-verification.md +21 -6
  22. package/runtime/prompts/profiles/implementation-planning.md +16 -4
  23. package/runtime/python/okstra_ctl/codex_dispatch.py +31 -0
  24. package/runtime/python/okstra_ctl/conformance.py +49 -11
  25. package/runtime/python/okstra_ctl/report_finalize.py +52 -1
  26. package/runtime/python/okstra_ctl/run.py +15 -3
  27. package/runtime/python/okstra_ctl/worker_prompt_contract.py +14 -6
  28. package/runtime/python/okstra_ctl/worker_prompt_policy.py +19 -1
  29. package/runtime/python/okstra_vendor/__init__.py +0 -44
  30. package/runtime/schemas/final-report-v1.0.schema.json +99 -5
  31. package/runtime/skills/okstra-run/SKILL.md +11 -4
  32. package/runtime/skills/okstra-setup/SKILL.md +3 -2
  33. package/runtime/skills/okstra-setup/references/project-config.md +16 -7
  34. package/runtime/templates/reports/final-report.template.md +15 -9
  35. package/runtime/templates/reports/i18n/en.json +1 -0
  36. package/runtime/templates/reports/i18n/ko.json +1 -0
  37. package/runtime/validators/lib/fixtures.sh +6 -0
  38. package/runtime/validators/validate-run.py +2019 -96
  39. package/src/cli-registry.mjs +0 -7
  40. package/src/commands/lifecycle/doctor.mjs +0 -9
  41. package/src/lib/skill-catalog.mjs +0 -1
  42. package/docs/for-ai/skills/okstra-graphify.md +0 -64
  43. package/runtime/python/okstra_ctl/graphify_cmd.py +0 -225
  44. package/runtime/python/okstra_vendor/graphify/.vendored-version +0 -1
  45. package/runtime/python/okstra_vendor/graphify/__init__.py +0 -28
  46. package/runtime/python/okstra_vendor/graphify/__main__.py +0 -1371
  47. package/runtime/python/okstra_vendor/graphify/analyze.py +0 -540
  48. package/runtime/python/okstra_vendor/graphify/benchmark.py +0 -129
  49. package/runtime/python/okstra_vendor/graphify/build.py +0 -107
  50. package/runtime/python/okstra_vendor/graphify/cache.py +0 -169
  51. package/runtime/python/okstra_vendor/graphify/cluster.py +0 -137
  52. package/runtime/python/okstra_vendor/graphify/detect.py +0 -510
  53. package/runtime/python/okstra_vendor/graphify/export.py +0 -1014
  54. package/runtime/python/okstra_vendor/graphify/extract.py +0 -3277
  55. package/runtime/python/okstra_vendor/graphify/hooks.py +0 -220
  56. package/runtime/python/okstra_vendor/graphify/ingest.py +0 -297
  57. package/runtime/python/okstra_vendor/graphify/manifest.py +0 -4
  58. package/runtime/python/okstra_vendor/graphify/report.py +0 -175
  59. package/runtime/python/okstra_vendor/graphify/security.py +0 -203
  60. package/runtime/python/okstra_vendor/graphify/serve.py +0 -373
  61. package/runtime/python/okstra_vendor/graphify/skill-aider.md +0 -1184
  62. package/runtime/python/okstra_vendor/graphify/skill-claw.md +0 -1184
  63. package/runtime/python/okstra_vendor/graphify/skill-codex.md +0 -1242
  64. package/runtime/python/okstra_vendor/graphify/skill-copilot.md +0 -1268
  65. package/runtime/python/okstra_vendor/graphify/skill-droid.md +0 -1239
  66. package/runtime/python/okstra_vendor/graphify/skill-kiro.md +0 -1183
  67. package/runtime/python/okstra_vendor/graphify/skill-opencode.md +0 -1238
  68. package/runtime/python/okstra_vendor/graphify/skill-trae.md +0 -1208
  69. package/runtime/python/okstra_vendor/graphify/skill-vscode.md +0 -253
  70. package/runtime/python/okstra_vendor/graphify/skill-windows.md +0 -1245
  71. package/runtime/python/okstra_vendor/graphify/skill.md +0 -1319
  72. package/runtime/python/okstra_vendor/graphify/transcribe.py +0 -182
  73. package/runtime/python/okstra_vendor/graphify/validate.py +0 -72
  74. package/runtime/python/okstra_vendor/graphify/watch.py +0 -188
  75. package/runtime/python/okstra_vendor/graphify/wiki.py +0 -214
  76. package/runtime/python/okstra_vendor/networkx/__init__.py +0 -62
  77. package/runtime/python/okstra_vendor/networkx/algorithms/__init__.py +0 -134
  78. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/__init__.py +0 -26
  79. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/clique.py +0 -259
  80. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/clustering_coefficient.py +0 -71
  81. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/connectivity.py +0 -412
  82. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/density.py +0 -396
  83. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/distance_measures.py +0 -150
  84. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/dominating_set.py +0 -149
  85. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/kcomponents.py +0 -369
  86. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/matching.py +0 -44
  87. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/maxcut.py +0 -143
  88. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/ramsey.py +0 -53
  89. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/steinertree.py +0 -265
  90. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/traveling_salesman.py +0 -1508
  91. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/treewidth.py +0 -255
  92. package/runtime/python/okstra_vendor/networkx/algorithms/approximation/vertex_cover.py +0 -83
  93. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/__init__.py +0 -5
  94. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/connectivity.py +0 -122
  95. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/correlation.py +0 -302
  96. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/mixing.py +0 -255
  97. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/neighbor_degree.py +0 -160
  98. package/runtime/python/okstra_vendor/networkx/algorithms/assortativity/pairs.py +0 -127
  99. package/runtime/python/okstra_vendor/networkx/algorithms/asteroidal.py +0 -164
  100. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/__init__.py +0 -88
  101. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/basic.py +0 -322
  102. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/centrality.py +0 -290
  103. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/cluster.py +0 -289
  104. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/covering.py +0 -57
  105. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/edgelist.py +0 -360
  106. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/extendability.py +0 -105
  107. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/generators.py +0 -603
  108. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/link_analysis.py +0 -316
  109. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/matching.py +0 -590
  110. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/matrix.py +0 -232
  111. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/projection.py +0 -526
  112. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/redundancy.py +0 -112
  113. package/runtime/python/okstra_vendor/networkx/algorithms/bipartite/spectral.py +0 -69
  114. package/runtime/python/okstra_vendor/networkx/algorithms/boundary.py +0 -168
  115. package/runtime/python/okstra_vendor/networkx/algorithms/bridges.py +0 -205
  116. package/runtime/python/okstra_vendor/networkx/algorithms/broadcasting.py +0 -164
  117. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/__init__.py +0 -20
  118. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/betweenness.py +0 -591
  119. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/betweenness_subset.py +0 -236
  120. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/closeness.py +0 -282
  121. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/current_flow_betweenness.py +0 -364
  122. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/current_flow_betweenness_subset.py +0 -227
  123. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/current_flow_closeness.py +0 -96
  124. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/degree_alg.py +0 -150
  125. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/dispersion.py +0 -107
  126. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/eigenvector.py +0 -357
  127. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/flow_matrix.py +0 -130
  128. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/group.py +0 -787
  129. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/harmonic.py +0 -88
  130. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/katz.py +0 -331
  131. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/laplacian.py +0 -150
  132. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/load.py +0 -200
  133. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/percolation.py +0 -128
  134. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/reaching.py +0 -209
  135. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/second_order.py +0 -141
  136. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/subgraph_alg.py +0 -361
  137. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/trophic.py +0 -181
  138. package/runtime/python/okstra_vendor/networkx/algorithms/centrality/voterank_alg.py +0 -95
  139. package/runtime/python/okstra_vendor/networkx/algorithms/chains.py +0 -172
  140. package/runtime/python/okstra_vendor/networkx/algorithms/chordal.py +0 -443
  141. package/runtime/python/okstra_vendor/networkx/algorithms/clique.py +0 -818
  142. package/runtime/python/okstra_vendor/networkx/algorithms/cluster.py +0 -732
  143. package/runtime/python/okstra_vendor/networkx/algorithms/coloring/__init__.py +0 -4
  144. package/runtime/python/okstra_vendor/networkx/algorithms/coloring/equitable_coloring.py +0 -505
  145. package/runtime/python/okstra_vendor/networkx/algorithms/coloring/greedy_coloring.py +0 -565
  146. package/runtime/python/okstra_vendor/networkx/algorithms/communicability_alg.py +0 -163
  147. package/runtime/python/okstra_vendor/networkx/algorithms/community/__init__.py +0 -28
  148. package/runtime/python/okstra_vendor/networkx/algorithms/community/asyn_fluid.py +0 -153
  149. package/runtime/python/okstra_vendor/networkx/algorithms/community/bipartitions.py +0 -354
  150. package/runtime/python/okstra_vendor/networkx/algorithms/community/centrality.py +0 -171
  151. package/runtime/python/okstra_vendor/networkx/algorithms/community/community_utils.py +0 -30
  152. package/runtime/python/okstra_vendor/networkx/algorithms/community/divisive.py +0 -216
  153. package/runtime/python/okstra_vendor/networkx/algorithms/community/kclique.py +0 -79
  154. package/runtime/python/okstra_vendor/networkx/algorithms/community/label_propagation.py +0 -338
  155. package/runtime/python/okstra_vendor/networkx/algorithms/community/leiden.py +0 -162
  156. package/runtime/python/okstra_vendor/networkx/algorithms/community/local.py +0 -220
  157. package/runtime/python/okstra_vendor/networkx/algorithms/community/louvain.py +0 -384
  158. package/runtime/python/okstra_vendor/networkx/algorithms/community/lukes.py +0 -227
  159. package/runtime/python/okstra_vendor/networkx/algorithms/community/modularity_max.py +0 -452
  160. package/runtime/python/okstra_vendor/networkx/algorithms/community/quality.py +0 -347
  161. package/runtime/python/okstra_vendor/networkx/algorithms/components/__init__.py +0 -6
  162. package/runtime/python/okstra_vendor/networkx/algorithms/components/attracting.py +0 -115
  163. package/runtime/python/okstra_vendor/networkx/algorithms/components/biconnected.py +0 -394
  164. package/runtime/python/okstra_vendor/networkx/algorithms/components/connected.py +0 -282
  165. package/runtime/python/okstra_vendor/networkx/algorithms/components/semiconnected.py +0 -71
  166. package/runtime/python/okstra_vendor/networkx/algorithms/components/strongly_connected.py +0 -359
  167. package/runtime/python/okstra_vendor/networkx/algorithms/components/weakly_connected.py +0 -196
  168. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/__init__.py +0 -11
  169. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/connectivity.py +0 -811
  170. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/cuts.py +0 -616
  171. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/disjoint_paths.py +0 -408
  172. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/edge_augmentation.py +0 -1270
  173. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/edge_kcomponents.py +0 -592
  174. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/kcomponents.py +0 -220
  175. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/kcutsets.py +0 -235
  176. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/stoerwagner.py +0 -152
  177. package/runtime/python/okstra_vendor/networkx/algorithms/connectivity/utils.py +0 -88
  178. package/runtime/python/okstra_vendor/networkx/algorithms/core.py +0 -588
  179. package/runtime/python/okstra_vendor/networkx/algorithms/covering.py +0 -142
  180. package/runtime/python/okstra_vendor/networkx/algorithms/cuts.py +0 -416
  181. package/runtime/python/okstra_vendor/networkx/algorithms/cycles.py +0 -1234
  182. package/runtime/python/okstra_vendor/networkx/algorithms/d_separation.py +0 -677
  183. package/runtime/python/okstra_vendor/networkx/algorithms/dag.py +0 -1392
  184. package/runtime/python/okstra_vendor/networkx/algorithms/distance_measures.py +0 -1095
  185. package/runtime/python/okstra_vendor/networkx/algorithms/distance_regular.py +0 -272
  186. package/runtime/python/okstra_vendor/networkx/algorithms/dominance.py +0 -142
  187. package/runtime/python/okstra_vendor/networkx/algorithms/dominating.py +0 -268
  188. package/runtime/python/okstra_vendor/networkx/algorithms/efficiency_measures.py +0 -167
  189. package/runtime/python/okstra_vendor/networkx/algorithms/euler.py +0 -470
  190. package/runtime/python/okstra_vendor/networkx/algorithms/flow/__init__.py +0 -11
  191. package/runtime/python/okstra_vendor/networkx/algorithms/flow/boykovkolmogorov.py +0 -370
  192. package/runtime/python/okstra_vendor/networkx/algorithms/flow/capacityscaling.py +0 -407
  193. package/runtime/python/okstra_vendor/networkx/algorithms/flow/dinitz_alg.py +0 -238
  194. package/runtime/python/okstra_vendor/networkx/algorithms/flow/edmondskarp.py +0 -241
  195. package/runtime/python/okstra_vendor/networkx/algorithms/flow/gomory_hu.py +0 -178
  196. package/runtime/python/okstra_vendor/networkx/algorithms/flow/maxflow.py +0 -611
  197. package/runtime/python/okstra_vendor/networkx/algorithms/flow/mincost.py +0 -356
  198. package/runtime/python/okstra_vendor/networkx/algorithms/flow/networksimplex.py +0 -662
  199. package/runtime/python/okstra_vendor/networkx/algorithms/flow/preflowpush.py +0 -425
  200. package/runtime/python/okstra_vendor/networkx/algorithms/flow/shortestaugmentingpath.py +0 -300
  201. package/runtime/python/okstra_vendor/networkx/algorithms/flow/utils.py +0 -194
  202. package/runtime/python/okstra_vendor/networkx/algorithms/graph_hashing.py +0 -435
  203. package/runtime/python/okstra_vendor/networkx/algorithms/graphical.py +0 -483
  204. package/runtime/python/okstra_vendor/networkx/algorithms/hierarchy.py +0 -57
  205. package/runtime/python/okstra_vendor/networkx/algorithms/hybrid.py +0 -196
  206. package/runtime/python/okstra_vendor/networkx/algorithms/isolate.py +0 -107
  207. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/__init__.py +0 -7
  208. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/ismags.py +0 -1306
  209. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/isomorph.py +0 -336
  210. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/isomorphvf2.py +0 -1262
  211. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/matchhelpers.py +0 -352
  212. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/temporalisomorphvf2.py +0 -308
  213. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/tree_isomorphism.py +0 -264
  214. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/vf2pp.py +0 -1102
  215. package/runtime/python/okstra_vendor/networkx/algorithms/isomorphism/vf2userfunc.py +0 -192
  216. package/runtime/python/okstra_vendor/networkx/algorithms/link_analysis/__init__.py +0 -2
  217. package/runtime/python/okstra_vendor/networkx/algorithms/link_analysis/hits_alg.py +0 -337
  218. package/runtime/python/okstra_vendor/networkx/algorithms/link_analysis/pagerank_alg.py +0 -498
  219. package/runtime/python/okstra_vendor/networkx/algorithms/link_prediction.py +0 -687
  220. package/runtime/python/okstra_vendor/networkx/algorithms/lowest_common_ancestors.py +0 -280
  221. package/runtime/python/okstra_vendor/networkx/algorithms/matching.py +0 -1148
  222. package/runtime/python/okstra_vendor/networkx/algorithms/minors/__init__.py +0 -27
  223. package/runtime/python/okstra_vendor/networkx/algorithms/minors/contraction.py +0 -738
  224. package/runtime/python/okstra_vendor/networkx/algorithms/mis.py +0 -78
  225. package/runtime/python/okstra_vendor/networkx/algorithms/moral.py +0 -59
  226. package/runtime/python/okstra_vendor/networkx/algorithms/node_classification.py +0 -219
  227. package/runtime/python/okstra_vendor/networkx/algorithms/non_randomness.py +0 -155
  228. package/runtime/python/okstra_vendor/networkx/algorithms/operators/__init__.py +0 -4
  229. package/runtime/python/okstra_vendor/networkx/algorithms/operators/all.py +0 -324
  230. package/runtime/python/okstra_vendor/networkx/algorithms/operators/binary.py +0 -468
  231. package/runtime/python/okstra_vendor/networkx/algorithms/operators/product.py +0 -633
  232. package/runtime/python/okstra_vendor/networkx/algorithms/operators/unary.py +0 -77
  233. package/runtime/python/okstra_vendor/networkx/algorithms/perfect_graph.py +0 -73
  234. package/runtime/python/okstra_vendor/networkx/algorithms/planar_drawing.py +0 -464
  235. package/runtime/python/okstra_vendor/networkx/algorithms/planarity.py +0 -1463
  236. package/runtime/python/okstra_vendor/networkx/algorithms/polynomials.py +0 -306
  237. package/runtime/python/okstra_vendor/networkx/algorithms/reciprocity.py +0 -98
  238. package/runtime/python/okstra_vendor/networkx/algorithms/regular.py +0 -167
  239. package/runtime/python/okstra_vendor/networkx/algorithms/richclub.py +0 -138
  240. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/__init__.py +0 -5
  241. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/astar.py +0 -239
  242. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/dense.py +0 -264
  243. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/generic.py +0 -716
  244. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/unweighted.py +0 -625
  245. package/runtime/python/okstra_vendor/networkx/algorithms/shortest_paths/weighted.py +0 -2542
  246. package/runtime/python/okstra_vendor/networkx/algorithms/similarity.py +0 -2107
  247. package/runtime/python/okstra_vendor/networkx/algorithms/simple_paths.py +0 -966
  248. package/runtime/python/okstra_vendor/networkx/algorithms/smallworld.py +0 -404
  249. package/runtime/python/okstra_vendor/networkx/algorithms/smetric.py +0 -30
  250. package/runtime/python/okstra_vendor/networkx/algorithms/sparsifiers.py +0 -296
  251. package/runtime/python/okstra_vendor/networkx/algorithms/structuralholes.py +0 -374
  252. package/runtime/python/okstra_vendor/networkx/algorithms/summarization.py +0 -564
  253. package/runtime/python/okstra_vendor/networkx/algorithms/swap.py +0 -406
  254. package/runtime/python/okstra_vendor/networkx/algorithms/threshold.py +0 -981
  255. package/runtime/python/okstra_vendor/networkx/algorithms/time_dependent.py +0 -142
  256. package/runtime/python/okstra_vendor/networkx/algorithms/tournament.py +0 -406
  257. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/__init__.py +0 -5
  258. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/beamsearch.py +0 -90
  259. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/breadth_first_search.py +0 -576
  260. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/depth_first_search.py +0 -529
  261. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/edgebfs.py +0 -185
  262. package/runtime/python/okstra_vendor/networkx/algorithms/traversal/edgedfs.py +0 -182
  263. package/runtime/python/okstra_vendor/networkx/algorithms/tree/__init__.py +0 -7
  264. package/runtime/python/okstra_vendor/networkx/algorithms/tree/branchings.py +0 -1042
  265. package/runtime/python/okstra_vendor/networkx/algorithms/tree/coding.py +0 -413
  266. package/runtime/python/okstra_vendor/networkx/algorithms/tree/decomposition.py +0 -88
  267. package/runtime/python/okstra_vendor/networkx/algorithms/tree/distance_measures.py +0 -219
  268. package/runtime/python/okstra_vendor/networkx/algorithms/tree/mst.py +0 -1281
  269. package/runtime/python/okstra_vendor/networkx/algorithms/tree/operations.py +0 -106
  270. package/runtime/python/okstra_vendor/networkx/algorithms/tree/recognition.py +0 -273
  271. package/runtime/python/okstra_vendor/networkx/algorithms/triads.py +0 -500
  272. package/runtime/python/okstra_vendor/networkx/algorithms/vitality.py +0 -76
  273. package/runtime/python/okstra_vendor/networkx/algorithms/voronoi.py +0 -86
  274. package/runtime/python/okstra_vendor/networkx/algorithms/walks.py +0 -77
  275. package/runtime/python/okstra_vendor/networkx/algorithms/wiener.py +0 -278
  276. package/runtime/python/okstra_vendor/networkx/classes/__init__.py +0 -13
  277. package/runtime/python/okstra_vendor/networkx/classes/coreviews.py +0 -435
  278. package/runtime/python/okstra_vendor/networkx/classes/digraph.py +0 -1363
  279. package/runtime/python/okstra_vendor/networkx/classes/filters.py +0 -95
  280. package/runtime/python/okstra_vendor/networkx/classes/function.py +0 -1549
  281. package/runtime/python/okstra_vendor/networkx/classes/graph.py +0 -2082
  282. package/runtime/python/okstra_vendor/networkx/classes/graphviews.py +0 -269
  283. package/runtime/python/okstra_vendor/networkx/classes/multidigraph.py +0 -977
  284. package/runtime/python/okstra_vendor/networkx/classes/multigraph.py +0 -1294
  285. package/runtime/python/okstra_vendor/networkx/classes/reportviews.py +0 -1447
  286. package/runtime/python/okstra_vendor/networkx/convert.py +0 -502
  287. package/runtime/python/okstra_vendor/networkx/convert_matrix.py +0 -1314
  288. package/runtime/python/okstra_vendor/networkx/drawing/__init__.py +0 -7
  289. package/runtime/python/okstra_vendor/networkx/drawing/layout.py +0 -2036
  290. package/runtime/python/okstra_vendor/networkx/drawing/nx_agraph.py +0 -470
  291. package/runtime/python/okstra_vendor/networkx/drawing/nx_latex.py +0 -570
  292. package/runtime/python/okstra_vendor/networkx/drawing/nx_pydot.py +0 -361
  293. package/runtime/python/okstra_vendor/networkx/drawing/nx_pylab.py +0 -2978
  294. package/runtime/python/okstra_vendor/networkx/exception.py +0 -131
  295. package/runtime/python/okstra_vendor/networkx/generators/__init__.py +0 -34
  296. package/runtime/python/okstra_vendor/networkx/generators/atlas.dat.gz +0 -0
  297. package/runtime/python/okstra_vendor/networkx/generators/atlas.py +0 -227
  298. package/runtime/python/okstra_vendor/networkx/generators/classic.py +0 -1091
  299. package/runtime/python/okstra_vendor/networkx/generators/cographs.py +0 -68
  300. package/runtime/python/okstra_vendor/networkx/generators/community.py +0 -1070
  301. package/runtime/python/okstra_vendor/networkx/generators/degree_seq.py +0 -886
  302. package/runtime/python/okstra_vendor/networkx/generators/directed.py +0 -572
  303. package/runtime/python/okstra_vendor/networkx/generators/duplication.py +0 -174
  304. package/runtime/python/okstra_vendor/networkx/generators/ego.py +0 -66
  305. package/runtime/python/okstra_vendor/networkx/generators/expanders.py +0 -499
  306. package/runtime/python/okstra_vendor/networkx/generators/geometric.py +0 -1037
  307. package/runtime/python/okstra_vendor/networkx/generators/harary_graph.py +0 -163
  308. package/runtime/python/okstra_vendor/networkx/generators/internet_as_graphs.py +0 -443
  309. package/runtime/python/okstra_vendor/networkx/generators/intersection.py +0 -125
  310. package/runtime/python/okstra_vendor/networkx/generators/interval_graph.py +0 -70
  311. package/runtime/python/okstra_vendor/networkx/generators/joint_degree_seq.py +0 -664
  312. package/runtime/python/okstra_vendor/networkx/generators/lattice.py +0 -405
  313. package/runtime/python/okstra_vendor/networkx/generators/line.py +0 -501
  314. package/runtime/python/okstra_vendor/networkx/generators/mycielski.py +0 -110
  315. package/runtime/python/okstra_vendor/networkx/generators/nonisomorphic_trees.py +0 -259
  316. package/runtime/python/okstra_vendor/networkx/generators/random_clustered.py +0 -117
  317. package/runtime/python/okstra_vendor/networkx/generators/random_graphs.py +0 -1416
  318. package/runtime/python/okstra_vendor/networkx/generators/small.py +0 -1070
  319. package/runtime/python/okstra_vendor/networkx/generators/social.py +0 -554
  320. package/runtime/python/okstra_vendor/networkx/generators/spectral_graph_forge.py +0 -120
  321. package/runtime/python/okstra_vendor/networkx/generators/stochastic.py +0 -54
  322. package/runtime/python/okstra_vendor/networkx/generators/sudoku.py +0 -131
  323. package/runtime/python/okstra_vendor/networkx/generators/time_series.py +0 -74
  324. package/runtime/python/okstra_vendor/networkx/generators/trees.py +0 -1070
  325. package/runtime/python/okstra_vendor/networkx/generators/triads.py +0 -94
  326. package/runtime/python/okstra_vendor/networkx/lazy_imports.py +0 -188
  327. package/runtime/python/okstra_vendor/networkx/linalg/__init__.py +0 -13
  328. package/runtime/python/okstra_vendor/networkx/linalg/algebraicconnectivity.py +0 -650
  329. package/runtime/python/okstra_vendor/networkx/linalg/attrmatrix.py +0 -466
  330. package/runtime/python/okstra_vendor/networkx/linalg/bethehessianmatrix.py +0 -77
  331. package/runtime/python/okstra_vendor/networkx/linalg/graphmatrix.py +0 -168
  332. package/runtime/python/okstra_vendor/networkx/linalg/laplacianmatrix.py +0 -512
  333. package/runtime/python/okstra_vendor/networkx/linalg/modularitymatrix.py +0 -166
  334. package/runtime/python/okstra_vendor/networkx/linalg/spectrum.py +0 -186
  335. package/runtime/python/okstra_vendor/networkx/readwrite/__init__.py +0 -17
  336. package/runtime/python/okstra_vendor/networkx/readwrite/adjlist.py +0 -330
  337. package/runtime/python/okstra_vendor/networkx/readwrite/edgelist.py +0 -489
  338. package/runtime/python/okstra_vendor/networkx/readwrite/gexf.py +0 -1084
  339. package/runtime/python/okstra_vendor/networkx/readwrite/gml.py +0 -879
  340. package/runtime/python/okstra_vendor/networkx/readwrite/graph6.py +0 -427
  341. package/runtime/python/okstra_vendor/networkx/readwrite/graphml.py +0 -1053
  342. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/__init__.py +0 -19
  343. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/adjacency.py +0 -156
  344. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/cytoscape.py +0 -190
  345. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/node_link.py +0 -261
  346. package/runtime/python/okstra_vendor/networkx/readwrite/json_graph/tree.py +0 -137
  347. package/runtime/python/okstra_vendor/networkx/readwrite/leda.py +0 -108
  348. package/runtime/python/okstra_vendor/networkx/readwrite/multiline_adjlist.py +0 -393
  349. package/runtime/python/okstra_vendor/networkx/readwrite/p2g.py +0 -113
  350. package/runtime/python/okstra_vendor/networkx/readwrite/pajek.py +0 -286
  351. package/runtime/python/okstra_vendor/networkx/readwrite/sparse6.py +0 -379
  352. package/runtime/python/okstra_vendor/networkx/readwrite/text.py +0 -851
  353. package/runtime/python/okstra_vendor/networkx/relabel.py +0 -285
  354. package/runtime/python/okstra_vendor/networkx/utils/__init__.py +0 -8
  355. package/runtime/python/okstra_vendor/networkx/utils/backends.py +0 -2171
  356. package/runtime/python/okstra_vendor/networkx/utils/configs.py +0 -396
  357. package/runtime/python/okstra_vendor/networkx/utils/decorators.py +0 -1233
  358. package/runtime/python/okstra_vendor/networkx/utils/heaps.py +0 -338
  359. package/runtime/python/okstra_vendor/networkx/utils/mapped_queue.py +0 -297
  360. package/runtime/python/okstra_vendor/networkx/utils/misc.py +0 -703
  361. package/runtime/python/okstra_vendor/networkx/utils/random_sequence.py +0 -198
  362. package/runtime/python/okstra_vendor/networkx/utils/rcm.py +0 -159
  363. package/runtime/python/okstra_vendor/networkx/utils/union_find.py +0 -106
  364. package/runtime/skills/okstra-graphify/SKILL.md +0 -169
  365. package/src/commands/graphify.mjs +0 -32
@@ -1,62 +0,0 @@
1
- """
2
- NetworkX
3
- ========
4
-
5
- NetworkX is a Python package for the creation, manipulation, and study of the
6
- structure, dynamics, and functions of complex networks.
7
-
8
- See https://networkx.org for complete documentation.
9
- """
10
-
11
- __version__ = "3.6.1"
12
-
13
-
14
- # These are imported in order as listed
15
- from networkx.lazy_imports import _lazy_import
16
-
17
- from networkx.exception import *
18
-
19
- from networkx import utils
20
- from networkx.utils import _clear_cache, _dispatchable
21
-
22
- # load_and_call entry_points, set configs
23
- config = utils.backends._set_configs_from_environment()
24
- utils.config = utils.configs.config = config # type: ignore[attr-defined]
25
-
26
- from networkx import classes
27
- from networkx.classes import filters
28
- from networkx.classes import *
29
-
30
- from networkx import convert
31
- from networkx.convert import *
32
-
33
- from networkx import convert_matrix
34
- from networkx.convert_matrix import *
35
-
36
- from networkx import relabel
37
- from networkx.relabel import *
38
-
39
- from networkx import generators
40
- from networkx.generators import *
41
-
42
- from networkx import readwrite
43
- from networkx.readwrite import *
44
-
45
- # Need to test with SciPy, when available
46
- from networkx import algorithms
47
- from networkx.algorithms import *
48
-
49
- from networkx import linalg
50
- from networkx.linalg import *
51
-
52
- from networkx import drawing
53
- from networkx.drawing import *
54
-
55
-
56
- def __getattr__(name):
57
- if name == "random_tree":
58
- raise AttributeError(
59
- "nx.random_tree was removed in version 3.4. Use `nx.random_labeled_tree` instead.\n"
60
- "See: https://networkx.org/documentation/latest/release/release_3.4.html"
61
- )
62
- raise AttributeError(f"module 'networkx' has no attribute '{name}'")
@@ -1,134 +0,0 @@
1
- from networkx.algorithms.assortativity import *
2
- from networkx.algorithms.asteroidal import *
3
- from networkx.algorithms.boundary import *
4
- from networkx.algorithms.broadcasting import *
5
- from networkx.algorithms.bridges import *
6
- from networkx.algorithms.chains import *
7
- from networkx.algorithms.centrality import *
8
- from networkx.algorithms.chordal import *
9
- from networkx.algorithms.cluster import *
10
- from networkx.algorithms.clique import *
11
- from networkx.algorithms.communicability_alg import *
12
- from networkx.algorithms.components import *
13
- from networkx.algorithms.coloring import *
14
- from networkx.algorithms.core import *
15
- from networkx.algorithms.covering import *
16
- from networkx.algorithms.cycles import *
17
- from networkx.algorithms.cuts import *
18
- from networkx.algorithms.d_separation import *
19
- from networkx.algorithms.dag import *
20
- from networkx.algorithms.distance_measures import *
21
- from networkx.algorithms.distance_regular import *
22
- from networkx.algorithms.dominance import *
23
- from networkx.algorithms.dominating import *
24
- from networkx.algorithms.efficiency_measures import *
25
- from networkx.algorithms.euler import *
26
- from networkx.algorithms.graphical import *
27
- from networkx.algorithms.hierarchy import *
28
- from networkx.algorithms.hybrid import *
29
- from networkx.algorithms.link_analysis import *
30
- from networkx.algorithms.link_prediction import *
31
- from networkx.algorithms.lowest_common_ancestors import *
32
- from networkx.algorithms.isolate import *
33
- from networkx.algorithms.matching import *
34
- from networkx.algorithms.minors import *
35
- from networkx.algorithms.mis import *
36
- from networkx.algorithms.moral import *
37
- from networkx.algorithms.non_randomness import *
38
- from networkx.algorithms.operators import *
39
- from networkx.algorithms.planarity import *
40
- from networkx.algorithms.planar_drawing import *
41
- from networkx.algorithms.polynomials import *
42
- from networkx.algorithms.perfect_graph import *
43
- from networkx.algorithms.reciprocity import *
44
- from networkx.algorithms.regular import *
45
- from networkx.algorithms.richclub import *
46
- from networkx.algorithms.shortest_paths import *
47
- from networkx.algorithms.similarity import *
48
- from networkx.algorithms.graph_hashing import *
49
- from networkx.algorithms.simple_paths import *
50
- from networkx.algorithms.smallworld import *
51
- from networkx.algorithms.smetric import *
52
- from networkx.algorithms.structuralholes import *
53
- from networkx.algorithms.sparsifiers import *
54
- from networkx.algorithms.summarization import *
55
- from networkx.algorithms.swap import *
56
- from networkx.algorithms.time_dependent import *
57
- from networkx.algorithms.traversal import *
58
- from networkx.algorithms.triads import *
59
- from networkx.algorithms.vitality import *
60
- from networkx.algorithms.voronoi import *
61
- from networkx.algorithms.walks import *
62
- from networkx.algorithms.wiener import *
63
-
64
- # Make certain subpackages available to the user as direct imports from
65
- # the `networkx` namespace.
66
- from networkx.algorithms import approximation
67
- from networkx.algorithms import assortativity
68
- from networkx.algorithms import bipartite
69
- from networkx.algorithms import node_classification
70
- from networkx.algorithms import centrality
71
- from networkx.algorithms import chordal
72
- from networkx.algorithms import cluster
73
- from networkx.algorithms import clique
74
- from networkx.algorithms import components
75
- from networkx.algorithms import connectivity
76
- from networkx.algorithms import community
77
- from networkx.algorithms import coloring
78
- from networkx.algorithms import flow
79
- from networkx.algorithms import isomorphism
80
- from networkx.algorithms import link_analysis
81
- from networkx.algorithms import lowest_common_ancestors
82
- from networkx.algorithms import operators
83
- from networkx.algorithms import shortest_paths
84
- from networkx.algorithms import tournament
85
- from networkx.algorithms import traversal
86
- from networkx.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 networkx.algorithms.bipartite import complete_bipartite_graph
91
- from networkx.algorithms.bipartite import is_bipartite
92
- from networkx.algorithms.bipartite import projected_graph
93
- from networkx.algorithms.connectivity import all_pairs_node_connectivity
94
- from networkx.algorithms.connectivity import all_node_cuts
95
- from networkx.algorithms.connectivity import average_node_connectivity
96
- from networkx.algorithms.connectivity import edge_connectivity
97
- from networkx.algorithms.connectivity import edge_disjoint_paths
98
- from networkx.algorithms.connectivity import k_components
99
- from networkx.algorithms.connectivity import k_edge_components
100
- from networkx.algorithms.connectivity import k_edge_subgraphs
101
- from networkx.algorithms.connectivity import k_edge_augmentation
102
- from networkx.algorithms.connectivity import is_k_edge_connected
103
- from networkx.algorithms.connectivity import minimum_edge_cut
104
- from networkx.algorithms.connectivity import minimum_node_cut
105
- from networkx.algorithms.connectivity import node_connectivity
106
- from networkx.algorithms.connectivity import node_disjoint_paths
107
- from networkx.algorithms.connectivity import stoer_wagner
108
- from networkx.algorithms.flow import capacity_scaling
109
- from networkx.algorithms.flow import cost_of_flow
110
- from networkx.algorithms.flow import gomory_hu_tree
111
- from networkx.algorithms.flow import max_flow_min_cost
112
- from networkx.algorithms.flow import maximum_flow
113
- from networkx.algorithms.flow import maximum_flow_value
114
- from networkx.algorithms.flow import min_cost_flow
115
- from networkx.algorithms.flow import min_cost_flow_cost
116
- from networkx.algorithms.flow import minimum_cut
117
- from networkx.algorithms.flow import minimum_cut_value
118
- from networkx.algorithms.flow import network_simplex
119
- from networkx.algorithms.isomorphism import could_be_isomorphic
120
- from networkx.algorithms.isomorphism import fast_could_be_isomorphic
121
- from networkx.algorithms.isomorphism import faster_could_be_isomorphic
122
- from networkx.algorithms.isomorphism import is_isomorphic
123
- from networkx.algorithms.isomorphism.vf2pp import *
124
- from networkx.algorithms.tree.branchings import maximum_branching
125
- from networkx.algorithms.tree.branchings import maximum_spanning_arborescence
126
- from networkx.algorithms.tree.branchings import minimum_branching
127
- from networkx.algorithms.tree.branchings import minimum_spanning_arborescence
128
- from networkx.algorithms.tree.branchings import ArborescenceIterator
129
- from networkx.algorithms.tree.coding import *
130
- from networkx.algorithms.tree.decomposition import *
131
- from networkx.algorithms.tree.mst import *
132
- from networkx.algorithms.tree.operations import *
133
- from networkx.algorithms.tree.recognition import *
134
- from networkx.algorithms.tournament import is_tournament
@@ -1,26 +0,0 @@
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 networkx.algorithms import approximation
7
-
8
- Another option is to import the specific function with
9
- ``from networkx.algorithms.approximation import function_name``.
10
-
11
- """
12
-
13
- from networkx.algorithms.approximation.clustering_coefficient import *
14
- from networkx.algorithms.approximation.clique import *
15
- from networkx.algorithms.approximation.connectivity import *
16
- from networkx.algorithms.approximation.distance_measures import *
17
- from networkx.algorithms.approximation.dominating_set import *
18
- from networkx.algorithms.approximation.kcomponents import *
19
- from networkx.algorithms.approximation.matching import *
20
- from networkx.algorithms.approximation.ramsey import *
21
- from networkx.algorithms.approximation.steinertree import *
22
- from networkx.algorithms.approximation.traveling_salesman import *
23
- from networkx.algorithms.approximation.treewidth import *
24
- from networkx.algorithms.approximation.vertex_cover import *
25
- from networkx.algorithms.approximation.maxcut import *
26
- from networkx.algorithms.approximation.density import *
@@ -1,259 +0,0 @@
1
- """Functions for computing large cliques and maximum independent sets."""
2
-
3
- import networkx as nx
4
- from networkx.algorithms.approximation import ramsey
5
- from networkx.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:`networkx.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:`networkx.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
@@ -1,71 +0,0 @@
1
- import networkx as nx
2
- from networkx.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 networkx.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