tnfr 3.0.3__py3-none-any.whl → 8.5.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of tnfr might be problematic. Click here for more details.

Files changed (360) hide show
  1. tnfr/__init__.py +375 -56
  2. tnfr/__init__.pyi +33 -0
  3. tnfr/_compat.py +10 -0
  4. tnfr/_generated_version.py +34 -0
  5. tnfr/_version.py +49 -0
  6. tnfr/_version.pyi +7 -0
  7. tnfr/alias.py +723 -0
  8. tnfr/alias.pyi +108 -0
  9. tnfr/backends/__init__.py +354 -0
  10. tnfr/backends/jax_backend.py +173 -0
  11. tnfr/backends/numpy_backend.py +238 -0
  12. tnfr/backends/optimized_numpy.py +420 -0
  13. tnfr/backends/torch_backend.py +408 -0
  14. tnfr/cache.py +171 -0
  15. tnfr/cache.pyi +13 -0
  16. tnfr/cli/__init__.py +110 -0
  17. tnfr/cli/__init__.pyi +26 -0
  18. tnfr/cli/arguments.py +489 -0
  19. tnfr/cli/arguments.pyi +29 -0
  20. tnfr/cli/execution.py +914 -0
  21. tnfr/cli/execution.pyi +70 -0
  22. tnfr/cli/interactive_validator.py +614 -0
  23. tnfr/cli/utils.py +51 -0
  24. tnfr/cli/utils.pyi +7 -0
  25. tnfr/cli/validate.py +236 -0
  26. tnfr/compat/__init__.py +85 -0
  27. tnfr/compat/dataclass.py +136 -0
  28. tnfr/compat/jsonschema_stub.py +61 -0
  29. tnfr/compat/matplotlib_stub.py +73 -0
  30. tnfr/compat/numpy_stub.py +155 -0
  31. tnfr/config/__init__.py +224 -0
  32. tnfr/config/__init__.pyi +10 -0
  33. tnfr/config/constants.py +104 -0
  34. tnfr/config/constants.pyi +12 -0
  35. tnfr/config/defaults.py +54 -0
  36. tnfr/config/defaults_core.py +212 -0
  37. tnfr/config/defaults_init.py +33 -0
  38. tnfr/config/defaults_metric.py +104 -0
  39. tnfr/config/feature_flags.py +81 -0
  40. tnfr/config/feature_flags.pyi +16 -0
  41. tnfr/config/glyph_constants.py +31 -0
  42. tnfr/config/init.py +77 -0
  43. tnfr/config/init.pyi +8 -0
  44. tnfr/config/operator_names.py +254 -0
  45. tnfr/config/operator_names.pyi +36 -0
  46. tnfr/config/physics_derivation.py +354 -0
  47. tnfr/config/presets.py +83 -0
  48. tnfr/config/presets.pyi +7 -0
  49. tnfr/config/security.py +927 -0
  50. tnfr/config/thresholds.py +114 -0
  51. tnfr/config/tnfr_config.py +498 -0
  52. tnfr/constants/__init__.py +92 -0
  53. tnfr/constants/__init__.pyi +92 -0
  54. tnfr/constants/aliases.py +33 -0
  55. tnfr/constants/aliases.pyi +27 -0
  56. tnfr/constants/init.py +33 -0
  57. tnfr/constants/init.pyi +12 -0
  58. tnfr/constants/metric.py +104 -0
  59. tnfr/constants/metric.pyi +19 -0
  60. tnfr/core/__init__.py +33 -0
  61. tnfr/core/container.py +226 -0
  62. tnfr/core/default_implementations.py +329 -0
  63. tnfr/core/interfaces.py +279 -0
  64. tnfr/dynamics/__init__.py +238 -0
  65. tnfr/dynamics/__init__.pyi +83 -0
  66. tnfr/dynamics/adaptation.py +267 -0
  67. tnfr/dynamics/adaptation.pyi +7 -0
  68. tnfr/dynamics/adaptive_sequences.py +189 -0
  69. tnfr/dynamics/adaptive_sequences.pyi +14 -0
  70. tnfr/dynamics/aliases.py +23 -0
  71. tnfr/dynamics/aliases.pyi +19 -0
  72. tnfr/dynamics/bifurcation.py +232 -0
  73. tnfr/dynamics/canonical.py +229 -0
  74. tnfr/dynamics/canonical.pyi +48 -0
  75. tnfr/dynamics/coordination.py +385 -0
  76. tnfr/dynamics/coordination.pyi +25 -0
  77. tnfr/dynamics/dnfr.py +3034 -0
  78. tnfr/dynamics/dnfr.pyi +26 -0
  79. tnfr/dynamics/dynamic_limits.py +225 -0
  80. tnfr/dynamics/feedback.py +252 -0
  81. tnfr/dynamics/feedback.pyi +24 -0
  82. tnfr/dynamics/fused_dnfr.py +454 -0
  83. tnfr/dynamics/homeostasis.py +157 -0
  84. tnfr/dynamics/homeostasis.pyi +14 -0
  85. tnfr/dynamics/integrators.py +661 -0
  86. tnfr/dynamics/integrators.pyi +36 -0
  87. tnfr/dynamics/learning.py +310 -0
  88. tnfr/dynamics/learning.pyi +33 -0
  89. tnfr/dynamics/metabolism.py +254 -0
  90. tnfr/dynamics/nbody.py +796 -0
  91. tnfr/dynamics/nbody_tnfr.py +783 -0
  92. tnfr/dynamics/propagation.py +326 -0
  93. tnfr/dynamics/runtime.py +908 -0
  94. tnfr/dynamics/runtime.pyi +77 -0
  95. tnfr/dynamics/sampling.py +36 -0
  96. tnfr/dynamics/sampling.pyi +7 -0
  97. tnfr/dynamics/selectors.py +711 -0
  98. tnfr/dynamics/selectors.pyi +85 -0
  99. tnfr/dynamics/structural_clip.py +207 -0
  100. tnfr/errors/__init__.py +37 -0
  101. tnfr/errors/contextual.py +492 -0
  102. tnfr/execution.py +223 -0
  103. tnfr/execution.pyi +45 -0
  104. tnfr/extensions/__init__.py +205 -0
  105. tnfr/extensions/__init__.pyi +18 -0
  106. tnfr/extensions/base.py +173 -0
  107. tnfr/extensions/base.pyi +35 -0
  108. tnfr/extensions/business/__init__.py +71 -0
  109. tnfr/extensions/business/__init__.pyi +11 -0
  110. tnfr/extensions/business/cookbook.py +88 -0
  111. tnfr/extensions/business/cookbook.pyi +8 -0
  112. tnfr/extensions/business/health_analyzers.py +202 -0
  113. tnfr/extensions/business/health_analyzers.pyi +9 -0
  114. tnfr/extensions/business/patterns.py +183 -0
  115. tnfr/extensions/business/patterns.pyi +8 -0
  116. tnfr/extensions/medical/__init__.py +73 -0
  117. tnfr/extensions/medical/__init__.pyi +11 -0
  118. tnfr/extensions/medical/cookbook.py +88 -0
  119. tnfr/extensions/medical/cookbook.pyi +8 -0
  120. tnfr/extensions/medical/health_analyzers.py +181 -0
  121. tnfr/extensions/medical/health_analyzers.pyi +9 -0
  122. tnfr/extensions/medical/patterns.py +163 -0
  123. tnfr/extensions/medical/patterns.pyi +8 -0
  124. tnfr/flatten.py +262 -0
  125. tnfr/flatten.pyi +21 -0
  126. tnfr/gamma.py +354 -0
  127. tnfr/gamma.pyi +36 -0
  128. tnfr/glyph_history.py +377 -0
  129. tnfr/glyph_history.pyi +35 -0
  130. tnfr/glyph_runtime.py +19 -0
  131. tnfr/glyph_runtime.pyi +8 -0
  132. tnfr/immutable.py +218 -0
  133. tnfr/immutable.pyi +36 -0
  134. tnfr/initialization.py +203 -0
  135. tnfr/initialization.pyi +65 -0
  136. tnfr/io.py +10 -0
  137. tnfr/io.pyi +13 -0
  138. tnfr/locking.py +37 -0
  139. tnfr/locking.pyi +7 -0
  140. tnfr/mathematics/__init__.py +79 -0
  141. tnfr/mathematics/backend.py +453 -0
  142. tnfr/mathematics/backend.pyi +99 -0
  143. tnfr/mathematics/dynamics.py +408 -0
  144. tnfr/mathematics/dynamics.pyi +90 -0
  145. tnfr/mathematics/epi.py +391 -0
  146. tnfr/mathematics/epi.pyi +65 -0
  147. tnfr/mathematics/generators.py +242 -0
  148. tnfr/mathematics/generators.pyi +29 -0
  149. tnfr/mathematics/metrics.py +119 -0
  150. tnfr/mathematics/metrics.pyi +16 -0
  151. tnfr/mathematics/operators.py +239 -0
  152. tnfr/mathematics/operators.pyi +59 -0
  153. tnfr/mathematics/operators_factory.py +124 -0
  154. tnfr/mathematics/operators_factory.pyi +11 -0
  155. tnfr/mathematics/projection.py +87 -0
  156. tnfr/mathematics/projection.pyi +33 -0
  157. tnfr/mathematics/runtime.py +182 -0
  158. tnfr/mathematics/runtime.pyi +64 -0
  159. tnfr/mathematics/spaces.py +256 -0
  160. tnfr/mathematics/spaces.pyi +83 -0
  161. tnfr/mathematics/transforms.py +305 -0
  162. tnfr/mathematics/transforms.pyi +62 -0
  163. tnfr/metrics/__init__.py +79 -0
  164. tnfr/metrics/__init__.pyi +20 -0
  165. tnfr/metrics/buffer_cache.py +163 -0
  166. tnfr/metrics/buffer_cache.pyi +24 -0
  167. tnfr/metrics/cache_utils.py +214 -0
  168. tnfr/metrics/coherence.py +2009 -0
  169. tnfr/metrics/coherence.pyi +129 -0
  170. tnfr/metrics/common.py +158 -0
  171. tnfr/metrics/common.pyi +35 -0
  172. tnfr/metrics/core.py +316 -0
  173. tnfr/metrics/core.pyi +13 -0
  174. tnfr/metrics/diagnosis.py +833 -0
  175. tnfr/metrics/diagnosis.pyi +86 -0
  176. tnfr/metrics/emergence.py +245 -0
  177. tnfr/metrics/export.py +179 -0
  178. tnfr/metrics/export.pyi +7 -0
  179. tnfr/metrics/glyph_timing.py +379 -0
  180. tnfr/metrics/glyph_timing.pyi +81 -0
  181. tnfr/metrics/learning_metrics.py +280 -0
  182. tnfr/metrics/learning_metrics.pyi +21 -0
  183. tnfr/metrics/phase_coherence.py +351 -0
  184. tnfr/metrics/phase_compatibility.py +349 -0
  185. tnfr/metrics/reporting.py +183 -0
  186. tnfr/metrics/reporting.pyi +25 -0
  187. tnfr/metrics/sense_index.py +1203 -0
  188. tnfr/metrics/sense_index.pyi +9 -0
  189. tnfr/metrics/trig.py +373 -0
  190. tnfr/metrics/trig.pyi +13 -0
  191. tnfr/metrics/trig_cache.py +233 -0
  192. tnfr/metrics/trig_cache.pyi +10 -0
  193. tnfr/multiscale/__init__.py +32 -0
  194. tnfr/multiscale/hierarchical.py +517 -0
  195. tnfr/node.py +763 -0
  196. tnfr/node.pyi +139 -0
  197. tnfr/observers.py +255 -130
  198. tnfr/observers.pyi +31 -0
  199. tnfr/ontosim.py +144 -137
  200. tnfr/ontosim.pyi +28 -0
  201. tnfr/operators/__init__.py +1672 -0
  202. tnfr/operators/__init__.pyi +31 -0
  203. tnfr/operators/algebra.py +277 -0
  204. tnfr/operators/canonical_patterns.py +420 -0
  205. tnfr/operators/cascade.py +267 -0
  206. tnfr/operators/cycle_detection.py +358 -0
  207. tnfr/operators/definitions.py +4108 -0
  208. tnfr/operators/definitions.pyi +78 -0
  209. tnfr/operators/grammar.py +1164 -0
  210. tnfr/operators/grammar.pyi +140 -0
  211. tnfr/operators/hamiltonian.py +710 -0
  212. tnfr/operators/health_analyzer.py +809 -0
  213. tnfr/operators/jitter.py +272 -0
  214. tnfr/operators/jitter.pyi +11 -0
  215. tnfr/operators/lifecycle.py +314 -0
  216. tnfr/operators/metabolism.py +618 -0
  217. tnfr/operators/metrics.py +2138 -0
  218. tnfr/operators/network_analysis/__init__.py +27 -0
  219. tnfr/operators/network_analysis/source_detection.py +186 -0
  220. tnfr/operators/nodal_equation.py +395 -0
  221. tnfr/operators/pattern_detection.py +660 -0
  222. tnfr/operators/patterns.py +669 -0
  223. tnfr/operators/postconditions/__init__.py +38 -0
  224. tnfr/operators/postconditions/mutation.py +236 -0
  225. tnfr/operators/preconditions/__init__.py +1226 -0
  226. tnfr/operators/preconditions/coherence.py +305 -0
  227. tnfr/operators/preconditions/dissonance.py +236 -0
  228. tnfr/operators/preconditions/emission.py +128 -0
  229. tnfr/operators/preconditions/mutation.py +580 -0
  230. tnfr/operators/preconditions/reception.py +125 -0
  231. tnfr/operators/preconditions/resonance.py +364 -0
  232. tnfr/operators/registry.py +74 -0
  233. tnfr/operators/registry.pyi +9 -0
  234. tnfr/operators/remesh.py +1809 -0
  235. tnfr/operators/remesh.pyi +26 -0
  236. tnfr/operators/structural_units.py +268 -0
  237. tnfr/operators/unified_grammar.py +105 -0
  238. tnfr/parallel/__init__.py +54 -0
  239. tnfr/parallel/auto_scaler.py +234 -0
  240. tnfr/parallel/distributed.py +384 -0
  241. tnfr/parallel/engine.py +238 -0
  242. tnfr/parallel/gpu_engine.py +420 -0
  243. tnfr/parallel/monitoring.py +248 -0
  244. tnfr/parallel/partitioner.py +459 -0
  245. tnfr/py.typed +0 -0
  246. tnfr/recipes/__init__.py +22 -0
  247. tnfr/recipes/cookbook.py +743 -0
  248. tnfr/rng.py +178 -0
  249. tnfr/rng.pyi +26 -0
  250. tnfr/schemas/__init__.py +8 -0
  251. tnfr/schemas/grammar.json +94 -0
  252. tnfr/sdk/__init__.py +107 -0
  253. tnfr/sdk/__init__.pyi +19 -0
  254. tnfr/sdk/adaptive_system.py +173 -0
  255. tnfr/sdk/adaptive_system.pyi +21 -0
  256. tnfr/sdk/builders.py +370 -0
  257. tnfr/sdk/builders.pyi +51 -0
  258. tnfr/sdk/fluent.py +1121 -0
  259. tnfr/sdk/fluent.pyi +74 -0
  260. tnfr/sdk/templates.py +342 -0
  261. tnfr/sdk/templates.pyi +41 -0
  262. tnfr/sdk/utils.py +341 -0
  263. tnfr/secure_config.py +46 -0
  264. tnfr/security/__init__.py +70 -0
  265. tnfr/security/database.py +514 -0
  266. tnfr/security/subprocess.py +503 -0
  267. tnfr/security/validation.py +290 -0
  268. tnfr/selector.py +247 -0
  269. tnfr/selector.pyi +19 -0
  270. tnfr/sense.py +378 -0
  271. tnfr/sense.pyi +23 -0
  272. tnfr/services/__init__.py +17 -0
  273. tnfr/services/orchestrator.py +325 -0
  274. tnfr/sparse/__init__.py +39 -0
  275. tnfr/sparse/representations.py +492 -0
  276. tnfr/structural.py +705 -0
  277. tnfr/structural.pyi +83 -0
  278. tnfr/telemetry/__init__.py +35 -0
  279. tnfr/telemetry/cache_metrics.py +226 -0
  280. tnfr/telemetry/cache_metrics.pyi +64 -0
  281. tnfr/telemetry/nu_f.py +422 -0
  282. tnfr/telemetry/nu_f.pyi +108 -0
  283. tnfr/telemetry/verbosity.py +36 -0
  284. tnfr/telemetry/verbosity.pyi +15 -0
  285. tnfr/tokens.py +58 -0
  286. tnfr/tokens.pyi +36 -0
  287. tnfr/tools/__init__.py +20 -0
  288. tnfr/tools/domain_templates.py +478 -0
  289. tnfr/tools/sequence_generator.py +846 -0
  290. tnfr/topology/__init__.py +13 -0
  291. tnfr/topology/asymmetry.py +151 -0
  292. tnfr/trace.py +543 -0
  293. tnfr/trace.pyi +42 -0
  294. tnfr/tutorials/__init__.py +38 -0
  295. tnfr/tutorials/autonomous_evolution.py +285 -0
  296. tnfr/tutorials/interactive.py +1576 -0
  297. tnfr/tutorials/structural_metabolism.py +238 -0
  298. tnfr/types.py +775 -0
  299. tnfr/types.pyi +357 -0
  300. tnfr/units.py +68 -0
  301. tnfr/units.pyi +13 -0
  302. tnfr/utils/__init__.py +282 -0
  303. tnfr/utils/__init__.pyi +215 -0
  304. tnfr/utils/cache.py +4223 -0
  305. tnfr/utils/cache.pyi +470 -0
  306. tnfr/utils/callbacks.py +375 -0
  307. tnfr/utils/callbacks.pyi +49 -0
  308. tnfr/utils/chunks.py +108 -0
  309. tnfr/utils/chunks.pyi +22 -0
  310. tnfr/utils/data.py +428 -0
  311. tnfr/utils/data.pyi +74 -0
  312. tnfr/utils/graph.py +85 -0
  313. tnfr/utils/graph.pyi +10 -0
  314. tnfr/utils/init.py +821 -0
  315. tnfr/utils/init.pyi +80 -0
  316. tnfr/utils/io.py +559 -0
  317. tnfr/utils/io.pyi +66 -0
  318. tnfr/utils/numeric.py +114 -0
  319. tnfr/utils/numeric.pyi +21 -0
  320. tnfr/validation/__init__.py +257 -0
  321. tnfr/validation/__init__.pyi +85 -0
  322. tnfr/validation/compatibility.py +460 -0
  323. tnfr/validation/compatibility.pyi +6 -0
  324. tnfr/validation/config.py +73 -0
  325. tnfr/validation/graph.py +139 -0
  326. tnfr/validation/graph.pyi +18 -0
  327. tnfr/validation/input_validation.py +755 -0
  328. tnfr/validation/invariants.py +712 -0
  329. tnfr/validation/rules.py +253 -0
  330. tnfr/validation/rules.pyi +44 -0
  331. tnfr/validation/runtime.py +279 -0
  332. tnfr/validation/runtime.pyi +28 -0
  333. tnfr/validation/sequence_validator.py +162 -0
  334. tnfr/validation/soft_filters.py +170 -0
  335. tnfr/validation/soft_filters.pyi +32 -0
  336. tnfr/validation/spectral.py +164 -0
  337. tnfr/validation/spectral.pyi +42 -0
  338. tnfr/validation/validator.py +1266 -0
  339. tnfr/validation/window.py +39 -0
  340. tnfr/validation/window.pyi +1 -0
  341. tnfr/visualization/__init__.py +98 -0
  342. tnfr/visualization/cascade_viz.py +256 -0
  343. tnfr/visualization/hierarchy.py +284 -0
  344. tnfr/visualization/sequence_plotter.py +784 -0
  345. tnfr/viz/__init__.py +60 -0
  346. tnfr/viz/matplotlib.py +278 -0
  347. tnfr/viz/matplotlib.pyi +35 -0
  348. tnfr-8.5.0.dist-info/METADATA +573 -0
  349. tnfr-8.5.0.dist-info/RECORD +353 -0
  350. tnfr-8.5.0.dist-info/entry_points.txt +3 -0
  351. tnfr-3.0.3.dist-info/licenses/LICENSE.txt → tnfr-8.5.0.dist-info/licenses/LICENSE.md +1 -1
  352. tnfr/constants.py +0 -183
  353. tnfr/dynamics.py +0 -543
  354. tnfr/helpers.py +0 -198
  355. tnfr/main.py +0 -37
  356. tnfr/operators.py +0 -296
  357. tnfr-3.0.3.dist-info/METADATA +0 -35
  358. tnfr-3.0.3.dist-info/RECORD +0 -13
  359. {tnfr-3.0.3.dist-info → tnfr-8.5.0.dist-info}/WHEEL +0 -0
  360. {tnfr-3.0.3.dist-info → tnfr-8.5.0.dist-info}/top_level.txt +0 -0
tnfr/trace.pyi ADDED
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from collections.abc import Iterable, Mapping
4
+ from typing import Any, Callable, NamedTuple
5
+
6
+ from .types import (
7
+ TNFRGraph,
8
+ TraceFieldFn,
9
+ TraceFieldMap,
10
+ TraceFieldRegistry,
11
+ TraceMetadata,
12
+ TraceSnapshot,
13
+ )
14
+
15
+ __all__: tuple[str, ...]
16
+
17
+ def __getattr__(name: str) -> Any: ...
18
+
19
+ class CallbackSpec(NamedTuple):
20
+ name: str | None
21
+ func: Callable[..., Any]
22
+
23
+ kuramoto_R_psi: Callable[[TNFRGraph], tuple[float, float]]
24
+ TRACE_FIELDS: TraceFieldRegistry
25
+
26
+ def _callback_names(
27
+ callbacks: Mapping[str, CallbackSpec] | Iterable[CallbackSpec],
28
+ ) -> list[str]: ...
29
+ def mapping_field(G: TNFRGraph, graph_key: str, out_key: str) -> TraceMetadata: ...
30
+ def _trace_capture(G: TNFRGraph, phase: str, fields: TraceFieldMap) -> None: ...
31
+ def register_trace_field(phase: str, name: str, func: TraceFieldFn) -> None: ...
32
+ def gamma_field(G: TNFRGraph) -> TraceMetadata: ...
33
+ def grammar_field(G: TNFRGraph) -> TraceMetadata: ...
34
+ def dnfr_weights_field(G: TNFRGraph) -> TraceMetadata: ...
35
+ def selector_field(G: TNFRGraph) -> TraceMetadata: ...
36
+ def si_weights_field(G: TNFRGraph) -> TraceMetadata: ...
37
+ def callbacks_field(G: TNFRGraph) -> TraceMetadata: ...
38
+ def thol_state_field(G: TNFRGraph) -> TraceMetadata: ...
39
+ def kuramoto_field(G: TNFRGraph) -> TraceMetadata: ...
40
+ def sigma_field(G: TNFRGraph) -> TraceMetadata: ...
41
+ def glyph_counts_field(G: TNFRGraph) -> TraceMetadata: ...
42
+ def register_trace(G: TNFRGraph) -> None: ...
@@ -0,0 +1,38 @@
1
+ """Interactive tutorials for learning TNFR step-by-step.
2
+
3
+ This module provides guided, hands-on tutorials that introduce TNFR
4
+ concepts progressively. Each tutorial:
5
+
6
+ 1. Explains TNFR concepts in plain language
7
+ 2. Shows working code examples
8
+ 3. Displays real-time results with interpretation
9
+ 4. Builds from simple to advanced concepts
10
+ 5. Maintains full TNFR theoretical fidelity
11
+
12
+ All tutorials respect TNFR canonical invariants and can be run
13
+ independently or as a learning sequence.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ __all__ = [
19
+ "hello_tnfr",
20
+ "biological_example",
21
+ "social_network_example",
22
+ "technology_example",
23
+ "team_communication_example",
24
+ "adaptive_ai_example",
25
+ "oz_dissonance_tutorial",
26
+ "run_all_tutorials",
27
+ ]
28
+
29
+ from .interactive import (
30
+ hello_tnfr,
31
+ biological_example,
32
+ social_network_example,
33
+ technology_example,
34
+ team_communication_example,
35
+ adaptive_ai_example,
36
+ oz_dissonance_tutorial,
37
+ run_all_tutorials,
38
+ )
@@ -0,0 +1,285 @@
1
+ """Tutorial: Autonomous Evolution with TNFR Adaptive Systems.
2
+
3
+ This tutorial demonstrates the complete adaptive dynamics system integrating
4
+ feedback loops, adaptive sequence selection, homeostasis, learning, and
5
+ metabolism into autonomous structural evolution.
6
+
7
+ **Learning Objectives:**
8
+
9
+ 1. Understand feedback loops and homeostatic regulation
10
+ 2. Use adaptive sequence selection for optimal trajectories
11
+ 3. Integrate all components into autonomous evolution
12
+ 4. Monitor and measure adaptive dynamics
13
+
14
+ **Prerequisites:**
15
+
16
+ - Basic TNFR concepts (NFR, operators, coherence)
17
+ - Understanding of structural metrics (C(t), Si, ΔNFR)
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import networkx as nx
23
+
24
+ from tnfr.structural import create_nfr
25
+ from tnfr.alias import get_attr
26
+ from tnfr.constants.aliases import ALIAS_DNFR, ALIAS_EPI, ALIAS_VF
27
+ from tnfr.dynamics.feedback import StructuralFeedbackLoop
28
+ from tnfr.dynamics.adaptive_sequences import AdaptiveSequenceSelector
29
+ from tnfr.dynamics.homeostasis import StructuralHomeostasis
30
+ from tnfr.sdk.adaptive_system import TNFRAdaptiveSystem
31
+
32
+
33
+ def example_1_feedback_loop():
34
+ """Example 1: Basic feedback loop regulation.
35
+
36
+ Demonstrates how a feedback loop measures coherence and selects
37
+ appropriate operators to maintain target coherence.
38
+ """
39
+ print("=" * 70)
40
+ print("Example 1: Basic Feedback Loop Regulation")
41
+ print("=" * 70)
42
+
43
+ # Create a simple node
44
+ G, node = create_nfr("feedback_node", epi=0.5, vf=1.0)
45
+
46
+ # Initialize feedback loop with target coherence
47
+ loop = StructuralFeedbackLoop(
48
+ G,
49
+ node,
50
+ target_coherence=0.7, # Target C(t)
51
+ tau_adaptive=0.1, # Initial bifurcation threshold
52
+ learning_rate=0.05, # Threshold adaptation rate
53
+ )
54
+
55
+ print("\nInitial state:")
56
+ print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
57
+ print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
58
+ print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
59
+
60
+ # Run feedback regulation
61
+ print("\nRunning feedback regulation...")
62
+ for step in range(5):
63
+ coherence_before = loop._compute_local_coherence()
64
+ operator = loop.regulate()
65
+ print(f"\n Step {step + 1}:")
66
+ print(f" Coherence: {coherence_before:.3f}")
67
+ print(f" Selected operator: {operator}")
68
+
69
+ print("\nFeedback loop maintains coherence through adaptive operator selection.")
70
+
71
+
72
+ def example_2_adaptive_sequences():
73
+ """Example 2: Adaptive sequence selection.
74
+
75
+ Demonstrates how the system learns which operator sequences work best
76
+ for different goals and adapts its selection over time.
77
+ """
78
+ print("\n" + "=" * 70)
79
+ print("Example 2: Adaptive Sequence Selection")
80
+ print("=" * 70)
81
+
82
+ G, node = create_nfr("learning_node", epi=0.5, vf=1.0)
83
+
84
+ selector = AdaptiveSequenceSelector(G, node)
85
+
86
+ print("\nAvailable canonical sequences:")
87
+ for name, sequence in selector.sequences.items():
88
+ print(f" {name}: {' → '.join(sequence)}")
89
+
90
+ # Select sequences for different goals
91
+ print("\n\nSequence selection for different goals:")
92
+
93
+ goals = ["stability", "growth", "adaptation"]
94
+ for goal in goals:
95
+ context = {"goal": goal, "urgency": 0.5}
96
+ sequence = selector.select_sequence(context)
97
+ print(f"\n Goal: {goal}")
98
+ print(f" Selected: {' → '.join(sequence)}")
99
+
100
+ # Simulate learning through performance recording
101
+ print("\n\nSimulating learning through performance feedback:")
102
+ selector.record_performance("basic_activation", 0.85)
103
+ selector.record_performance("deep_learning", 0.92)
104
+ selector.record_performance("basic_activation", 0.88)
105
+
106
+ print(" Recorded performances:")
107
+ for name, perfs in selector.performance.items():
108
+ if perfs:
109
+ avg = sum(perfs) / len(perfs)
110
+ print(f" {name}: avg = {avg:.3f} ({len(perfs)} samples)")
111
+
112
+ print("\nAdaptive selection learns from experience to optimize trajectories.")
113
+
114
+
115
+ def example_3_homeostasis():
116
+ """Example 3: Homeostatic regulation.
117
+
118
+ Demonstrates how homeostasis maintains parameters within healthy ranges
119
+ through automatic corrective operators.
120
+ """
121
+ print("\n" + "=" * 70)
122
+ print("Example 3: Homeostatic Regulation")
123
+ print("=" * 70)
124
+
125
+ G, node = create_nfr("homeostatic_node", epi=0.5, vf=1.0)
126
+
127
+ homeostasis = StructuralHomeostasis(G, node)
128
+
129
+ print("\nHomeostatic target ranges:")
130
+ print(f" EPI: {homeostasis.epi_range}")
131
+ print(f" νf: {homeostasis.vf_range}")
132
+ print(f" ΔNFR: {homeostasis.dnfr_range}")
133
+
134
+ print("\nCurrent state:")
135
+ print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
136
+ print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
137
+ print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
138
+
139
+ print("\nApplying homeostatic regulation...")
140
+ homeostasis.maintain_equilibrium()
141
+
142
+ print("\nHomeostasis automatically corrects out-of-range parameters.")
143
+
144
+
145
+ def example_4_integrated_system():
146
+ """Example 4: Complete integrated adaptive system.
147
+
148
+ Demonstrates the full TNFRAdaptiveSystem combining all components into
149
+ autonomous evolution cycles.
150
+ """
151
+ print("\n" + "=" * 70)
152
+ print("Example 4: Complete Integrated Adaptive System")
153
+ print("=" * 70)
154
+
155
+ G, node = create_nfr("adaptive_node", epi=0.5, vf=1.0)
156
+
157
+ # Initialize complete adaptive system
158
+ system = TNFRAdaptiveSystem(G, node)
159
+
160
+ print("\nIntegrated components:")
161
+ print(" ✓ Feedback loop")
162
+ print(" ✓ Adaptive sequence selector")
163
+ print(" ✓ Homeostasis")
164
+ print(" ✓ Learning system")
165
+ print(" ✓ Structural metabolism")
166
+
167
+ print("\nInitial state:")
168
+ print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
169
+ print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
170
+ print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
171
+
172
+ # Run autonomous evolution
173
+ print("\nRunning autonomous evolution (10 cycles)...")
174
+ system.autonomous_evolution(num_cycles=10)
175
+
176
+ print("\nFinal state:")
177
+ print(f" EPI: {get_attr(G.nodes[node], ALIAS_EPI, 0.0):.3f}")
178
+ print(f" νf: {get_attr(G.nodes[node], ALIAS_VF, 1.0):.3f}")
179
+ print(f" ΔNFR: {get_attr(G.nodes[node], ALIAS_DNFR, 0.0):.3f}")
180
+
181
+ print("\nThe system self-regulates through integrated adaptive dynamics.")
182
+
183
+
184
+ def example_5_multi_node_network():
185
+ """Example 5: Adaptive dynamics in multi-node networks.
186
+
187
+ Demonstrates how adaptive systems work in networks with multiple
188
+ interacting nodes.
189
+ """
190
+ print("\n" + "=" * 70)
191
+ print("Example 5: Multi-Node Adaptive Network")
192
+ print("=" * 70)
193
+
194
+ # Create a small network
195
+ G = nx.Graph()
196
+ nodes = []
197
+ for i in range(3):
198
+ _, node = create_nfr(f"node_{i}", graph=G, epi=0.5, vf=1.0)
199
+ nodes.append(node)
200
+
201
+ # Connect nodes
202
+ G.add_edge(nodes[0], nodes[1])
203
+ G.add_edge(nodes[1], nodes[2])
204
+
205
+ print(f"\nCreated network with {len(nodes)} nodes and {G.number_of_edges()} edges")
206
+
207
+ # Create adaptive system for each node
208
+ systems = [TNFRAdaptiveSystem(G, node) for node in nodes]
209
+
210
+ print("\nRunning synchronized autonomous evolution...")
211
+ for cycle in range(5):
212
+ print(f"\n Cycle {cycle + 1}:")
213
+ for i, system in enumerate(systems):
214
+ # Each node evolves autonomously
215
+ system.autonomous_evolution(num_cycles=2)
216
+
217
+ stress = system._measure_stress()
218
+ print(f" Node {i}: stress = {stress:.3f}")
219
+
220
+ print("\nMultiple adaptive systems can coevolve in networked structures.")
221
+
222
+
223
+ def example_6_stress_response():
224
+ """Example 6: Metabolic stress response.
225
+
226
+ Demonstrates how the system measures and responds to structural stress
227
+ through metabolic adaptation.
228
+ """
229
+ print("\n" + "=" * 70)
230
+ print("Example 6: Metabolic Stress Response")
231
+ print("=" * 70)
232
+
233
+ G, node = create_nfr("stress_node", epi=0.5, vf=1.0)
234
+ system = TNFRAdaptiveSystem(G, node)
235
+
236
+ print("\nStress measurement from ΔNFR:")
237
+ print(" ΔNFR = 0.0 → stress = 0.0 (relaxed)")
238
+ print(" ΔNFR = 0.1 → stress = 0.5 (moderate)")
239
+ print(" ΔNFR = 0.2 → stress = 1.0 (maximum)")
240
+
241
+ print("\n\nSimulating stress response:")
242
+ from tnfr.alias import set_attr
243
+
244
+ stress_levels = [0.0, 0.05, 0.1, 0.15, 0.2]
245
+ for dnfr_val in stress_levels:
246
+ set_attr(G.nodes[node], ALIAS_DNFR, dnfr_val)
247
+ stress = system._measure_stress()
248
+ print(f" ΔNFR = {dnfr_val:.2f} → stress = {stress:.2f}")
249
+
250
+ print("\nThe system adapts metabolically to structural stress levels.")
251
+
252
+
253
+ def run_all_examples():
254
+ """Run all tutorial examples in sequence."""
255
+ examples = [
256
+ example_1_feedback_loop,
257
+ example_2_adaptive_sequences,
258
+ example_3_homeostasis,
259
+ example_4_integrated_system,
260
+ example_5_multi_node_network,
261
+ example_6_stress_response,
262
+ ]
263
+
264
+ for example in examples:
265
+ example()
266
+
267
+ print("\n" + "=" * 70)
268
+ print("Tutorial Complete: Autonomous Evolution with TNFR")
269
+ print("=" * 70)
270
+ print("\nKey Takeaways:")
271
+ print(" 1. Feedback loops enable autonomous coherence regulation")
272
+ print(" 2. Adaptive selection learns optimal operator sequences")
273
+ print(" 3. Homeostasis maintains healthy parameter ranges")
274
+ print(" 4. Integration creates self-regulating adaptive systems")
275
+ print(" 5. Networks support multi-node coevolution")
276
+ print(" 6. Metabolic response adapts to structural stress")
277
+ print("\nNext steps:")
278
+ print(" - Explore custom feedback strategies")
279
+ print(" - Define domain-specific sequences")
280
+ print(" - Tune homeostatic ranges for your application")
281
+ print(" - Integrate with existing TNFR workflows")
282
+
283
+
284
+ if __name__ == "__main__":
285
+ run_all_examples()