TORX
Extropic

Parametrised stochastic circuits

Programs that transform probability distributions instead of fixed values. Build circuits from gates on three primitives, then sample them or propagate their moments exactly.

pbit{0, 1}
A binary site, flipped and swapped by the discrete gates.
pdit{0, …, d-1}
A d-state site, permuted and cycled by its gates.
pmodeN
A continuous site carried by Gaussian gates.

Quickstart

Install with pip install extro-torx (Python 3.11+), then build and sample a circuit:

import jax
import jax.numpy as jnp
from torx.psc import DiscretePCircuit, BranchingSimulator, PSWAP

# PSWAP swaps two pbits with probability sigma(theta); here p(swap) = 0.3.
# Gates are structure-only; parameters are a separate list of logit leaves.
circuit = DiscretePCircuit([PSWAP([0, 1])])
thetas = [jnp.array([jnp.log(0.3 / 0.7)])]

sim = BranchingSimulator(num_samples=20_000)
compiled = sim.build_circuit(circuit, thetas)

# Start in |10) and sample the two output pbits.
state10 = jnp.array([1, 0], dtype=jnp.int32)
state01 = jnp.array([0, 1], dtype=jnp.int32)
samples = sim.sample(compiled, state10, jax.random.key(0))
stay = jnp.mean(jnp.all(samples == state10, axis=1))
swap = jnp.mean(jnp.all(samples == state01, axis=1))
print(f"stay |10): {float(stay):.3f}, swap |01): {float(swap):.3f}")
expected outputstay |10): 0.699, swap |01): 0.301

Example notebooks

16 runnable notebooks, starting from a one-gate circuit and working up to trained networks and directed factor graphs.

01Introduction to parametrised stochastic circuitsBuild and sample your first stochastic circuits: pbits, pdits, and pmodes, each driven by its core gate, from constructor to simulator. 06Ising sampling and contrastive divergenceCompare Torx chromatic Gibbs with a host sampler built from Torx PISING matrices, then fit the 8-site ring with host-only persistent contrastive divergence. 16Gibbs sampling on a directed factor graphBuild a 4x4 Ising sampler from hand-written factors and check block Gibbs against exact enumeration, from temperature sweeps to pattern completion.
Browse all 16 examples →