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/constants/__init__.py
CHANGED
|
@@ -1,144 +1,56 @@
|
|
|
1
|
-
"""Shared constants.
|
|
1
|
+
"""Shared constants (backward compatibility layer).
|
|
2
2
|
|
|
3
|
-
from
|
|
3
|
+
This module re-exports configuration from tnfr.config for backward compatibility.
|
|
4
|
+
New code should import directly from tnfr.config.
|
|
5
|
+
|
|
6
|
+
Migration Path:
|
|
7
|
+
Old: from tnfr.constants import DEFAULTS, inject_defaults
|
|
8
|
+
New: from tnfr.config import DEFAULTS, inject_defaults
|
|
9
|
+
"""
|
|
4
10
|
|
|
5
|
-
from
|
|
6
|
-
from collections.abc import Mapping
|
|
7
|
-
import copy
|
|
8
|
-
from types import MappingProxyType
|
|
11
|
+
from __future__ import annotations
|
|
9
12
|
|
|
10
|
-
|
|
11
|
-
from
|
|
12
|
-
|
|
13
|
+
# Re-export all constants and utilities from tnfr.config
|
|
14
|
+
from ..config import (
|
|
15
|
+
ALIASES,
|
|
16
|
+
CANONICAL_STATE_TOKENS,
|
|
17
|
+
COHERENCE,
|
|
18
|
+
CORE_DEFAULTS,
|
|
19
|
+
D2EPI_PRIMARY,
|
|
20
|
+
D2VF_PRIMARY,
|
|
21
|
+
DEFAULT_SECTIONS,
|
|
22
|
+
DEFAULTS,
|
|
23
|
+
DIAGNOSIS,
|
|
24
|
+
DNFR_PRIMARY,
|
|
25
|
+
EPI_KIND_PRIMARY,
|
|
26
|
+
EPI_PRIMARY,
|
|
27
|
+
GRAMMAR_CANON,
|
|
28
|
+
INIT_DEFAULTS,
|
|
13
29
|
METRIC_DEFAULTS,
|
|
30
|
+
METRICS,
|
|
31
|
+
REMESH_DEFAULTS,
|
|
32
|
+
SI_PRIMARY,
|
|
14
33
|
SIGMA,
|
|
34
|
+
STATE_DISSONANT,
|
|
35
|
+
STATE_STABLE,
|
|
36
|
+
STATE_TRANSITION,
|
|
37
|
+
THETA_KEY,
|
|
38
|
+
THETA_PRIMARY,
|
|
15
39
|
TRACE,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
# Secciones individuales exportadas
|
|
30
|
-
DEFAULT_SECTIONS: Mapping[str, Mapping[str, Any]] = MappingProxyType(
|
|
31
|
-
{
|
|
32
|
-
"core": CORE_DEFAULTS,
|
|
33
|
-
"init": INIT_DEFAULTS,
|
|
34
|
-
"remesh": REMESH_DEFAULTS,
|
|
35
|
-
"metric": METRIC_DEFAULTS,
|
|
36
|
-
}
|
|
40
|
+
VF_KEY,
|
|
41
|
+
VF_PRIMARY,
|
|
42
|
+
dEPI_PRIMARY,
|
|
43
|
+
dSI_PRIMARY,
|
|
44
|
+
dVF_PRIMARY,
|
|
45
|
+
ensure_node_offset_map,
|
|
46
|
+
get_aliases,
|
|
47
|
+
get_graph_param,
|
|
48
|
+
get_param,
|
|
49
|
+
inject_defaults,
|
|
50
|
+
merge_overrides,
|
|
51
|
+
normalise_state_token,
|
|
37
52
|
)
|
|
38
53
|
|
|
39
|
-
# Diccionario combinado exportado
|
|
40
|
-
# Unimos los diccionarios en orden de menor a mayor prioridad para que los
|
|
41
|
-
# valores de ``METRIC_DEFAULTS`` sobrescriban al resto, como hacía
|
|
42
|
-
# ``ChainMap``.
|
|
43
|
-
DEFAULTS: Mapping[str, Any] = MappingProxyType(
|
|
44
|
-
CORE_DEFAULTS | INIT_DEFAULTS | REMESH_DEFAULTS | METRIC_DEFAULTS
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
# -------------------------
|
|
48
|
-
# Utilidades
|
|
49
|
-
# -------------------------
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
def inject_defaults(
|
|
53
|
-
G, defaults: Mapping[str, Any] = DEFAULTS, override: bool = False
|
|
54
|
-
) -> None:
|
|
55
|
-
"""Inject ``defaults`` into ``G.graph``.
|
|
56
|
-
|
|
57
|
-
``defaults`` is usually ``DEFAULTS``, combining all sub-dictionaries.
|
|
58
|
-
If ``override`` is ``True`` existing values are overwritten. Immutable
|
|
59
|
-
values (numbers, strings, tuples, etc.) are assigned directly. Tuples are
|
|
60
|
-
inspected recursively; if any element is mutable, a ``deepcopy`` is made
|
|
61
|
-
to avoid shared state.
|
|
62
|
-
"""
|
|
63
|
-
G.graph.setdefault("_tnfr_defaults_attached", False)
|
|
64
|
-
for k, v in defaults.items():
|
|
65
|
-
if override or k not in G.graph:
|
|
66
|
-
G.graph[k] = v if _is_immutable(v) else copy.deepcopy(v)
|
|
67
|
-
G.graph["_tnfr_defaults_attached"] = True
|
|
68
|
-
if ensure_node_offset_map is not None:
|
|
69
|
-
ensure_node_offset_map(G)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
def merge_overrides(G, **overrides) -> None:
|
|
73
|
-
"""Apply specific changes to ``G.graph``.
|
|
74
|
-
|
|
75
|
-
Non-immutable values are deep-copied to avoid shared state with
|
|
76
|
-
:data:`DEFAULTS`.
|
|
77
|
-
"""
|
|
78
|
-
for key, value in overrides.items():
|
|
79
|
-
if key not in DEFAULTS:
|
|
80
|
-
raise KeyError(f"Parámetro desconocido: '{key}'")
|
|
81
|
-
G.graph[key] = value if _is_immutable(value) else copy.deepcopy(value)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def get_param(G, key: str):
|
|
85
|
-
"""Retrieve a parameter from ``G.graph`` or fall back to defaults."""
|
|
86
|
-
if key in G.graph:
|
|
87
|
-
return G.graph[key]
|
|
88
|
-
if key not in DEFAULTS:
|
|
89
|
-
raise KeyError(f"Parámetro desconocido: '{key}'")
|
|
90
|
-
return DEFAULTS[key]
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
def get_graph_param(G, key: str, cast: Callable[[Any], Any] = float):
|
|
94
|
-
"""Return ``key`` from ``G.graph`` applying ``cast``.
|
|
95
|
-
|
|
96
|
-
The ``cast`` argument must be a function (e.g. ``float``, ``int``,
|
|
97
|
-
``bool``). If the stored value is ``None`` it is returned without
|
|
98
|
-
casting.
|
|
99
|
-
"""
|
|
100
|
-
val = get_param(G, key)
|
|
101
|
-
return None if val is None else cast(val)
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
# Claves canónicas con nombres ASCII
|
|
105
|
-
VF_KEY = "νf"
|
|
106
|
-
THETA_KEY = "θ"
|
|
107
|
-
|
|
108
|
-
# Mapa de aliases para atributos nodales
|
|
109
|
-
ALIASES: dict[str, tuple[str, ...]] = {
|
|
110
|
-
"VF": (VF_KEY, "nu_f", "nu-f", "nu", "freq", "frequency"),
|
|
111
|
-
"THETA": (THETA_KEY, "theta", "fase", "phi", "phase"),
|
|
112
|
-
"DNFR": ("ΔNFR", "delta_nfr", "dnfr"),
|
|
113
|
-
"EPI": ("EPI", "psi", "PSI", "value"),
|
|
114
|
-
"EPI_KIND": ("EPI_kind", "epi_kind", "source_glyph"),
|
|
115
|
-
"SI": ("Si", "sense_index", "S_i", "sense", "meaning_index"),
|
|
116
|
-
"DEPI": ("dEPI_dt", "dpsi_dt", "dEPI", "velocity"),
|
|
117
|
-
"D2EPI": ("d2EPI_dt2", "d2psi_dt2", "d2EPI", "accel"),
|
|
118
|
-
"DVF": ("dνf_dt", "dvf_dt", "dnu_dt", "dvf"),
|
|
119
|
-
"D2VF": ("d2νf_dt2", "d2vf_dt2", "d2nu_dt2", "B"),
|
|
120
|
-
"DSI": ("δSi", "delta_Si", "dSi"),
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
def get_aliases(key: str) -> tuple[str, ...]:
|
|
125
|
-
"""Return alias tuple for canonical ``key``."""
|
|
126
|
-
|
|
127
|
-
return ALIASES[key]
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
VF_PRIMARY = get_aliases("VF")[0]
|
|
131
|
-
THETA_PRIMARY = get_aliases("THETA")[0]
|
|
132
|
-
DNFR_PRIMARY = get_aliases("DNFR")[0]
|
|
133
|
-
EPI_PRIMARY = get_aliases("EPI")[0]
|
|
134
|
-
EPI_KIND_PRIMARY = get_aliases("EPI_KIND")[0]
|
|
135
|
-
SI_PRIMARY = get_aliases("SI")[0]
|
|
136
|
-
dEPI_PRIMARY = get_aliases("DEPI")[0]
|
|
137
|
-
D2EPI_PRIMARY = get_aliases("D2EPI")[0]
|
|
138
|
-
dVF_PRIMARY = get_aliases("DVF")[0]
|
|
139
|
-
D2VF_PRIMARY = get_aliases("D2VF")[0]
|
|
140
|
-
dSI_PRIMARY = get_aliases("DSI")[0]
|
|
141
|
-
|
|
142
54
|
__all__ = (
|
|
143
55
|
"CORE_DEFAULTS",
|
|
144
56
|
"INIT_DEFAULTS",
|
|
@@ -171,4 +83,10 @@ __all__ = (
|
|
|
171
83
|
"dVF_PRIMARY",
|
|
172
84
|
"D2VF_PRIMARY",
|
|
173
85
|
"dSI_PRIMARY",
|
|
86
|
+
"STATE_STABLE",
|
|
87
|
+
"STATE_TRANSITION",
|
|
88
|
+
"STATE_DISSONANT",
|
|
89
|
+
"CANONICAL_STATE_TOKENS",
|
|
90
|
+
"normalise_state_token",
|
|
91
|
+
"ensure_node_offset_map",
|
|
174
92
|
)
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from collections.abc import Mapping
|
|
4
|
+
from typing import Callable, TypeVar
|
|
5
|
+
|
|
6
|
+
from ..types import GraphLike, TNFRConfigValue
|
|
7
|
+
from .core import CORE_DEFAULTS as CORE_DEFAULTS
|
|
8
|
+
from .core import REMESH_DEFAULTS as REMESH_DEFAULTS
|
|
9
|
+
from .init import INIT_DEFAULTS as INIT_DEFAULTS
|
|
10
|
+
from .metric import COHERENCE as COHERENCE
|
|
11
|
+
from .metric import DIAGNOSIS as DIAGNOSIS
|
|
12
|
+
from .metric import GRAMMAR_CANON as GRAMMAR_CANON
|
|
13
|
+
from .metric import METRIC_DEFAULTS as METRIC_DEFAULTS
|
|
14
|
+
from .metric import METRICS as METRICS
|
|
15
|
+
from .metric import SIGMA as SIGMA
|
|
16
|
+
from .metric import TRACE as TRACE
|
|
17
|
+
|
|
18
|
+
T = TypeVar("T")
|
|
19
|
+
|
|
20
|
+
__all__ = (
|
|
21
|
+
"CORE_DEFAULTS",
|
|
22
|
+
"INIT_DEFAULTS",
|
|
23
|
+
"REMESH_DEFAULTS",
|
|
24
|
+
"METRIC_DEFAULTS",
|
|
25
|
+
"SIGMA",
|
|
26
|
+
"TRACE",
|
|
27
|
+
"METRICS",
|
|
28
|
+
"GRAMMAR_CANON",
|
|
29
|
+
"COHERENCE",
|
|
30
|
+
"DIAGNOSIS",
|
|
31
|
+
"DEFAULTS",
|
|
32
|
+
"DEFAULT_SECTIONS",
|
|
33
|
+
"ALIASES",
|
|
34
|
+
"inject_defaults",
|
|
35
|
+
"merge_overrides",
|
|
36
|
+
"get_param",
|
|
37
|
+
"get_graph_param",
|
|
38
|
+
"get_aliases",
|
|
39
|
+
"VF_KEY",
|
|
40
|
+
"THETA_KEY",
|
|
41
|
+
"VF_PRIMARY",
|
|
42
|
+
"THETA_PRIMARY",
|
|
43
|
+
"DNFR_PRIMARY",
|
|
44
|
+
"EPI_PRIMARY",
|
|
45
|
+
"EPI_KIND_PRIMARY",
|
|
46
|
+
"SI_PRIMARY",
|
|
47
|
+
"dEPI_PRIMARY",
|
|
48
|
+
"D2EPI_PRIMARY",
|
|
49
|
+
"dVF_PRIMARY",
|
|
50
|
+
"D2VF_PRIMARY",
|
|
51
|
+
"dSI_PRIMARY",
|
|
52
|
+
"STATE_STABLE",
|
|
53
|
+
"STATE_TRANSITION",
|
|
54
|
+
"STATE_DISSONANT",
|
|
55
|
+
"CANONICAL_STATE_TOKENS",
|
|
56
|
+
"normalise_state_token",
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
ensure_node_offset_map: Callable[[GraphLike], None] | None
|
|
60
|
+
DEFAULT_SECTIONS: Mapping[str, Mapping[str, TNFRConfigValue]]
|
|
61
|
+
DEFAULTS: Mapping[str, TNFRConfigValue]
|
|
62
|
+
ALIASES: dict[str, tuple[str, ...]]
|
|
63
|
+
VF_KEY: str
|
|
64
|
+
THETA_KEY: str
|
|
65
|
+
VF_PRIMARY: str
|
|
66
|
+
THETA_PRIMARY: str
|
|
67
|
+
DNFR_PRIMARY: str
|
|
68
|
+
EPI_PRIMARY: str
|
|
69
|
+
EPI_KIND_PRIMARY: str
|
|
70
|
+
SI_PRIMARY: str
|
|
71
|
+
dEPI_PRIMARY: str
|
|
72
|
+
D2EPI_PRIMARY: str
|
|
73
|
+
dVF_PRIMARY: str
|
|
74
|
+
D2VF_PRIMARY: str
|
|
75
|
+
dSI_PRIMARY: str
|
|
76
|
+
STATE_STABLE: str
|
|
77
|
+
STATE_TRANSITION: str
|
|
78
|
+
STATE_DISSONANT: str
|
|
79
|
+
CANONICAL_STATE_TOKENS: frozenset[str]
|
|
80
|
+
|
|
81
|
+
def inject_defaults(
|
|
82
|
+
G: GraphLike,
|
|
83
|
+
defaults: Mapping[str, TNFRConfigValue] = ...,
|
|
84
|
+
override: bool = ...,
|
|
85
|
+
) -> None: ...
|
|
86
|
+
def merge_overrides(G: GraphLike, **overrides: TNFRConfigValue) -> None: ...
|
|
87
|
+
def get_param(G: GraphLike, key: str) -> TNFRConfigValue: ...
|
|
88
|
+
def get_graph_param(
|
|
89
|
+
G: GraphLike, key: str, cast: Callable[[object], T] = ...
|
|
90
|
+
) -> T | None: ...
|
|
91
|
+
def get_aliases(key: str) -> tuple[str, ...]: ...
|
|
92
|
+
def normalise_state_token(token: str) -> str: ...
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Shared alias constants for TNFR attributes."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from . import get_aliases
|
|
6
|
+
|
|
7
|
+
ALIAS_VF = get_aliases("VF")
|
|
8
|
+
ALIAS_THETA = get_aliases("THETA")
|
|
9
|
+
ALIAS_DNFR = get_aliases("DNFR")
|
|
10
|
+
ALIAS_EPI = get_aliases("EPI")
|
|
11
|
+
ALIAS_EPI_KIND = get_aliases("EPI_KIND")
|
|
12
|
+
ALIAS_SI = get_aliases("SI")
|
|
13
|
+
ALIAS_DEPI = get_aliases("DEPI")
|
|
14
|
+
ALIAS_D2EPI = get_aliases("D2EPI")
|
|
15
|
+
ALIAS_DVF = get_aliases("DVF")
|
|
16
|
+
ALIAS_D2VF = get_aliases("D2VF")
|
|
17
|
+
ALIAS_DSI = get_aliases("DSI")
|
|
18
|
+
ALIAS_EMISSION_TIMESTAMP = get_aliases("EMISSION_TIMESTAMP")
|
|
19
|
+
|
|
20
|
+
__all__ = [
|
|
21
|
+
"ALIAS_VF",
|
|
22
|
+
"ALIAS_THETA",
|
|
23
|
+
"ALIAS_DNFR",
|
|
24
|
+
"ALIAS_EPI",
|
|
25
|
+
"ALIAS_EPI_KIND",
|
|
26
|
+
"ALIAS_SI",
|
|
27
|
+
"ALIAS_DEPI",
|
|
28
|
+
"ALIAS_D2EPI",
|
|
29
|
+
"ALIAS_DVF",
|
|
30
|
+
"ALIAS_D2VF",
|
|
31
|
+
"ALIAS_DSI",
|
|
32
|
+
"ALIAS_EMISSION_TIMESTAMP",
|
|
33
|
+
]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
|
|
3
|
+
__all__ = [
|
|
4
|
+
"ALIAS_VF",
|
|
5
|
+
"ALIAS_THETA",
|
|
6
|
+
"ALIAS_DNFR",
|
|
7
|
+
"ALIAS_EPI",
|
|
8
|
+
"ALIAS_EPI_KIND",
|
|
9
|
+
"ALIAS_SI",
|
|
10
|
+
"ALIAS_DEPI",
|
|
11
|
+
"ALIAS_D2EPI",
|
|
12
|
+
"ALIAS_DVF",
|
|
13
|
+
"ALIAS_D2VF",
|
|
14
|
+
"ALIAS_DSI",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
ALIAS_VF: Incomplete
|
|
18
|
+
ALIAS_THETA: Incomplete
|
|
19
|
+
ALIAS_DNFR: Incomplete
|
|
20
|
+
ALIAS_EPI: Incomplete
|
|
21
|
+
ALIAS_EPI_KIND: Incomplete
|
|
22
|
+
ALIAS_SI: Incomplete
|
|
23
|
+
ALIAS_DEPI: Incomplete
|
|
24
|
+
ALIAS_D2EPI: Incomplete
|
|
25
|
+
ALIAS_DVF: Incomplete
|
|
26
|
+
ALIAS_D2VF: Incomplete
|
|
27
|
+
ALIAS_DSI: Incomplete
|
tnfr/constants/init.py
CHANGED
tnfr/constants/init.pyi
ADDED
tnfr/constants/metric.py
CHANGED
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from dataclasses import
|
|
6
|
-
from typing import Any
|
|
5
|
+
from dataclasses import asdict, field
|
|
7
6
|
from types import MappingProxyType
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from ..compat.dataclass import dataclass
|
|
8
10
|
|
|
9
11
|
|
|
10
12
|
@dataclass(frozen=True, slots=True)
|
|
@@ -27,7 +29,7 @@ class MetricDefaults:
|
|
|
27
29
|
default_factory=lambda: {
|
|
28
30
|
"enabled": True,
|
|
29
31
|
"weight": "Si", # "Si" | "EPI" | "1"
|
|
30
|
-
"smooth": 0.0, # EMA
|
|
32
|
+
"smooth": 0.0, # EMA over the global vector (0=off)
|
|
31
33
|
"history_key": "sigma_global",
|
|
32
34
|
"per_node": False,
|
|
33
35
|
}
|
|
@@ -35,18 +37,7 @@ class MetricDefaults:
|
|
|
35
37
|
TRACE: dict[str, Any] = field(
|
|
36
38
|
default_factory=lambda: {
|
|
37
39
|
"enabled": True,
|
|
38
|
-
"
|
|
39
|
-
"gamma",
|
|
40
|
-
"grammar",
|
|
41
|
-
"selector",
|
|
42
|
-
"dnfr_weights",
|
|
43
|
-
"si_weights",
|
|
44
|
-
"callbacks",
|
|
45
|
-
"thol_open_nodes",
|
|
46
|
-
"sigma",
|
|
47
|
-
"kuramoto",
|
|
48
|
-
"glyph_counts",
|
|
49
|
-
],
|
|
40
|
+
"verbosity": "debug",
|
|
50
41
|
"history_key": "trace_meta",
|
|
51
42
|
}
|
|
52
43
|
)
|
|
@@ -55,6 +46,8 @@ class MetricDefaults:
|
|
|
55
46
|
"enabled": True,
|
|
56
47
|
"save_by_node": True,
|
|
57
48
|
"normalize_series": False,
|
|
49
|
+
"n_jobs": 1,
|
|
50
|
+
"verbosity": "debug",
|
|
58
51
|
}
|
|
59
52
|
)
|
|
60
53
|
GRAMMAR_CANON: dict[str, Any] = field(
|
|
@@ -76,6 +69,7 @@ class MetricDefaults:
|
|
|
76
69
|
"self_on_diag": True,
|
|
77
70
|
"store_mode": "sparse",
|
|
78
71
|
"threshold": 0.0,
|
|
72
|
+
"n_jobs": 1,
|
|
79
73
|
"history_key": "W_sparse",
|
|
80
74
|
"Wi_history_key": "W_i",
|
|
81
75
|
"stats_history_key": "W_stats",
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
__all__: Any
|
|
4
|
+
|
|
5
|
+
def __getattr__(name: str) -> Any: ...
|
|
6
|
+
|
|
7
|
+
COHERENCE: Any
|
|
8
|
+
DIAGNOSIS: Any
|
|
9
|
+
GRAMMAR_CANON: Any
|
|
10
|
+
METRICS: Any
|
|
11
|
+
METRIC_DEFAULTS: Any
|
|
12
|
+
MappingProxyType: Any
|
|
13
|
+
MetricDefaults: Any
|
|
14
|
+
SIGMA: Any
|
|
15
|
+
TRACE: Any
|
|
16
|
+
annotations: Any
|
|
17
|
+
asdict: Any
|
|
18
|
+
dataclass: Any
|
|
19
|
+
field: Any
|
tnfr/core/__init__.py
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"""Core architectural components for TNFR engine.
|
|
2
|
+
|
|
3
|
+
This package contains the foundational interfaces and dependency injection
|
|
4
|
+
infrastructure that enable separation of responsibilities across the TNFR
|
|
5
|
+
engine layers.
|
|
6
|
+
|
|
7
|
+
Public API
|
|
8
|
+
----------
|
|
9
|
+
OperatorRegistry, ValidationService, DynamicsEngine, TelemetryCollector
|
|
10
|
+
Protocol interfaces defining contracts for each architectural layer.
|
|
11
|
+
TNFRContainer
|
|
12
|
+
Dependency injection container for configuring engine components.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from .container import TNFRContainer
|
|
18
|
+
from .interfaces import (
|
|
19
|
+
DynamicsEngine,
|
|
20
|
+
OperatorRegistry,
|
|
21
|
+
TelemetryCollector,
|
|
22
|
+
TraceContext,
|
|
23
|
+
ValidationService,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
__all__ = (
|
|
27
|
+
"OperatorRegistry",
|
|
28
|
+
"ValidationService",
|
|
29
|
+
"DynamicsEngine",
|
|
30
|
+
"TelemetryCollector",
|
|
31
|
+
"TraceContext",
|
|
32
|
+
"TNFRContainer",
|
|
33
|
+
)
|