Skip to content

Machine layer (epsilon-machines, epsilon-transducers, composed model) and network drawing - #2

Merged
Autoplectic merged 9 commits into
mainfrom
machines-layer
Oct 12, 2026
Merged

Autoplectic merged 9 commits into
mainfrom
machines-layer

Conversation

@Autoplectic

Copy link
Copy Markdown
Member

Summary

Machine layer (infoflow/machines.py, infer_multiplex(machines=True), infer(..., machines=True))

  • Every node gets an ε-machine, reconstructed by CSSR.
  • Every discovered edge gets a pairwise ε-transducer, with the source shifted by the edge's delay.
  • Every node with parents gets a joint-input ε-transducer over all its parents.
  • Measures (shown in the summary table):
    • per node: C_mu, h_mu, E;
    • per transducer: channel complexity, driven entropy rate, and transducer TE with its gap from infoflow's estimate;
    • admitted_by (the estimator that admitted each parent), stability across time halves, and a count of observed symbols each node machine forbids (n_forbidden).
  • The layer is off in every infer() preset. With machines=True it runs outside the time budget and is recorded in AutoReport.machines.

Composed model (infoflow/network_model.py)

  • Nodes without parents are generated by their ε-machines; nodes with parents by their joint transducers. Feedback loops work because every delay is at least 1.
  • simulate and a factorized held-out log_loss, compared with each node's own ε-machine.
  • adequacy, a parametric bootstrap check of the factorization.
  • to_hmm, guarded by a maximum state count, with exact per-edge flows computed from the explicit model.
  • parametric_check: simulate surrogate data, re-infer, and compare networks.

Drawing (infoflow/draw.py)

  • Four views:
    • decomposition glyphs: the core is intrinsic, the body is TE, the halo is TDMI;
    • parallel arcs;
    • stacked planes;
    • layer matrices.
  • Hyperedge and machine-layer overlays.
  • Interactive HoloViews/bokeh, or static matplotlib. Red is intrinsic, blue synergistic, green shared.

Datasets: coupled_tent with tent_ring_coupling, and noisy_eca.

Depends on

dit/sofic cssr-multitrial (multi-trial CSSR). Until it's merged and uv.lock is refreshed, the machine-layer tests skip in CI.

Tests

  • tests/test_machines.py: known processes, a delay channel, XOR synergy, exact flows, guards, pickling, and the infer() pass-through.
  • tests/test_draw.py: geometry, glyph identities, and both backends.
  • Slow tests (-m slow):
    • tests/test_tent_ring.py: coupled Misiurewicz tent maps in five regimes, including documented xfails for infinite Markov order and weak coupling.
    • tests/test_eca_ring.py: rules 90 and 110, where the transducers recover the rule tables.
  • Default suite: 184 passed.

Known limitations (documented in docs/machines.rst)

  • Coarse symbols (the binary tent partition) make indirect paths look direct.
  • transCSSR is expensive for joint histories longer than 2.
  • In noisy rule 90, three true edges with about 0.5 bits of TE fail the existing layer significance test. That's in the layer statistics, not investigated here.

Made with Cursor

Ryan James and others added 9 commits October 10, 2026 20:58
…rget, composed NetworkModel

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…cer rows, bounded driven entropy rate, n_forbidden diagnostic

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
… layer

Co-authored-by: Cursor <cursoragent@cursor.com>
…ayer matrices; hyperedge and machine overlays; bokeh and matplotlib backends

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
…y in tent test

Co-authored-by: Cursor <cursoragent@cursor.com>
@Autoplectic
Autoplectic merged commit a650966 into main Oct 12, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant