py3plex 2.0.0__tar.gz → 2.0.6__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 (1187) hide show
  1. py3plex-2.0.6/MANIFEST.in +5 -0
  2. py3plex-2.0.6/PKG-INFO +388 -0
  3. py3plex-2.0.6/README.md +284 -0
  4. py3plex-2.0.6/py3plex/__init__.py +383 -0
  5. py3plex-2.0.6/py3plex/_parallel.py +281 -0
  6. py3plex-2.0.6/py3plex/_safe_expression.py +101 -0
  7. py3plex-2.0.6/py3plex/algebra/fixed_point.py +69 -0
  8. py3plex-2.0.6/py3plex/algebra/paths.py +331 -0
  9. py3plex-2.0.6/py3plex/algebra/semiring.py +276 -0
  10. py3plex-2.0.6/py3plex/algebra/witness.py +77 -0
  11. py3plex-2.0.6/py3plex/algorithms/advanced_random_generators.py +486 -0
  12. py3plex-2.0.6/py3plex/algorithms/attribute_correlation.py +615 -0
  13. py3plex-2.0.6/py3plex/algorithms/centrality/approx_pagerank.py +165 -0
  14. py3plex-2.0.6/py3plex/algorithms/centrality_toolkit.py +471 -0
  15. py3plex-2.0.6/py3plex/algorithms/community_detection/auto_select.py +560 -0
  16. py3plex-2.0.6/py3plex/algorithms/community_detection/autocommunity.py +472 -0
  17. py3plex-2.0.6/py3plex/algorithms/community_detection/autocommunity_executor.py +1259 -0
  18. py3plex-2.0.6/py3plex/algorithms/community_detection/community_louvain.py +602 -0
  19. py3plex-2.0.6/py3plex/algorithms/community_detection/distributional.py +506 -0
  20. py3plex-2.0.6/py3plex/algorithms/community_detection/flow_hierarchy.py +868 -0
  21. py3plex-2.0.6/py3plex/algorithms/community_detection/label_propagation.py +511 -0
  22. py3plex-2.0.6/py3plex/algorithms/community_detection/leiden_uq.py +636 -0
  23. py3plex-2.0.6/py3plex/algorithms/community_detection/mdl_benchmark.py +353 -0
  24. py3plex-2.0.6/py3plex/algorithms/community_detection/multilayer_quality_metrics.py +796 -0
  25. py3plex-2.0.6/py3plex/algorithms/community_detection/runner.py +510 -0
  26. py3plex-2.0.6/py3plex/algorithms/community_detection/sbm_wrapper.py +242 -0
  27. py3plex-2.0.6/py3plex/algorithms/community_detection/spectral_multilayer.py +821 -0
  28. py3plex-2.0.6/py3plex/algorithms/community_detection/successive_halving.py +602 -0
  29. py3plex-2.0.6/py3plex/algorithms/graph_summarization.py +481 -0
  30. py3plex-2.0.6/py3plex/algorithms/layer_similarity.py +429 -0
  31. py3plex-2.0.6/py3plex/algorithms/multilayer_algorithms/centrality.py +2405 -0
  32. py3plex-2.0.6/py3plex/algorithms/multilayer_clustering.py +479 -0
  33. py3plex-2.0.6/py3plex/algorithms/network_classification/PPR.py +148 -0
  34. py3plex-2.0.6/py3plex/algorithms/network_classification/label_propagation.py +243 -0
  35. py3plex-2.0.6/py3plex/algorithms/node_ranking/__init__.py +462 -0
  36. py3plex-2.0.6/py3plex/algorithms/node_ranking/node_ranking.py +100 -0
  37. py3plex-2.0.6/py3plex/algorithms/robustness_testing.py +457 -0
  38. py3plex-2.0.6/py3plex/algorithms/routing/multiplex_paths.py +654 -0
  39. py3plex-2.0.6/py3plex/algorithms/sbm/inference_vi.py +399 -0
  40. py3plex-2.0.6/py3plex/algorithms/sbm/model_selection.py +217 -0
  41. py3plex-2.0.6/py3plex/algorithms/sbm/multilayer_sbm.py +301 -0
  42. py3plex-2.0.6/py3plex/algorithms/sbm/objectives.py +250 -0
  43. py3plex-2.0.6/py3plex/algorithms/sbm/uq.py +339 -0
  44. py3plex-2.0.6/py3plex/algorithms/sbm/utils.py +259 -0
  45. py3plex-2.0.6/py3plex/algorithms/statistical_report.py +435 -0
  46. py3plex-2.0.6/py3plex/algorithms/statistics/correlation_networks.py +101 -0
  47. py3plex-2.0.6/py3plex/algorithms/statistics/multilayer_statistics.py +2403 -0
  48. py3plex-2.0.6/py3plex/algorithms/temporal/centrality.py +188 -0
  49. py3plex-2.0.6/py3plex/algorithms/temporal/community.py +261 -0
  50. py3plex-2.0.6/py3plex/centrality/robustness.py +566 -0
  51. py3plex-2.0.6/py3plex/claims/generator.py +247 -0
  52. py3plex-2.0.6/py3plex/claims/learner.py +290 -0
  53. py3plex-2.0.6/py3plex/claims/types.py +353 -0
  54. py3plex-2.0.6/py3plex/cli.py +4311 -0
  55. py3plex-2.0.6/py3plex/comparison/executor.py +126 -0
  56. py3plex-2.0.6/py3plex/comparison/metrics.py +465 -0
  57. py3plex-2.0.6/py3plex/comparison/result.py +152 -0
  58. py3plex-2.0.6/py3plex/compat/convert.py +203 -0
  59. py3plex-2.0.6/py3plex/compat/converters/dgl_converter.py +66 -0
  60. py3plex-2.0.6/py3plex/compat/converters/networkx_converter.py +280 -0
  61. py3plex-2.0.6/py3plex/compat/converters/pyg_converter.py +70 -0
  62. py3plex-2.0.6/py3plex/compat/converters/scipy_converter.py +319 -0
  63. py3plex-2.0.6/py3plex/compat/equality.py +290 -0
  64. py3plex-2.0.6/py3plex/compat/ir.py +675 -0
  65. py3plex-2.0.6/py3plex/compat/schema.py +303 -0
  66. py3plex-2.0.6/py3plex/compat/sidecar.py +285 -0
  67. py3plex-2.0.6/py3plex/config.py +279 -0
  68. py3plex-2.0.6/py3plex/contracts/contract.py +253 -0
  69. py3plex-2.0.6/py3plex/contracts/predicates.py +615 -0
  70. py3plex-2.0.6/py3plex/core/immutable.py +233 -0
  71. py3plex-2.0.6/py3plex/core/lazy_evaluation.py +264 -0
  72. py3plex-2.0.6/py3plex/core/multinet.py +4761 -0
  73. py3plex-2.0.6/py3plex/core/parsers.py +1034 -0
  74. py3plex-2.0.6/py3plex/core/random_generators.py +473 -0
  75. py3plex-2.0.6/py3plex/core/temporal_multinet.py +527 -0
  76. py3plex-2.0.6/py3plex/counterexamples/engine.py +490 -0
  77. py3plex-2.0.6/py3plex/counterfactual/comparator.py +373 -0
  78. py3plex-2.0.6/py3plex/counterfactual/presets.py +183 -0
  79. py3plex-2.0.6/py3plex/counterfactual/spec.py +531 -0
  80. py3plex-2.0.6/py3plex/datasets/_loaders.py +291 -0
  81. py3plex-2.0.6/py3plex/diagnostics/builders.py +325 -0
  82. py3plex-2.0.6/py3plex/diagnostics/core.py +315 -0
  83. py3plex-2.0.6/py3plex/diagnostics/utils.py +163 -0
  84. py3plex-2.0.6/py3plex/dsl/__init__.py +705 -0
  85. py3plex-2.0.6/py3plex/dsl/algebra.py +353 -0
  86. py3plex-2.0.6/py3plex/dsl/ast.py +2291 -0
  87. py3plex-2.0.6/py3plex/dsl/benchmark.py +364 -0
  88. py3plex-2.0.6/py3plex/dsl/benchmark_result.py +161 -0
  89. py3plex-2.0.6/py3plex/dsl/builder.py +7482 -0
  90. py3plex-2.0.6/py3plex/dsl/builder_parser.py +83 -0
  91. py3plex-2.0.6/py3plex/dsl/cache.py +266 -0
  92. py3plex-2.0.6/py3plex/dsl/community_uq.py +435 -0
  93. py3plex-2.0.6/py3plex/dsl/compositional_uq.py +351 -0
  94. py3plex-2.0.6/py3plex/dsl/errors.py +676 -0
  95. py3plex-2.0.6/py3plex/dsl/executor.py +7467 -0
  96. py3plex-2.0.6/py3plex/dsl/executor_semiring.py +333 -0
  97. py3plex-2.0.6/py3plex/dsl/executors/benchmark_executor.py +662 -0
  98. py3plex-2.0.6/py3plex/dsl/explain.py +549 -0
  99. py3plex-2.0.6/py3plex/dsl/export.py +389 -0
  100. py3plex-2.0.6/py3plex/dsl/expressions.py +237 -0
  101. py3plex-2.0.6/py3plex/dsl/fastpath.py +655 -0
  102. py3plex-2.0.6/py3plex/dsl/layers.py +604 -0
  103. py3plex-2.0.6/py3plex/dsl/lint/rules/dsl001_unknown_layer.py +137 -0
  104. py3plex-2.0.6/py3plex/dsl/lint/rules/dsl201_unsatisfiable.py +117 -0
  105. py3plex-2.0.6/py3plex/dsl/lint/types.py +85 -0
  106. py3plex-2.0.6/py3plex/dsl/metrics.py +243 -0
  107. py3plex-2.0.6/py3plex/dsl/operators.py +241 -0
  108. py3plex-2.0.6/py3plex/dsl/patterns/__init__.py +40 -0
  109. py3plex-2.0.6/py3plex/dsl/patterns/builder.py +279 -0
  110. py3plex-2.0.6/py3plex/dsl/patterns/compiler.py +327 -0
  111. py3plex-2.0.6/py3plex/dsl/patterns/engine.py +500 -0
  112. py3plex-2.0.6/py3plex/dsl/patterns/ir.py +399 -0
  113. py3plex-2.0.6/py3plex/dsl/plan.py +114 -0
  114. py3plex-2.0.6/py3plex/dsl/planner.py +839 -0
  115. py3plex-2.0.6/py3plex/dsl/program/cache.py +272 -0
  116. py3plex-2.0.6/py3plex/dsl/program/cost.py +863 -0
  117. py3plex-2.0.6/py3plex/dsl/program/diff.py +222 -0
  118. py3plex-2.0.6/py3plex/dsl/program/executor.py +762 -0
  119. py3plex-2.0.6/py3plex/dsl/program/explain.py +191 -0
  120. py3plex-2.0.6/py3plex/dsl/program/program.py +947 -0
  121. py3plex-2.0.6/py3plex/dsl/program/rewrite.py +1480 -0
  122. py3plex-2.0.6/py3plex/dsl/program/types.py +1100 -0
  123. py3plex-2.0.6/py3plex/dsl/provenance.py +544 -0
  124. py3plex-2.0.6/py3plex/dsl/result.py +2065 -0
  125. py3plex-2.0.6/py3plex/dsl/selection_uq.py +342 -0
  126. py3plex-2.0.6/py3plex/dsl/serializer.py +288 -0
  127. py3plex-2.0.6/py3plex/dsl/uq_algebra.py +897 -0
  128. py3plex-2.0.6/py3plex/dsl/uq_resolution.py +722 -0
  129. py3plex-2.0.6/py3plex/dsl/warnings.py +489 -0
  130. py3plex-2.0.6/py3plex/dsl_legacy.py +2182 -0
  131. py3plex-2.0.6/py3plex/dynamics/_utils.py +196 -0
  132. py3plex-2.0.6/py3plex/dynamics/compartmental.py +415 -0
  133. py3plex-2.0.6/py3plex/dynamics/config.py +390 -0
  134. py3plex-2.0.6/py3plex/dynamics/core.py +677 -0
  135. py3plex-2.0.6/py3plex/dynamics/executor.py +482 -0
  136. py3plex-2.0.6/py3plex/dynamics/models.py +685 -0
  137. py3plex-2.0.6/py3plex/embeddings/cache.py +145 -0
  138. py3plex-2.0.6/py3plex/embeddings/link_ops.py +155 -0
  139. py3plex-2.0.6/py3plex/embeddings/metapath2vec.py +614 -0
  140. py3plex-2.0.6/py3plex/ergonomics.py +388 -0
  141. py3plex-2.0.6/py3plex/experiments/artifacts.py +214 -0
  142. py3plex-2.0.6/py3plex/experiments/env.py +74 -0
  143. py3plex-2.0.6/py3plex/experiments/model.py +304 -0
  144. py3plex-2.0.6/py3plex/experiments/runner.py +165 -0
  145. py3plex-2.0.6/py3plex/experiments/store.py +231 -0
  146. py3plex-2.0.6/py3plex/fast_examples.py +120 -0
  147. py3plex-2.0.6/py3plex/graph_ops.py +1486 -0
  148. py3plex-2.0.6/py3plex/io/api.py +311 -0
  149. py3plex-2.0.6/py3plex/io/canonical_format.py +306 -0
  150. py3plex-2.0.6/py3plex/io/exceptions.py +36 -0
  151. py3plex-2.0.6/py3plex/io/formats/arrow_format.py +333 -0
  152. py3plex-2.0.6/py3plex/io/multinet_bridge.py +399 -0
  153. py3plex-2.0.6/py3plex/meta/builder.py +776 -0
  154. py3plex-2.0.6/py3plex/meta/result.py +106 -0
  155. py3plex-2.0.6/py3plex/meta/stats.py +355 -0
  156. py3plex-2.0.6/py3plex/meta/utils.py +333 -0
  157. py3plex-2.0.6/py3plex/ml/embedding/multiplex.py +892 -0
  158. py3plex-2.0.6/py3plex/ml/embedding/utils.py +149 -0
  159. py3plex-2.0.6/py3plex/nullmodels/executor.py +126 -0
  160. py3plex-2.0.6/py3plex/nullmodels/models.py +397 -0
  161. py3plex-2.0.6/py3plex/optimizer/cost_model.py +274 -0
  162. py3plex-2.0.6/py3plex/optimizer/logical_plan.py +188 -0
  163. py3plex-2.0.6/py3plex/optimizer/optimizer.py +186 -0
  164. py3plex-2.0.6/py3plex/optimizer/physical_plan.py +441 -0
  165. py3plex-2.0.6/py3plex/optimizer/plan_nodes.py +270 -0
  166. py3plex-2.0.6/py3plex/optimizer/rules.py +536 -0
  167. py3plex-2.0.6/py3plex/out_of_core/executor.py +861 -0
  168. py3plex-2.0.6/py3plex/out_of_core/network.py +402 -0
  169. py3plex-2.0.6/py3plex/out_of_core/readers.py +306 -0
  170. py3plex-2.0.6/py3plex/out_of_core/spill.py +278 -0
  171. py3plex-2.0.6/py3plex/paths/algorithms.py +422 -0
  172. py3plex-2.0.6/py3plex/paths/executor.py +112 -0
  173. py3plex-2.0.6/py3plex/pipeline.py +757 -0
  174. py3plex-2.0.6/py3plex/plugins/base.py +258 -0
  175. py3plex-2.0.6/py3plex/provenance/bundle.py +217 -0
  176. py3plex-2.0.6/py3plex/provenance/capture.py +276 -0
  177. py3plex-2.0.6/py3plex/provenance/replay.py +252 -0
  178. py3plex-2.0.6/py3plex/provenance/schema.py +342 -0
  179. py3plex-2.0.6/py3plex/requirements.py +842 -0
  180. py3plex-2.0.6/py3plex/selection/capabilities.py +311 -0
  181. py3plex-2.0.6/py3plex/selection/community_registry.py +282 -0
  182. py3plex-2.0.6/py3plex/selection/evaluate.py +278 -0
  183. py3plex-2.0.6/py3plex/selection/result.py +331 -0
  184. py3plex-2.0.6/py3plex/semiring/core.py +383 -0
  185. py3plex-2.0.6/py3plex/semiring/pareto.py +138 -0
  186. py3plex-2.0.6/py3plex/semiring/types.py +47 -0
  187. py3plex-2.0.6/py3plex/sensitivity/executor.py +350 -0
  188. py3plex-2.0.6/py3plex/sensitivity/metrics.py +287 -0
  189. py3plex-2.0.6/py3plex/sensitivity/perturbations.py +263 -0
  190. py3plex-2.0.6/py3plex/sensitivity/types.py +204 -0
  191. py3plex-2.0.6/py3plex/stats/provenance.py +79 -0
  192. py3plex-2.0.6/py3plex/stats/registry.py +236 -0
  193. py3plex-2.0.6/py3plex/stats/uncertainty.py +527 -0
  194. py3plex-2.0.6/py3plex/temporal_view.py +284 -0
  195. py3plex-2.0.6/py3plex/uncertainty/bootstrap.py +431 -0
  196. py3plex-2.0.6/py3plex/uncertainty/community_ensemble.py +605 -0
  197. py3plex-2.0.6/py3plex/uncertainty/community_result.py +680 -0
  198. py3plex-2.0.6/py3plex/uncertainty/estimation.py +543 -0
  199. py3plex-2.0.6/py3plex/uncertainty/noise_models.py +510 -0
  200. py3plex-2.0.6/py3plex/uncertainty/null_models.py +496 -0
  201. py3plex-2.0.6/py3plex/uncertainty/partition.py +1020 -0
  202. py3plex-2.0.6/py3plex/uncertainty/partition_metrics.py +334 -0
  203. py3plex-2.0.6/py3plex/uncertainty/partition_reducers.py +851 -0
  204. py3plex-2.0.6/py3plex/uncertainty/partition_uq.py +566 -0
  205. py3plex-2.0.6/py3plex/uncertainty/resampling_graph.py +286 -0
  206. py3plex-2.0.6/py3plex/uncertainty/runner.py +178 -0
  207. py3plex-2.0.6/py3plex/uncertainty/selection_execution.py +280 -0
  208. py3plex-2.0.6/py3plex/uncertainty/selection_reducers.py +507 -0
  209. py3plex-2.0.6/py3plex/uncertainty/stratification.py +364 -0
  210. py3plex-2.0.6/py3plex/utils.py +445 -0
  211. py3plex-2.0.6/py3plex/visualization/benchmark_visualizations.py +301 -0
  212. py3plex-2.0.6/py3plex/visualization/bezier.py +175 -0
  213. py3plex-2.0.6/py3plex/visualization/drawing_machinery.py +1167 -0
  214. py3plex-2.0.6/py3plex/visualization/multilayer.py +2549 -0
  215. py3plex-2.0.6/py3plex/visualization/pymnet_style.py +686 -0
  216. py3plex-2.0.6/py3plex/visualization/sankey.py +254 -0
  217. py3plex-2.0.6/py3plex.egg-info/PKG-INFO +388 -0
  218. py3plex-2.0.6/py3plex.egg-info/SOURCES.txt +949 -0
  219. py3plex-2.0.6/py3plex.egg-info/requires.txt +94 -0
  220. py3plex-2.0.6/py3plex_mcp/__init__.py +24 -0
  221. py3plex-2.0.6/pyproject.toml +321 -0
  222. py3plex-2.0.6/tests/test_book_conf.py +78 -0
  223. py3plex-2.0.6/tests/test_book_manuscript_integrity.py +189 -0
  224. py3plex-2.0.6/tests/test_check_type_coverage.py +470 -0
  225. py3plex-2.0.6/tests/test_ci_python_versions.py +28 -0
  226. py3plex-2.0.6/tests/test_cli.py +1589 -0
  227. py3plex-2.0.6/tests/test_community_comparison_coverage.py +304 -0
  228. py3plex-2.0.6/tests/test_community_measures_coverage.py +198 -0
  229. py3plex-2.0.6/tests/test_core_multinet_and_parsers.py +154 -0
  230. py3plex-2.0.6/tests/test_dependency_cleanup.py +38 -0
  231. py3plex-2.0.6/tests/test_dsl_ast_immutability.py +154 -0
  232. py3plex-2.0.6/tests/test_dsl_compiler_explain.py +175 -0
  233. py3plex-2.0.6/tests/test_dsl_compiler_pipeline.py +253 -0
  234. py3plex-2.0.6/tests/test_dsl_layer_resolution.py +182 -0
  235. py3plex-2.0.6/tests/test_dsl_metric_registry.py +171 -0
  236. py3plex-2.0.6/tests/test_dsl_multilayer_measure_topology.py +458 -0
  237. py3plex-2.0.6/tests/test_dsl_patterns.py +589 -0
  238. py3plex-2.0.6/tests/test_dsl_patterns_correctness.py +247 -0
  239. py3plex-2.0.6/tests/test_dsl_planner_config.py +167 -0
  240. py3plex-2.0.6/tests/test_dynamics_metamorphic.py +327 -0
  241. py3plex-2.0.6/tests/test_errors_coverage.py +316 -0
  242. py3plex-2.0.6/tests/test_formal_phase1_alignment.py +140 -0
  243. py3plex-2.0.6/tests/test_io_conversion_formats.py +226 -0
  244. py3plex-2.0.6/tests/test_link_checker.py +154 -0
  245. py3plex-2.0.6/tests/test_logging_config_unit.py +68 -0
  246. py3plex-2.0.6/tests/test_mdl_benchmark.py +83 -0
  247. py3plex-2.0.6/tests/test_mdl_score.py +767 -0
  248. py3plex-2.0.6/tests/test_mdl_score_corruption_monotonicity.py +115 -0
  249. py3plex-2.0.6/tests/test_mdl_score_reference_differential.py +273 -0
  250. py3plex-2.0.6/tests/test_mdl_score_resolution_limit_sweep.py +158 -0
  251. py3plex-2.0.6/tests/test_meta_utils.py +39 -0
  252. py3plex-2.0.6/tests/test_ml_embedding_primitives.py +335 -0
  253. py3plex-2.0.6/tests/test_multilayer_quality_metrics.py +575 -0
  254. py3plex-2.0.6/tests/test_multilayer_quality_metrics_coverage.py +273 -0
  255. py3plex-2.0.6/tests/test_multilayer_statistics.py +849 -0
  256. py3plex-2.0.6/tests/test_node_ranking_comprehensive.py +299 -0
  257. py3plex-2.0.6/tests/test_optimizer_submodules.py +395 -0
  258. py3plex-2.0.6/tests/test_program.py +629 -0
  259. py3plex-2.0.6/tests/test_program_cache_identity.py +62 -0
  260. py3plex-2.0.6/tests/test_program_cost_executor.py +654 -0
  261. py3plex-2.0.6/tests/test_readme_contributor_onboarding.py +69 -0
  262. py3plex-2.0.6/tests/test_safe_expression.py +48 -0
  263. py3plex-2.0.6/tests/test_sir_long_convergence.py +492 -0
  264. py3plex-2.0.6/tests/test_temporal_multinet.py +284 -0
  265. py3plex-2.0.6/tests/test_temporal_view.py +303 -0
  266. py3plex-2.0.6/tests/test_type_coverage_scan.py +10 -0
  267. py3plex-2.0.6/tests/test_utils_search_paths.py +134 -0
  268. py3plex-2.0.6/tests/test_version_consistency.py +99 -0
  269. py3plex-2.0.6/tests/test_wrappers_benchmark_nodes.py +298 -0
  270. py3plex-2.0.0/MANIFEST.in +0 -2
  271. py3plex-2.0.0/PKG-INFO +0 -388
  272. py3plex-2.0.0/README.md +0 -289
  273. py3plex-2.0.0/py3plex/__init__.py +0 -383
  274. py3plex-2.0.0/py3plex/_parallel.py +0 -272
  275. py3plex-2.0.0/py3plex/algebra/fixed_point.py +0 -70
  276. py3plex-2.0.0/py3plex/algebra/paths.py +0 -332
  277. py3plex-2.0.0/py3plex/algebra/semiring.py +0 -276
  278. py3plex-2.0.0/py3plex/algebra/witness.py +0 -77
  279. py3plex-2.0.0/py3plex/algorithms/advanced_random_generators.py +0 -487
  280. py3plex-2.0.0/py3plex/algorithms/attribute_correlation.py +0 -615
  281. py3plex-2.0.0/py3plex/algorithms/centrality/approx_pagerank.py +0 -166
  282. py3plex-2.0.0/py3plex/algorithms/centrality_toolkit.py +0 -471
  283. py3plex-2.0.0/py3plex/algorithms/community_detection/auto_select.py +0 -560
  284. py3plex-2.0.0/py3plex/algorithms/community_detection/autocommunity.py +0 -474
  285. py3plex-2.0.0/py3plex/algorithms/community_detection/autocommunity_executor.py +0 -1260
  286. py3plex-2.0.0/py3plex/algorithms/community_detection/community_louvain.py +0 -602
  287. py3plex-2.0.0/py3plex/algorithms/community_detection/distributional.py +0 -504
  288. py3plex-2.0.0/py3plex/algorithms/community_detection/flow_hierarchy.py +0 -869
  289. py3plex-2.0.0/py3plex/algorithms/community_detection/label_propagation.py +0 -511
  290. py3plex-2.0.0/py3plex/algorithms/community_detection/leiden_uq.py +0 -640
  291. py3plex-2.0.0/py3plex/algorithms/community_detection/multilayer_quality_metrics.py +0 -325
  292. py3plex-2.0.0/py3plex/algorithms/community_detection/runner.py +0 -510
  293. py3plex-2.0.0/py3plex/algorithms/community_detection/sbm_wrapper.py +0 -243
  294. py3plex-2.0.0/py3plex/algorithms/community_detection/spectral_multilayer.py +0 -821
  295. py3plex-2.0.0/py3plex/algorithms/community_detection/successive_halving.py +0 -603
  296. py3plex-2.0.0/py3plex/algorithms/graph_summarization.py +0 -482
  297. py3plex-2.0.0/py3plex/algorithms/layer_similarity.py +0 -432
  298. py3plex-2.0.0/py3plex/algorithms/multilayer_algorithms/centrality.py +0 -2400
  299. py3plex-2.0.0/py3plex/algorithms/multilayer_clustering.py +0 -479
  300. py3plex-2.0.0/py3plex/algorithms/network_classification/PPR.py +0 -148
  301. py3plex-2.0.0/py3plex/algorithms/network_classification/label_propagation.py +0 -242
  302. py3plex-2.0.0/py3plex/algorithms/node_ranking/__init__.py +0 -414
  303. py3plex-2.0.0/py3plex/algorithms/node_ranking/node_ranking.py +0 -256
  304. py3plex-2.0.0/py3plex/algorithms/robustness_testing.py +0 -458
  305. py3plex-2.0.0/py3plex/algorithms/routing/multiplex_paths.py +0 -655
  306. py3plex-2.0.0/py3plex/algorithms/sbm/inference_vi.py +0 -399
  307. py3plex-2.0.0/py3plex/algorithms/sbm/model_selection.py +0 -218
  308. py3plex-2.0.0/py3plex/algorithms/sbm/multilayer_sbm.py +0 -303
  309. py3plex-2.0.0/py3plex/algorithms/sbm/objectives.py +0 -251
  310. py3plex-2.0.0/py3plex/algorithms/sbm/uq.py +0 -339
  311. py3plex-2.0.0/py3plex/algorithms/sbm/utils.py +0 -259
  312. py3plex-2.0.0/py3plex/algorithms/statistical_report.py +0 -437
  313. py3plex-2.0.0/py3plex/algorithms/statistics/correlation_networks.py +0 -85
  314. py3plex-2.0.0/py3plex/algorithms/statistics/multilayer_statistics.py +0 -2393
  315. py3plex-2.0.0/py3plex/algorithms/temporal/centrality.py +0 -190
  316. py3plex-2.0.0/py3plex/algorithms/temporal/community.py +0 -262
  317. py3plex-2.0.0/py3plex/centrality/robustness.py +0 -583
  318. py3plex-2.0.0/py3plex/claims/generator.py +0 -247
  319. py3plex-2.0.0/py3plex/claims/learner.py +0 -293
  320. py3plex-2.0.0/py3plex/claims/types.py +0 -353
  321. py3plex-2.0.0/py3plex/cli.py +0 -3788
  322. py3plex-2.0.0/py3plex/comparison/executor.py +0 -127
  323. py3plex-2.0.0/py3plex/comparison/metrics.py +0 -465
  324. py3plex-2.0.0/py3plex/comparison/result.py +0 -152
  325. py3plex-2.0.0/py3plex/compat/convert.py +0 -204
  326. py3plex-2.0.0/py3plex/compat/converters/dgl_converter.py +0 -66
  327. py3plex-2.0.0/py3plex/compat/converters/networkx_converter.py +0 -275
  328. py3plex-2.0.0/py3plex/compat/converters/pyg_converter.py +0 -70
  329. py3plex-2.0.0/py3plex/compat/converters/scipy_converter.py +0 -321
  330. py3plex-2.0.0/py3plex/compat/equality.py +0 -290
  331. py3plex-2.0.0/py3plex/compat/ir.py +0 -679
  332. py3plex-2.0.0/py3plex/compat/schema.py +0 -306
  333. py3plex-2.0.0/py3plex/compat/sidecar.py +0 -243
  334. py3plex-2.0.0/py3plex/config.py +0 -279
  335. py3plex-2.0.0/py3plex/contracts/contract.py +0 -253
  336. py3plex-2.0.0/py3plex/contracts/predicates.py +0 -615
  337. py3plex-2.0.0/py3plex/core/immutable.py +0 -233
  338. py3plex-2.0.0/py3plex/core/lazy_evaluation.py +0 -265
  339. py3plex-2.0.0/py3plex/core/multinet.py +0 -4754
  340. py3plex-2.0.0/py3plex/core/parsers.py +0 -985
  341. py3plex-2.0.0/py3plex/core/random_generators.py +0 -472
  342. py3plex-2.0.0/py3plex/core/temporal_multinet.py +0 -520
  343. py3plex-2.0.0/py3plex/counterexamples/engine.py +0 -490
  344. py3plex-2.0.0/py3plex/counterfactual/comparator.py +0 -373
  345. py3plex-2.0.0/py3plex/counterfactual/presets.py +0 -188
  346. py3plex-2.0.0/py3plex/counterfactual/spec.py +0 -531
  347. py3plex-2.0.0/py3plex/datasets/_loaders.py +0 -291
  348. py3plex-2.0.0/py3plex/diagnostics/builders.py +0 -325
  349. py3plex-2.0.0/py3plex/diagnostics/core.py +0 -315
  350. py3plex-2.0.0/py3plex/diagnostics/utils.py +0 -163
  351. py3plex-2.0.0/py3plex/dsl/__init__.py +0 -636
  352. py3plex-2.0.0/py3plex/dsl/algebra.py +0 -354
  353. py3plex-2.0.0/py3plex/dsl/ast.py +0 -2292
  354. py3plex-2.0.0/py3plex/dsl/benchmark.py +0 -364
  355. py3plex-2.0.0/py3plex/dsl/benchmark_result.py +0 -161
  356. py3plex-2.0.0/py3plex/dsl/builder.py +0 -7458
  357. py3plex-2.0.0/py3plex/dsl/cache.py +0 -266
  358. py3plex-2.0.0/py3plex/dsl/community_uq.py +0 -438
  359. py3plex-2.0.0/py3plex/dsl/compositional_uq.py +0 -357
  360. py3plex-2.0.0/py3plex/dsl/errors.py +0 -676
  361. py3plex-2.0.0/py3plex/dsl/executor.py +0 -7328
  362. py3plex-2.0.0/py3plex/dsl/executor_semiring.py +0 -335
  363. py3plex-2.0.0/py3plex/dsl/executors/benchmark_executor.py +0 -664
  364. py3plex-2.0.0/py3plex/dsl/explain.py +0 -549
  365. py3plex-2.0.0/py3plex/dsl/export.py +0 -390
  366. py3plex-2.0.0/py3plex/dsl/expressions.py +0 -237
  367. py3plex-2.0.0/py3plex/dsl/fastpath.py +0 -655
  368. py3plex-2.0.0/py3plex/dsl/layers.py +0 -605
  369. py3plex-2.0.0/py3plex/dsl/lint/rules/dsl001_unknown_layer.py +0 -134
  370. py3plex-2.0.0/py3plex/dsl/lint/rules/dsl201_unsatisfiable.py +0 -117
  371. py3plex-2.0.0/py3plex/dsl/lint/types.py +0 -85
  372. py3plex-2.0.0/py3plex/dsl/patterns/__init__.py +0 -66
  373. py3plex-2.0.0/py3plex/dsl/patterns/builder.py +0 -502
  374. py3plex-2.0.0/py3plex/dsl/patterns/compiler.py +0 -233
  375. py3plex-2.0.0/py3plex/dsl/patterns/engine.py +0 -528
  376. py3plex-2.0.0/py3plex/dsl/patterns/ir.py +0 -349
  377. py3plex-2.0.0/py3plex/dsl/planner.py +0 -840
  378. py3plex-2.0.0/py3plex/dsl/program/cache.py +0 -246
  379. py3plex-2.0.0/py3plex/dsl/program/cost.py +0 -866
  380. py3plex-2.0.0/py3plex/dsl/program/diff.py +0 -222
  381. py3plex-2.0.0/py3plex/dsl/program/executor.py +0 -762
  382. py3plex-2.0.0/py3plex/dsl/program/explain.py +0 -192
  383. py3plex-2.0.0/py3plex/dsl/program/program.py +0 -706
  384. py3plex-2.0.0/py3plex/dsl/program/rewrite.py +0 -1489
  385. py3plex-2.0.0/py3plex/dsl/program/types.py +0 -1100
  386. py3plex-2.0.0/py3plex/dsl/provenance.py +0 -544
  387. py3plex-2.0.0/py3plex/dsl/result.py +0 -2191
  388. py3plex-2.0.0/py3plex/dsl/selection_uq.py +0 -343
  389. py3plex-2.0.0/py3plex/dsl/serializer.py +0 -289
  390. py3plex-2.0.0/py3plex/dsl/uq_algebra.py +0 -897
  391. py3plex-2.0.0/py3plex/dsl/uq_resolution.py +0 -723
  392. py3plex-2.0.0/py3plex/dsl/warnings.py +0 -489
  393. py3plex-2.0.0/py3plex/dsl_legacy.py +0 -2182
  394. py3plex-2.0.0/py3plex/dynamics/_utils.py +0 -197
  395. py3plex-2.0.0/py3plex/dynamics/compartmental.py +0 -415
  396. py3plex-2.0.0/py3plex/dynamics/config.py +0 -418
  397. py3plex-2.0.0/py3plex/dynamics/core.py +0 -678
  398. py3plex-2.0.0/py3plex/dynamics/executor.py +0 -482
  399. py3plex-2.0.0/py3plex/dynamics/models.py +0 -685
  400. py3plex-2.0.0/py3plex/embeddings/cache.py +0 -146
  401. py3plex-2.0.0/py3plex/embeddings/link_ops.py +0 -155
  402. py3plex-2.0.0/py3plex/embeddings/metapath2vec.py +0 -614
  403. py3plex-2.0.0/py3plex/ergonomics.py +0 -388
  404. py3plex-2.0.0/py3plex/experiments/artifacts.py +0 -217
  405. py3plex-2.0.0/py3plex/experiments/env.py +0 -75
  406. py3plex-2.0.0/py3plex/experiments/model.py +0 -304
  407. py3plex-2.0.0/py3plex/experiments/runner.py +0 -166
  408. py3plex-2.0.0/py3plex/experiments/store.py +0 -231
  409. py3plex-2.0.0/py3plex/fast_examples.py +0 -121
  410. py3plex-2.0.0/py3plex/graph_ops.py +0 -1547
  411. py3plex-2.0.0/py3plex/io/api.py +0 -311
  412. py3plex-2.0.0/py3plex/io/canonical_format.py +0 -296
  413. py3plex-2.0.0/py3plex/io/exceptions.py +0 -36
  414. py3plex-2.0.0/py3plex/io/formats/arrow_format.py +0 -333
  415. py3plex-2.0.0/py3plex/io/multinet_bridge.py +0 -399
  416. py3plex-2.0.0/py3plex/meta/builder.py +0 -776
  417. py3plex-2.0.0/py3plex/meta/result.py +0 -107
  418. py3plex-2.0.0/py3plex/meta/stats.py +0 -356
  419. py3plex-2.0.0/py3plex/meta/utils.py +0 -336
  420. py3plex-2.0.0/py3plex/ml/embedding/multiplex.py +0 -869
  421. py3plex-2.0.0/py3plex/ml/embedding/utils.py +0 -149
  422. py3plex-2.0.0/py3plex/nullmodels/executor.py +0 -126
  423. py3plex-2.0.0/py3plex/nullmodels/models.py +0 -397
  424. py3plex-2.0.0/py3plex/optimizer/cost_model.py +0 -274
  425. py3plex-2.0.0/py3plex/optimizer/logical_plan.py +0 -188
  426. py3plex-2.0.0/py3plex/optimizer/optimizer.py +0 -188
  427. py3plex-2.0.0/py3plex/optimizer/physical_plan.py +0 -460
  428. py3plex-2.0.0/py3plex/optimizer/plan_nodes.py +0 -277
  429. py3plex-2.0.0/py3plex/optimizer/rules.py +0 -552
  430. py3plex-2.0.0/py3plex/out_of_core/executor.py +0 -865
  431. py3plex-2.0.0/py3plex/out_of_core/network.py +0 -405
  432. py3plex-2.0.0/py3plex/out_of_core/readers.py +0 -308
  433. py3plex-2.0.0/py3plex/out_of_core/spill.py +0 -280
  434. py3plex-2.0.0/py3plex/paths/algorithms.py +0 -422
  435. py3plex-2.0.0/py3plex/paths/executor.py +0 -112
  436. py3plex-2.0.0/py3plex/pipeline.py +0 -757
  437. py3plex-2.0.0/py3plex/plugins/base.py +0 -258
  438. py3plex-2.0.0/py3plex/provenance/bundle.py +0 -219
  439. py3plex-2.0.0/py3plex/provenance/capture.py +0 -276
  440. py3plex-2.0.0/py3plex/provenance/replay.py +0 -253
  441. py3plex-2.0.0/py3plex/provenance/schema.py +0 -342
  442. py3plex-2.0.0/py3plex/requirements.py +0 -842
  443. py3plex-2.0.0/py3plex/selection/capabilities.py +0 -311
  444. py3plex-2.0.0/py3plex/selection/community_registry.py +0 -283
  445. py3plex-2.0.0/py3plex/selection/evaluate.py +0 -278
  446. py3plex-2.0.0/py3plex/selection/result.py +0 -332
  447. py3plex-2.0.0/py3plex/semiring/core.py +0 -383
  448. py3plex-2.0.0/py3plex/semiring/pareto.py +0 -139
  449. py3plex-2.0.0/py3plex/semiring/types.py +0 -47
  450. py3plex-2.0.0/py3plex/sensitivity/executor.py +0 -352
  451. py3plex-2.0.0/py3plex/sensitivity/metrics.py +0 -287
  452. py3plex-2.0.0/py3plex/sensitivity/perturbations.py +0 -264
  453. py3plex-2.0.0/py3plex/sensitivity/types.py +0 -205
  454. py3plex-2.0.0/py3plex/stats/provenance.py +0 -80
  455. py3plex-2.0.0/py3plex/stats/registry.py +0 -236
  456. py3plex-2.0.0/py3plex/stats/uncertainty.py +0 -521
  457. py3plex-2.0.0/py3plex/temporal_view.py +0 -277
  458. py3plex-2.0.0/py3plex/uncertainty/bootstrap.py +0 -433
  459. py3plex-2.0.0/py3plex/uncertainty/community_ensemble.py +0 -606
  460. py3plex-2.0.0/py3plex/uncertainty/community_result.py +0 -680
  461. py3plex-2.0.0/py3plex/uncertainty/estimation.py +0 -510
  462. py3plex-2.0.0/py3plex/uncertainty/noise_models.py +0 -513
  463. py3plex-2.0.0/py3plex/uncertainty/null_models.py +0 -497
  464. py3plex-2.0.0/py3plex/uncertainty/partition.py +0 -1021
  465. py3plex-2.0.0/py3plex/uncertainty/partition_metrics.py +0 -335
  466. py3plex-2.0.0/py3plex/uncertainty/partition_reducers.py +0 -853
  467. py3plex-2.0.0/py3plex/uncertainty/partition_uq.py +0 -571
  468. py3plex-2.0.0/py3plex/uncertainty/resampling_graph.py +0 -287
  469. py3plex-2.0.0/py3plex/uncertainty/runner.py +0 -180
  470. py3plex-2.0.0/py3plex/uncertainty/selection_execution.py +0 -281
  471. py3plex-2.0.0/py3plex/uncertainty/selection_reducers.py +0 -507
  472. py3plex-2.0.0/py3plex/uncertainty/stratification.py +0 -365
  473. py3plex-2.0.0/py3plex/utils.py +0 -445
  474. py3plex-2.0.0/py3plex/visualization/benchmark_visualizations.py +0 -301
  475. py3plex-2.0.0/py3plex/visualization/bezier.py +0 -157
  476. py3plex-2.0.0/py3plex/visualization/drawing_machinery.py +0 -1167
  477. py3plex-2.0.0/py3plex/visualization/multilayer.py +0 -2549
  478. py3plex-2.0.0/py3plex/visualization/pymnet_style.py +0 -688
  479. py3plex-2.0.0/py3plex/visualization/sankey.py +0 -254
  480. py3plex-2.0.0/py3plex.egg-info/PKG-INFO +0 -388
  481. py3plex-2.0.0/py3plex.egg-info/SOURCES.txt +0 -916
  482. py3plex-2.0.0/py3plex.egg-info/requires.txt +0 -88
  483. py3plex-2.0.0/py3plex_mcp/__init__.py +0 -24
  484. py3plex-2.0.0/pyproject.toml +0 -311
  485. py3plex-2.0.0/tests/test_book_conf.py +0 -78
  486. py3plex-2.0.0/tests/test_book_manuscript_integrity.py +0 -53
  487. py3plex-2.0.0/tests/test_check_type_coverage.py +0 -340
  488. py3plex-2.0.0/tests/test_ci_python_versions.py +0 -16
  489. py3plex-2.0.0/tests/test_cli.py +0 -1296
  490. py3plex-2.0.0/tests/test_core_multinet_and_parsers.py +0 -114
  491. py3plex-2.0.0/tests/test_dsl_patterns.py +0 -589
  492. py3plex-2.0.0/tests/test_link_checker.py +0 -154
  493. py3plex-2.0.0/tests/test_ml_embedding_primitives.py +0 -319
  494. py3plex-2.0.0/tests/test_multilayer_quality_metrics.py +0 -573
  495. py3plex-2.0.0/tests/test_multilayer_statistics.py +0 -825
  496. py3plex-2.0.0/tests/test_node_ranking_comprehensive.py +0 -246
  497. py3plex-2.0.0/tests/test_optimizer_submodules.py +0 -329
  498. py3plex-2.0.0/tests/test_program.py +0 -518
  499. py3plex-2.0.0/tests/test_program_cost_executor.py +0 -654
  500. py3plex-2.0.0/tests/test_readme_contributor_onboarding.py +0 -41
  501. py3plex-2.0.0/tests/test_temporal_multinet.py +0 -260
  502. py3plex-2.0.0/tests/test_temporal_view.py +0 -303
  503. py3plex-2.0.0/tests/test_utils_search_paths.py +0 -48
  504. py3plex-2.0.0/tests/test_version_consistency.py +0 -93
  505. py3plex-2.0.0/tests/test_wrappers_benchmark_nodes.py +0 -297
  506. {py3plex-2.0.0 → py3plex-2.0.6}/LICENSE +0 -0
  507. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/__main__.py +0 -0
  508. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/agent.py +0 -0
  509. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algebra/__init__.py +0 -0
  510. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algebra/backend.py +0 -0
  511. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algebra/closure.py +0 -0
  512. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algebra/lift.py +0 -0
  513. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algebra/registry.py +0 -0
  514. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/__init__.py +0 -0
  515. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/centrality/__init__.py +0 -0
  516. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/centrality/approx_betweenness.py +0 -0
  517. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/centrality/approx_closeness.py +0 -0
  518. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/centrality/explain.py +0 -0
  519. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_comparison.py +0 -0
  520. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/NoRC.py +0 -0
  521. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/__init__.py +0 -0
  522. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/budget.py +0 -0
  523. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/community_measures.py +0 -0
  524. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/community_ranking.py +0 -0
  525. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/community_wrapper.py +0 -0
  526. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/__init__.py +0 -0
  527. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/conftest.py +0 -0
  528. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/examples/python/example-bipartite.py +0 -0
  529. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/examples/python/example-file-io.py +0 -0
  530. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/examples/python/example-multiplex.py +0 -0
  531. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/examples/python/example-networkx.py +0 -0
  532. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/examples/python/example-simple.py +0 -0
  533. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/examples/python/example-trigram-expanded.py +0 -0
  534. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/examples/python/example-trigram.py +0 -0
  535. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/infomap.py +0 -0
  536. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/infomap/interfaces/python/setup.py +0 -0
  537. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/leiden_multilayer.py +0 -0
  538. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/multilayer_benchmark.py +0 -0
  539. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/multilayer_modularity.py +0 -0
  540. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/node_ranking.py +0 -0
  541. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/community_detection/sbm_metrics.py +0 -0
  542. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/curvature/__init__.py +0 -0
  543. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/curvature/ollivier_ricci_multilayer.py +0 -0
  544. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/general/__init__.py +0 -0
  545. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/general/benchmark_classification.py +0 -0
  546. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/general/walkers.py +0 -0
  547. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/__init__.py +0 -0
  548. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/__main__.py +0 -0
  549. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/assets/builtin.n3 +0 -0
  550. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/__init__.py +0 -0
  551. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/converters.py +0 -0
  552. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/example.py +0 -0
  553. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/helpers.py +0 -0
  554. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/kb.py +0 -0
  555. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/load.py +0 -0
  556. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/predicate.py +0 -0
  557. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/rule.py +0 -0
  558. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/settings.py +0 -0
  559. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/core/term_parsers.py +0 -0
  560. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/learners/__init__.py +0 -0
  561. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/learners/bottomup.py +0 -0
  562. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/learners/learner.py +0 -0
  563. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/learners/optimal.py +0 -0
  564. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/stats/__init__.py +0 -0
  565. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/stats/adjustment.py +0 -0
  566. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/stats/scorefunctions.py +0 -0
  567. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/stats/significance.py +0 -0
  568. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/hedwig/stats/validate.py +0 -0
  569. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/meta_flow_report.py +0 -0
  570. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/multicentrality.py +0 -0
  571. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/multilayer_algorithms/__init__.py +0 -0
  572. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/multilayer_algorithms/entanglement.py +0 -0
  573. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/multilayer_algorithms/multirank.py +0 -0
  574. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/multilayer_algorithms/multixrank.py +0 -0
  575. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/multilayer_algorithms/supra_matrix_function_centrality.py +0 -0
  576. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/multilayer_algorithms/versatility.py +0 -0
  577. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/network_classification/__init__.py +0 -0
  578. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/requirements_registry.py +0 -0
  579. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/routing/__init__.py +0 -0
  580. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/sbm/__init__.py +0 -0
  581. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/sbm/conversions.py +0 -0
  582. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/sbm/diagnostics.py +0 -0
  583. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/sir_multiplex.py +0 -0
  584. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/__init__.py +0 -0
  585. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/basic_statistics.py +0 -0
  586. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/bayesian_distances.py +0 -0
  587. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/bayesiantests.py +0 -0
  588. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/critical_distances.py +0 -0
  589. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/enrichment_modules.py +0 -0
  590. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/powerlaw.py +0 -0
  591. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/stats_comparison.py +0 -0
  592. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/statistics/topology.py +0 -0
  593. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/temporal/__init__.py +0 -0
  594. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/temporal_multiplex/__init__.py +0 -0
  595. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/algorithms/term_parsers/__init__.py +0 -0
  596. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/alignment/__init__.py +0 -0
  597. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/alignment/features.py +0 -0
  598. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/alignment/metrics.py +0 -0
  599. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/alignment/solvers.py +0 -0
  600. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/benchmarks/__init__.py +0 -0
  601. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/benchmarks/budget.py +0 -0
  602. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/benchmarks/metrics.py +0 -0
  603. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/benchmarks/runners.py +0 -0
  604. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/centrality/__init__.py +0 -0
  605. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/claims/__init__.py +0 -0
  606. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/claims/scorer.py +0 -0
  607. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/comparison/__init__.py +0 -0
  608. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/compat/__init__.py +0 -0
  609. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/compat/converters/__init__.py +0 -0
  610. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/compat/converters/igraph_converter.py +0 -0
  611. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/compat/exceptions.py +0 -0
  612. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/contracts/__init__.py +0 -0
  613. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/contracts/engine.py +0 -0
  614. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/contracts/failure_modes.py +0 -0
  615. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/contracts/result.py +0 -0
  616. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/HINMINE/IO.py +0 -0
  617. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/HINMINE/__init__.py +0 -0
  618. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/HINMINE/dataStructures.py +0 -0
  619. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/HINMINE/decomposition.py +0 -0
  620. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/__init__.py +0 -0
  621. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/converters.py +0 -0
  622. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/nx_compat.py +0 -0
  623. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/schema_validation.py +0 -0
  624. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/supporting.py +0 -0
  625. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/core/types.py +0 -0
  626. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterexamples/__init__.py +0 -0
  627. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterexamples/claim_lang.py +0 -0
  628. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterexamples/ddmin.py +0 -0
  629. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterexamples/types.py +0 -0
  630. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterexamples/witness.py +0 -0
  631. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterfactual/__init__.py +0 -0
  632. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterfactual/engine.py +0 -0
  633. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/counterfactual/result.py +0 -0
  634. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/datasets/__init__.py +0 -0
  635. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/datasets/_data/aarhus_cs.edges +0 -0
  636. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/datasets/_data/synthetic_multilayer.edges +0 -0
  637. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/datasets/_generators.py +0 -0
  638. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/diagnostics/__init__.py +0 -0
  639. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/diagnostics/codes.py +0 -0
  640. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/attribution.py +0 -0
  641. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/communities.py +0 -0
  642. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/context.py +0 -0
  643. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/executors/__init__.py +0 -0
  644. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/__init__.py +0 -0
  645. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/diagnostic.py +0 -0
  646. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/lint_context.py +0 -0
  647. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/rules/__init__.py +0 -0
  648. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/rules/base.py +0 -0
  649. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/rules/dsl002_unknown_attribute.py +0 -0
  650. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/rules/dsl101_type_mismatch.py +0 -0
  651. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/rules/dsl202_redundant.py +0 -0
  652. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/rules/perf301_full_scan.py +0 -0
  653. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/rules/perf302_cross_layer.py +0 -0
  654. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/schema.py +0 -0
  655. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/lint/type_resolver.py +0 -0
  656. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/operator_registry.py +0 -0
  657. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/patterns/result.py +0 -0
  658. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/predictive.py +0 -0
  659. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/program/__init__.py +0 -0
  660. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/program/distribution.py +0 -0
  661. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/reduction.py +0 -0
  662. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dsl/registry.py +0 -0
  663. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/__init__.py +0 -0
  664. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/ast.py +0 -0
  665. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/builder.py +0 -0
  666. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/errors.py +0 -0
  667. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/processes.py +0 -0
  668. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/registry.py +0 -0
  669. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/result.py +0 -0
  670. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/dynamics/serializer.py +0 -0
  671. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/embeddings/__init__.py +0 -0
  672. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/embeddings/base.py +0 -0
  673. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/embeddings/netmf.py +0 -0
  674. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/errors.py +0 -0
  675. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/exceptions.py +0 -0
  676. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/experiments/__init__.py +0 -0
  677. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/experiments/cli.py +0 -0
  678. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/experiments/errors.py +0 -0
  679. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/experiments/utils.py +0 -0
  680. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/io/__init__.py +0 -0
  681. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/io/converters.py +0 -0
  682. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/io/formats/__init__.py +0 -0
  683. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/io/formats/csv_format.py +0 -0
  684. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/io/formats/json_format.py +0 -0
  685. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/io/parquet_format.py +0 -0
  686. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/io/schema.py +0 -0
  687. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/lab/__init__.py +0 -0
  688. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/lab/base.py +0 -0
  689. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/linter.py +0 -0
  690. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/logging_config.py +0 -0
  691. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/meta/__init__.py +0 -0
  692. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/__init__.py +0 -0
  693. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/__init__.py +0 -0
  694. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/base.py +0 -0
  695. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/deepwalk.py +0 -0
  696. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/evaluation.py +0 -0
  697. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/line.py +0 -0
  698. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/metapath2vec.py +0 -0
  699. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/netmf.py +0 -0
  700. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/node2vec.py +0 -0
  701. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/similarity.py +0 -0
  702. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/ml/embedding/trainer.py +0 -0
  703. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/multinet/__init__.py +0 -0
  704. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/multinet/aggregation.py +0 -0
  705. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/nullmodels/__init__.py +0 -0
  706. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/nullmodels/result.py +0 -0
  707. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/optimizer/__init__.py +0 -0
  708. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/out_of_core/__init__.py +0 -0
  709. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/out_of_core/cli.py +0 -0
  710. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/out_of_core/errors.py +0 -0
  711. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/out_of_core/operators.py +0 -0
  712. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/out_of_core/schema.py +0 -0
  713. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/out_of_core/utils.py +0 -0
  714. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/paths/__init__.py +0 -0
  715. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/paths/result.py +0 -0
  716. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/plugins/__init__.py +0 -0
  717. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/plugins/examples.py +0 -0
  718. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/plugins/registry.py +0 -0
  719. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/profiling.py +0 -0
  720. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/provenance/__init__.py +0 -0
  721. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/robustness/__init__.py +0 -0
  722. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/robustness/experiments.py +0 -0
  723. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/robustness/perturbations.py +0 -0
  724. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/runtime/__init__.py +0 -0
  725. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/runtime/capabilities.py +0 -0
  726. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/selection/__init__.py +0 -0
  727. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/selection/metric_registry.py +0 -0
  728. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/selection/wins.py +0 -0
  729. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/semiring/__init__.py +0 -0
  730. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/semiring/engine.py +0 -0
  731. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/semiring/registry.py +0 -0
  732. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/sensitivity/__init__.py +0 -0
  733. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/stats/__init__.py +0 -0
  734. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/stats/statvalue.py +0 -0
  735. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/temporal_utils.py +0 -0
  736. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/temporal_utils_extended.py +0 -0
  737. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/__init__.py +0 -0
  738. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/ci_utils.py +0 -0
  739. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/context.py +0 -0
  740. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/partition_types.py +0 -0
  741. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/plan.py +0 -0
  742. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/reducers/__init__.py +0 -0
  743. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/reducers/base.py +0 -0
  744. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/selection_types.py +0 -0
  745. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/selection_uq.py +0 -0
  746. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/uncertainty/types.py +0 -0
  747. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/validation.py +0 -0
  748. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/__init__.py +0 -0
  749. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/colors.py +0 -0
  750. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/embedding_visualization/__init__.py +0 -0
  751. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/embedding_visualization/embedding_tools.py +0 -0
  752. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/embedding_visualization/embedding_visualization.py +0 -0
  753. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/fa2/__init__.py +0 -0
  754. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/fa2/fa2util.py +0 -0
  755. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/fa2/forceatlas2.py +0 -0
  756. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/layout_algorithms.py +0 -0
  757. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/polyfit.py +0 -0
  758. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/ricci_layout.py +0 -0
  759. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/visualization/ricci_multilayer_vis.py +0 -0
  760. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/workflows.py +0 -0
  761. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/wrappers/__init__.py +0 -0
  762. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/wrappers/benchmark_nodes.py +0 -0
  763. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/wrappers/r_interop.py +0 -0
  764. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex/wrappers/train_node2vec_embedding.py +0 -0
  765. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex.egg-info/dependency_links.txt +0 -0
  766. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex.egg-info/entry_points.txt +0 -0
  767. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex.egg-info/not-zip-safe +0 -0
  768. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex.egg-info/top_level.txt +0 -0
  769. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex_mcp/errors.py +0 -0
  770. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex_mcp/registry.py +0 -0
  771. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex_mcp/safe_paths.py +0 -0
  772. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex_mcp/schemas.py +0 -0
  773. {py3plex-2.0.0 → py3plex-2.0.6}/py3plex_mcp/server.py +0 -0
  774. {py3plex-2.0.0 → py3plex-2.0.6}/setup.cfg +0 -0
  775. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_advanced_metrics_properties.py +0 -0
  776. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_agent_api.py +0 -0
  777. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_agents_documentation_claims.py +0 -0
  778. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_agents_ergonomics_features.py +0 -0
  779. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_agents_golden_paths.py +0 -0
  780. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_aggregation.py +0 -0
  781. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algebra_backend.py +0 -0
  782. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algebra_core.py +0 -0
  783. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algebra_fixed_point.py +0 -0
  784. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algebra_paths.py +0 -0
  785. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algebra_registry.py +0 -0
  786. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algebra_witness.py +0 -0
  787. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algorithm_properties.py +0 -0
  788. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algorithms_attribute_correlation.py +0 -0
  789. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algorithms_correlation_networks.py +0 -0
  790. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algorithms_init.py +0 -0
  791. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algorithms_random_generators.py +0 -0
  792. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algorithms_requirements_registry.py +0 -0
  793. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_algorithms_statistics_bayesian_distances.py +0 -0
  794. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_alignment.py +0 -0
  795. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_alignment_contracts.py +0 -0
  796. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_alignment_correctness_additional.py +0 -0
  797. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_approximate_centrality.py +0 -0
  798. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ast_roundtrip.py +0 -0
  799. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ast_roundtrip_integration.py +0 -0
  800. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_attribute_correlation.py +0 -0
  801. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_attribute_correlation_contracts.py +0 -0
  802. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_auto_community.py +0 -0
  803. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_autocommunity_benchmarks.py +0 -0
  804. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_autocommunity_executor.py +0 -0
  805. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_autocommunity_meta.py +0 -0
  806. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_autocommunity_successive_halving.py +0 -0
  807. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_bayesian_distances.py +0 -0
  808. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_bench_aggregation_unit.py +0 -0
  809. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_benchmark_budget_fairness.py +0 -0
  810. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_benchmark_dsl_basic.py +0 -0
  811. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_benchmark_integration.py +0 -0
  812. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_benchmark_multiplex_centrality.py +0 -0
  813. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_benchmark_time.py +0 -0
  814. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_benchmarks_budget.py +0 -0
  815. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_benchmarks_init.py +0 -0
  816. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_book_snippets.py +0 -0
  817. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_builder_dsl_mutate.py +0 -0
  818. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_capabilities_basic.py +0 -0
  819. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_capabilities_optional_missing.py +0 -0
  820. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_centrality_explain.py +0 -0
  821. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_centrality_explain_integration.py +0 -0
  822. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_centrality_robustness.py +0 -0
  823. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_centrality_robustness_oracles.py +0 -0
  824. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_centrality_uncertainty.py +0 -0
  825. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_centrality_weight_handling.py +0 -0
  826. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_check_api_consistency.py +0 -0
  827. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_check_doc_coverage.py +0 -0
  828. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_claim_learning.py +0 -0
  829. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_claims_types.py +0 -0
  830. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_cli_check.py +0 -0
  831. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_cli_ergonomics.py +0 -0
  832. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_cli_piping.py +0 -0
  833. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_clustering_multilayer.py +0 -0
  834. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_code_improvements.py +0 -0
  835. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_community_detection_modules.py +0 -0
  836. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_community_distribution.py +0 -0
  837. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_community_measures.py +0 -0
  838. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_comparison.py +0 -0
  839. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_comparison_executor.py +0 -0
  840. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_comparison_metrics.py +0 -0
  841. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_comparison_metrics_additional.py +0 -0
  842. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_comparison_result.py +0 -0
  843. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_comparison_uninitialized_and_resistance_oracles.py +0 -0
  844. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_compat_exceptions.py +0 -0
  845. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_compat_roundtrip.py +0 -0
  846. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_config_api.py +0 -0
  847. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_config_benchmark.py +0 -0
  848. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_contracts.py +0 -0
  849. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_contracts_basic.py +0 -0
  850. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_contracts_extended.py +0 -0
  851. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_contracts_failure_modes.py +0 -0
  852. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_contracts_integration.py +0 -0
  853. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_core_functionality.py +0 -0
  854. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_core_immutable.py +0 -0
  855. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_core_lazy_evaluation.py +0 -0
  856. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_core_multinet_correctness.py +0 -0
  857. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_core_multiplex_edges.py +0 -0
  858. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_core_schema_validation.py +0 -0
  859. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_core_supporting.py +0 -0
  860. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_correlation_networks.py +0 -0
  861. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_counterexamples.py +0 -0
  862. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_counterexamples_properties.py +0 -0
  863. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_counterfactual.py +0 -0
  864. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_counterfactual_presets.py +0 -0
  865. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_coverage_grouping.py +0 -0
  866. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_create_mosaic_banner.py +0 -0
  867. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_create_showcase_flow.py +0 -0
  868. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_crosshair_pure_functions.py +0 -0
  869. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_data_files_presence.py +0 -0
  870. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_datasets.py +0 -0
  871. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_datasets_contracts.py +0 -0
  872. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_datasets_oracles.py +0 -0
  873. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_degenerate_networks.py +0 -0
  874. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_determinism_randomness.py +0 -0
  875. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_diagnostics.py +0 -0
  876. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_diagnostics_utils.py +0 -0
  877. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_doc_conf.py +0 -0
  878. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_docs_embeddings_section.py +0 -0
  879. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_docs_examples.py +0 -0
  880. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_docs_quality_pass.py +0 -0
  881. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_doctests.py +0 -0
  882. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dplyr_integration.py +0 -0
  883. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl.py +0 -0
  884. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_aggregation_enhancements.py +0 -0
  885. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_ast_equivalence.py +0 -0
  886. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_auto_community.py +0 -0
  887. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_communities.py +0 -0
  888. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_community_filtering.py +0 -0
  889. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_community_uq_integration.py +0 -0
  890. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_compact_compute.py +0 -0
  891. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_compositional_uq.py +0 -0
  892. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_condition_semantics.py +0 -0
  893. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_d_factory.py +0 -0
  894. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_documentation_examples.py +0 -0
  895. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_dplyr_style.py +0 -0
  896. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_dynamics_integration.py +0 -0
  897. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_edge_grouping_coverage.py +0 -0
  898. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_edge_queries.py +0 -0
  899. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_enhancements.py +0 -0
  900. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_ergonomics.py +0 -0
  901. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_errors.py +0 -0
  902. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_errors_extended.py +0 -0
  903. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_executor_additional.py +0 -0
  904. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_explain.py +0 -0
  905. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_export.py +0 -0
  906. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_expressions.py +0 -0
  907. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_extensions.py +0 -0
  908. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_graphops_equivalence.py +0 -0
  909. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_grouping_coverage.py +0 -0
  910. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_interactive.py +0 -0
  911. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_joins.py +0 -0
  912. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_layer_selection.py +0 -0
  913. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_layer_set_algebra.py +0 -0
  914. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_legacy_approximate.py +0 -0
  915. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_legacy_edges.py +0 -0
  916. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_lint.py +0 -0
  917. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_operators.py +0 -0
  918. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_patterns_quick_reference.py +0 -0
  919. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_pipes.py +0 -0
  920. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_planner.py +0 -0
  921. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_predict_reduce.py +0 -0
  922. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_program_rewrite.py +0 -0
  923. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_program_types.py +0 -0
  924. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_progress_logging.py +0 -0
  925. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_properties.py +0 -0
  926. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_provenance.py +0 -0
  927. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_query_optimization.py +0 -0
  928. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_query_zoo.py +0 -0
  929. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_result_algebra_edge_cases.py +0 -0
  930. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_selection_fastpath.py +0 -0
  931. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_semiring_integration.py +0 -0
  932. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_serializer.py +0 -0
  933. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_smart_defaults.py +0 -0
  934. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_temporal_range_execution.py +0 -0
  935. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_uncertainty.py +0 -0
  936. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_uq_ergonomics.py +0 -0
  937. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_uq_propagation.py +0 -0
  938. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_v2.py +0 -0
  939. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dsl_zoo_features.py +0 -0
  940. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics.py +0 -0
  941. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_algorithm_contracts.py +0 -0
  942. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_config_and_results_correctness.py +0 -0
  943. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_conservation.py +0 -0
  944. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_core.py +0 -0
  945. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_executor_edge_cases.py +0 -0
  946. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_parallel_determinism.py +0 -0
  947. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_reference_runs.py +0 -0
  948. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_uq_integration.py +0 -0
  949. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_dynamics_utils.py +0 -0
  950. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_edge_cases.py +0 -0
  951. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_edgelist_format.py +0 -0
  952. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_embeddings_direct_units.py +0 -0
  953. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ergonomic_helpers.py +0 -0
  954. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ergonomics.py +0 -0
  955. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ergonomics_helpers.py +0 -0
  956. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_errors.py +0 -0
  957. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_CBSSD.py +0 -0
  958. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_community_detection.py +0 -0
  959. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_decomposition_and_classification.py +0 -0
  960. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_decomposition_ground_truth.py +0 -0
  961. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_dsl_builder_api.py +0 -0
  962. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_dynamics_core_examples.py +0 -0
  963. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_embedding_construction.py +0 -0
  964. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_embedding_visualization.py +0 -0
  965. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_incidence_gadget_encoding.py +0 -0
  966. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_interactive_multilayer.py +0 -0
  967. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_inverse_network.py +0 -0
  968. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_layer_extraction.py +0 -0
  969. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_manipulation.py +0 -0
  970. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_multilayer_vectorized_aggregation.py +0 -0
  971. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_multiplex_aggregate.py +0 -0
  972. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_multiplex_dynamics.py +0 -0
  973. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_n2v_embedding.py +0 -0
  974. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_network_decomposition.py +0 -0
  975. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_network_decomposition_meta_paths.py +0 -0
  976. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_numeric_encoding.py +0 -0
  977. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_pattern_matching.py +0 -0
  978. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_example_ppr.py +0 -0
  979. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_examples_zoo_consolidation.py +0 -0
  980. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_exception_taxonomy.py +0 -0
  981. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_exceptions.py +0 -0
  982. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_experiments.py +0 -0
  983. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_explain_attribution.py +0 -0
  984. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_fast_examples.py +0 -0
  985. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_flagship_progress_demo.py +0 -0
  986. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_flow_hierarchy.py +0 -0
  987. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_fuzzing_properties.py +0 -0
  988. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_generate_all_outputs.py +0 -0
  989. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_generate_quickstart_outputs.py +0 -0
  990. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_generate_visualization_images.py +0 -0
  991. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_golden_toy_examples.py +0 -0
  992. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_graph_ops.py +0 -0
  993. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_graph_summarization.py +0 -0
  994. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_hedwig_adjustment.py +0 -0
  995. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_hedwig_significance.py +0 -0
  996. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_improved_errors.py +0 -0
  997. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_incidence_gadget_encoding.py +0 -0
  998. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_infomap_fix.py +0 -0
  999. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_interlayer_links_fix.py +0 -0
  1000. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_api_edge_cases.py +0 -0
  1001. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_arrow.py +0 -0
  1002. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_contracts_additional.py +0 -0
  1003. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_converters.py +0 -0
  1004. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_exceptions.py +0 -0
  1005. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_integration.py +0 -0
  1006. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_roundtrip.py +0 -0
  1007. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_io_schema.py +0 -0
  1008. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_issue_19_fix.py +0 -0
  1009. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_lab.py +0 -0
  1010. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_lab_additional.py +0 -0
  1011. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_lab_correctness.py +0 -0
  1012. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_label_propagation.py +0 -0
  1013. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_layer_extraction_fix.py +0 -0
  1014. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_layer_similarity.py +0 -0
  1015. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_layout_algorithms.py +0 -0
  1016. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_lazy_evaluation.py +0 -0
  1017. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_leiden_multilayer.py +0 -0
  1018. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_linter.py +0 -0
  1019. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_logging_conversion.py +0 -0
  1020. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_main_module.py +0 -0
  1021. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_master_regulators_example.py +0 -0
  1022. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_math_invariants.py +0 -0
  1023. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_mcp_server.py +0 -0
  1024. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_meta_analysis.py +0 -0
  1025. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_meta_flow_report.py +0 -0
  1026. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_metamorphic.py +0 -0
  1027. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_metapath2vec.py +0 -0
  1028. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ml_embedding_evaluation.py +0 -0
  1029. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_monoplex_nx_wrapper.py +0 -0
  1030. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_mpc.py +0 -0
  1031. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_centrality.py +0 -0
  1032. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_clustering_coefficients.py +0 -0
  1033. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_cornercases.py +0 -0
  1034. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_edge_fix.py +0 -0
  1035. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_embedding_models.py +0 -0
  1036. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_integration.py +0 -0
  1037. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_leiden_uq.py +0 -0
  1038. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_modularity.py +0 -0
  1039. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multilayer_visualizations.py +0 -0
  1040. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multinet_aggregation.py +0 -0
  1041. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multinet_aggregation_additional.py +0 -0
  1042. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multiplex_layer_interop.py +0 -0
  1043. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multiplex_participation.py +0 -0
  1044. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multiplex_properties.py +0 -0
  1045. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multirank.py +0 -0
  1046. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_multixrank.py +0 -0
  1047. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_network_conversion.py +0 -0
  1048. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_network_version.py +0 -0
  1049. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_networkx_compatibility.py +0 -0
  1050. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_new_algorithms.py +0 -0
  1051. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_new_multilayer_metrics.py +0 -0
  1052. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_node_edge_parity.py +0 -0
  1053. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_norc.py +0 -0
  1054. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_nullmodel_sanity.py +0 -0
  1055. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_nullmodels.py +0 -0
  1056. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_nullmodels_contracts.py +0 -0
  1057. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_nx_compat_extended.py +0 -0
  1058. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ollivier_ricci_multilayer.py +0 -0
  1059. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_out_of_core.py +0 -0
  1060. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_parallel.py +0 -0
  1061. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_parallel_execution.py +0 -0
  1062. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_parsers_comprehensive.py +0 -0
  1063. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_parsers_coverage.py +0 -0
  1064. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_partition_uq.py +0 -0
  1065. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_partition_uq_integration.py +0 -0
  1066. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_paths.py +0 -0
  1067. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_paths_additional.py +0 -0
  1068. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_paths_contracts.py +0 -0
  1069. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_paths_executor.py +0 -0
  1070. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_paths_result.py +0 -0
  1071. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_performance_core.py +0 -0
  1072. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_pipeline.py +0 -0
  1073. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_plugin_examples.py +0 -0
  1074. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_plugin_system.py +0 -0
  1075. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_plugins.py +0 -0
  1076. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_plugins_contracts.py +0 -0
  1077. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_profiling.py +0 -0
  1078. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_profiling_additional.py +0 -0
  1079. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_properties.py +0 -0
  1080. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_provenance_canonical.py +0 -0
  1081. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_provenance_replay.py +0 -0
  1082. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_provenance_schema.py +0 -0
  1083. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_public_api_exports.py +0 -0
  1084. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_pymnet_style.py +0 -0
  1085. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_pypi_publish_workflow.py +0 -0
  1086. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_query_algebra.py +0 -0
  1087. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_query_equivalence.py +0 -0
  1088. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_r_interop.py +0 -0
  1089. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_random_generators_additional.py +0 -0
  1090. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_random_generators_extended.py +0 -0
  1091. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_random_walkers.py +0 -0
  1092. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_random_walks.py +0 -0
  1093. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_readme_flagship_example.py +0 -0
  1094. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_requirements.py +0 -0
  1095. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_result_explain_debug.py +0 -0
  1096. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_ricci_visualization.py +0 -0
  1097. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_robustness.py +0 -0
  1098. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_robustness_additional.py +0 -0
  1099. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_robustness_testing.py +0 -0
  1100. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_root_conftest.py +0 -0
  1101. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_roundtrip_invariants.py +0 -0
  1102. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_run_quickstart_snippets.py +0 -0
  1103. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sankey_visualization.py +0 -0
  1104. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sbm_autocommunity.py +0 -0
  1105. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sbm_generator.py +0 -0
  1106. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sbm_metrics.py +0 -0
  1107. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sbm_runner_integration.py +0 -0
  1108. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_schema_and_immutable.py +0 -0
  1109. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_seeding.py +0 -0
  1110. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_selection_uq.py +0 -0
  1111. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_selection_uq_empty_groups.py +0 -0
  1112. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_selection_uq_integration.py +0 -0
  1113. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_semiring_negative_cases.py +0 -0
  1114. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_semiring_pareto.py +0 -0
  1115. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_semiring_registry.py +0 -0
  1116. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_semiring_types.py +0 -0
  1117. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_semiring_verification.py +0 -0
  1118. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sensitivity_executor.py +0 -0
  1119. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sidecar.py +0 -0
  1120. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sir_epidemic.py +0 -0
  1121. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_sir_multiplex.py +0 -0
  1122. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_spectral_multilayer.py +0 -0
  1123. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_statistical_report.py +0 -0
  1124. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_comparison.py +0 -0
  1125. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_core.py +0 -0
  1126. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_edge_cases.py +0 -0
  1127. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_provenance.py +0 -0
  1128. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_provenance_dataclass.py +0 -0
  1129. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_registry.py +0 -0
  1130. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_scalar_uncertainty.py +0 -0
  1131. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stats_verify.py +0 -0
  1132. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_stratified_uq.py +0 -0
  1133. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_streaming_topk.py +0 -0
  1134. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_successive_halving.py +0 -0
  1135. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_supporting_extended.py +0 -0
  1136. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_supra_matrix_function_centrality.py +0 -0
  1137. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal.py +0 -0
  1138. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal_algorithms.py +0 -0
  1139. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal_builder.py +0 -0
  1140. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal_dsl.py +0 -0
  1141. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal_duration_parsing.py +0 -0
  1142. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal_utils.py +0 -0
  1143. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal_utils_extended.py +0 -0
  1144. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_temporal_windowed_queries.py +0 -0
  1145. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_tensor_representation.py +0 -0
  1146. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_tutorial_10min.py +0 -0
  1147. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty.py +0 -0
  1148. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty_additional.py +0 -0
  1149. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty_builder_integration.py +0 -0
  1150. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty_defaults.py +0 -0
  1151. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty_dsl_integration.py +0 -0
  1152. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty_engines.py +0 -0
  1153. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty_oracles.py +0 -0
  1154. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uncertainty_runner.py +0 -0
  1155. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uq_algebra.py +0 -0
  1156. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uq_integration.py +0 -0
  1157. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uq_resolution.py +0 -0
  1158. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_uq_spine.py +0 -0
  1159. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_user_journey_simulation.py +0 -0
  1160. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_utils.py +0 -0
  1161. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_utils_coverage.py +0 -0
  1162. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_utils_extended.py +0 -0
  1163. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_validation.py +0 -0
  1164. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_validation_module.py +0 -0
  1165. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_verification_api_differential.py +0 -0
  1166. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_verification_centrality.py +0 -0
  1167. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_verification_communities.py +0 -0
  1168. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_verification_determinism_parallelism.py +0 -0
  1169. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_verification_dsl_equivalence.py +0 -0
  1170. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_verification_metamorphic_harness.py +0 -0
  1171. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_verification_provenance_oracles.py +0 -0
  1172. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_versatility.py +0 -0
  1173. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_benchmark.py +0 -0
  1174. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_bezier.py +0 -0
  1175. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_colors.py +0 -0
  1176. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_imports.py +0 -0
  1177. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_layouts.py +0 -0
  1178. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_multilayer_additional.py +0 -0
  1179. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_polyfit.py +0 -0
  1180. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_ricci_layout_helpers.py +0 -0
  1181. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualization_supra_heatmap.py +0 -0
  1182. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_visualize_matrix_fix.py +0 -0
  1183. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_workflows.py +0 -0
  1184. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_wrappers_additional.py +0 -0
  1185. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_wrappers_node2vec.py +0 -0
  1186. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_wrappers_r_interop.py +0 -0
  1187. {py3plex-2.0.0 → py3plex-2.0.6}/tests/test_wrappers_train_node2vec.py +0 -0
@@ -0,0 +1,5 @@
1
+ include py3plex/algorithms/hedwig/assets/*
2
+ include py3plex/datasets/_data/*
3
+ global-exclude *.py[cod]
4
+ global-exclude __pycache__/*
5
+ prune **/__pycache__
py3plex-2.0.6/PKG-INFO ADDED
@@ -0,0 +1,388 @@
1
+ Metadata-Version: 2.4
2
+ Name: py3plex
3
+ Version: 2.0.6
4
+ Summary: A Multilayer network analysis python3 library
5
+ Author-email: Blaž Škrlj <blaz.skrlj@ijs.si>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/SkBlaz/py3plex
8
+ Project-URL: Documentation, https://skblaz.github.io/py3plex/
9
+ Project-URL: Repository, https://github.com/SkBlaz/py3plex
10
+ Project-URL: Bug Tracker, https://github.com/SkBlaz/py3plex/issues
11
+ Keywords: network analysis,multilayer networks,heterogeneous networks,graph visualization,network science
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Science/Research
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.8
17
+ Classifier: Programming Language :: Python :: 3.9
18
+ Classifier: Programming Language :: Python :: 3.10
19
+ Classifier: Programming Language :: Python :: 3.11
20
+ Classifier: Programming Language :: Python :: 3.12
21
+ Classifier: Programming Language :: Python :: 3.13
22
+ Classifier: Topic :: Scientific/Engineering :: Information Analysis
23
+ Classifier: Topic :: Scientific/Engineering :: Visualization
24
+ Requires-Python: >=3.8
25
+ Description-Content-Type: text/markdown
26
+ License-File: LICENSE
27
+ Requires-Dist: numpy>=1.19.0
28
+ Requires-Dist: scipy>=1.5.0
29
+ Requires-Dist: networkx>=2.5
30
+ Requires-Dist: tqdm>=4.40.0
31
+ Requires-Dist: matplotlib>=3.3.0
32
+ Requires-Dist: scikit-learn>=0.24.0
33
+ Requires-Dist: bitarray>=2.0.0
34
+ Requires-Dist: seaborn>=0.11.0
35
+ Provides-Extra: dev
36
+ Requires-Dist: pytest>=7.0; extra == "dev"
37
+ Requires-Dist: pytest-timeout>=2.1; extra == "dev"
38
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
39
+ Requires-Dist: pytest-benchmark<5.0,>=4.0; extra == "dev"
40
+ Requires-Dist: pytest-rerunfailures>=12.0; extra == "dev"
41
+ Requires-Dist: black>=23.0; extra == "dev"
42
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
43
+ Requires-Dist: mypy>=1.0; extra == "dev"
44
+ Requires-Dist: types-six>=1.16.0; extra == "dev"
45
+ Requires-Dist: pre-commit>=3.0; extra == "dev"
46
+ Requires-Dist: crosshair-tool>=0.0.60; extra == "dev"
47
+ Requires-Dist: icontract>=2.6.0; extra == "dev"
48
+ Requires-Dist: z3-solver>=4.12.0; extra == "dev"
49
+ Requires-Dist: hypothesis>=6.0; extra == "dev"
50
+ Provides-Extra: tests
51
+ Requires-Dist: pytest>=7.0; extra == "tests"
52
+ Requires-Dist: pytest-timeout>=2.1; extra == "tests"
53
+ Requires-Dist: pytest-cov>=4.0; extra == "tests"
54
+ Requires-Dist: pytest-rerunfailures>=12.0; extra == "tests"
55
+ Requires-Dist: hypothesis>=6.0; extra == "tests"
56
+ Requires-Dist: hypothesis-networkx>=0.2.0; extra == "tests"
57
+ Requires-Dist: networkx>=2.5; extra == "tests"
58
+ Requires-Dist: numpy>=1.19.0; extra == "tests"
59
+ Requires-Dist: scipy>=1.5.0; extra == "tests"
60
+ Requires-Dist: python-louvain>=0.16; extra == "tests"
61
+ Provides-Extra: infomap
62
+ Requires-Dist: infomap>=2.0.0; extra == "infomap"
63
+ Provides-Extra: algos
64
+ Requires-Dist: python-louvain>=0.16; extra == "algos"
65
+ Requires-Dist: cdlib>=0.3.0; extra == "algos"
66
+ Requires-Dist: gensim>=4.0.0; extra == "algos"
67
+ Requires-Dist: rdflib>=6.0.0; extra == "algos"
68
+ Provides-Extra: viz
69
+ Requires-Dist: plotly>=5.0.0; extra == "viz"
70
+ Requires-Dist: python-igraph>=0.10.0; extra == "viz"
71
+ Provides-Extra: workflows
72
+ Requires-Dist: pyyaml>=5.1; extra == "workflows"
73
+ Provides-Extra: arrow
74
+ Requires-Dist: pyarrow>=10.0.0; extra == "arrow"
75
+ Provides-Extra: compat
76
+ Requires-Dist: networkx>=2.5; extra == "compat"
77
+ Requires-Dist: scipy>=1.5.0; extra == "compat"
78
+ Requires-Dist: pandas>=1.2.0; extra == "compat"
79
+ Requires-Dist: pyarrow>=10.0.0; extra == "compat"
80
+ Provides-Extra: igraph
81
+ Requires-Dist: python-igraph>=0.10.0; extra == "igraph"
82
+ Provides-Extra: pyg
83
+ Requires-Dist: torch>=1.10.0; extra == "pyg"
84
+ Requires-Dist: torch-geometric>=2.0.0; extra == "pyg"
85
+ Provides-Extra: dgl-compat
86
+ Requires-Dist: dgl>=0.9.0; extra == "dgl-compat"
87
+ Provides-Extra: mcp
88
+ Requires-Dist: mcp>=0.9.0; python_version >= "3.10" and extra == "mcp"
89
+ Provides-Extra: examples
90
+ Requires-Dist: sympy>=1.9; extra == "examples"
91
+ Provides-Extra: optional
92
+ Requires-Dist: infomap>=2.0.0; extra == "optional"
93
+ Requires-Dist: python-louvain>=0.16; extra == "optional"
94
+ Requires-Dist: cdlib>=0.3.0; extra == "optional"
95
+ Requires-Dist: gensim>=4.0.0; extra == "optional"
96
+ Requires-Dist: rdflib>=6.0.0; extra == "optional"
97
+ Requires-Dist: plotly>=5.0.0; extra == "optional"
98
+ Requires-Dist: python-igraph>=0.10.0; extra == "optional"
99
+ Requires-Dist: pyyaml>=5.1; extra == "optional"
100
+ Requires-Dist: pyarrow>=10.0.0; extra == "optional"
101
+ Requires-Dist: mcp>=0.9.0; python_version >= "3.10" and extra == "optional"
102
+ Requires-Dist: sympy>=1.9; extra == "optional"
103
+ Dynamic: license-file
104
+
105
+
106
+ <img src="https://github.com/user-attachments/assets/47e16a25-cd58-41eb-9ccd-b40191758d91" alt="py3plex logo" width="400">
107
+
108
+ [![Tests](https://github.com/SkBlaz/py3plex/actions/workflows/tests.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/tests.yml)
109
+ [![Test coverage](https://img.shields.io/badge/test_coverage-40.1%25-green)](https://github.com/SkBlaz/py3plex/actions/workflows/tests.yml)
110
+ [![Type Coverage](https://img.shields.io/badge/type_coverage-79.1%25-yellowgreen)](https://github.com/SkBlaz/py3plex/actions/workflows/type-coverage.yml)
111
+ [![Examples](https://github.com/SkBlaz/py3plex/actions/workflows/examples.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/examples.yml)
112
+ [![Tutorial](https://github.com/SkBlaz/py3plex/actions/workflows/tutorial-validation.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/tutorial-validation.yml)
113
+ [![Code Quality](https://github.com/SkBlaz/py3plex/actions/workflows/code-quality.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/code-quality.yml)
114
+ [![Benchmarks](https://github.com/SkBlaz/py3plex/actions/workflows/benchmarks.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/benchmarks.yml)
115
+ [![Documentation](https://github.com/SkBlaz/py3plex/actions/workflows/doc-coverage.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/doc-coverage.yml)
116
+ [![Formal Verification](https://github.com/SkBlaz/py3plex/actions/workflows/verify.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/verify.yml)
117
+ [![Lean formal verification](https://github.com/SkBlaz/py3plex/actions/workflows/formal.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/formal.yml)
118
+ [![Fuzzing](https://github.com/SkBlaz/py3plex/actions/workflows/fuzzing.yml/badge.svg)](https://github.com/SkBlaz/py3plex/actions/workflows/fuzzing.yml)
119
+ [![PyPI version](https://img.shields.io/pypi/v/py3plex.svg?cacheSeconds=300)](https://pypi.org/project/py3plex/)
120
+ [![PyPI - Downloads](https://img.shields.io/pypi/dm/py3plex)](https://pypistats.org/packages/py3plex)
121
+ ![CLI Tool](https://img.shields.io/badge/CLI%20Tool-Available-brightgreen)
122
+ ![Docker](https://img.shields.io/badge/Docker-Available-blue)
123
+ ![Lines of Code](https://img.shields.io/badge/lines-213.6K-blue)
124
+ ![Test Count](https://img.shields.io/badge/tests-9.7K-blue)
125
+
126
+ *Multilayer networks* are complex networks with additional information assigned to nodes or edges (or both). This library includes
127
+ some of the state-of-the-art algorithms for decomposition, visualization and analysis of such networks.
128
+
129
+ **Key Features:**
130
+ * SQL-like DSL for intuitive network queries with smart defaults
131
+ * Multilayer network visualization and analysis
132
+ * Community detection and centrality measures
133
+ * Network decomposition and embeddings
134
+
135
+
136
+ ```python
137
+ from py3plex.core import datasets
138
+ from py3plex.dsl import Q
139
+
140
+ # Load a built-in multilayer biological network (~500 nodes, 4 layers)
141
+ network = datasets.fetch_multilayer("human_ppi_gene_disease_drug")
142
+
143
+ # Find key regulator candidates with integrated community detection and uncertainty quantification
144
+ master_regulators = (
145
+ Q.communities( # Automated community detection
146
+ mode="pareto", # Multi-objective Pareto selection
147
+ uq=True, # Uncertainty quantification enabled
148
+ uq_n_samples=30, # Robustness via 30 perturbed runs
149
+ uq_method="seed", # Vary random seeds for stability
150
+ seed=42, # Reproducibility
151
+ write_attrs={ # Attribute names for community info
152
+ "community_id": "community_id",
153
+ "community_stability": "community_stability",
154
+ },
155
+ )
156
+ .nodes() # Switch to node-level analysis
157
+ .node_type("gene") # Filter by node type
158
+ .where(degree__gt=3) # Remove peripheral nodes
159
+ .uq(method="perturbation", n_samples=100, ci=0.95, seed=42) # Quantify confidence
160
+ .compute("betweenness_centrality", "pagerank", "degree_centrality")
161
+ .per_layer() # Group by layer
162
+ .top_k(30, "betweenness_centrality__mean") # Top 30 per layer by mean
163
+ .end_grouping()
164
+ .coverage(mode="at_least", k=2) # Keep nodes that are hubs in ≥2 layers
165
+ .mutate( # Create derived influence score
166
+ score=lambda row: (
167
+ 0.5 * row.get("betweenness_centrality__mean", 0.0) +
168
+ 0.3 * row.get("pagerank__mean", 0.0) +
169
+ 0.2 * row.get("degree_centrality__mean", 0.0)
170
+ )
171
+ )
172
+ .order_by("score", desc=True)
173
+ .limit(20) # Final top 20 candidates
174
+ .explain(neighbors_top=5) # Enrich: community ID, top 5 partners, layers
175
+ .execute(network)
176
+ )
177
+
178
+ df = master_regulators.to_pandas(expand_uncertainty=True, expand_explanations=True)
179
+ print(df[["id", "layer", "community_id",
180
+ "betweenness_centrality__mean", "betweenness_centrality_ci95_low",
181
+ "betweenness_centrality_ci95_high", "score", "top_neighbors"]].head(10))
182
+ ```
183
+
184
+ Uses a strict two-phase flow:
185
+
186
+ 1. **Build query** on `Q...` (`.where()`, `.compute()`, `.order_by()`, `.per_layer()`, `.coverage()`, ...)
187
+ 2. **Execute once** with `.execute(network)`
188
+ 3. **Handle results** on `QueryResult` (`.to_pandas()`, `.group_summary()`, `.to_json()`, ...)
189
+
190
+ **Example output:**
191
+ ```
192
+ id layer community_id betweenness_centrality__mean betweenness_centrality_ci95_low betweenness_centrality_ci95_high score top_neighbors
193
+ 0 252 0 42 0.025961 0.021820 0.030102 0.015577 [{'id': '91', 'weight': 2.3}, {'id': '419', 'weight': 1.9}]
194
+ 1 91 0 42 0.024918 0.020902 0.028934 0.014951 [{'id': '252', 'weight': 2.3}, {'id': '103', 'weight': 2.1}]
195
+ 2 419 0 42 0.024184 0.020298 0.028070 0.014510 [{'id': '252', 'weight': 1.9}, {'id': '91', 'weight': 1.7}]
196
+ 3 103 0 42 0.023450 0.019596 0.027304 0.014069 [{'id': '91', 'weight': 2.1}, {'id': '252', 'weight': 1.8}]
197
+ 4 375 0 42 0.022716 0.018894 0.026538 0.013628 [{'id': '91', 'weight': 1.8}, {'id': '252', 'weight': 1.6}]
198
+ ```
199
+
200
+
201
+ **Key features demonstrated:**
202
+ - **Streamlined API**: Community detection integrated directly into the DSL query chain
203
+ - **AutoCommunity**: Multi-objective Pareto-optimal selection across algorithms (Louvain, Leiden, etc.)
204
+ - **Uncertainty Quantification**: Confidence intervals for both community detection and centrality measures
205
+ - **Cross-layer analysis**: `.coverage(mode="at_least", k=2)` keeps only nodes that are hubs in ≥2 layers
206
+ - **Interpretability**: `.explain()` enriches results with community IDs, top interaction partners, and layer presence
207
+ - **Composite scoring**: Weighted combination of multiple centrality measures for robust ranking
208
+
209
+ ### Ecosystem positioning
210
+
211
+ | Comparator | Focus | py3plex 2.0 relation |
212
+ |---|---|---|
213
+ | **py3plex 2019** | Early py3plex multilayer analysis + visualization | Historical base; 2.0 expands into reproducible DSL/workflow-first analysis. |
214
+ | **pymnet** | Formal multilayer modeling and metrics | Strongest Python formal multilayer peer; py3plex emphasizes workflows, UQ, and reproducibility. |
215
+ | **MultiNetX** | Lightweight NetworkX-style multilayer utilities | Similar graph object tooling; py3plex offers broader end-to-end analysis workflows. |
216
+ | **muxViz** | Visual multilayer analytics (R ecosystem) | Strong visual analytics peer; py3plex emphasizes scriptable Python workflows. |
217
+ | **R `multinet`** | Multiplex social-network mining | Social-network-focused peer; py3plex targets broader heterogeneous multilayer science use cases. |
218
+ | **tnetwork / DyNetx** | Temporal and dynamic graph workflows | Temporal overlap; py3plex adds multilayer semantics, DSL querying, and integrated dynamics. |
219
+ | **Reticula / Raphtory / pathpy** | Temporal-engine and path-centric ecosystems | Strong temporal/path engines; py3plex focuses on multilayer workflow integration and analyst ergonomics. |
220
+ | **NetworkX / igraph / graph-tool** | General-purpose graph analysis stacks | Core graph ecosystem overlap; py3plex adds layer-aware abstractions and reproducible multilayer workflows. |
221
+ | **tidygraph** | Fluent graph-as-table manipulation | Similar analyst grammar style; py3plex adapts it to Python multilayer semantics. |
222
+ | **NDlib** | Diffusion and epidemic simulation | Dynamics overlap; py3plex embeds dynamics inside multilayer, queryable, uncertainty-aware pipelines. |
223
+ | **PyTorch Geometric / DGL** | Graph deep learning frameworks | Adjacent graph-ML layer; py3plex focuses on preparation, querying, and scientific analysis workflows. |
224
+ | **Neo4j / Cypher** | Persistent property-graph querying | Query overlap; py3plex provides in-memory scientific multilayer DSL + metrics + exports. |
225
+ | **py3plex 2.0** | Query-driven reproducible multilayer analysis | Python-native workflow layer: DSL/builder API, layer algebra, UQ, temporal/dynamics, null models, and CLI. |
226
+
227
+ ![Py3plex Visualization Showcase](example_images/py3plex_showcase.png)
228
+
229
+ ## Getting Started
230
+
231
+ ### Installation
232
+
233
+ We recommend using [uv](https://docs.astral.sh/uv/) for fast, reliable Python environment management:
234
+
235
+ ```bash
236
+ # Install uv (if not already installed)
237
+ curl -LsSf https://astral.sh/uv/install.sh | sh
238
+
239
+ # Create and activate virtual environment
240
+ uv venv .venv
241
+ source .venv/bin/activate # On Windows: .venv\Scripts\activate
242
+
243
+ # Install py3plex
244
+ uv pip install py3plex
245
+
246
+ # Or install from source with development dependencies
247
+ uv pip install -e ".[dev]"
248
+ ```
249
+
250
+ Alternatively, use pip:
251
+ ```bash
252
+ pip install py3plex
253
+ ```
254
+
255
+ ### Optional Features
256
+
257
+ Install additional features as needed:
258
+
259
+ ```bash
260
+ # MCP server for AI agent integration (requires Python 3.10+)
261
+ pip install py3plex[mcp]
262
+
263
+ # Community detection algorithms
264
+ pip install py3plex[algos]
265
+
266
+ # Advanced visualization
267
+ pip install py3plex[viz]
268
+
269
+ # All optional features
270
+ pip install py3plex[mcp,algos,viz]
271
+
272
+ # Common optional feature bundle (algorithms + visualization + workflows + arrow + mcp)
273
+ pip install py3plex[optional]
274
+ ```
275
+
276
+ ### Contributing (First PR Quick Path)
277
+
278
+ If this is your first contribution, use this sequence:
279
+
280
+ ```bash
281
+ # 1) Create local dev environment and install package
282
+ make setup
283
+ make dev-install
284
+
285
+ # 2) Run formatting and checks before opening a PR
286
+ make format
287
+ make lint
288
+ make test
289
+ ```
290
+
291
+ Helpful commands:
292
+
293
+ ```bash
294
+ make help # List all project commands
295
+ make ci # Run lint + tests in CI-style order
296
+ ```
297
+
298
+ Safety notes for contributors:
299
+ - Keep changes focused and add tests next to the feature you modify.
300
+ - Do not add new markdown files unless explicitly requested (enforced by `tests/test_link_checker.py` to prevent documentation drift).
301
+ - Prefer running targeted tests first, then broader checks before opening a PR.
302
+ - For docs-only updates, run `make docs-check` before opening a PR.
303
+
304
+ ### MCP Integration (AI Agents)
305
+
306
+ py3plex provides a Model Context Protocol (MCP) server for integration with AI coding assistants:
307
+
308
+ **Requirements**: Python 3.10 or higher (due to MCP SDK dependency)
309
+
310
+ ```bash
311
+ # Install with MCP support (Python 3.10+ required)
312
+ pip install py3plex[mcp]
313
+
314
+ # Start MCP server
315
+ py3plex-mcp
316
+ ```
317
+
318
+ **Configure Claude Desktop** (`claude_desktop_config.json`):
319
+ ```json
320
+ {
321
+ "mcpServers": {
322
+ "py3plex": {
323
+ "command": "py3plex-mcp"
324
+ }
325
+ }
326
+ }
327
+ ```
328
+
329
+ The MCP server exposes:
330
+ - **7 tools**: Load networks, run queries (with DSL v2 support), detect communities, export results, and more
331
+ - **3 resources**: Complete documentation, DSL v2 reference, and tool schemas
332
+ - **DSL v2 support**: Modern builder API with type hints (`Q.nodes().where(degree__gt=5).compute('pagerank')`)
333
+ - **Security-first**: Safe file access, automatic output directory, structured errors
334
+
335
+ See [AGENTS.md](AGENTS.md#mcp-integration-model-context-protocol) for complete MCP documentation including DSL v2 examples.
336
+
337
+ ### Resources
338
+
339
+ * **Documentation:** [https://skblaz.github.io/py3plex/](https://skblaz.github.io/py3plex/)
340
+ * **Technical Book (PDF):** [Practical Multilayer Network Analysis with Py3plex](docs/py3plex_book.pdf) - Complete handbook (106 pages)
341
+ * **Examples:** [examples/](examples/) - 170+ example scripts demonstrating usage
342
+
343
+ ## License
344
+
345
+ Py3plex is released under the [MIT License](LICENSE).
346
+
347
+ **Note on licensing:** Prior to version 1.0, the project was distributed under the BSD-3-Clause license. Starting with version 1.0, the license was changed to MIT to better align with the broader Python scientific ecosystem and simplify contribution and reuse. Both licenses are permissive and OSI-approved.
348
+
349
+ # Citations
350
+ ```
351
+ @Article{Skrlj2019,
352
+ author={Skrlj, Blaz
353
+ and Kralj, Jan
354
+ and Lavrac, Nada},
355
+ title={Py3plex toolkit for visualization and analysis of multilayer networks},
356
+ journal={Applied Network Science},
357
+ year={2019},
358
+ volume={4},
359
+ number={1},
360
+ pages={94},
361
+ abstract={Complex networks are used as means for representing multimodal, real-life systems. With increasing amounts of data that lead to large multilayer networks consisting of different node and edge types, that can also be subject to temporal change, there is an increasing need for versatile visualization and analysis software. This work presents a lightweight Python library, Py3plex, which focuses on the visualization and analysis of multilayer networks. The library implements a set of simple graphical primitives supporting intra- as well as inter-layer visualization. It also supports many common operations on multilayer networks, such as aggregation, slicing, indexing, traversal, and more. The paper also focuses on how node embeddings can be used to speed up contemporary (multilayer) layout computation. The library's functionality is showcased on both real and synthetic networks.},
362
+ issn={2364-8228},
363
+ doi={10.1007/s41109-019-0203-7},
364
+ url={https://doi.org/10.1007/s41109-019-0203-7}
365
+ }
366
+ ```
367
+ and
368
+ ```
369
+ @InProceedings{10.1007/978-3-030-05411-3_60,
370
+ author="{\v{S}}krlj, Bla{\v{z}}
371
+ and Kralj, Jan
372
+ and Lavra{\v{c}}, Nada",
373
+ editor="Aiello, Luca Maria
374
+ and Cherifi, Chantal
375
+ and Cherifi, Hocine
376
+ and Lambiotte, Renaud
377
+ and Li{\'o}, Pietro
378
+ and Rocha, Luis M.",
379
+ title="Py3plex: A Library for Scalable Multilayer Network Analysis and Visualization",
380
+ booktitle="Complex Networks and Their Applications VII",
381
+ year="2019",
382
+ publisher="Springer International Publishing",
383
+ address="Cham",
384
+ pages="757--768",
385
+ abstract="Real-life systems are commonly represented as networks of interacting entities. While homogeneous networks consist of nodes of a single node type, multilayer networks are characterized by multiple types of nodes or edges, all present in the same system. Analysis and visualization of such networks represent a challenge for real-life complex network applications. The presented Py3plex Python-based library facilitates the exploration and visualization of multilayer networks. The library includes a diagonal projection-based network visualization, developed specifically for large networks with multiple node (and edge) types. The library also includes state-of-the-art methods for network decomposition and statistical analysis. The Py3plex functionality is showcased on real-world multilayer networks from the domains of biology and on synthetic networks.",
386
+ isbn="978-3-030-05411-3"
387
+ }
388
+ ```