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.
- tnfr/__init__.py +334 -50
- tnfr/__init__.pyi +33 -0
- tnfr/_compat.py +10 -0
- tnfr/_generated_version.py +34 -0
- tnfr/_version.py +49 -0
- tnfr/_version.pyi +7 -0
- tnfr/alias.py +214 -37
- tnfr/alias.pyi +108 -0
- tnfr/backends/__init__.py +354 -0
- tnfr/backends/jax_backend.py +173 -0
- tnfr/backends/numpy_backend.py +238 -0
- tnfr/backends/optimized_numpy.py +420 -0
- tnfr/backends/torch_backend.py +408 -0
- tnfr/cache.py +149 -556
- tnfr/cache.pyi +13 -0
- tnfr/cli/__init__.py +51 -16
- tnfr/cli/__init__.pyi +26 -0
- tnfr/cli/arguments.py +344 -32
- tnfr/cli/arguments.pyi +29 -0
- tnfr/cli/execution.py +676 -50
- tnfr/cli/execution.pyi +70 -0
- tnfr/cli/interactive_validator.py +614 -0
- tnfr/cli/utils.py +18 -3
- tnfr/cli/utils.pyi +7 -0
- tnfr/cli/validate.py +236 -0
- tnfr/compat/__init__.py +85 -0
- tnfr/compat/dataclass.py +136 -0
- tnfr/compat/jsonschema_stub.py +61 -0
- tnfr/compat/matplotlib_stub.py +73 -0
- tnfr/compat/numpy_stub.py +155 -0
- tnfr/config/__init__.py +224 -0
- tnfr/config/__init__.pyi +10 -0
- tnfr/{constants_glyphs.py → config/constants.py} +26 -20
- tnfr/config/constants.pyi +12 -0
- tnfr/config/defaults.py +54 -0
- tnfr/{constants/core.py → config/defaults_core.py} +59 -6
- tnfr/config/defaults_init.py +33 -0
- tnfr/config/defaults_metric.py +104 -0
- tnfr/config/feature_flags.py +81 -0
- tnfr/config/feature_flags.pyi +16 -0
- tnfr/config/glyph_constants.py +31 -0
- tnfr/config/init.py +77 -0
- tnfr/config/init.pyi +8 -0
- tnfr/config/operator_names.py +254 -0
- tnfr/config/operator_names.pyi +36 -0
- tnfr/config/physics_derivation.py +354 -0
- tnfr/config/presets.py +83 -0
- tnfr/config/presets.pyi +7 -0
- tnfr/config/security.py +927 -0
- tnfr/config/thresholds.py +114 -0
- tnfr/config/tnfr_config.py +498 -0
- tnfr/constants/__init__.py +51 -133
- tnfr/constants/__init__.pyi +92 -0
- tnfr/constants/aliases.py +33 -0
- tnfr/constants/aliases.pyi +27 -0
- tnfr/constants/init.py +3 -1
- tnfr/constants/init.pyi +12 -0
- tnfr/constants/metric.py +9 -15
- tnfr/constants/metric.pyi +19 -0
- tnfr/core/__init__.py +33 -0
- tnfr/core/container.py +226 -0
- tnfr/core/default_implementations.py +329 -0
- tnfr/core/interfaces.py +279 -0
- tnfr/dynamics/__init__.py +213 -633
- tnfr/dynamics/__init__.pyi +83 -0
- tnfr/dynamics/adaptation.py +267 -0
- tnfr/dynamics/adaptation.pyi +7 -0
- tnfr/dynamics/adaptive_sequences.py +189 -0
- tnfr/dynamics/adaptive_sequences.pyi +14 -0
- tnfr/dynamics/aliases.py +23 -0
- tnfr/dynamics/aliases.pyi +19 -0
- tnfr/dynamics/bifurcation.py +232 -0
- tnfr/dynamics/canonical.py +229 -0
- tnfr/dynamics/canonical.pyi +48 -0
- tnfr/dynamics/coordination.py +385 -0
- tnfr/dynamics/coordination.pyi +25 -0
- tnfr/dynamics/dnfr.py +2699 -398
- tnfr/dynamics/dnfr.pyi +26 -0
- tnfr/dynamics/dynamic_limits.py +225 -0
- tnfr/dynamics/feedback.py +252 -0
- tnfr/dynamics/feedback.pyi +24 -0
- tnfr/dynamics/fused_dnfr.py +454 -0
- tnfr/dynamics/homeostasis.py +157 -0
- tnfr/dynamics/homeostasis.pyi +14 -0
- tnfr/dynamics/integrators.py +496 -102
- tnfr/dynamics/integrators.pyi +36 -0
- tnfr/dynamics/learning.py +310 -0
- tnfr/dynamics/learning.pyi +33 -0
- tnfr/dynamics/metabolism.py +254 -0
- tnfr/dynamics/nbody.py +796 -0
- tnfr/dynamics/nbody_tnfr.py +783 -0
- tnfr/dynamics/propagation.py +326 -0
- tnfr/dynamics/runtime.py +908 -0
- tnfr/dynamics/runtime.pyi +77 -0
- tnfr/dynamics/sampling.py +10 -5
- tnfr/dynamics/sampling.pyi +7 -0
- tnfr/dynamics/selectors.py +711 -0
- tnfr/dynamics/selectors.pyi +85 -0
- tnfr/dynamics/structural_clip.py +207 -0
- tnfr/errors/__init__.py +37 -0
- tnfr/errors/contextual.py +492 -0
- tnfr/execution.py +77 -55
- tnfr/execution.pyi +45 -0
- tnfr/extensions/__init__.py +205 -0
- tnfr/extensions/__init__.pyi +18 -0
- tnfr/extensions/base.py +173 -0
- tnfr/extensions/base.pyi +35 -0
- tnfr/extensions/business/__init__.py +71 -0
- tnfr/extensions/business/__init__.pyi +11 -0
- tnfr/extensions/business/cookbook.py +88 -0
- tnfr/extensions/business/cookbook.pyi +8 -0
- tnfr/extensions/business/health_analyzers.py +202 -0
- tnfr/extensions/business/health_analyzers.pyi +9 -0
- tnfr/extensions/business/patterns.py +183 -0
- tnfr/extensions/business/patterns.pyi +8 -0
- tnfr/extensions/medical/__init__.py +73 -0
- tnfr/extensions/medical/__init__.pyi +11 -0
- tnfr/extensions/medical/cookbook.py +88 -0
- tnfr/extensions/medical/cookbook.pyi +8 -0
- tnfr/extensions/medical/health_analyzers.py +181 -0
- tnfr/extensions/medical/health_analyzers.pyi +9 -0
- tnfr/extensions/medical/patterns.py +163 -0
- tnfr/extensions/medical/patterns.pyi +8 -0
- tnfr/flatten.py +29 -50
- tnfr/flatten.pyi +21 -0
- tnfr/gamma.py +66 -53
- tnfr/gamma.pyi +36 -0
- tnfr/glyph_history.py +144 -57
- tnfr/glyph_history.pyi +35 -0
- tnfr/glyph_runtime.py +19 -0
- tnfr/glyph_runtime.pyi +8 -0
- tnfr/immutable.py +70 -30
- tnfr/immutable.pyi +36 -0
- tnfr/initialization.py +22 -16
- tnfr/initialization.pyi +65 -0
- tnfr/io.py +5 -241
- tnfr/io.pyi +13 -0
- tnfr/locking.pyi +7 -0
- tnfr/mathematics/__init__.py +79 -0
- tnfr/mathematics/backend.py +453 -0
- tnfr/mathematics/backend.pyi +99 -0
- tnfr/mathematics/dynamics.py +408 -0
- tnfr/mathematics/dynamics.pyi +90 -0
- tnfr/mathematics/epi.py +391 -0
- tnfr/mathematics/epi.pyi +65 -0
- tnfr/mathematics/generators.py +242 -0
- tnfr/mathematics/generators.pyi +29 -0
- tnfr/mathematics/metrics.py +119 -0
- tnfr/mathematics/metrics.pyi +16 -0
- tnfr/mathematics/operators.py +239 -0
- tnfr/mathematics/operators.pyi +59 -0
- tnfr/mathematics/operators_factory.py +124 -0
- tnfr/mathematics/operators_factory.pyi +11 -0
- tnfr/mathematics/projection.py +87 -0
- tnfr/mathematics/projection.pyi +33 -0
- tnfr/mathematics/runtime.py +182 -0
- tnfr/mathematics/runtime.pyi +64 -0
- tnfr/mathematics/spaces.py +256 -0
- tnfr/mathematics/spaces.pyi +83 -0
- tnfr/mathematics/transforms.py +305 -0
- tnfr/mathematics/transforms.pyi +62 -0
- tnfr/metrics/__init__.py +47 -9
- tnfr/metrics/__init__.pyi +20 -0
- tnfr/metrics/buffer_cache.py +163 -0
- tnfr/metrics/buffer_cache.pyi +24 -0
- tnfr/metrics/cache_utils.py +214 -0
- tnfr/metrics/coherence.py +1510 -330
- tnfr/metrics/coherence.pyi +129 -0
- tnfr/metrics/common.py +23 -16
- tnfr/metrics/common.pyi +35 -0
- tnfr/metrics/core.py +251 -36
- tnfr/metrics/core.pyi +13 -0
- tnfr/metrics/diagnosis.py +709 -110
- tnfr/metrics/diagnosis.pyi +86 -0
- tnfr/metrics/emergence.py +245 -0
- tnfr/metrics/export.py +60 -18
- tnfr/metrics/export.pyi +7 -0
- tnfr/metrics/glyph_timing.py +233 -43
- tnfr/metrics/glyph_timing.pyi +81 -0
- tnfr/metrics/learning_metrics.py +280 -0
- tnfr/metrics/learning_metrics.pyi +21 -0
- tnfr/metrics/phase_coherence.py +351 -0
- tnfr/metrics/phase_compatibility.py +349 -0
- tnfr/metrics/reporting.py +63 -28
- tnfr/metrics/reporting.pyi +25 -0
- tnfr/metrics/sense_index.py +1126 -43
- tnfr/metrics/sense_index.pyi +9 -0
- tnfr/metrics/trig.py +215 -23
- tnfr/metrics/trig.pyi +13 -0
- tnfr/metrics/trig_cache.py +148 -24
- tnfr/metrics/trig_cache.pyi +10 -0
- tnfr/multiscale/__init__.py +32 -0
- tnfr/multiscale/hierarchical.py +517 -0
- tnfr/node.py +646 -140
- tnfr/node.pyi +139 -0
- tnfr/observers.py +160 -45
- tnfr/observers.pyi +31 -0
- tnfr/ontosim.py +23 -19
- tnfr/ontosim.pyi +28 -0
- tnfr/operators/__init__.py +1358 -106
- tnfr/operators/__init__.pyi +31 -0
- tnfr/operators/algebra.py +277 -0
- tnfr/operators/canonical_patterns.py +420 -0
- tnfr/operators/cascade.py +267 -0
- tnfr/operators/cycle_detection.py +358 -0
- tnfr/operators/definitions.py +4108 -0
- tnfr/operators/definitions.pyi +78 -0
- tnfr/operators/grammar.py +1164 -0
- tnfr/operators/grammar.pyi +140 -0
- tnfr/operators/hamiltonian.py +710 -0
- tnfr/operators/health_analyzer.py +809 -0
- tnfr/operators/jitter.py +107 -38
- tnfr/operators/jitter.pyi +11 -0
- tnfr/operators/lifecycle.py +314 -0
- tnfr/operators/metabolism.py +618 -0
- tnfr/operators/metrics.py +2138 -0
- tnfr/operators/network_analysis/__init__.py +27 -0
- tnfr/operators/network_analysis/source_detection.py +186 -0
- tnfr/operators/nodal_equation.py +395 -0
- tnfr/operators/pattern_detection.py +660 -0
- tnfr/operators/patterns.py +669 -0
- tnfr/operators/postconditions/__init__.py +38 -0
- tnfr/operators/postconditions/mutation.py +236 -0
- tnfr/operators/preconditions/__init__.py +1226 -0
- tnfr/operators/preconditions/coherence.py +305 -0
- tnfr/operators/preconditions/dissonance.py +236 -0
- tnfr/operators/preconditions/emission.py +128 -0
- tnfr/operators/preconditions/mutation.py +580 -0
- tnfr/operators/preconditions/reception.py +125 -0
- tnfr/operators/preconditions/resonance.py +364 -0
- tnfr/operators/registry.py +74 -0
- tnfr/operators/registry.pyi +9 -0
- tnfr/operators/remesh.py +1415 -91
- tnfr/operators/remesh.pyi +26 -0
- tnfr/operators/structural_units.py +268 -0
- tnfr/operators/unified_grammar.py +105 -0
- tnfr/parallel/__init__.py +54 -0
- tnfr/parallel/auto_scaler.py +234 -0
- tnfr/parallel/distributed.py +384 -0
- tnfr/parallel/engine.py +238 -0
- tnfr/parallel/gpu_engine.py +420 -0
- tnfr/parallel/monitoring.py +248 -0
- tnfr/parallel/partitioner.py +459 -0
- tnfr/py.typed +0 -0
- tnfr/recipes/__init__.py +22 -0
- tnfr/recipes/cookbook.py +743 -0
- tnfr/rng.py +75 -151
- tnfr/rng.pyi +26 -0
- tnfr/schemas/__init__.py +8 -0
- tnfr/schemas/grammar.json +94 -0
- tnfr/sdk/__init__.py +107 -0
- tnfr/sdk/__init__.pyi +19 -0
- tnfr/sdk/adaptive_system.py +173 -0
- tnfr/sdk/adaptive_system.pyi +21 -0
- tnfr/sdk/builders.py +370 -0
- tnfr/sdk/builders.pyi +51 -0
- tnfr/sdk/fluent.py +1121 -0
- tnfr/sdk/fluent.pyi +74 -0
- tnfr/sdk/templates.py +342 -0
- tnfr/sdk/templates.pyi +41 -0
- tnfr/sdk/utils.py +341 -0
- tnfr/secure_config.py +46 -0
- tnfr/security/__init__.py +70 -0
- tnfr/security/database.py +514 -0
- tnfr/security/subprocess.py +503 -0
- tnfr/security/validation.py +290 -0
- tnfr/selector.py +59 -22
- tnfr/selector.pyi +19 -0
- tnfr/sense.py +92 -67
- tnfr/sense.pyi +23 -0
- tnfr/services/__init__.py +17 -0
- tnfr/services/orchestrator.py +325 -0
- tnfr/sparse/__init__.py +39 -0
- tnfr/sparse/representations.py +492 -0
- tnfr/structural.py +639 -263
- tnfr/structural.pyi +83 -0
- tnfr/telemetry/__init__.py +35 -0
- tnfr/telemetry/cache_metrics.py +226 -0
- tnfr/telemetry/cache_metrics.pyi +64 -0
- tnfr/telemetry/nu_f.py +422 -0
- tnfr/telemetry/nu_f.pyi +108 -0
- tnfr/telemetry/verbosity.py +36 -0
- tnfr/telemetry/verbosity.pyi +15 -0
- tnfr/tokens.py +2 -4
- tnfr/tokens.pyi +36 -0
- tnfr/tools/__init__.py +20 -0
- tnfr/tools/domain_templates.py +478 -0
- tnfr/tools/sequence_generator.py +846 -0
- tnfr/topology/__init__.py +13 -0
- tnfr/topology/asymmetry.py +151 -0
- tnfr/trace.py +300 -126
- tnfr/trace.pyi +42 -0
- tnfr/tutorials/__init__.py +38 -0
- tnfr/tutorials/autonomous_evolution.py +285 -0
- tnfr/tutorials/interactive.py +1576 -0
- tnfr/tutorials/structural_metabolism.py +238 -0
- tnfr/types.py +743 -12
- tnfr/types.pyi +357 -0
- tnfr/units.py +68 -0
- tnfr/units.pyi +13 -0
- tnfr/utils/__init__.py +282 -0
- tnfr/utils/__init__.pyi +215 -0
- tnfr/utils/cache.py +4223 -0
- tnfr/utils/cache.pyi +470 -0
- tnfr/{callback_utils.py → utils/callbacks.py} +26 -39
- tnfr/utils/callbacks.pyi +49 -0
- tnfr/utils/chunks.py +108 -0
- tnfr/utils/chunks.pyi +22 -0
- tnfr/utils/data.py +428 -0
- tnfr/utils/data.pyi +74 -0
- tnfr/utils/graph.py +85 -0
- tnfr/utils/graph.pyi +10 -0
- tnfr/utils/init.py +821 -0
- tnfr/utils/init.pyi +80 -0
- tnfr/utils/io.py +559 -0
- tnfr/utils/io.pyi +66 -0
- tnfr/{helpers → utils}/numeric.py +51 -24
- tnfr/utils/numeric.pyi +21 -0
- tnfr/validation/__init__.py +257 -0
- tnfr/validation/__init__.pyi +85 -0
- tnfr/validation/compatibility.py +460 -0
- tnfr/validation/compatibility.pyi +6 -0
- tnfr/validation/config.py +73 -0
- tnfr/validation/graph.py +139 -0
- tnfr/validation/graph.pyi +18 -0
- tnfr/validation/input_validation.py +755 -0
- tnfr/validation/invariants.py +712 -0
- tnfr/validation/rules.py +253 -0
- tnfr/validation/rules.pyi +44 -0
- tnfr/validation/runtime.py +279 -0
- tnfr/validation/runtime.pyi +28 -0
- tnfr/validation/sequence_validator.py +162 -0
- tnfr/validation/soft_filters.py +170 -0
- tnfr/validation/soft_filters.pyi +32 -0
- tnfr/validation/spectral.py +164 -0
- tnfr/validation/spectral.pyi +42 -0
- tnfr/validation/validator.py +1266 -0
- tnfr/validation/window.py +39 -0
- tnfr/validation/window.pyi +1 -0
- tnfr/visualization/__init__.py +98 -0
- tnfr/visualization/cascade_viz.py +256 -0
- tnfr/visualization/hierarchy.py +284 -0
- tnfr/visualization/sequence_plotter.py +784 -0
- tnfr/viz/__init__.py +60 -0
- tnfr/viz/matplotlib.py +278 -0
- tnfr/viz/matplotlib.pyi +35 -0
- tnfr-8.5.0.dist-info/METADATA +573 -0
- tnfr-8.5.0.dist-info/RECORD +353 -0
- {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/entry_points.txt +1 -0
- {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/licenses/LICENSE.md +1 -1
- tnfr/collections_utils.py +0 -300
- tnfr/config.py +0 -32
- tnfr/grammar.py +0 -344
- tnfr/graph_utils.py +0 -84
- tnfr/helpers/__init__.py +0 -71
- tnfr/import_utils.py +0 -228
- tnfr/json_utils.py +0 -162
- tnfr/logging_utils.py +0 -116
- tnfr/presets.py +0 -60
- tnfr/validators.py +0 -84
- tnfr/value_utils.py +0 -59
- tnfr-4.5.2.dist-info/METADATA +0 -379
- tnfr-4.5.2.dist-info/RECORD +0 -67
- {tnfr-4.5.2.dist-info → tnfr-8.5.0.dist-info}/WHEEL +0 -0
- {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: ...
|