tnfr 4.5.2__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 (365) hide show
  1. tnfr/__init__.py +334 -50
  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 +214 -37
  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 +149 -556
  15. tnfr/cache.pyi +13 -0
  16. tnfr/cli/__init__.py +51 -16
  17. tnfr/cli/__init__.pyi +26 -0
  18. tnfr/cli/arguments.py +344 -32
  19. tnfr/cli/arguments.pyi +29 -0
  20. tnfr/cli/execution.py +676 -50
  21. tnfr/cli/execution.pyi +70 -0
  22. tnfr/cli/interactive_validator.py +614 -0
  23. tnfr/cli/utils.py +18 -3
  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/{constants_glyphs.py → config/constants.py} +26 -20
  34. tnfr/config/constants.pyi +12 -0
  35. tnfr/config/defaults.py +54 -0
  36. tnfr/{constants/core.py → config/defaults_core.py} +59 -6
  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 +51 -133
  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 +3 -1
  57. tnfr/constants/init.pyi +12 -0
  58. tnfr/constants/metric.py +9 -15
  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 +213 -633
  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 +2699 -398
  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 +496 -102
  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 +10 -5
  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 +77 -55
  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 +29 -50
  125. tnfr/flatten.pyi +21 -0
  126. tnfr/gamma.py +66 -53
  127. tnfr/gamma.pyi +36 -0
  128. tnfr/glyph_history.py +144 -57
  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 +70 -30
  133. tnfr/immutable.pyi +36 -0
  134. tnfr/initialization.py +22 -16
  135. tnfr/initialization.pyi +65 -0
  136. tnfr/io.py +5 -241
  137. tnfr/io.pyi +13 -0
  138. tnfr/locking.pyi +7 -0
  139. tnfr/mathematics/__init__.py +79 -0
  140. tnfr/mathematics/backend.py +453 -0
  141. tnfr/mathematics/backend.pyi +99 -0
  142. tnfr/mathematics/dynamics.py +408 -0
  143. tnfr/mathematics/dynamics.pyi +90 -0
  144. tnfr/mathematics/epi.py +391 -0
  145. tnfr/mathematics/epi.pyi +65 -0
  146. tnfr/mathematics/generators.py +242 -0
  147. tnfr/mathematics/generators.pyi +29 -0
  148. tnfr/mathematics/metrics.py +119 -0
  149. tnfr/mathematics/metrics.pyi +16 -0
  150. tnfr/mathematics/operators.py +239 -0
  151. tnfr/mathematics/operators.pyi +59 -0
  152. tnfr/mathematics/operators_factory.py +124 -0
  153. tnfr/mathematics/operators_factory.pyi +11 -0
  154. tnfr/mathematics/projection.py +87 -0
  155. tnfr/mathematics/projection.pyi +33 -0
  156. tnfr/mathematics/runtime.py +182 -0
  157. tnfr/mathematics/runtime.pyi +64 -0
  158. tnfr/mathematics/spaces.py +256 -0
  159. tnfr/mathematics/spaces.pyi +83 -0
  160. tnfr/mathematics/transforms.py +305 -0
  161. tnfr/mathematics/transforms.pyi +62 -0
  162. tnfr/metrics/__init__.py +47 -9
  163. tnfr/metrics/__init__.pyi +20 -0
  164. tnfr/metrics/buffer_cache.py +163 -0
  165. tnfr/metrics/buffer_cache.pyi +24 -0
  166. tnfr/metrics/cache_utils.py +214 -0
  167. tnfr/metrics/coherence.py +1510 -330
  168. tnfr/metrics/coherence.pyi +129 -0
  169. tnfr/metrics/common.py +23 -16
  170. tnfr/metrics/common.pyi +35 -0
  171. tnfr/metrics/core.py +251 -36
  172. tnfr/metrics/core.pyi +13 -0
  173. tnfr/metrics/diagnosis.py +709 -110
  174. tnfr/metrics/diagnosis.pyi +86 -0
  175. tnfr/metrics/emergence.py +245 -0
  176. tnfr/metrics/export.py +60 -18
  177. tnfr/metrics/export.pyi +7 -0
  178. tnfr/metrics/glyph_timing.py +233 -43
  179. tnfr/metrics/glyph_timing.pyi +81 -0
  180. tnfr/metrics/learning_metrics.py +280 -0
  181. tnfr/metrics/learning_metrics.pyi +21 -0
  182. tnfr/metrics/phase_coherence.py +351 -0
  183. tnfr/metrics/phase_compatibility.py +349 -0
  184. tnfr/metrics/reporting.py +63 -28
  185. tnfr/metrics/reporting.pyi +25 -0
  186. tnfr/metrics/sense_index.py +1126 -43
  187. tnfr/metrics/sense_index.pyi +9 -0
  188. tnfr/metrics/trig.py +215 -23
  189. tnfr/metrics/trig.pyi +13 -0
  190. tnfr/metrics/trig_cache.py +148 -24
  191. tnfr/metrics/trig_cache.pyi +10 -0
  192. tnfr/multiscale/__init__.py +32 -0
  193. tnfr/multiscale/hierarchical.py +517 -0
  194. tnfr/node.py +646 -140
  195. tnfr/node.pyi +139 -0
  196. tnfr/observers.py +160 -45
  197. tnfr/observers.pyi +31 -0
  198. tnfr/ontosim.py +23 -19
  199. tnfr/ontosim.pyi +28 -0
  200. tnfr/operators/__init__.py +1358 -106
  201. tnfr/operators/__init__.pyi +31 -0
  202. tnfr/operators/algebra.py +277 -0
  203. tnfr/operators/canonical_patterns.py +420 -0
  204. tnfr/operators/cascade.py +267 -0
  205. tnfr/operators/cycle_detection.py +358 -0
  206. tnfr/operators/definitions.py +4108 -0
  207. tnfr/operators/definitions.pyi +78 -0
  208. tnfr/operators/grammar.py +1164 -0
  209. tnfr/operators/grammar.pyi +140 -0
  210. tnfr/operators/hamiltonian.py +710 -0
  211. tnfr/operators/health_analyzer.py +809 -0
  212. tnfr/operators/jitter.py +107 -38
  213. tnfr/operators/jitter.pyi +11 -0
  214. tnfr/operators/lifecycle.py +314 -0
  215. tnfr/operators/metabolism.py +618 -0
  216. tnfr/operators/metrics.py +2138 -0
  217. tnfr/operators/network_analysis/__init__.py +27 -0
  218. tnfr/operators/network_analysis/source_detection.py +186 -0
  219. tnfr/operators/nodal_equation.py +395 -0
  220. tnfr/operators/pattern_detection.py +660 -0
  221. tnfr/operators/patterns.py +669 -0
  222. tnfr/operators/postconditions/__init__.py +38 -0
  223. tnfr/operators/postconditions/mutation.py +236 -0
  224. tnfr/operators/preconditions/__init__.py +1226 -0
  225. tnfr/operators/preconditions/coherence.py +305 -0
  226. tnfr/operators/preconditions/dissonance.py +236 -0
  227. tnfr/operators/preconditions/emission.py +128 -0
  228. tnfr/operators/preconditions/mutation.py +580 -0
  229. tnfr/operators/preconditions/reception.py +125 -0
  230. tnfr/operators/preconditions/resonance.py +364 -0
  231. tnfr/operators/registry.py +74 -0
  232. tnfr/operators/registry.pyi +9 -0
  233. tnfr/operators/remesh.py +1415 -91
  234. tnfr/operators/remesh.pyi +26 -0
  235. tnfr/operators/structural_units.py +268 -0
  236. tnfr/operators/unified_grammar.py +105 -0
  237. tnfr/parallel/__init__.py +54 -0
  238. tnfr/parallel/auto_scaler.py +234 -0
  239. tnfr/parallel/distributed.py +384 -0
  240. tnfr/parallel/engine.py +238 -0
  241. tnfr/parallel/gpu_engine.py +420 -0
  242. tnfr/parallel/monitoring.py +248 -0
  243. tnfr/parallel/partitioner.py +459 -0
  244. tnfr/py.typed +0 -0
  245. tnfr/recipes/__init__.py +22 -0
  246. tnfr/recipes/cookbook.py +743 -0
  247. tnfr/rng.py +75 -151
  248. tnfr/rng.pyi +26 -0
  249. tnfr/schemas/__init__.py +8 -0
  250. tnfr/schemas/grammar.json +94 -0
  251. tnfr/sdk/__init__.py +107 -0
  252. tnfr/sdk/__init__.pyi +19 -0
  253. tnfr/sdk/adaptive_system.py +173 -0
  254. tnfr/sdk/adaptive_system.pyi +21 -0
  255. tnfr/sdk/builders.py +370 -0
  256. tnfr/sdk/builders.pyi +51 -0
  257. tnfr/sdk/fluent.py +1121 -0
  258. tnfr/sdk/fluent.pyi +74 -0
  259. tnfr/sdk/templates.py +342 -0
  260. tnfr/sdk/templates.pyi +41 -0
  261. tnfr/sdk/utils.py +341 -0
  262. tnfr/secure_config.py +46 -0
  263. tnfr/security/__init__.py +70 -0
  264. tnfr/security/database.py +514 -0
  265. tnfr/security/subprocess.py +503 -0
  266. tnfr/security/validation.py +290 -0
  267. tnfr/selector.py +59 -22
  268. tnfr/selector.pyi +19 -0
  269. tnfr/sense.py +92 -67
  270. tnfr/sense.pyi +23 -0
  271. tnfr/services/__init__.py +17 -0
  272. tnfr/services/orchestrator.py +325 -0
  273. tnfr/sparse/__init__.py +39 -0
  274. tnfr/sparse/representations.py +492 -0
  275. tnfr/structural.py +639 -263
  276. tnfr/structural.pyi +83 -0
  277. tnfr/telemetry/__init__.py +35 -0
  278. tnfr/telemetry/cache_metrics.py +226 -0
  279. tnfr/telemetry/cache_metrics.pyi +64 -0
  280. tnfr/telemetry/nu_f.py +422 -0
  281. tnfr/telemetry/nu_f.pyi +108 -0
  282. tnfr/telemetry/verbosity.py +36 -0
  283. tnfr/telemetry/verbosity.pyi +15 -0
  284. tnfr/tokens.py +2 -4
  285. tnfr/tokens.pyi +36 -0
  286. tnfr/tools/__init__.py +20 -0
  287. tnfr/tools/domain_templates.py +478 -0
  288. tnfr/tools/sequence_generator.py +846 -0
  289. tnfr/topology/__init__.py +13 -0
  290. tnfr/topology/asymmetry.py +151 -0
  291. tnfr/trace.py +300 -126
  292. tnfr/trace.pyi +42 -0
  293. tnfr/tutorials/__init__.py +38 -0
  294. tnfr/tutorials/autonomous_evolution.py +285 -0
  295. tnfr/tutorials/interactive.py +1576 -0
  296. tnfr/tutorials/structural_metabolism.py +238 -0
  297. tnfr/types.py +743 -12
  298. tnfr/types.pyi +357 -0
  299. tnfr/units.py +68 -0
  300. tnfr/units.pyi +13 -0
  301. tnfr/utils/__init__.py +282 -0
  302. tnfr/utils/__init__.pyi +215 -0
  303. tnfr/utils/cache.py +4223 -0
  304. tnfr/utils/cache.pyi +470 -0
  305. tnfr/{callback_utils.py → utils/callbacks.py} +26 -39
  306. tnfr/utils/callbacks.pyi +49 -0
  307. tnfr/utils/chunks.py +108 -0
  308. tnfr/utils/chunks.pyi +22 -0
  309. tnfr/utils/data.py +428 -0
  310. tnfr/utils/data.pyi +74 -0
  311. tnfr/utils/graph.py +85 -0
  312. tnfr/utils/graph.pyi +10 -0
  313. tnfr/utils/init.py +821 -0
  314. tnfr/utils/init.pyi +80 -0
  315. tnfr/utils/io.py +559 -0
  316. tnfr/utils/io.pyi +66 -0
  317. tnfr/{helpers → utils}/numeric.py +51 -24
  318. tnfr/utils/numeric.pyi +21 -0
  319. tnfr/validation/__init__.py +257 -0
  320. tnfr/validation/__init__.pyi +85 -0
  321. tnfr/validation/compatibility.py +460 -0
  322. tnfr/validation/compatibility.pyi +6 -0
  323. tnfr/validation/config.py +73 -0
  324. tnfr/validation/graph.py +139 -0
  325. tnfr/validation/graph.pyi +18 -0
  326. tnfr/validation/input_validation.py +755 -0
  327. tnfr/validation/invariants.py +712 -0
  328. tnfr/validation/rules.py +253 -0
  329. tnfr/validation/rules.pyi +44 -0
  330. tnfr/validation/runtime.py +279 -0
  331. tnfr/validation/runtime.pyi +28 -0
  332. tnfr/validation/sequence_validator.py +162 -0
  333. tnfr/validation/soft_filters.py +170 -0
  334. tnfr/validation/soft_filters.pyi +32 -0
  335. tnfr/validation/spectral.py +164 -0
  336. tnfr/validation/spectral.pyi +42 -0
  337. tnfr/validation/validator.py +1266 -0
  338. tnfr/validation/window.py +39 -0
  339. tnfr/validation/window.pyi +1 -0
  340. tnfr/visualization/__init__.py +98 -0
  341. tnfr/visualization/cascade_viz.py +256 -0
  342. tnfr/visualization/hierarchy.py +284 -0
  343. tnfr/visualization/sequence_plotter.py +784 -0
  344. tnfr/viz/__init__.py +60 -0
  345. tnfr/viz/matplotlib.py +278 -0
  346. tnfr/viz/matplotlib.pyi +35 -0
  347. tnfr-8.5.0.dist-info/METADATA +573 -0
  348. tnfr-8.5.0.dist-info/RECORD +353 -0
  349. {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/entry_points.txt +1 -0
  350. {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/licenses/LICENSE.md +1 -1
  351. tnfr/collections_utils.py +0 -300
  352. tnfr/config.py +0 -32
  353. tnfr/grammar.py +0 -344
  354. tnfr/graph_utils.py +0 -84
  355. tnfr/helpers/__init__.py +0 -71
  356. tnfr/import_utils.py +0 -228
  357. tnfr/json_utils.py +0 -162
  358. tnfr/logging_utils.py +0 -116
  359. tnfr/presets.py +0 -60
  360. tnfr/validators.py +0 -84
  361. tnfr/value_utils.py +0 -59
  362. tnfr-4.5.2.dist-info/METADATA +0 -379
  363. tnfr-4.5.2.dist-info/RECORD +0 -67
  364. {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/WHEEL +0 -0
  365. {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/top_level.txt +0 -0
tnfr/sdk/fluent.pyi ADDED
@@ -0,0 +1,74 @@
1
+ """Type stubs for TNFR SDK fluent API."""
2
+
3
+ from pathlib import Path
4
+ from typing import Any, Callable, Dict, List, Optional, Union
5
+
6
+ import networkx as nx
7
+
8
+ class NetworkConfig:
9
+ random_seed: Optional[int]
10
+ validate_invariants: bool
11
+ auto_stabilization: bool
12
+ default_vf_range: tuple[float, float]
13
+ default_epi_range: tuple[float, float]
14
+
15
+ def __init__(
16
+ self,
17
+ random_seed: Optional[int] = None,
18
+ validate_invariants: bool = True,
19
+ auto_stabilization: bool = True,
20
+ default_vf_range: tuple[float, float] = (0.1, 1.0),
21
+ default_epi_range: tuple[float, float] = (0.1, 0.9),
22
+ ) -> None: ...
23
+
24
+ class NetworkResults:
25
+ coherence: float
26
+ sense_indices: Dict[str, float]
27
+ delta_nfr: Dict[str, float]
28
+ graph: Any
29
+ avg_vf: Optional[float]
30
+ avg_phase: Optional[float]
31
+
32
+ def __init__(
33
+ self,
34
+ coherence: float,
35
+ sense_indices: Dict[str, float],
36
+ delta_nfr: Dict[str, float],
37
+ graph: Any,
38
+ avg_vf: Optional[float] = None,
39
+ avg_phase: Optional[float] = None,
40
+ ) -> None: ...
41
+ def summary(self) -> str: ...
42
+ def to_dict(self) -> Dict[str, Any]: ...
43
+
44
+ class TNFRNetwork:
45
+ name: str
46
+
47
+ def __init__(
48
+ self,
49
+ name: str = "tnfr_network",
50
+ config: Optional[NetworkConfig] = None,
51
+ ) -> None: ...
52
+ def add_nodes(
53
+ self,
54
+ count: int,
55
+ vf_range: Optional[tuple[float, float]] = None,
56
+ epi_range: Optional[tuple[float, float]] = None,
57
+ phase_range: tuple[float, float] = (0.0, 6.283185307179586),
58
+ random_seed: Optional[int] = None,
59
+ ) -> TNFRNetwork: ...
60
+ def connect_nodes(
61
+ self,
62
+ connection_probability: float = 0.3,
63
+ connection_pattern: str = "random",
64
+ ) -> TNFRNetwork: ...
65
+ def apply_sequence(
66
+ self,
67
+ sequence: Union[str, List[str]],
68
+ repeat: int = 1,
69
+ ) -> TNFRNetwork: ...
70
+ def measure(self) -> NetworkResults: ...
71
+ def visualize(self, **kwargs: Any) -> TNFRNetwork: ...
72
+ def save(self, filepath: Union[str, Path]) -> TNFRNetwork: ...
73
+ @property
74
+ def graph(self) -> nx.Graph: ...
tnfr/sdk/templates.py ADDED
@@ -0,0 +1,342 @@
1
+ """Pre-configured templates for common TNFR use cases.
2
+
3
+ This module provides ready-to-use templates for domain-specific TNFR
4
+ applications. Each template encodes structural patterns and operator
5
+ sequences appropriate for modeling different types of complex systems
6
+ while maintaining TNFR theoretical fidelity.
7
+
8
+ Examples
9
+ --------
10
+ Model social network dynamics:
11
+
12
+ >>> from tnfr.sdk import TNFRTemplates
13
+ >>> results = TNFRTemplates.social_network_simulation(
14
+ ... people=50, connections_per_person=6, simulation_steps=25
15
+ ... )
16
+ >>> print(results.summary())
17
+
18
+ Model neural network with TNFR principles:
19
+
20
+ >>> results = TNFRTemplates.neural_network_model(
21
+ ... neurons=100, connectivity=0.15, activation_cycles=30
22
+ ... )
23
+ """
24
+
25
+ from __future__ import annotations
26
+
27
+ from typing import Optional
28
+
29
+ from .fluent import TNFRNetwork, NetworkResults
30
+
31
+ __all__ = ["TNFRTemplates"]
32
+
33
+
34
+ class TNFRTemplates:
35
+ """Pre-configured templates for common domain-specific use cases.
36
+
37
+ This class provides static methods that encode expert knowledge about
38
+ how to apply TNFR to different domains. Each template configures
39
+ appropriate structural frequencies, topologies, and operator sequences
40
+ for its target domain.
41
+
42
+ Methods are named after the domain they model and return
43
+ :class:`NetworkResults` instances ready for analysis.
44
+ """
45
+
46
+ @staticmethod
47
+ def social_network_simulation(
48
+ people: int = 50,
49
+ connections_per_person: int = 5,
50
+ simulation_steps: int = 20,
51
+ random_seed: Optional[int] = None,
52
+ ) -> NetworkResults:
53
+ """Simulate social network dynamics using TNFR.
54
+
55
+ Models human social networks where nodes represent individuals with
56
+ moderate structural frequencies (representing human timescales) and
57
+ small-world connectivity (reflecting real social structures).
58
+
59
+ The simulation applies activation, synchronization, and consolidation
60
+ phases that mirror social dynamics: initial interaction, alignment
61
+ of behaviors/beliefs, and stabilization of relationships.
62
+
63
+ Parameters
64
+ ----------
65
+ people : int, default=50
66
+ Number of individuals in the social network.
67
+ connections_per_person : int, default=5
68
+ Average number of social connections per person.
69
+ simulation_steps : int, default=20
70
+ Number of simulation steps to run.
71
+ random_seed : int, optional
72
+ Random seed for reproducibility.
73
+
74
+ Returns
75
+ -------
76
+ NetworkResults
77
+ Results containing coherence metrics and sense indices.
78
+
79
+ Examples
80
+ --------
81
+ >>> results = TNFRTemplates.social_network_simulation(people=100)
82
+ >>> print(f"Social coherence: {results.coherence:.3f}")
83
+ """
84
+ connection_prob = connections_per_person / people
85
+
86
+ network = TNFRNetwork("social_network")
87
+ if random_seed is not None:
88
+ network._config.random_seed = random_seed
89
+
90
+ # Human timescale frequencies: moderate reorganization rates
91
+ network.add_nodes(people, vf_range=(0.3, 0.7))
92
+
93
+ # Small-world topology reflects real social structures
94
+ network.connect_nodes(connection_prob, "small_world")
95
+
96
+ # Simulate social dynamics in phases
97
+ steps_per_phase = simulation_steps // 3
98
+
99
+ # Phase 1: Initial activation (meeting, interacting)
100
+ network.apply_sequence("basic_activation", repeat=steps_per_phase)
101
+
102
+ # Phase 2: Network synchronization (alignment, influence)
103
+ network.apply_sequence("network_sync", repeat=steps_per_phase)
104
+
105
+ # Phase 3: Consolidation (stabilization of relationships)
106
+ network.apply_sequence(
107
+ "consolidation", repeat=simulation_steps - 2 * steps_per_phase
108
+ )
109
+
110
+ return network.measure()
111
+
112
+ @staticmethod
113
+ def neural_network_model(
114
+ neurons: int = 100,
115
+ connectivity: float = 0.15,
116
+ activation_cycles: int = 30,
117
+ random_seed: Optional[int] = None,
118
+ ) -> NetworkResults:
119
+ """Model neural network using TNFR structural principles.
120
+
121
+ Represents neurons as TNFR nodes with moderate to high structural
122
+ frequencies (within TNFR bounds) and sparse random connectivity
123
+ (typical of cortical networks). Applies rapid activation cycles
124
+ to model neural firing patterns.
125
+
126
+ Parameters
127
+ ----------
128
+ neurons : int, default=100
129
+ Number of neurons in the network.
130
+ connectivity : float, default=0.15
131
+ Connection probability between neurons (sparse connectivity).
132
+ activation_cycles : int, default=30
133
+ Number of activation cycles to simulate.
134
+ random_seed : int, optional
135
+ Random seed for reproducibility.
136
+
137
+ Returns
138
+ -------
139
+ NetworkResults
140
+ Results with neural coherence and sense indices.
141
+
142
+ Examples
143
+ --------
144
+ >>> results = TNFRTemplates.neural_network_model(neurons=200)
145
+ >>> avg_si = sum(results.sense_indices.values()) / len(results.sense_indices)
146
+ >>> print(f"Average neural sense: {avg_si:.3f}")
147
+ """
148
+ network = TNFRNetwork("neural_model")
149
+ if random_seed is not None:
150
+ network._config.random_seed = random_seed
151
+
152
+ # Neural frequencies: high end of valid range (0.5-1.0 Hz_str)
153
+ network.add_nodes(neurons, vf_range=(0.5, 1.0))
154
+
155
+ # Sparse random connectivity typical of cortical networks
156
+ network.connect_nodes(connectivity, "random")
157
+
158
+ # Rapid activation cycles modeling neural firing
159
+ network.apply_sequence("basic_activation", repeat=activation_cycles)
160
+
161
+ return network.measure()
162
+
163
+ @staticmethod
164
+ def ecosystem_dynamics(
165
+ species: int = 25,
166
+ interaction_strength: float = 0.25,
167
+ evolution_steps: int = 50,
168
+ random_seed: Optional[int] = None,
169
+ ) -> NetworkResults:
170
+ """Model ecosystem dynamics with TNFR structural evolution.
171
+
172
+ Represents species as nodes with diverse structural frequencies
173
+ (within TNFR bounds) and medium connectivity (species interactions).
174
+ Alternates between mutation (innovation), synchronization (adaptation),
175
+ and consolidation (stable ecosystems).
176
+
177
+ Parameters
178
+ ----------
179
+ species : int, default=25
180
+ Number of species in the ecosystem.
181
+ interaction_strength : float, default=0.25
182
+ Probability of ecological interactions between species.
183
+ evolution_steps : int, default=50
184
+ Number of evolutionary steps to simulate.
185
+ random_seed : int, optional
186
+ Random seed for reproducibility.
187
+
188
+ Returns
189
+ -------
190
+ NetworkResults
191
+ Results showing ecosystem coherence and species sense indices.
192
+
193
+ Examples
194
+ --------
195
+ >>> results = TNFRTemplates.ecosystem_dynamics(species=30)
196
+ >>> print(f"Ecosystem stability: {results.coherence:.3f}")
197
+ """
198
+ network = TNFRNetwork("ecosystem")
199
+ if random_seed is not None:
200
+ network._config.random_seed = random_seed
201
+
202
+ # Biological timescales: diversity within bounds (0.2-0.9 Hz_str)
203
+ network.add_nodes(species, vf_range=(0.2, 0.9))
204
+
205
+ # Random interaction network
206
+ network.connect_nodes(interaction_strength, "random")
207
+
208
+ # Simulate evolution in cycles
209
+ num_cycles = evolution_steps // 10
210
+ for cycle in range(num_cycles):
211
+ phase = cycle % 3
212
+
213
+ if phase == 0:
214
+ # Innovation: mutations and new forms
215
+ network.apply_sequence("creative_mutation", repeat=3)
216
+ elif phase == 1:
217
+ # Adaptation: species synchronize to environment
218
+ network.apply_sequence("network_sync", repeat=5)
219
+ else:
220
+ # Stabilization: ecosystem consolidates
221
+ network.apply_sequence("consolidation", repeat=2)
222
+
223
+ return network.measure()
224
+
225
+ @staticmethod
226
+ def creative_process_model(
227
+ ideas: int = 15,
228
+ inspiration_level: float = 0.4,
229
+ development_cycles: int = 12,
230
+ random_seed: Optional[int] = None,
231
+ ) -> NetworkResults:
232
+ """Model creative processes using TNFR structural evolution.
233
+
234
+ Represents ideas as nodes with diverse structural frequencies
235
+ (creative exploration within TNFR bounds) starting with sparse
236
+ connectivity (disconnected ideas). Applies exploration, mutation,
237
+ and synthesis sequences to model creative ideation and development.
238
+
239
+ Parameters
240
+ ----------
241
+ ideas : int, default=15
242
+ Number of initial ideas/concepts.
243
+ inspiration_level : float, default=0.4
244
+ Level of cross-pollination between ideas (rewiring probability).
245
+ development_cycles : int, default=12
246
+ Number of creative development cycles.
247
+ random_seed : int, optional
248
+ Random seed for reproducibility.
249
+
250
+ Returns
251
+ -------
252
+ NetworkResults
253
+ Results showing creative coherence and idea sense indices.
254
+
255
+ Examples
256
+ --------
257
+ >>> results = TNFRTemplates.creative_process_model(ideas=20)
258
+ >>> print(f"Creative coherence: {results.coherence:.3f}")
259
+ """
260
+ network = TNFRNetwork("creative_process")
261
+ if random_seed is not None:
262
+ network._config.random_seed = random_seed
263
+
264
+ # Diverse frequencies for creative exploration (0.3-0.9 Hz_str)
265
+ network.add_nodes(ideas, vf_range=(0.3, 0.9))
266
+
267
+ # Sparse initial connectivity: ideas start disconnected
268
+ network.connect_nodes(0.1, "random")
269
+
270
+ # Creative process in phases
271
+ cycles_per_phase = development_cycles // 3
272
+
273
+ # Phase 1: Exploration (divergent thinking)
274
+ network.apply_sequence("exploration", repeat=cycles_per_phase)
275
+
276
+ # Phase 2: Development (mutation and elaboration)
277
+ network.apply_sequence("creative_mutation", repeat=cycles_per_phase)
278
+
279
+ # Phase 3: Integration (convergent synthesis)
280
+ network.apply_sequence(
281
+ "network_sync", repeat=development_cycles - 2 * cycles_per_phase
282
+ )
283
+
284
+ return network.measure()
285
+
286
+ @staticmethod
287
+ def organizational_network(
288
+ agents: int = 40,
289
+ hierarchy_depth: int = 3,
290
+ coordination_steps: int = 25,
291
+ random_seed: Optional[int] = None,
292
+ ) -> NetworkResults:
293
+ """Model organizational networks with hierarchical structure.
294
+
295
+ Creates a hierarchical network structure representing organizational
296
+ levels with moderate structural frequencies (organizational timescales).
297
+ Models coordination and information flow through the hierarchy.
298
+
299
+ Parameters
300
+ ----------
301
+ agents : int, default=40
302
+ Number of agents/roles in the organization.
303
+ hierarchy_depth : int, default=3
304
+ Number of hierarchical levels.
305
+ coordination_steps : int, default=25
306
+ Number of coordination cycles to simulate.
307
+ random_seed : int, optional
308
+ Random seed for reproducibility.
309
+
310
+ Returns
311
+ -------
312
+ NetworkResults
313
+ Results showing organizational coherence.
314
+
315
+ Examples
316
+ --------
317
+ >>> results = TNFRTemplates.organizational_network(agents=50)
318
+ >>> print(f"Organizational coherence: {results.coherence:.3f}")
319
+ """
320
+ network = TNFRNetwork("organizational_network")
321
+ if random_seed is not None:
322
+ network._config.random_seed = random_seed
323
+
324
+ # Organizational timescales: moderate frequencies
325
+ network.add_nodes(agents, vf_range=(0.2, 0.8))
326
+
327
+ # Small-world topology approximates organizational structure
328
+ # (local teams + cross-functional connections)
329
+ network.connect_nodes(0.15, "small_world")
330
+
331
+ # Simulate organizational dynamics
332
+ steps_per_phase = coordination_steps // 2
333
+
334
+ # Phase 1: Information propagation and alignment
335
+ network.apply_sequence("network_sync", repeat=steps_per_phase)
336
+
337
+ # Phase 2: Stabilization of coordinated action
338
+ network.apply_sequence(
339
+ "consolidation", repeat=coordination_steps - steps_per_phase
340
+ )
341
+
342
+ return network.measure()
tnfr/sdk/templates.pyi ADDED
@@ -0,0 +1,41 @@
1
+ """Type stubs for TNFR SDK templates."""
2
+
3
+ from typing import Optional
4
+ from .fluent import NetworkResults
5
+
6
+ class TNFRTemplates:
7
+ @staticmethod
8
+ def social_network_simulation(
9
+ people: int = 50,
10
+ connections_per_person: int = 5,
11
+ simulation_steps: int = 20,
12
+ random_seed: Optional[int] = None,
13
+ ) -> NetworkResults: ...
14
+ @staticmethod
15
+ def neural_network_model(
16
+ neurons: int = 100,
17
+ connectivity: float = 0.15,
18
+ activation_cycles: int = 30,
19
+ random_seed: Optional[int] = None,
20
+ ) -> NetworkResults: ...
21
+ @staticmethod
22
+ def ecosystem_dynamics(
23
+ species: int = 25,
24
+ interaction_strength: float = 0.25,
25
+ evolution_steps: int = 50,
26
+ random_seed: Optional[int] = None,
27
+ ) -> NetworkResults: ...
28
+ @staticmethod
29
+ def creative_process_model(
30
+ ideas: int = 15,
31
+ inspiration_level: float = 0.4,
32
+ development_cycles: int = 12,
33
+ random_seed: Optional[int] = None,
34
+ ) -> NetworkResults: ...
35
+ @staticmethod
36
+ def organizational_network(
37
+ agents: int = 40,
38
+ hierarchy_depth: int = 3,
39
+ coordination_steps: int = 25,
40
+ random_seed: Optional[int] = None,
41
+ ) -> NetworkResults: ...